Cuprins:
- Provizii
- Pasul 1: caracteristici
- Pasul 2: Cablare
- Pasul 3: Imprimarea 3D și construirea Chase
- Pasul 4: Configurarea Raspberry PI
- Pasul 5: Software
- Pasul 6: IOT Dashboard
- Pasul 7: Introducerea funcțiilor de bază
Video: Monitor lățime de bandă: 7 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
Deoarece mă întrebam deseori ce lățime de bandă este furnizată în prezent de ISP-ul meu (folosesc un modem LTE pentru conexiunea la Internet), m-am gândit la un sistem de monitorizare a lățimii de bandă. Deoarece sistemul ar trebui să fie compact și să economisească energie, am ales ca componentă centrală un Raspberry Pi Zero. Raspberry este conectat la modem prin WLAN, prin urmare pot fi detectate și probleme cu WLAN.
Provizii
- Raspberry Pi Zero WH
- Afișaj cu cerneală electronică Waveshare (modul de e-hârtie de 2.9 inch)
- Convertor DC-DC (de ex. DEBO DCDC 20W)
- LED RGB (scos de pe un dispozitiv vechi)
- Apasa butonul
- Intrerupator
- Modul Relais (de exemplu modulul releu 2 căi Modulul releu 2 căi)
- Conector tată + conector tată (ambele se potrivesc cu dimensiunea prizei de alimentare a modemului)
- Carcasă imprimată 3D
Pasul 1: caracteristici
- Raspberry Pi Zero este conectat prin WLAN, testează viteza de încărcare și descărcare și efectuează o măsurare ping la fiecare jumătate de oră. Ca bază pentru măsurători se folosește o versiune de linie de comandă a speedtest.net.
- Rezultatul lățimii de bandă și măsurării pingului este afișat pe un afișaj cu cerneală electronică. Este afișat și timpul măsurării.
- Dacă viteza de descărcare scade sub o valoare prag definită, un releu oprește și pornește modemul pentru o perioadă scurtă de timp. Modemul este astfel resetat fără nicio modificare a dispozitivului (numai sursa de alimentare este întreruptă).
- Un buton din partea frontală a dispozitivului este disponibil pentru a declanșa manual măsurarea lățimii de bandă.
- Valorile măsurate sunt afișate pe un tablou de bord Ubidots (IOT Portal). În prezentarea generală puteți vedea, de asemenea, istoricul timpului valorilor măsurate și motivele ultimelor resetări.
- În portalul IOT puteți găsi, de asemenea, un buton pentru a reseta de la distanță modemul.
- Monitorul de lățime de bandă utilizează sursa de alimentare a modemului. Nu este necesară furnizarea suplimentară. Relaisul întrerupe redirecționarea sursei de alimentare către modem - zmeura rămâne pornită.
Pasul 2: Cablare
În prima imagine puteți vedea designul intern al monitorului de lățime de bandă:
Componentele majore sunt:
- Apasa butonul
- Afișaj cu cerneală electronică
- Raspberry Pi Zero
- Modulul de releu
- LED-uri RGB + rezistențe (în funcție de LED-ul RGB pe care îl utilizați)
- Intrerupator
- Convertor DC-DC
- Conector feminin
A doua imagine prezintă o schemă a cablajului. Polul pozitiv al tensiunii de alimentare este alimentat prin comutatorul convertorului de tensiune DC-DC (care convertește tensiunea de alimentare de 12V a routerului la 5V pentru zmeură) și prin releu (prin pinul normal conectat) înapoi la conector de ieșire. Astfel, modemul este alimentat și cu energie atunci când monitorul lățimii de bandă este oprit.
Măsurarea lățimii de bandă poate fi pornită manual printr-un buton. Un LED RGB este utilizat pentru a vizualiza diferitele stări de funcționare.
Conexiunea dintre Raspberry Pi și afișajul e-ink nu este afișată în schema circuitului. Conectați afișajul conform tabelului și pin-out-ului de mai sus.
Pasul 3: Imprimarea 3D și construirea Chase
Următoarele părți sunt necesare pentru carcasă (a se vedea imaginea de mai sus):
- partea inferioară
- partea de sus
- față
- înapoi
- 4x montare
Toate piesele pot fi tipărite fără suporturi. De asemenea, puteți găsi fișierele și unele dintre celelalte modele pe Thingiverse:
Afișajul poate fi atașat la panoul frontal cu suporturi și o bandă dublă. Butonul și conectorul femel sunt înșurubate pe panoul din spate și din spate. Am folosit șuruburi de 3x20mm pentru a conecta cele două jumătăți ale carcasei. Toleranțele pe caneluri pentru panourile din față și din spate sunt relativ strânse. Dacă este necesar, panourile din față și din spate trebuie șlefuite pe margine (în interior pentru a evita distrugerea suprafeței).
Pasul 4: Configurarea Raspberry PI
Acest ghid de configurare se bazează pe compilarea mai multor instrucțiuni de instalare din diferite surse (producători de afișaje e-Ink, …). Pentru mine instrucțiunile au dus la rezultatul dorit. Deoarece nu sunt expert în Linux, nu s-au făcut optimizări sau altele similare. Sunt conștient că există cu siguranță soluții mai bune și mai eficiente.
Să presupunem că aveți deja Raspbian instalat pe Pi (există multe tutoriale despre cum să instalați sistemul de operare de bază) și aveți un ecran (prin miniHDMI), mouse și tastatură conectate. Se presupune, de asemenea, o conexiune WLAN configurată corect la router sau la Internet. Dacă nu se specifică altfel, toate procedurile de instalare sunt efectuate în terminal.
Instalați Desktop la distanță (pentru a accesa PI de pe computer):
sudo apt-get update
sudo apt-get
instalează xrdp
sau puteți lucra, de asemenea, fără cap prin ssh (consultați de exemplu
Schimbați parola:
www.raspberrypi.org/forums/viewtopic.php?t=193620
Instalați speedtest:
sudo
apt-get install python-pip
sudo pip instalează speedtest-cli
pentru a testa dacă instalarea a reușit, rulați Speedtest în terminal:
speedtest-cli
dacă totul este corect, ar trebui să obțineți ceva de genul din prima imagine de mai sus.
Instalați cablarea IP
sudo apt-get install git-core
git clone git: //git.drogon.net/wiringPi
cablare cdPi
./construi
(consultați și
Alternativ:
sudo apt-get install wiringpi
(consultați
Instalați BCM2835
(consultați
Descărcați bcm2835-1.60.tar.gz (sau o versiune mai nouă, dacă este disponibilă)
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60
./configure
face
sudo face check
sudo make install
Instalați biblioteca de imagini Python
sudo apt-get install python-imaging
Alternativ:
sudo apt-get install python-pil
Activați funcția I2C.
Rulați următoarea comandă pentru a vă configura placa Raspberry Pi:
sudo raspi-config
Selectați Opțiuni interfață-> I2C -> da, pentru a porni driverul de bază I2C. Apoi, trebuie să modificați și fișierul de configurare. Rulați următoarea comandă pentru a deschide fișierul de configurare:
sudo nano / etc / modules
Adăugați următoarele două linii în fișierul de configurare
i2c-bcm2708
i2c-dev
Vezi și
Activați funcția SPI
Rulați următoarea comandă pentru a vă configura placa Raspberry Pi:
sudo raspi-config
Selectați Opțiuni interfață-> SPI -> da, pentru a porni driverul de bază SPI.
Instalați fonturi suplimentare:
sudo apt-get install ttf-mscorefonts-installer
Descărcați și instalați fonturi (Roboto + Droid)
gksudo
pcmanfm
Pentru a porni fișierul cu privilegii de rădăcină și pentru a copia fonturile truetype în folderul / usr / share / fonts / truetype
Alternativ:
Copiați fonturile în folderul Descărcări cu WinSCP (ssh trebuie să fie activat pentru a utiliza WinSCP)
sudo cp -r / home / pi / Downloads / droid / usr / share / fonts / truetype
sudo cp -r / home / pi / Downloads / roboto / usr / share / fonts / truetype
Aveți nevoie de privilegii de root pentru a accesa folderul de fonturi. Poate că există modalități mai bune de a face acest lucru (așa cum am menționat deja, nu sunt un expert în Linux), dar ambele moduri au funcționat pentru mine.
Fișiere Python:
Utilizați fișierul de fișiere pentru a crea un nou folder „bandwidth_monitor”
Copiați toate fișierele în directorul bandwidth_monitor
Faceți fișierele și scriptul python executabile
chmod + x *.py
chmod + x speedtest-cron.sh
Configurați crontab
crontab -e
Crontab este folosit pentru a programa execuția programului de ex. speedtest la fiecare 30 min. Adăugați următoarele linii în crontab (a se vedea și a doua 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
Descrierea sarcinilor programate:
- la repornire, mesajul de repornire este scris în tabloul de bord IOT
- la repornire sondajul este pornit test_now_button
- la fiecare 30 de minute se efectuează o măsurare a lățimii de bandă
- la fiecare 3 minute se verifică starea butonului de resetare la distanță (pe tabloul de bord IOT)
- o dată pe zi se începe un ciclu de reîmprospătare a afișajului.
Consultați secțiunea software pentru o scurtă descriere a programelor.
Pasul 5: Software
Software-ul este împărțit în mai multe fișiere / programe:
bandwidth_monitor_0_4.py este programul principal invocat de Crontab la fiecare jumătate de oră. Efectuează un test de lățime de bandă (prin versiunea de linie de comandă a speedtest.net). În timpul testului, LED-ul RGB este albastru. Dacă lățimea de bandă depășește pragul selectat, valoarea este afișată pe afișajul cu cerneală electronică (împreună cu un timestamp) și este exportată în tabloul de bord Ubidots. Dacă lățimea de bandă este sub prag, LED-ul devine roșu și măsurarea se repetă după o scurtă întârziere. După 3 încercări negative, releul este activat și astfel alimentarea modemului este întreruptă. Codul de resetare (valoare = 2) este scris în secțiunea jurnal.
poll_killswitch.py citește starea unei variabile booleene pe tabloul de bord. Dacă killswitch_state este adevărat, relais-ul este activat și sursa de alimentare a modemului este întreruptă. LED-ul RGB devine verde în timpul interogării comutatorului. După resetare, killswitch_state este setat fals și se generează o intrare în secțiunea jurnal a tabloului de bord (valoare = 1).
poll_test_now_button.py așteaptă apăsarea butonului de pe panoul frontal al carcasei. Prin activarea butonului, o măsurare a lățimii de bandă este declanșată manual. Când programul este pornit (la repornirea Raspberry Pi), LED-ul RGB clipește roșu.
post_restart_message.py scrie codul de resetare (valoare = 3) în secțiunea jurnal a tabloului de bord. Acest lucru indică faptul că monitorul lățimii de bandă a fost repornit. În timpul pornirii programului, LED-ul RGB clipește în albastru.
test_LED.py și test_relay.py sunt scripturi simple care pot fi utilizate pentru a testa funcția hardware a LED-ului RGB și a releului.
epdconfig.py și epd2in9.py sunt driver de dispozitiv pentru afișajul cu cerneală electronică furnizat de Waveshare.
Pentru a permite programelor să acceseze tabloul de bord Ubidots, trebuie să adăugați jetoanele dvs. individuale și numele dispozitivelor sau variabilelor (dacă utilizați notații diferite). Căutați secțiune precum cea afișată în imaginea de mai sus (înlocuiți XXXXXXXX cu simbolul dvs.).
Tutoriale complete despre cum să construiți tabloul de bord și cum să integrați tabloul de bord într-un program Python pot fi găsite direct pe pagina Ubidots (https://help.ubidots.com/en/) sau prin Google.
Pasul 6: IOT Dashboard
Tabloul de bord găzduit de Ubidots (vezi https://ubidots.com) conține mai multe zone care sunt descrise pe scurt mai jos.
- Secvența de timp a vitezei de încărcare și descărcare. La fiecare jumătate de oră se introduce o nouă valoare în diagramă.
- Cursul de timp al timpului de ping măsurat. La fiecare jumătate de oră se introduce o nouă valoare în diagramă.
- Secvența de timp a vitezei medii de descărcare. Valoarea medie pe 24 de ore este calculată și scrisă în diagramă.
- Reprezentarea pe foaie de calcul a valorilor curente ale măsurătorii, inclusiv ștampila de timp.
- Buton telecomandă pentru resetarea modemului prin Internet. Interogarea are loc la fiecare 3 minute, adică poate dura ceva timp până la efectuarea acțiunii.
- Înregistrarea ultimelor resetări, inclusiv motivul resetării (declanșarea de la distanță, oprirea sau pierderea tensiunii, scăderea sub lățimea de bandă minimă)
Tutoriale complete despre cum să construiți tabloul de bord și cum să integrați tabloul de bord într-un program Python pot fi găsite direct pe pagina Ubidots (https://help.ubidots.com/en/) sau prin Google.
Recomandat:
Măsurarea timpului (ceas cu bandă măsurată): 5 pași (cu imagini)
Time Measure (Tape Measure Clock): Pentru acest proiect, noi (Alex Fiel și Anna Lynton) am luat un instrument de măsurare zilnic și l-am transformat într-un ceas! Planul inițial era de a motoriza o bandă-măsură existentă. Făcând asta, am decis că ar fi mai ușor să ne creăm propriul shell pentru a merge cu
Lumină de ceas cu afișaj matricial cu bandă LED controlată WiFi: 3 pași (cu imagini)
Lămpi de ceas cu afișaj matricial cu bandă LED controlată WiFi: benzi LED programabile, de ex. bazat pe WS2812, sunt fascinante. Aplicațiile sunt multiple și puteți obține rapid rezultate impresionante. Și cumva construirea ceasurilor pare a fi un alt domeniu la care mă gândesc mult. Începând cu o experiență în
Coș cu formă de lățime constantă: 5 pași
Cărucior cu lățime constantă: Formele cu lățime constantă m-au fascinat întotdeauna și cred că sunt destul de cool. Le puteți folosi pentru diverse proiecte, cum ar fi roți pentru mini-roboți etc. În acest instructiv vă voi arăta cum să desenați diferite forme cu lățime constantă pe care le puteți
Cum se face o bandă led (bandă de cupru): 4 pași (cu imagini)
Cum să faceți o bandă cu led (bandă de cupru): În acest tutorial rapid vă voi arăta băieților cum să faceți o bandă cu led simplă folosind bandă de cupru și câteva led-uri SMD cu puțină muncă de lipit. Acest proiect este rapid și poate fi și util. Deoarece această bandă LED funcționează pe o sursă de alimentare foarte frecventă de 3,7V
Lantă cu LED cu lățime pulsată: 8 pași
Lanternă LED modulată cu lățime impuls: Modulația lățimii pulsului (PWM) poate fi utilizată pentru a varia puterea, viteza sau luminozitatea multor dispozitive. Cu LED-uri, PWM poate fi folosit pentru a le estompa sau a le face mai luminoase. Le voi folosi pentru a face o torță mică de mână. Un LED poate fi estompat prin aprinderea rapidă și