Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Kako sam se često pitao kakvu propusnost trenutno pruža moj ISP (koristim LTE modem za internetsku vezu), pomislio sam na sistem za praćenje propusnosti. Budući da bi sustav trebao biti kompaktan i štedjeti energiju, odabrao sam Raspberry Pi Zero kao središnju komponentu. Raspberry je povezan s modemom putem WLAN -a, pa se mogu otkriti i problemi s WLAN -om.
Supplies
- Raspberry Pi Zero WH
- Waveshare ekran sa e-mastilom (modul e-papir od 2,9 inča)
- DC-DC pretvarač (npr. DEBO DCDC 20W)
- RGB LED (izvađen iz starog uređaja)
- Taster
- Switch
- Relais modul (npr. 2 Way Relay module 2 Way Relay module)
- Muški konektor + ženski konektor (oba odgovaraju veličini utikača za napajanje modema)
- 3D štampano kućište
Korak 1: Karakteristike
- Raspberry Pi Zero je povezan putem WLAN-a, testira brzinu preuzimanja i preuzimanja i vrši mjerenje pinga svakih pola sata. Verzija speedtest.net iz komandne linije koristi se kao osnova za mjerenja.
- Rezultat mjerenja propusnosti i pinga prikazan je na ekranu e-tinte. Prikazano je i vrijeme mjerenja.
- Ako brzina preuzimanja padne ispod definirane vrijednosti praga, relej isključuje i uključuje modem na kratko. Modem se stoga resetira bez ikakvih izmjena uređaja (samo je napajanje prekinuto).
- Dugme na prednjoj strani uređaja je dostupno za ručno pokretanje mjerenja propusnosti.
- Izmerene vrednosti su prikazane na Ubidots kontrolnoj tabli (IOT portal). U pregledu možete vidjeti i povijest vremena izmjerenih vrijednosti i razloge posljednjih resetiranja.
- Na IOT portalu možete pronaći i dugme za daljinsko resetovanje modema.
- Monitor propusne širine koristi napajanje modema. Nije potrebno dodatno snabdevanje. Relej prekida prosljeđivanje napajanja prema modemu - malina ostaje uključena.
Korak 2: Ožičenje
Na prvoj slici možete vidjeti unutrašnji dizajn monitora propusnosti:
Glavne komponente su:
- Pritisnite dugme
- E-ekran sa mastilom
- Raspberry Pi Zero
- Relejni modul
- RGB LED + otpornici (ovisno o RGB LED diodi koju koristite)
- Switch
- DC-DC pretvarač
- Ženski konektor
Druga slika prikazuje shemu ožičenja. Pozitivni pol opskrbnog napona dovodi se preko sklopke na pretvarač istosmjernog istosmjernog napona (koji pretvara 12 V opskrbni napon usmjerivača u 5 V za malinu) i preko releja (preko normalno spojenog pina) natrag u izlazni konektor. Tako se modem napaja i kada je monitor propusnosti isključen.
Mjerenje propusnosti može se pokrenuti ručno pomoću gumba. RGB LED se koristi za vizualizaciju različitih radnih stanja.
Veza između Raspberry Pi i ekrana e-mastila nije prikazana na dijagramu kola. Priključite ekran prema tabeli i gore navedenom pin-u.
Korak 3: 3D štampanje i izgradnja potjere
Za kućište su potrebni sljedeći dijelovi (pogledajte gornju sliku):
- donji dio
- gornji dio
- prednji
- nazad
- 4x nosač
Svi dijelovi se mogu ispisati bez nosača. Datoteke i neke druge dizajne možete pronaći i na Thingiverse -u:
Zaslon se može pričvrstiti na prednju ploču pomoću nosača i dvostrane trake. Prekidač sa prekidačem i ženski konektor pričvršćeni su na zadnju i zadnju ploču. Koristio sam vijke 3x20 mm za spajanje dvije polovice kućišta. Odstupanja na utorima za prednju i stražnju ploču relativno su mala. Ako je potrebno, prednje i stražnje ploče moraju se brusiti po rubu (s unutarnje strane kako bi se izbjeglo uništavanje površine).
Korak 4: Postavljanje Raspberry PI
Ovaj vodič za postavljanje temelji se na sastavljanju nekoliko uputstava za instalaciju iz različitih izvora (proizvođači ekrana e-mastila, …). Za mene su upute dovele do željenog rezultata. Budući da nisam stručnjak za Linux, nisu napravljene nikakve optimizacije ili slično. Svjestan sam da sigurno postoje bolja i efikasnija rješenja.
Pretpostavimo da već imate instaliran Raspbian na svom Pi -u (postoji mnogo vodiča o tome kako instalirati osnovni operativni sistem) i da imate povezan zaslon (putem miniHDMI -a), miš i tipkovnicu. Pretpostavlja se i ispravno postavljena WLAN veza s usmjerivačem ili internetom. Osim ako nije drugačije navedeno, svi se instalacijski postupci izvode na terminalu.
Instalirajte Udaljenu radnu površinu (za pristup PI sa svog računara):
sudo apt-get update
sudo apt-get
instalirajte xrdp
ili možete raditi i bez glave putem ssh-a (pogledajte npr.
Promijeni lozinku:
www.raspberrypi.org/forums/viewtopic.php?t=193620
Instalirajte speedtest:
sudo
apt-get install python-pip
sudo pip install speedtest-cli
da biste provjerili je li instalacija bila uspješna, pokrenite Speedtest u terminalu:
speedtest-cli
ako je sve tačno, trebali biste dobiti nešto kao na prvoj gornjoj slici.
Instalirajte wiringPI
sudo apt-get install git-core
git clone git: //git.drogon.net/wiringPi
cd wiringPi
./build
(vidi i
Alternativa:
sudo apt-get install wiringpi
(vidi
Instalirajte BCM2835
(vidi
Preuzmite bcm2835-1.60.tar.gz (ili noviju verziju ako je dostupna)
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60
./configure
napraviti
sudo provjeri
sudo make install
Instalirajte Python biblioteku slika
sudo apt-get install python-imaging
Alternativa:
sudo apt-get install python-pil
Omogućite funkciju I2C.
Pokrenite sljedeću naredbu za konfiguriranje vaše Raspberry Pi ploče:
sudo raspi-config
Odaberite Interface Options-> I2C -> yes, za pokretanje jezgrenog upravljačkog programa I2C. Zatim morate promijeniti i konfiguracijsku datoteku. Pokrenite sljedeću naredbu za otvaranje konfiguracijske datoteke:
sudo nano /etc /modules
Dodajte sljedeće dvije linije u konfiguracijsku datoteku
i2c-bcm2708
i2c-dev
Pogledajte i
Omogućite SPI funkciju
Pokrenite sljedeću naredbu za konfiguriranje vaše Raspberry Pi ploče:
sudo raspi-config
Odaberite Interface Options-> SPI -> yes, da biste pokrenuli SPI core upravljački program.
Instalirajte dodatne fontove:
sudo apt-get install ttf-mscorefonts-installer
Preuzmite i instalirajte Fontove (Roboto + Droid)
gksudo
pcmanfm
Da biste pokrenuli upravitelj datoteka s root ovlastima i kopirali fontove truetype u mapu/usr/share/fonts/truetype
Alternativa:
Kopirajte fontove u mapu Preuzimanja s WinSCP -om (ssh mora biti omogućen za korištenje WinSCP -a)
sudo cp -r/home/pi/Preuzimanja/droid/usr/share/fontovi/truetype
sudo cp -r/home/pi/Preuzimanja/roboto/usr/share/fontovi/truetype
Za pristup fascikli sa fontovima potrebna su vam root prava. Možda postoje bolji načini za to (kao što je već spomenuto nisam stručnjak za Linux), ali oba načina su mi uspjela.
Python datoteke:
Upotrijebite upravitelj datoteka za kreiranje nove mape "bandwidth_monitor"
Kopirajte sve datoteke u direktorij bandwidth_monitor
Učinite python datoteke i skriptu izvršnim
chmod +x *.py
chmod +x speedtest-cron.sh
Konfigurirajte crontab
crontab -e
Crontab se koristi za zakazivanje izvršavanja programa, npr. najbrži test svakih 30 min. Dodajte sljedeće retke u crontab (pogledajte i drugu sliku):
@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
Opis planiranih zadataka:
- pri ponovnom pokretanju poruka o ponovnom pokretanju se zapisuje na IOT nadzornu ploču
- pri ponovnom pokretanju se pokreće anketa test_now_button
- svakih 30 minuta se vrši mjerenje propusnosti
- svaka 3 minuta provjerava se status tipke za daljinsko resetiranje (na IOT nadzornoj ploči)
- jednom dnevno započinje ciklus osvježavanja ekrana.
Za kratak opis programa pogledajte odjeljak o softveru.
Korak 5: Softver
Softver je podijeljen u nekoliko datoteka / programa:
bandwidth_monitor_0_4.py je glavni program koji Crontab poziva svakih pola sata. Izvodi test propusnosti (preko verzije speedtest.net iz komandne linije). Tokom testa, RGB LED je plave boje. Ako je širina pojasa iznad odabranog praga, vrijednost se prikazuje na ekranu e-tinte (zajedno s vremenskom oznakom) i izvozi na kontrolnu ploču Ubidots. Ako je širina pojasa ispod praga, LED svijetli crveno i mjerenje se ponavlja nakon kratkog odlaganja. Nakon 3 negativna pokušaja rele se aktivira i time se napajanje modema prekida. Resetirani kod (vrijednost = 2) upisuje se u odjeljak dnevnika.
poll_killswitch.py čita status logičke varijable na nadzornoj ploči. Ako je killswitch_state istina, relej se aktivira i napajanje modema se prekida. RGB LED svijetli zeleno tokom probijanja prekidača za ubijanje. Nakon resetiranja killswitch_state je postavljeno na false i generira se unos u odjeljak dnevnika nadzorne ploče (vrijednost = 1).
poll_test_now_button.py čeka da se pritisne dugme na prednjoj ploči kućišta. Aktiviranjem dugmeta ručno se pokreće mjerenje propusnosti. Kada se program pokrene (pri ponovnom pokretanju Raspberry Pi), RGB LED treperi crveno.
post_restart_message.py zapisuje kôd za reset (vrijednost = 3) u odjeljak dnevnika nadzorne ploče. Ovo ukazuje na to da je monitor propusnosti ponovo pokrenut. Tokom pokretanja programa RGB LED lampica treperi plavo.
test_LED.py i test_relay.py jednostavne su skripte koje se mogu koristiti za testiranje hardverske funkcije RGB LED i releja.
epdconfig.py i epd2in9.py su upravljački programi za ekran e-mastila koji obezbeđuje Waveshare.
Da biste dozvolili programima pristup Ubidots nadzornoj ploči, morate dodati svoje pojedinačne tokene i nazive uređaja ili varijabli (ako koristite različite oznake). Potražite odjeljak poput onog prikazanog na gornjoj slici (zamijenite XXXXXXXX svojim žetonom).
Opsežni vodiči o tome kako izgraditi nadzornu ploču i kako integrirati nadzornu ploču u Python program mogu se pronaći izravno na stranici Ubidots (https://help.ubidots.com/en/) ili putem Googlea.
Korak 6: IOT nadzorna ploča
Kontrolna ploča koju hostuje Ubidots (vidi https://ubidots.com) sadrži nekoliko područja koja su ukratko opisana u nastavku.
- Vremenski slijed brzine preuzimanja i preuzimanja. Svakih pola sata nova vrijednost se ubacuje u dijagram.
- Vremenski tok izmerenog ping vremena. Svakih pola sata nova vrijednost se unosi u dijagram.
- Vremenski slijed prosječne brzine preuzimanja. Prosječna vrijednost tokom 24 sata se izračunava i zapisuje na dijagram.
- Tabelarni prikaz trenutnih mjernih vrijednosti uključujući vremensku oznaku.
- Dugme za daljinsko upravljanje za resetovanje modema putem Interneta. Upit se javlja svake 3 minute, odnosno može proći neko vrijeme dok se radnja ne izvede.
- Evidentiranje posljednjih resetiranja, uključujući razlog resetiranja (daljinsko aktiviranje, isključivanje ili gubitak napona, pad ispod minimalne propusnosti)
Opsežni vodiči o tome kako izgraditi nadzornu ploču i kako integrirati nadzornu ploču u Python program mogu se pronaći izravno na stranici Ubidots (https://help.ubidots.com/en/) ili putem Googlea.