Cuprins:

Monitor lățime de bandă: 7 pași (cu imagini)
Monitor lățime de bandă: 7 pași (cu imagini)

Video: Monitor lățime de bandă: 7 pași (cu imagini)

Video: Monitor lățime de bandă: 7 pași (cu imagini)
Video: Xiaomi Smart Band 7 Review în Limba Română 2024, Noiembrie
Anonim
Monitor lățime de bandă
Monitor lățime de bandă
Monitor lățime de bandă
Monitor lățime de bandă
Monitor lățime de bandă
Monitor lățime de bandă

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

Caracteristici
Caracteristici
Caracteristici
Caracteristici
Caracteristici
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

Cablare
Cablare
Cablare
Cablare
Cablare
Cablare
Cablare
Cablare

În prima imagine puteți vedea designul intern al monitorului de lățime de bandă:

Componentele majore sunt:

    1. Apasa butonul
    2. Afișaj cu cerneală electronică
    3. Raspberry Pi Zero
    4. Modulul de releu
    5. LED-uri RGB + rezistențe (în funcție de LED-ul RGB pe care îl utilizați)
    6. Intrerupator
    7. Convertor DC-DC
    8. 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

Imprimarea 3D și construirea Chase
Imprimarea 3D și construirea Chase
Imprimarea 3D și construirea Chase
Imprimarea 3D și construirea Chase
Imprimarea 3D și construirea Chase
Imprimarea 3D și construirea Chase
Imprimarea 3D și construirea Chase
Imprimarea 3D și construirea Chase

Următoarele părți sunt necesare pentru carcasă (a se vedea imaginea de mai sus):

    1. partea inferioară
    2. partea de sus
    3. față
    4. înapoi
    5. 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

Configurarea Raspberry PI
Configurarea Raspberry PI
Configurarea Raspberry PI
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
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 IOT
Tabloul de bord IOT

Tabloul de bord găzduit de Ubidots (vezi https://ubidots.com) conține mai multe zone care sunt descrise pe scurt mai jos.

    1. 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ă.
    2. Cursul de timp al timpului de ping măsurat. La fiecare jumătate de oră se introduce o nouă valoare în diagramă.
    3. Secvența de timp a vitezei medii de descărcare. Valoarea medie pe 24 de ore este calculată și scrisă în diagramă.
    4. Reprezentarea pe foaie de calcul a valorilor curente ale măsurătorii, inclusiv ștampila de timp.
    5. 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.
    6. Î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: