Sommario:
- Forniture
- Passaggio 1: caratteristiche
- Passaggio 2: cablaggio
- Passaggio 3: stampa 3D e creazione dell'inseguimento
- Passaggio 4: configurazione del Raspberry PI
- Passaggio 5: software
- Passaggio 6: dashboard IOT
- Passaggio 7: introduzione delle funzioni di base
Video: Monitor della larghezza di banda: 7 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
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
- 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
Nella prima immagine puoi vedere il design interno del monitor della larghezza di banda:
I componenti principali sono:
- Premi il bottone
- Display a inchiostro elettronico
- Raspberry Pi Zero
- Modulo relè
- LED RGB + resistori (a seconda del LED RGB utilizzato)
- Interruttore
- Convertitore CC-CC
- 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
Le seguenti parti sono necessarie per il caso (vedi immagine sopra):
- parte inferiore
- parte superiore
- davanti
- Indietro
- 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
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
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
La dashboard ospitata da Ubidots (vedi https://ubidots.com) contiene diverse aree che sono brevemente descritte di seguito.
- Sequenza temporale della velocità di caricamento e scaricamento. Ogni mezz'ora viene inserito un nuovo valore nel diagramma.
- Andamento temporale del tempo di ping misurato. Ogni mezz'ora viene inserito un nuovo valore nel diagramma.
- Sequenza temporale della velocità media di download. Il valore medio su 24 ore viene calcolato e scritto nel diagramma.
- Rappresentazione su foglio di calcolo dei valori di misurazione correnti inclusa la data e l'ora.
- 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.
- 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:
Controllore automatico della luce e della ventola della stanza con contatore visitatori bidirezionale: 3 passaggi
Controllore automatico della luce e della ventola della stanza con contatore visitatori bidirezionale: spesso vediamo contatori visitatori in stadi, centri commerciali, uffici, aule, ecc. Come contano le persone e accendono o spengono la luce quando nessuno è all'interno? Oggi siamo qui con il progetto di controllo automatico della luce ambientale con contatore visitatori bidirezionale
Raspberry Pi Box di ventola di raffreddamento con indicatore della temperatura della CPU: 10 passaggi (con immagini)
Raspberry Pi Box di raffreddamento FAN con indicatore della temperatura della CPU: avevo introdotto il circuito dell'indicatore della temperatura della CPU raspberry pi (di seguito come RPI) nel progetto precedente. Il circuito mostra semplicemente RPI 4 diversi livelli di temperatura della CPU come segue.- LED verde acceso quando La temperatura della CPU è entro 30~
Hackerare un pulsante della porta della Jubilee Line della metropolitana di Londra: 12 passaggi (con immagini)
Hacking di un pulsante della porta della Jubilee Line della metropolitana di Londra: Il negozio del London Transport Museum vende pulsanti della porta dismessi della Jubilee Line (sono disponibili sia a sinistra che a destra). Se stai pensando di realizzare un progetto che necessita di un pulsante e di una spia di qualche tipo, saresti
Rilevatore di livello della macchina della Coca-Cola - Ora con la voce!: 6 passaggi (con immagini)
Rilevatore di livello di Coke Machine - Now With Speech!: Questo progetto è un remix del mio rilevatore di livello di lattina di Coke Machine, (https://www.instructables.com/id/Coke-Machine-Can-Level-Detector/) con nuovi sensori e l'aggiunta del suono parlato! Dopo aver realizzato il mio primo rilevatore di livello, ho aggiunto un cicalino piezoelettrico a g
Modulazione di larghezza di impulso semplice (e sporca) (PWM) con timer 555: 3 passaggi
Modulazione di larghezza di impulso semplice (e sporca) (PWM) con timer 555: circuito semplice per il controllo della velocità del motore CC (controllo della velocità della ventola, regolazione della luce / LED e così via) utilizzando il timer 555. Anche un buon punto di partenza per i principianti che desiderano ottenere il loro mani sporche con il timer IC 555. Alcuni potrebbero obiettare che questo non è il massimo