Innholdsfortegnelse:

Båndbreddeovervåker: 7 trinn (med bilder)
Båndbreddeovervåker: 7 trinn (med bilder)

Video: Båndbreddeovervåker: 7 trinn (med bilder)

Video: Båndbreddeovervåker: 7 trinn (med bilder)
Video: Fjern IKKE batteriet fra bilen. Gør det RIGTIGT! 2024, November
Anonim
Båndbreddeovervåker
Båndbreddeovervåker
Båndbreddeovervåker
Båndbreddeovervåker
Båndbreddeovervåker
Båndbreddeovervåker

Da jeg ofte spurte meg selv hvilken båndbredde som er tilgjengelig fra ISP -en min (jeg bruker et LTE -modem for Internett -tilkoblingen), tenkte jeg på et båndbreddeovervåkingssystem. Siden systemet skulle være kompakt og strømsparende, valgte jeg en Raspberry Pi Zero som den sentrale komponenten. Bringebæret er koblet til modemet via WLAN, derfor kan WLAN -problemer også oppdages.

Rekvisita

  • Raspberry Pi Zero WH
  • Waveshare e-blekkdisplay (2,9 tommers e-papirmodul)
  • DC-DC-omformer (f.eks. DEBO DCDC 20W)
  • RGB LED (tatt ut fra en gammel enhet)
  • Trykknapp
  • Bytte om
  • Relais -modul (f.eks. 2 -veis relemodul 2 -veis relemodul)
  • Hankontakt + Hunnkontakt (begge passer til størrelsen på modemstrømforsyningspluggen)
  • 3D -trykt etui

Trinn 1: Funksjoner

Funksjoner
Funksjoner
Funksjoner
Funksjoner
Funksjoner
Funksjoner
  • Raspberry Pi Zero er tilkoblet via WLAN, tester opp- og nedlastningshastighet og utfører en ping-måling hver halve time. En kommandolinjeversjon av speedtest.net brukes som grunnlag for målingene.
  • Resultatet av båndbredde og ping-måling vises på et e-blekkdisplay. Tidspunktet for målingen er også vist.
  • Hvis nedlastingshastigheten faller under en definert terskelverdi, slår et relé av og på modemet for en kort stund. Modemet tilbakestilles dermed uten noen endring av enheten (bare strømforsyningen er avbrutt).
  • En knapp på forsiden av enheten er tilgjengelig for å utløse måling av båndbredde manuelt.
  • Måleverdiene vises på et Ubidots Dashboard (IOT Portal). I oversikten kan du også se tidshistorikken til måleverdiene og årsakene til de siste tilbakestillingene.
  • I IOT -portalen kan du også finne en knapp for å tilbakestille modemet eksternt.
  • Båndbreddeovervåkeren bruker strømforsyningen til modemet. Ingen ekstra forsyning nødvendig. Reléene avbryter videresending av strømforsyningen til modemet - bringebæret forblir slått på.

Trinn 2: Kabling

Kabling
Kabling
Kabling
Kabling
Kabling
Kabling
Kabling
Kabling

På det første bildet kan du se den interne utformingen av båndbreddemonitoren:

De viktigste komponentene er:

    1. Trykknapp
    2. Display med e-blekk
    3. Raspberry Pi Zero
    4. Relémodul
    5. RGB LED + motstander (avhengig av RGB LED du bruker)
    6. Bytte om
    7. DC-DC-omformer
    8. Hunnkontakt

Det andre bildet viser en skjematisk oversikt over ledningene. Den positive polen i forsyningsspenningen mates via bryteren til DC-DC spenningsomformeren (som konverterer 12V forsyningsspenningen til ruteren til 5V for bringebæret) og via reléet (via den normalt tilkoblede pinnen) tilbake til utgangskontakt. Dermed får modemet også strøm når båndbreddemonitoren er slått av.

Båndbreddemåling kan startes manuelt via en knapp. En RGB -LED brukes til å visualisere de forskjellige driftstilstandene.

Tilkoblingen mellom Raspberry Pi og e-blekkdisplayet er ikke vist i kretsdiagrammet. Koble skjermen i henhold til tabellen og pin-out ovenfor.

Trinn 3: 3D -utskrift og bygging av jakten

3D -utskrift og bygging av jakten
3D -utskrift og bygging av jakten
3D -utskrift og bygging av jakten
3D -utskrift og bygging av jakten
3D -utskrift og bygging av jakten
3D -utskrift og bygging av jakten
3D -utskrift og bygging av jakten
3D -utskrift og bygging av jakten

Følgende deler er nødvendige for saken (se bildet ovenfor):

    1. Nedre del
    2. øvre del
    3. front
    4. tilbake
    5. 4x feste

Alle delene kan skrives ut uten støtte. Du kan også finne filene og noen av mine andre design på Thingiverse:

Skjermen kan festes til frontpanelet med festene og en dobbeltsidig tape. Knappbryter og hunnkontakt er skrudd fast på bak- og bakpanelet. Jeg brukte 3x20 mm skruer for å koble de to halvdelene av huset. Toleransene på sporene for front- og bakpanelene er relativt tette. Om nødvendig må front- og bakpanelene slipes på kanten (på innsiden for å unngå å ødelegge overflaten).

Trinn 4: Konfigurere Raspberry PI

Sette opp Raspberry PI
Sette opp Raspberry PI
Sette opp Raspberry PI
Sette opp Raspberry PI

Denne oppsettguiden er basert på å sette sammen flere installasjonsinstruksjoner fra forskjellige kilder (e-Ink display-produsenter, …). For meg har instruksjonene ført til ønsket resultat. Siden jeg ikke er en Linux -ekspert, ble det ikke gjort noen optimaliseringer eller lignende. Jeg er klar over at det sikkert finnes bedre og mer effektive løsninger.

La oss anta at du allerede har Raspbian installert på Pi (det er mange opplæringsprogrammer om hvordan du installerer det grunnleggende operativsystemet) og at du har en skjerm (via miniHDMI), mus og tastatur tilkoblet. En riktig konfigurert WLAN -tilkobling til ruteren eller Internett er også forutsatt. Med mindre annet er angitt, utføres alle installasjonsprosedyrer i terminalen.

Installer eksternt skrivebord (for å få tilgang til PI fra datamaskinen):

sudo apt-get oppdatering

sudo apt-get

installer xrdp

eller du kan også jobbe hodeløst via ssh (se f.eks.

Bytt passord:

www.raspberrypi.org/forums/viewtopic.php?t=193620

Installer hastighetstest:

sudo

apt-get install python-pip

sudo pip installer speedtest-cli

for å teste om installasjonen var vellykket, kjør Speedtest i terminalen:

speedtest-cli

hvis noe er riktig, bør du få noe som på det første bildet ovenfor.

Installer wiringPI

sudo apt-get install git-core

git klon git: //git.drogon.net/wiringPi

cd -ledningerPi

./bygge

(se også

Alternativt:

sudo apt-get install wiringpi

(se

Installer BCM2835

(se

Last ned bcm2835-1.60.tar.gz (eller en nyere versjon hvis tilgjengelig)

tjære zxvf bcm2835-1.60.tar.gz

cd bcm2835-1.60

./konfigurasjon

gjøre

sudo sjekk

sudo gjør install

Installer Python -bildebehandlingsbiblioteket

sudo apt-get install python-imaging

Alternativt:

sudo apt-get install python-pil

Aktiver I2C -funksjonen.

Kjør følgende kommando for å konfigurere Raspberry Pi -kortet:

sudo raspi-config

Velg Grensesnittalternativer-> I2C -> ja, for å starte I2C -kjernedriveren. Da må du også endre konfigurasjonsfilen. Kjør følgende kommando for å åpne konfigurasjonsfilen:

sudo nano /etc /modules

Legg til følgende to linjer i konfigurasjonsfilen

i2c-bcm2708

i2c-dev

Se også

Aktiver SPI -funksjonen

Kjør følgende kommando for å konfigurere Raspberry Pi -kortet:

sudo raspi-config

Velg Grensesnittalternativer-> SPI -> ja, for å starte SPI -kjernedriveren.

Installer flere fonter:

sudo apt-get install ttf-mscorefonts-installer

Last ned og installer fonter (Roboto + Droid)

gksudo

pcmanfm

For å starte filmanager med rotrettigheter og kopiere truetype -fonter til mappe/usr/share/fonts/truetype

Alternativt:

Kopier skriftene til nedlastingsmappen med WinSCP (ssh må være aktivert for å bruke WinSCP)

sudo cp -r/home/pi/Downloads/droid/usr/share/fonts/truetype

sudo cp -r/home/pi/Downloads/roboto/usr/share/fonts/truetype

Du trenger rotrettigheter for å få tilgang til skriftmappen. Kanskje det er bedre måter å gjøre dette på (som nevnt tidligere er jeg ikke en Linux -ekspert), men begge måtene fungerte for meg.

Python -filer:

Bruk filmanger for å lage en ny mappe "bandwidth_monitor"

Kopier alle filene til katalogen bandwidth_monitor

Lag python -filer og script kjørbare

chmod +x *.py

chmod +x speedtest-cron.sh

Konfigurer crontab

crontab -e

Crontab brukes til å planlegge programkjøring f.eks. hastighetstest hvert 30. minutt. Legg til følgende linjer i crontab (se også andre figur):

@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

Beskrivelse av de planlagte oppgavene:

  • ved omstart blir omstartmeldingen skrevet til IOT -dashbordet
  • ved omstart startes avstemningen test_now_button
  • hvert 30. minutt utføres en måling av båndbredde
  • hvert 3. minutt kontrolleres statusen til knappen for ekstern tilbakestilling (på IOT -dashbordet)
  • en gang om dagen starter en skjermoppdateringssyklus.

Se programvaredelen for en kort beskrivelse av programmene.

Trinn 5: Programvare

Programvare
Programvare

Programvaren er delt inn i flere filer / programmer:

bandwidth_monitor_0_4.py er hovedprogrammet som påkalles av Crontab hver halve time. Den utfører en båndbredde -test (via kommandolinjeversjonen av speedtest.net). Under testen er RGB -lysdioden blå. Hvis båndbredden er over den valgte terskelen, vises verdien på e-blekkdisplayet (sammen med et tidsstempel) og eksporteres til Ubidots dashbord. Hvis båndbredden er under terskelen, blir LED -en rød og målingen gjentas etter en kort forsinkelse. Etter 3 negative forsøk blir reléet aktivert, og dermed blir strømforsyningen til modemet avbrutt. Tilbakestill kode (verdi = 2) skrives til loggseksjonen.

poll_killswitch.py leser statusen til en boolsk variabel på dashbordet. Hvis killswitch_state er sant, er relaene aktivert og strømforsyningen til modemet blir avbrutt. RGB -lysdioden blir grønn under avstemningen av drapsbryteren. Etter tilbakestillingen settes killswitch_state false og en oppføring i loggdelen på dashbordet genereres (verdi = 1).

poll_test_now_button.py venter på at trykknappen på frontpanelet på saken skal trykkes. Ved å aktivere knappen utløses en båndbreddemåling manuelt. Når programmet startes (ved omstart av Raspberry Pi) blinker RGB -LED -en rødt.

post_restart_message.py skriver tilbakestillingskoden (verdi = 3) til loggdelen på dashbordet. Dette indikerer at båndbreddemonitoren er startet på nytt. Under programstart blinker RGB -LED -en blå.

test_LED.py og test_relay.py er enkle skript som kan brukes til å teste maskinvarefunksjonen til RGB LED og reléet.

epdconfig.py og epd2in9.py er enhetsdriver for e-blekkvisningen som tilbys av Waveshare.

For å gi programmene tilgang til Ubidots dashbord, må du legge til dine individuelle tokens og enhets- eller variabelnavn (hvis du bruker forskjellige notasjoner). Søk etter delen som den som vises på bildet ovenfor (erstatt XXXXXXXX med tokenet ditt).

Omfattende opplæringsprogrammer om hvordan du bygger dashbordet og hvordan du integrerer dashbordet i et Python -program, finner du direkte på Ubidots -siden (https://help.ubidots.com/en/) eller via Google.

Trinn 6: IOT Dashboard

IOT Dashboard
IOT Dashboard

Dashbordet som Ubidots hoster (se https://ubidots.com) inneholder flere områder som er kort beskrevet nedenfor.

    1. Tidssekvens for opp- og nedlastningshastighet. Hver halve time settes en ny verdi inn i diagrammet.
    2. Tidsforløpet for den målte pingtiden. Hver halve time settes det inn en ny verdi i diagrammet.
    3. Tidssekvens for gjennomsnittlig nedlastningshastighet. Gjennomsnittsverdien over 24 timer beregnes og skrives til diagrammet.
    4. Regnearksrepresentasjon av gjeldende måleverdier inkludert tidsstempel.
    5. Fjernkontrollknapp for tilbakestilling av modemet via Internett. Forespørsel forekommer hvert 3. minutt, det vil si at det kan ta litt tid før handlingen er utført.
    6. Logging av de siste tilbakestillingene, inkludert årsaken til tilbakestillingen (fjernutløser, slå av eller spenningstap, faller under minimum båndbredde)

Omfattende opplæringsprogrammer om hvordan du bygger dashbordet og hvordan du integrerer dashbordet i et Python -program, finner du direkte på Ubidots -siden (https://help.ubidots.com/en/) eller via Google.

Anbefalt: