Sommario:

Monitor della larghezza di banda: 7 passaggi (con immagini)
Monitor della larghezza di banda: 7 passaggi (con immagini)

Video: Monitor della larghezza di banda: 7 passaggi (con immagini)

Video: Monitor della larghezza di banda: 7 passaggi (con immagini)
Video: PierAisa #19: Larghezza di banda a confronto su oscilloscopi Hantek 200MHz e 100MHz 2024, Dicembre
Anonim
Monitoraggio della larghezza di banda
Monitoraggio della larghezza di banda
Monitoraggio della larghezza di banda
Monitoraggio della larghezza di banda
Monitoraggio della larghezza di banda
Monitoraggio della larghezza di banda

Siccome mi sono spesso chiesto quale larghezza di banda è attualmente fornita dal mio ISP (uso un modem LTE per la connessione a Internet), ho pensato ad un sistema di monitoraggio della larghezza di banda. Poiché il sistema dovrebbe essere compatto e a risparmio energetico, ho scelto un Raspberry Pi Zero come componente centrale. Il Raspberry è collegato al modem tramite WLAN, quindi possono essere rilevati anche problemi WLAN.

Forniture

  • Raspberry Pi Zero WH
  • Display Waveshare e-ink (modulo e-paper da 2,9 pollici)
  • Convertitore DC-DC (es. DEBO DCDC 20W)
  • LED RGB (estratto da un vecchio dispositivo)
  • Premi il bottone
  • Interruttore
  • Modulo Relè (es. Modulo Relè a 2 VieModulo Relè a 2 Vie)
  • Connettore maschio + connettore femmina (entrambi si adattano alle dimensioni della spina di alimentazione del modem)
  • Custodia stampata in 3D

Passaggio 1: caratteristiche

Caratteristiche
Caratteristiche
Caratteristiche
Caratteristiche
Caratteristiche
Caratteristiche
  • Il Raspberry Pi Zero è connesso tramite WLAN, verifica la velocità di upload e download ed esegue una misurazione del ping ogni mezz'ora. Come base per le misurazioni viene utilizzata una versione della riga di comando di speedtest.net.
  • Il risultato della misurazione della larghezza di banda e del ping viene visualizzato su un display e-ink. Viene visualizzato anche il tempo della misurazione.
  • Se la velocità di download scende al di sotto di un valore soglia definito, un relè spegne e riaccende il modem per un breve periodo. Il modem viene così resettato senza alcuna modifica del dispositivo (viene interrotta solo l'alimentazione).
  • È disponibile un pulsante sulla parte anteriore del dispositivo per attivare manualmente la misurazione della larghezza di banda.
  • I valori misurati vengono visualizzati su una Dashboard Ubidots (Portale IOT). Nella panoramica è inoltre possibile visualizzare la cronologia dei valori misurati e le ragioni degli ultimi reset.
  • Nel Portale IOT trovi anche un pulsante per resettare da remoto il modem.
  • Il monitor della larghezza di banda utilizza l'alimentazione del modem. Nessuna fornitura aggiuntiva necessaria. Il relais interrompe l'inoltro dell'alimentazione al modem - il lampone rimane acceso.

Passaggio 2: cablaggio

Cablaggio
Cablaggio
Cablaggio
Cablaggio
Cablaggio
Cablaggio
Cablaggio
Cablaggio

Nella prima immagine puoi vedere il design interno del monitor della larghezza di banda:

I componenti principali sono:

    1. Premi il bottone
    2. Display a inchiostro elettronico
    3. Raspberry Pi Zero
    4. Modulo relè
    5. LED RGB + resistori (a seconda del LED RGB utilizzato)
    6. Interruttore
    7. Convertitore CC-CC
    8. Connettore femmina

La seconda immagine mostra uno schema del cablaggio. Il polo positivo della tensione di alimentazione viene alimentato tramite l'interruttore al convertitore di tensione DC-DC (che converte la tensione di alimentazione da 12V del router a 5V per il Raspberry) e tramite il relè (tramite il pin normalmente collegato) al connettore di uscita. Pertanto, il modem viene alimentato anche quando il monitor della larghezza di banda è spento.

La misurazione della larghezza di banda può essere avviata manualmente tramite un pulsante. Un LED RGB viene utilizzato per visualizzare i vari stati di funzionamento.

La connessione tra Raspberry Pi e display e-ink non è mostrata nello schema elettrico. Collegare il display secondo la tabella e il pin-out sopra.

Passaggio 3: stampa 3D e creazione dell'inseguimento

Stampa 3D e costruzione della caccia
Stampa 3D e costruzione della caccia
Stampa 3D e costruzione della caccia
Stampa 3D e costruzione della caccia
Stampa 3D e costruzione della caccia
Stampa 3D e costruzione della caccia
Stampa 3D e costruzione della caccia
Stampa 3D e costruzione della caccia

Le seguenti parti sono necessarie per il caso (vedi immagine sopra):

    1. parte inferiore
    2. parte superiore
    3. davanti
    4. Indietro
    5. 4x montaggio

Tutte le parti possono essere stampate senza supporti. Puoi anche trovare i file e alcuni dei miei altri progetti su Thingiverse:

Il display può essere fissato al pannello frontale con i supporti e un nastro biadesivo. L'interruttore a pulsante e il connettore femmina sono avvitati al pannello posteriore e posteriore. Ho usato viti 3x20mm per collegare le due metà dell'alloggiamento. Le tolleranze sulle scanalature per i pannelli anteriore e posteriore sono relativamente strette. Se necessario, i pannelli anteriore e posteriore devono essere levigati sul bordo (all'interno per evitare di distruggere la superficie).

Passaggio 4: configurazione del Raspberry PI

Configurazione del Raspberry PI
Configurazione del Raspberry PI
Configurazione del Raspberry PI
Configurazione del Raspberry PI

Questa guida all'installazione si basa sulla compilazione di diverse istruzioni di installazione da diverse fonti (produttori di display e-Ink, …). Per me le istruzioni hanno portato al risultato sperato. Dato che non sono un esperto di Linux, non sono state fatte ottimizzazioni o simili. Sono consapevole che ci sono sicuramente soluzioni migliori e più efficienti.

Supponiamo che tu abbia già installato Raspbian sul tuo Pi (ci sono molti tutorial su come installare il sistema operativo di base) e che tu abbia un display (tramite miniHDMI), mouse e tastiera collegati. Si presume anche una connessione WLAN correttamente configurata al router o a Internet. Salvo diversa indicazione, tutte le procedure di installazione vengono eseguite nel terminale.

Installa Desktop remoto (per accedere al PI dal tuo computer):

sudo apt-get update

sudo apt-get

installa xrdp

oppure puoi anche lavorare senza testa tramite ssh (vedi ad esempio

Cambia la password:

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

Installa il test di velocità:

sudo

apt-get install python-pip

sudo pip install speedtest-cli

per verificare se l'installazione è andata a buon fine, eseguire Speedtest nel terminale:

speedtest-cli

se tutto è corretto dovresti ottenere qualcosa come nella prima immagine sopra.

Installare il cablaggioPI

sudo apt-get install git-core

git clone git://git.drogon.net/wiringPi

cablaggio cdPiù

./costruire

(vedi anche

Alternativa:

sudo apt-get install cablaggio

(vedi

Installa BCM2835

(vedi

Scarica bcm2835-1.60.tar.gz (o una versione più recente se disponibile)

tar zxvf bcm2835-1.60.tar.gz

cd bcm2835-1.60

./configurare

fare

sudo fare il controllo

sudo make install

Installa la libreria di immagini Python

sudo apt-get install python-imaging

Alternativa:

sudo apt-get install python-pil

Abilita la funzione I2C.

Esegui il seguente comando per configurare la tua scheda Raspberry Pi:

sudo raspi-config

Selezionare Opzioni interfaccia-> I2C -> sì, per avviare il driver principale I2C. Quindi devi anche modificare il file di configurazione. Eseguire il seguente comando per aprire il file di configurazione:

sudo nano /etc/modules

Aggiungi le seguenti due righe al file di configurazione

i2c-bcm2708

i2c-dev

Vedi anche

Abilita la funzione SPI

Esegui il seguente comando per configurare la tua scheda Raspberry Pi:

sudo raspi-config

Selezionare Opzioni interfaccia-> SPI -> sì, per avviare il driver principale SPI.

Installa caratteri aggiuntivi:

sudo apt-get install ttf-mscorefonts-installer

Scarica e installa i caratteri (Roboto + Droid)

gksudo

pcmanfm

Per avviare Filemanager con i privilegi di root e copiare i caratteri truetype nella cartella /usr/share/fonts/truetype

Alternativa:

Copia i caratteri nella cartella Download con WinSCP (ssh deve essere abilitato per utilizzare WinSCP)

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

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

Sono necessari i privilegi di root per accedere alla cartella dei caratteri. Forse ci sono modi migliori per farlo (come già detto non sono un esperto di Linux) ma entrambi i modi hanno funzionato per me.

File Python:

Usa il filemanger per creare una nuova cartella "bandwidth_monitor"

Copia tutti i file nella directory width_monitor

Rendi eseguibili file python e script

chmod +x *.py

chmod +x speedtest-cron.sh

Configura crontab

crontab -e

Crontab viene utilizzato per pianificare l'esecuzione del programma, ad es. test di velocità ogni 30 min. Aggiungi le seguenti righe al tuo crontab (vedi anche la seconda figura):

@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

Descrizione delle attività pianificate:

  • al riavvio il messaggio di riavvio viene scritto nel dashboard IOT
  • al riavvio viene avviato il sondaggio test_now_button
  • ogni 30 minuti viene eseguita una misurazione della larghezza di banda
  • ogni 3 minuti viene verificato lo stato del pulsante di reset remoto (sul cruscotto IOT)
  • una volta al giorno viene avviato un ciclo di aggiornamento del display.

Vedere la sezione software per una breve descrizione dei programmi.

Passaggio 5: software

Software
Software

Il software è suddiviso in diversi file/programmi:

bandwidth_monitor_0_4.py è il programma principale che viene invocato da Crontab ogni mezz'ora. Esegue un test della larghezza di banda (tramite la versione della riga di comando di speedtest.net). Durante il test, il LED RGB è blu. Se la larghezza di banda è superiore alla soglia selezionata, il valore viene mostrato sul display e-ink (insieme a un timestamp) ed esportato nella dashboard di Ubidots. Se la larghezza di banda è inferiore alla soglia il LED diventa rosso e la misurazione viene ripetuta dopo un breve ritardo. Dopo 3 tentativi negativi il relè viene attivato e quindi l'alimentazione del modem viene interrotta. Il codice di ripristino (valore=2) viene scritto nella sezione del registro.

poll_killswitch.py legge lo stato di una variabile booleana sul dashboard. Se killswitch_state è true il relè viene attivato e l'alimentazione del modem viene interrotta. Il LED RGB diventa verde durante il polling del killswitch. Dopo il ripristino, killswitch_state viene impostato su false e viene generata una voce nella sezione log del dashboard (valore=1).

poll_test_now_button.py è in attesa che venga premuto il pulsante sul pannello frontale del case. Attivando il pulsante, viene avviata manualmente una misurazione della larghezza di banda. All'avvio del programma (al riavvio del Raspberry Pi) il LED RGB lampeggia in rosso.

post_restart_message.py scrive il codice di ripristino (value=3) nella sezione log della dashboard. Ciò indica che il monitoraggio della larghezza di banda è stato riavviato. Durante l'avvio del programma il LED RGB lampeggia in blu.

test_LED.py e test_relay.py sono semplici script che possono essere utilizzati per testare la funzione hardware del LED RGB e del relè.

epdconfig.py e epd2in9.py sono driver di dispositivo per il display e-ink fornito da Waveshare.

Per consentire ai programmi di accedere alla dashboard di Ubidots, devi aggiungere i tuoi token individuali e i nomi dei dispositivi o delle variabili (se usi notazioni diverse). Cerca una sezione come quella mostrata nell'immagine sopra (sostituisci XXXXXXXX con il tuo token).

Tutorial completi su come costruire il dashboard e come integrare il dashboard in un programma Python possono essere trovati direttamente sulla pagina Ubidots (https://help.ubidots.com/en/) o tramite Google.

Passaggio 6: dashboard IOT

Dashboard IOT
Dashboard IOT

La dashboard ospitata da Ubidots (vedi https://ubidots.com) contiene diverse aree che sono brevemente descritte di seguito.

    1. Sequenza temporale della velocità di caricamento e scaricamento. Ogni mezz'ora viene inserito un nuovo valore nel diagramma.
    2. Andamento temporale del tempo di ping misurato. Ogni mezz'ora viene inserito un nuovo valore nel diagramma.
    3. Sequenza temporale della velocità media di download. Il valore medio su 24 ore viene calcolato e scritto nel diagramma.
    4. Rappresentazione su foglio di calcolo dei valori di misurazione correnti inclusa la data e l'ora.
    5. Pulsante telecomando per resettare il modem via Internet. La query viene eseguita ogni 3 minuti, ovvero potrebbe essere necessario un po' di tempo prima che l'azione venga eseguita.
    6. Registrazione degli ultimi reset incluso il motivo del reset (attivazione remota, spegnimento o perdita di tensione, caduta al di sotto della larghezza di banda minima)

Tutorial completi su come costruire il dashboard e come integrare il dashboard in un programma Python possono essere trovati direttamente sulla pagina Ubidots (https://help.ubidots.com/en/) o tramite Google.

Consigliato: