Inhoudsopgave:
- Benodigdheden
- Stap 1: Functies:
- Stap 2: Bedrading
- Stap 3: 3D-printen en de jacht bouwen
- Stap 4: Het instellen van de Raspberry PI
- Stap 5: Software
- Stap 6: IOT-dashboard
- Stap 7: Introductie van basisfuncties
Video: Bandbreedtemonitor - Ajarnpa (met afbeeldingen) - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Omdat ik mezelf vaak afvroeg welke bandbreedte momenteel wordt geleverd door mijn ISP (ik gebruik een LTE-modem voor de internetverbinding), dacht ik aan een bandbreedtebewakingssysteem. Omdat het systeem compact en energiebesparend moet zijn, heb ik als centrale component gekozen voor een Raspberry Pi Zero. De Raspberry is via WLAN met het modem verbonden, hierdoor kunnen ook WLAN-problemen worden opgespoord.
Benodigdheden
- Raspberry Pi Zero WH
- Waveshare e-ink display (2,9 inch-e-paper-module)
- DC-DC-converter (bijv. DEBO DCDC 20W)
- RGB LED (uit een oud apparaat gehaald)
- Druk op de knop
- Schakelaar
- Relais module (bijv. 2-weg relais module 2-weg relais module)
- Mannelijke connector + Vrouwelijke connector (beide passen op de maat van de stekker van uw modemvoeding)
- 3D geprint hoesje
Stap 1: Functies:
- De Raspberry Pi Zero is verbonden via WLAN, test de up- en downloadsnelheid en voert elk half uur een ping-meting uit. Als basis voor de metingen wordt een commandoregelversie van speedtest.net gebruikt.
- Het resultaat van de bandbreedte- en pingmeting wordt weergegeven op een e-ink display. Ook wordt het tijdstip van de meting weergegeven.
- Als de downloadsnelheid onder een gedefinieerde drempelwaarde komt, schakelt een relais de modem korte tijd uit en weer in. Het modem wordt dus gereset zonder enige wijziging van het apparaat (alleen de stroomtoevoer wordt onderbroken).
- Een knop aan de voorkant van het apparaat is beschikbaar om de bandbreedtemeting handmatig te activeren.
- De gemeten waarden worden weergegeven op een Ubidots Dashboard (IOT Portal). In het overzicht ziet u ook de tijdhistorie van de meetwaarden en de redenen voor de laatste resets.
- In de IOT Portal vind je ook een knop om de modem op afstand te resetten.
- De Bandbreedte monitor maakt gebruik van de voeding van het modem. Geen extra voeding nodig. Het relais onderbreekt het doorsturen van de voeding naar het modem - de Raspberry blijft ingeschakeld.
Stap 2: Bedrading
In de eerste afbeelding ziet u het interne ontwerp van de bandbreedtemonitor:
De belangrijkste componenten zijn:
- Druk op de knop
- E-ink-display
- Raspberry Pi Zero
- Relaismodule
- RGB LED + Weerstanden (afhankelijk van de RGB LED die je gebruikt)
- Schakelaar
- DC-DC-omzetter
- Vrouwelijke connector
De tweede foto toont een schema van de bedrading. De pluspool van de voedingsspanning wordt via de schakelaar naar de DC-DC spanningsomvormer gevoerd (die de 12V voedingsspanning van de router omzet naar 5V voor de Raspberry) en via het relais (via de normaal aangesloten pin) terug naar de uitgangsconnector. Zo wordt het modem ook van stroom voorzien als de bandbreedtemonitor is uitgeschakeld.
De bandbreedtemeting kan handmatig worden gestart via een knop. Een RGB-led wordt gebruikt om de verschillende bedrijfstoestanden te visualiseren.
De verbinding tussen Raspberry Pi en e-ink display is niet weergegeven in het schakelschema. Sluit het display aan volgens de tabel en de pin-out hierboven.
Stap 3: 3D-printen en de jacht bouwen
De volgende onderdelen zijn nodig voor de koffer (zie afbeelding hierboven):
- onderste deel
- bovenste deel
- voorkant
- rug
- 4x montage
Alle onderdelen kunnen worden bedrukt zonder steunen. Je kunt de bestanden en enkele van mijn andere ontwerpen ook vinden op Thingiverse:
Het display kan met de beugels en een dubbelzijdige tape aan het frontpaneel worden bevestigd. Knopschakelaar en vrouwelijke connector zijn op het achter- en achterpaneel geschroefd. Ik gebruikte 3x20mm schroeven om de twee helften van de behuizing te verbinden. De toleranties op de groeven voor de voor- en achterpanelen zijn relatief krap. Indien nodig moeten de voor- en achterpanelen aan de rand worden geschuurd (aan de binnenkant om het oppervlak niet te beschadigen).
Stap 4: Het instellen van de Raspberry PI
Deze installatiegids is gebaseerd op het samenstellen van verschillende installatie-instructies van verschillende bronnen (fabrikanten van e-Ink-displays, …). Voor mij hebben de instructies geleid tot het gewenste resultaat. Aangezien ik geen Linux-expert ben, zijn er geen optimalisaties of iets dergelijks gedaan. Ik ben me ervan bewust dat er zeker betere en efficiëntere oplossingen zijn.
Laten we aannemen dat je Raspbian al op je Pi hebt geïnstalleerd (er zijn veel tutorials over het installeren van het basisbesturingssysteem) en je hebt een beeldscherm (via miniHDMI), muis en toetsenbord aangesloten. Er wordt ook uitgegaan van een correct ingestelde WLAN-verbinding met de router of internet. Tenzij anders vermeld, worden alle installatieprocedures uitgevoerd in de terminal.
Installeer Extern bureaublad (om vanaf uw computer toegang te krijgen tot de PI):
sudo apt-get update
sudo apt-get
xrdp installeren
of je kunt ook headless werken via ssh (zie bijv.
Verander wachtwoord:
www.raspberrypi.org/forums/viewtopic.php?t=193620
Speedtest installeren:
sudo
apt-get install python-pip
sudo pip install speedtest-cli
om te testen of de installatie succesvol was, voer Speedtest uit in de terminal:
speedtest-klik
als alles correct is, zou je iets moeten krijgen zoals in de eerste afbeelding hierboven.
Installeren bedradingPI
sudo apt-get install git-core
git kloon git://git.drogon.net/wiringPi
cd bedradingPi
./bouwen
(zie ook
alternatief:
sudo apt-get install bedradingpi
(zie
Installeer BCM2835
(zie
Download bcm2835-1.60.tar.gz (of een nieuwere versie indien beschikbaar)
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60
./configureren
maken
sudo check
sudo make install
Installeer de Python-beeldverwerkingsbibliotheek
sudo apt-get install python-imaging
alternatief:
sudo apt-get install python-pil
Schakel de I2C-functie in.
Voer de volgende opdracht uit om uw Raspberry Pi-bord te configureren:
sudo raspi-config
Selecteer Interface-opties-> I2C -> ja, om het I2C-kernstuurprogramma op te starten. Dan moet u ook het configuratiebestand wijzigen. Voer de volgende opdracht uit om het configuratiebestand te openen:
sudo nano /etc/modules
Voeg de volgende twee regels toe aan het configuratiebestand:
i2c-bcm2708
i2c-dev
Zie ook
De SPI-functie inschakelen
Voer de volgende opdracht uit om uw Raspberry Pi-bord te configureren:
sudo raspi-config
Selecteer Interface-opties-> SPI -> ja, om het SPI-kernstuurprogramma op te starten.
Installeer extra lettertypen:
sudo apt-get install ttf-mscorefonts-installer
Download en installeer lettertypen (Roboto + Droid)
gksudo
pcmanfm
Bestandsbeheer starten met root-privileges en truetype-lettertypen kopiëren naar map /usr/share/fonts/truetype
alternatief:
Kopieer de lettertypen naar de map Downloads met WinSCP (ssh moet zijn ingeschakeld om WinSCP te gebruiken)
sudo cp -r /home/pi/Downloads/droid /usr/share/fonts/truetype
sudo cp -r /home/pi/Downloads/roboto /usr/share/fonts/truetype
U hebt root-privileges nodig om toegang te krijgen tot de lettertypemap. Misschien zijn er betere manieren om dit te doen (zoals al gezegd ben ik geen Linux-expert) maar beide manieren werkten voor mij.
Python-bestanden:
Gebruik de filemanger om een nieuwe map "bandwidth_monitor" aan te maken
Kopieer alle bestanden naar de directory bandbreedte_monitor
Python-bestanden en script uitvoerbaar maken
chmod +x *.py
chmod +x speedtest-cron.sh
Crontab configureren
crontab -e
Crontab wordt gebruikt om programma-uitvoering te plannen, b.v. speedtest elke 30 min. Voeg de volgende regels toe aan je crontab (zie ook tweede figuur):
@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
Beschrijving van de geplande taken:
- bij het opnieuw opstarten wordt het herstartbericht naar het IOT-dashboard geschreven
- bij het opnieuw opstarten wordt de poll test_now_button gestart
- elke 30 minuten wordt een bandbreedtemeting uitgevoerd
- elke 3 minuten wordt de status van de resetknop op afstand (op het IOT-dashboard) gecontroleerd
- eenmaal per dag wordt een display-verversingscyclus gestart.
Zie de softwaresectie voor een korte beschrijving van de programma's.
Stap 5: Software
De software is opgesplitst in verschillende bestanden / programma's:
bandbreedte_monitor_0_4.py is het hoofdprogramma dat elk half uur door Crontab wordt aangeroepen. Het voert een bandbreedtetest uit (via de opdrachtregelversie van speedtest.net). Tijdens de test is de RGB-led blauw. Als de bandbreedte boven de geselecteerde drempel ligt, wordt de waarde weergegeven op het e-ink-display (samen met een tijdstempel) en geëxporteerd naar het Ubidots-dashboard. Als de bandbreedte onder de drempel ligt, wordt de LED rood en wordt de meting na een korte vertraging herhaald. Na 3 negatieve pogingen wordt het relais geactiveerd en wordt de voeding van het modem onderbroken. Resetcode (waarde=2) wordt naar de logsectie geschreven.
poll_killswitch.py leest de status van een booleaanse variabele op het dashboard. Als killswitch_state waar is, wordt het relais geactiveerd en wordt de voeding van het modem onderbroken. De RGB LED wordt groen tijdens het pollen van de killswitch. Na de reset wordt de killswitch_state ingesteld op false en wordt een vermelding in de logsectie van het dashboard gegenereerd (waarde=1).
poll_test_now_button.py wacht op het indrukken van de drukknop op het voorpaneel van de behuizing. Door de knop te activeren wordt handmatig een bandbreedtemeting getriggerd. Bij het starten van het programma (bij het herstarten van de Raspberry Pi) knippert de RGB LED rood.
post_restart_message.py schrijft de resetcode (value=3) naar de logsectie van het dashboard. Dit geeft aan dat de bandbreedtemonitor opnieuw is opgestart. Tijdens de programmastart knippert de RGB-led blauw.
test_LED.py en test_relay.py zijn eenvoudige scripts die kunnen worden gebruikt om de hardwarefunctie van de RGB-led en het relais te testen.
epdconfig.py en epd2in9.py zijn apparaatstuurprogramma's voor het e-inktscherm dat door Waveshare wordt geleverd.
Om de programma's toegang te geven tot het Ubidots-dashboard, moet u uw individuele tokens en apparaat- of variabelenamen toevoegen (als u verschillende notaties gebruikt). Zoek naar een sectie zoals in de afbeelding hierboven (vervang XXXXXXXX door uw token).
Uitgebreide tutorials over het bouwen van het dashboard en het integreren van het dashboard in een Python-programma zijn direct te vinden op de Ubidots-pagina (https://help.ubidots.com/en/) of via Google.
Stap 6: IOT-dashboard
Het door Ubidots gehoste dashboard (zie https://ubidots.com) bevat verschillende onderdelen die hieronder kort worden beschreven.
- Tijdsvolgorde van up- en downloadsnelheid. Elk half uur wordt een nieuwe waarde in het diagram ingevoegd.
- Tijdsverloop van de gemeten pingtijd. Elk half uur wordt een nieuwe waarde in het diagram ingevoegd.
- Tijdsvolgorde van de gemiddelde downloadsnelheid. De gemiddelde waarde over 24 uur wordt berekend en in het diagram geschreven.
- Spreadsheetweergave van de huidige meetwaarden inclusief tijdstempel.
- Afstandsbedieningsknop voor het resetten van de modem via internet. Query vindt elke 3 minuten plaats, d.w.z. het kan even duren voordat de actie is uitgevoerd.
- Registratie van de laatste resets inclusief de reden van de reset (remote triggering, uitschakelen of spanningsverlies, onder de minimale bandbreedte vallen)
Uitgebreide tutorials over het bouwen van het dashboard en het integreren van het dashboard in een Python-programma zijn direct te vinden op de Ubidots-pagina (https://help.ubidots.com/en/) of via Google.
Aanbevolen:
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Een computer demonteren met eenvoudige stappen en afbeeldingen: 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een computer demonteren met eenvoudige stappen en afbeeldingen: dit is een instructie over het demonteren van een pc. De meeste basiscomponenten zijn modulair en gemakkelijk te verwijderen. Wel is het belangrijk dat je er goed over georganiseerd bent. Dit zal helpen voorkomen dat u onderdelen kwijtraakt, en ook bij het maken van de hermontage e
Uw afbeeldingen opslaan voor uw taak: 4 stappen (met afbeeldingen)
Uw afbeeldingen opslaan voor uw taak: 1. Open een nieuw Google-document en gebruik deze pagina om uw afbeeldingen te beveiligen.2. Gebruik ctrl (control) en de "c" sleutel om te kopiëren.3. Gebruik ctrl (control) en de "v" sleutel om te plakken
Afbeeldingen alleen horizontaal of verticaal naadloos maken (voor "The GIMP"). 11 stappen (met afbeeldingen)
Afbeeldingen alleen horizontaal of verticaal naadloos maken (voor "The GIMP").: Als u de plug-in "Maak naadloos" in GIMP probeert, wordt de afbeelding zowel horizontaal als verticaal naadloos. Het zal je niet toestaan om het naadloos te maken in slechts één dimensie. Dit instructable zal je helpen om ima
Stereo grafische afbeeldingen maken in Excel 8 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Stereo grafische afbeeldingen maken in Excel: Stereo grafische afbeeldingen kunnen diepte toevoegen aan 3D-plots