Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Eftersom jag ofta frågade mig själv vilken bandbredd som för närvarande tillhandahålls av min ISP (jag använder ett LTE -modem för internetanslutningen) tänkte jag på ett bandbreddskontrollsystem. Eftersom systemet ska vara kompakt och energibesparande valde jag en Raspberry Pi Zero som den centrala komponenten. Hallon är anslutet till modemet via WLAN, därför kan WLAN -problem också upptäckas.
Tillbehör
- Raspberry Pi Zero WH
- Waveshare e-ink display (2,9 tum-e-paper-modul)
- DC-DC-omvandlare (t.ex. DEBO DCDC 20W)
- RGB LED (hämtad från en gammal enhet)
- Tryckknapp
- Växla
- Relämodul (t.ex. 2 -vägs relämodul 2 -vägs relämodul)
- Hankontakt + Hankontakt (båda passar storleken på ditt modems nätaggregat)
- 3D -tryckt fodral
Steg 1: Funktioner
- Raspberry Pi Zero är ansluten via WLAN, testar upp- och nedladdningshastighet och utför en pingmätning varje halvtimme. En kommandoradsversion av speedtest.net används som grund för mätningarna.
- Resultatet av bandbredd och ping-mätning visas på en e-bläckdisplay. Mättiden visas också.
- Om nedladdningshastigheten faller under ett definierat tröskelvärde stänger ett relä av och på modemet under en kort tid. Modemet återställs således utan någon ändring av enheten (endast strömförsörjningen avbryts).
- En knapp på enhetens framsida är tillgänglig för att utlösa bandbreddsmätningen manuellt.
- De uppmätta värdena visas på en Ubidots Dashboard (IOT Portal). I översikten kan du också se tidshistoriken för de uppmätta värdena och orsakerna till de senaste återställningarna.
- I IOT Portal kan du också hitta en knapp för fjärråterställning av modemet.
- Bandbreddsmonitorn använder modemets strömförsörjning. Ingen extra leverans behövs. Reläerna avbryter vidarebefordran av strömförsörjningen till modemet - hallonen förblir påslagen.
Steg 2: Kabeldragning
På den första bilden kan du se den interna designen på bandbreddsmonitorn:
De viktigaste komponenterna är:
- Tryckknapp
- Display för e-bläck
- Hallon Pi Zero
- Relämodul
- RGB LED + motstånd (beroende på vilken RGB LED du använder)
- Växla
- DC-DC-omvandlare
- Kvinnlig kontakt
Den andra bilden visar en schematisk bild av ledningarna. Matningsspänningens positiva pol matas via omkopplaren till DC-DC spänningsomvandlaren (som omvandlar routerns 12V matningsspänning till 5V för hallon) och via reläet (via den normalt anslutna stiftet) tillbaka till utgångskontakt. Således försörjs modemet också med ström när bandbreddsmonitorn är avstängd.
Bandbreddsmätningen kan startas manuellt med en knapp. En RGB -LED används för att visualisera de olika driftstillstånden.
Anslutningen mellan Raspberry Pi och e-ink display visas inte i kretsschemat. Anslut displayen enligt tabellen och uttaget ovan.
Steg 3: 3D -utskrift och bygga jakten
Följande delar behövs för fodralet (se bilden ovan):
- nedre del
- övre del
- främre
- tillbaka
- 4x fäste
Alla delar kan skrivas ut utan stöd. Du kan också hitta filerna och några av mina andra mönster på Thingiverse:
Displayen kan fästas på frontpanelen med fästen och en dubbelsidig tejp. Knappbrytare och femalkontakt skruvas fast på bak- och bakpanelen. Jag använde 3x20 mm skruvar för att ansluta de två halvorna av huset. Toleranserna på spåren för de främre och bakre panelerna är relativt snäva. Vid behov måste de främre och bakre panelerna slipas på kanten (på insidan för att undvika att förstöra ytan).
Steg 4: Konfigurera Raspberry PI
Denna installationsguide är baserad på att sammanställa flera installationsanvisningar från olika källor (e-Ink display-tillverkare, …). För mig har instruktionerna lett till önskat resultat. Eftersom jag inte är en Linux -expert har inga optimeringar eller liknande gjorts. Jag är medveten om att det säkert finns bättre och effektivare lösningar.
Låt oss anta att du redan har Raspbian installerat på din Pi (det finns många självstudier om hur du installerar det grundläggande operativsystemet) och att du har en bildskärm (via miniHDMI), mus och tangentbord ansluten. En korrekt konfigurerad WLAN -anslutning till routern eller Internet antas också. Om inte annat anges utförs alla installationsprocedurer i terminalen.
Installera fjärrskrivbord (för att komma åt PI från din dator):
sudo apt-get uppdatering
sudo apt-get
installera xrdp
eller så kan du också arbeta utan huvud via ssh (se t.ex.
Ändra lösenord:
www.raspberrypi.org/forums/viewtopic.php?t=193620
Installera hastighetstest:
sudo
apt-get install python-pip
sudo pip installera speedtest-cli
för att testa om installationen lyckades kör Speedtest i terminalen:
speedtest-cli
om någonting är korrekt ska du få något som på den första bilden ovan.
Installera wiringPI
sudo apt-get install git-core
git -klon git: //git.drogon.net/wiringPi
cd -ledningarPi
./bygga
(se även
Alternativt:
sudo apt-get install wiringpi
(se
Installera BCM2835
(se
Ladda ner bcm2835-1.60.tar.gz (eller en nyare version om tillgänglig)
tjära zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60
./konfiguration
göra
sudo kontrollera
sudo gör installationen
Installera Python -bildbiblioteket
sudo apt-get install python-imaging
Alternativt:
sudo apt-get install python-pil
Aktivera I2C -funktionen.
Kör följande kommando för att konfigurera ditt Raspberry Pi -kort:
sudo raspi-config
Välj gränssnittsalternativ-> I2C -> ja, för att starta I2C -kärndrivrutinen. Då måste du också ändra konfigurationsfilen. Kör följande kommando för att öppna konfigurationsfilen:
sudo nano /etc /modules
Lägg till följande två rader i konfigurationsfilen
i2c-bcm2708
i2c-dev
Se även
Aktivera SPI -funktionen
Kör följande kommando för att konfigurera ditt Raspberry Pi -kort:
sudo raspi-config
Välj gränssnittsalternativ-> SPI -> ja, för att starta SPI -kärndrivrutinen.
Installera ytterligare teckensnitt:
sudo apt-get install ttf-mscorefonts-installer
Ladda ner och installera teckensnitt (Roboto + Droid)
gksudo
pcmanfm
För att starta filhanterare med root -privilegier och kopiera truetype -teckensnitt till mapp/usr/share/fonts/truetype
Alternativt:
Kopiera teckensnitt till mappen Nedladdningar med WinSCP (ssh måste vara aktiverat för att kunna använda WinSCP)
sudo cp -r/home/pi/Downloads/droid/usr/share/fonts/truetype
sudo cp -r/home/pi/Downloads/roboto/usr/share/fonts/truetype
Du behöver roträttigheter för att komma åt teckensnittsmappen. Kanske finns det bättre sätt att göra detta (som redan nämnts är jag inte en Linux -expert) men båda sätten fungerade för mig.
Python -filer:
Använd filändaren för att skapa en ny mapp "bandwidth_monitor"
Kopiera alla filer till katalog bandwidth_monitor
Gör pythonfiler och skript körbart
chmod +x *.py
chmod +x speedtest-cron.sh
Konfigurera crontab
crontab -e
Crontab används för att schemalägga programkörning t.ex. hastighetstest var 30: e minut. Lägg till följande rader i din crontab (se även andra figuren):
@reboot/usr/bin/python /home/pi/bandwidth_monitor/post_restart_message.py &
@reboot sleep 30 &&/usr/bin/python /home/pi/bandwidth_monitor/poll_test_now_button.py */30 * * * * /home/pi/bandwidth_monitor/speedtest-cron.sh */3 * * * */usr/ bin/python /home/pi/bandwidth_monitor/poll_killswitch.py 13 03 * * */usr/bin/python /home/pi/bandwidth_monitor/refresh_display.py
Beskrivning av de schemalagda uppgifterna:
- vid omstart skrivs omstartmeddelandet till IOT -instrumentpanelen
- vid omstart startas omröstningen test_now_button
- var 30: e minut utförs en mätning av bandbredd
- var tredje minut kontrolleras status för fjärråterställningsknappen (på IOT -instrumentpanelen)
- en gång om dagen startas en uppfriskningscykel.
Se programvaruavsnittet för en kort beskrivning av programmen.
Steg 5: Programvara
Programvaran är uppdelad i flera filer / program:
bandwidth_monitor_0_4.py är huvudprogrammet som åberopas av Crontab var halvtimme. Den utför ett bandbreddstest (via kommandoradsversionen av speedtest.net). Under testet är RGB -lysdioden blå. Om bandbredden är över det valda tröskelvärdet visas värdet på e-ink-displayen (tillsammans med en tidsstämpel) och exporteras till Ubidots instrumentpanel. Om bandbredden är under tröskeln lyser lysdioden röd och mätningen upprepas efter en kort fördröjning. Efter 3 negativa försök aktiveras reläet och därmed bryts modemets strömförsörjning. Återställningskod (värde = 2) skrivs till loggsektionen.
poll_killswitch.py läser statusen för en boolsk variabel på instrumentpanelen. Om killswitch_state är sant aktiveras reläerna och modemets strömförsörjning avbryts. RGB -lysdioden lyser grönt under avstämningen av dödsbrytaren. Efter återställningen ställs killswitch_state in false och en post i loggdelen på instrumentpanelen genereras (värde = 1).
poll_test_now_button.py väntar på att tryckknappen på fodralets frontpanel ska tryckas in. Genom att aktivera knappen utlöses en bandbreddsmätning manuellt. När programmet startas (vid omstart av Raspberry Pi) blinkar RGB -lysdioden rött.
post_restart_message.py skriver återställningskoden (värde = 3) till loggsektionen på instrumentpanelen. Detta indikerar att bandbreddsmonitorn har startats om. Under programstart blinkar RGB -lysdioden blått.
test_LED.py och test_relay.py är enkla skript som kan användas för att testa maskinvarufunktionen för RGB -lysdioden och reläet.
epdconfig.py och epd2in9.py är enhetsdrivrutinen för e-bläckskärmen från Waveshare.
För att programmen ska få åtkomst till Ubidots instrumentpanel måste du lägga till dina individuella tokens och enhets- eller variabelnamn (om du använder olika notationer). Sök efter avsnitt som det som visas på bilden ovan (ersätt XXXXXXXX med din token).
Omfattande självstudier om hur man bygger instrumentpanelen och hur man integrerar instrumentpanelen i ett Python -program finns direkt på Ubidots -sidan (https://help.ubidots.com/en/) eller via Google.
Steg 6: IOT Dashboard
Instrumentpanelen som Ubidots har (se https://ubidots.com) innehåller flera områden som kort beskrivs nedan.
- Tidssekvens för upp- och nedladdningshastighet. Varje halvtimme infogas ett nytt värde i diagrammet.
- Tidsförloppet för den uppmätta pingtiden. Varje halvtimme infogas ett nytt värde i diagrammet.
- Tidssekvens för den genomsnittliga nedladdningshastigheten. Medelvärdet över 24 timmar beräknas och skrivs till diagrammet.
- Kalkylarkrepresentation av aktuella mätvärden inklusive tidsstämpel.
- Fjärrkontrollsknapp för återställning av modemet via Internet. Frågan sker var tredje minut, dvs det kan ta lite tid innan åtgärden utförs.
- Loggning av de senaste återställningarna inklusive orsaken till återställningen (fjärrtrigning, avstängning eller spänningsförlust, faller under minsta bandbredd)
Omfattande självstudier om hur man bygger instrumentpanelen och hur man integrerar instrumentpanelen i ett Python -program finns direkt på Ubidots -sidan (https://help.ubidots.com/en/) eller via Google.