Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Kun kysyin itseltäni usein, mitä kaistanleveyttä Internet -palveluntarjoajani tarjoaa (käytän LTE -modeemia Internet -yhteydelle), ajattelin kaistanleveyden seurantajärjestelmää. Koska järjestelmän pitäisi olla kompakti ja virransäästöinen, valitsin Raspberry Pi Zero -laitteen keskeiseksi komponentiksi. Vadelma on yhdistetty modeemiin WLAN -verkon kautta, joten myös WLAN -ongelmat voidaan havaita.
Tarvikkeet
- Raspberry Pi Zero WH
- Waveshare-musteen näyttö (2,9 tuuman e-paperimoduuli)
- DC-DC-muunnin (esim. DEBO DCDC 20W)
- RGB -LED (poistettu vanhasta laitteesta)
- Paina nappia
- Vaihtaa
- Relais -moduuli (esim. 2 -tie Relemoduuli 2 Way Relay -moduuli)
- Urosliitin + naarasliitin (molemmat sopivat modeemin virtalähteen pistorasiaan)
- 3D -painettu kotelo
Vaihe 1: Ominaisuudet
- Raspberry Pi Zero on yhdistetty WLAN-verkkoon, testaa lataus- ja latausnopeutta ja mittaa pingin puolen tunnin välein. Mittausten perustana käytetään speedtest.net -komentoriviversiota.
- Kaistanleveyden ja ping-mittauksen tulos näkyy e-ink-näytössä. Mittausaika näkyy myös.
- Jos latausnopeus laskee alle määritetyn kynnysarvon, rele kytkee modeemin pois päältä ja päälle lyhyeksi ajaksi. Modeemi nollataan siten ilman muutoksia laitteeseen (vain virransyöttö katkeaa).
- Laitteen etuosassa on painike, joka käynnistää kaistanleveyden mittauksen manuaalisesti.
- Mitatut arvot näytetään Ubidots -hallintapaneelissa (IOT -portaali). Yleiskatsauksessa näet myös mitattujen arvojen aikahistorian ja viimeisten nollausten syyt.
- IOT -portaalista löytyy myös painike modeemin etäkäyttöön.
- Kaistanleveysmonitori käyttää modeemin virtalähdettä. Ylimääräistä tarjontaa ei tarvita. Rele keskeyttää virtalähteen edelleenlähetyksen modeemiin - vadelma pysyy päällä.
Vaihe 2: Johdotus
Ensimmäisessä kuvassa näkyy kaistanleveysmonitorin sisäinen rakenne:
Tärkeimmät komponentit ovat:
- Paina nappia
- E-musteen näyttö
- Raspberry Pi Zero
- Relemoduuli
- RGB LED + vastukset (riippuen käyttämästäsi RGB LEDistä)
- Vaihtaa
- DC-DC-muunnin
- Naarasliitin
Toisessa kuvassa on kytkentäkaavio. Syöttöjännitteen positiivinen napa syötetään kytkimen kautta DC-DC-jännitemuuntajaan (joka muuntaa reitittimen 12 V: n syöttöjännitteen 5 V: ksi Vadelmaksi) ja releen kautta (normaalisti liitetyn nastan kautta) takaisin lähtöliitin. Näin modeemi saa myös virtaa, kun kaistanleveysmonitori sammutetaan.
Kaistanleveyden mittaus voidaan aloittaa manuaalisesti painikkeen avulla. RGB -merkkivaloa käytetään eri toimintatilojen visualisointiin.
Raspberry Pi: n ja e-ink-näytön välistä yhteyttä ei näy piirikaaviossa. Liitä näyttö taulukon ja yllä olevan nastan mukaisesti.
Vaihe 3: 3D -tulostus ja jahdin rakentaminen
Koteloon tarvitaan seuraavat osat (katso yllä oleva kuva):
- alempi osa
- ylempi osa
- edessä
- takaisin
- 4x kiinnike
Kaikki osat voidaan tulostaa ilman tukia. Löydät myös tiedostot ja joitain muita suunnitelmiani Thingiversestä:
Näyttö voidaan kiinnittää etupaneeliin kiinnikkeillä ja kaksipuolisella teipillä. Painike ja naarasliitin on ruuvattu taka- ja takapaneeliin. Liitin kotelon kaksi puoliskoa 3x20 mm ruuveilla. Etu- ja takapaneelien urien toleranssit ovat suhteellisen tiukat. Tarvittaessa etu- ja takapaneelit on hiottava reunasta (sisäpuolelta pinnan tuhoutumisen estämiseksi).
Vaihe 4: Raspberry PI: n määrittäminen
Tämä asennusopas perustuu useiden asennusohjeiden laatimiseen eri lähteistä (e-Ink-näytön valmistajat jne.). Minulle ohjeet ovat johtaneet haluttuun tulokseen. Koska en ole Linux -asiantuntija, mitään optimointeja tai vastaavia ei tehty. Olen tietoinen siitä, että on varmasti parempia ja tehokkaampia ratkaisuja.
Oletetaan, että Pi -laitteellesi on jo asennettu Raspbian (peruskäyttöjärjestelmän asentamiseen on monia opetusohjelmia) ja sinulla on näyttö (miniHDMI: n kautta), hiiri ja näppäimistö kytketty. Oletuksena on myös oikein määritetty WLAN -yhteys reitittimeen tai Internetiin. Ellei toisin mainita, kaikki asennustoimenpiteet suoritetaan terminaalissa.
Asenna etätyöpöytä (päästäksesi PI: hen tietokoneeltasi):
sudo apt-get päivitys
sudo apt-get
asenna xrdp
tai voit myös työskennellä ilman päätä ssh: n kautta (katso esim.
Vaihda salasana:
www.raspberrypi.org/forums/viewtopic.php?t=193620
Asenna nopeustesti:
sudo
apt-get install python-pip
sudo pip asenna speedtest-cli
Testaa, onnistuiko asennus suorittamalla Speedtest terminaalissa:
speedtest-cli
jos kaikki on oikein, sinun pitäisi saada jotain, kuten yllä olevassa kuvassa.
Asenna wiringPI
sudo apt-get install git-core
git klooni git: //git.drogon.net/wiringPi
cd -johdotusPi
./rakentaa
(katso myös
Vaihtoehto:
sudo apt-get install wiringpi
(katso
Asenna BCM2835
(katso
Lataa bcm2835-1.60.tar.gz (tai uudempi versio, jos saatavilla)
terva zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60
./configure
tehdä
tarkista sudo
sudo tehdä asennus
Asenna Python -kuvakirjasto
sudo apt-get install python-imaging
Vaihtoehto:
sudo apt-get install python-pil
Ota I2C -toiminto käyttöön.
Suorita seuraava komento määrittääksesi Raspberry Pi -korttisi:
sudo raspi-config
Käynnistä I2C -ydinohjain valitsemalla Liitäntäasetukset-> I2C -> kyllä. Sitten sinun on myös muokattava asetustiedostoa. Avaa määritystiedosto suorittamalla seuraava komento:
sudo nano /etc /modules
Lisää seuraavat kaksi riviä määritystiedostoon
i2c-bcm2708
i2c-dev
Katso myös
Ota SPI -toiminto käyttöön
Suorita seuraava komento määrittääksesi Raspberry Pi -korttisi:
sudo raspi-config
Käynnistä SPI -ydinohjain valitsemalla Liitäntäasetukset-> SPI -> kyllä.
Asenna lisää fontteja:
sudo apt-get install ttf-mscorefonts-installer
Lataa ja asenna fontit (Roboto + Droid)
gksudo
pcmanfm
Tiedostonhallinnan käynnistäminen pääkäyttäjän oikeuksilla ja kopioi truetype -fontit kansioon/usr/share/fonts/truetype
Vaihtoehto:
Kopioi fontit Lataukset -kansioon WinSCP: llä (ssh: n on oltava käytössä, jotta voit käyttää WinSCP: tä)
sudo cp -r/home/pi/Lataukset/droid/usr/share/fonts/truetype
sudo cp -r/home/pi/Lataukset/roboto/usr/share/fonts/truetype
Tarvitset pääkäyttäjän oikeudet kirjasinkansion käyttämiseen. Ehkä on olemassa parempia tapoja tehdä tämä (kuten jo mainitsin, etten ole Linux -asiantuntija), mutta molemmat keinot toimivat minulle.
Python -tiedostot:
Käytä filemangeria uuden kansion "bandwidth_monitor" luomiseen
Kopioi kaikki tiedostot hakemiston kaistanleveysmonitoriin
Tee python -tiedostot ja komentosarja suoritettavaksi
chmod +x *.py
chmod +x speedtest-cron.sh
Määritä crontab
crontab -e
Crontab -ohjelmaa käytetään ohjelmoinnin suorittamiseen esim. nopeustesti 30 minuutin välein. Lisää crontabiin seuraavat rivit (katso myös toinen kuva):
@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
Kuvaus ajoitetuista tehtävistä:
- uudelleenkäynnistyksen yhteydessä uudelleenkäynnistysviesti kirjoitetaan IOT -kojelautaan
- uudelleenkäynnistyksen yhteydessä kysely test_now_button käynnistyy
- 30 minuutin välein suoritetaan kaistanleveyden mittaus
- 3 minuutin välein etäkäynnistyspainikkeen tila (IOT -kojelaudassa) tarkistetaan
- kerran päivässä näytön päivitysjakso käynnistyy.
Katso ohjelmisto -osiosta lyhyt kuvaus ohjelmista.
Vaihe 5: Ohjelmisto
Ohjelmisto on jaettu useisiin tiedostoihin / ohjelmiin:
bandwidth_monitor_0_4.py on pääohjelma, jonka Crontab kutsuu puolen tunnin välein. Se suorittaa kaistanleveystestin (speedtest.net -komentoriviversion kautta). Testin aikana RGB -merkkivalo palaa sinisenä. Jos kaistanleveys ylittää valitun kynnyksen, arvo näkyy e-ink-näytössä (yhdessä aikaleiman kanssa) ja viedään Ubidots-hallintapaneeliin. Jos kaistanleveys on kynnyksen alapuolella, LED -valo muuttuu punaiseksi ja mittaus toistetaan lyhyen viiveen jälkeen. Kolmen negatiivisen yrityksen jälkeen rele aktivoituu ja modeemin virransyöttö katkeaa. Palautuskoodi (arvo = 2) kirjoitetaan lokiosaan.
poll_killswitch.py lukee Boolean -muuttujan tilan kojelaudalta. Jos killswitch_state on tosi, rele aktivoidaan ja modeemin virransyöttö katkeaa. RGB -merkkivalo muuttuu vihreäksi tappokytkimen kyselyn aikana. Nollauksen jälkeen killswitch_state -arvoksi asetetaan epätosi ja koontinäytön lokiosan merkintä luodaan (arvo = 1).
poll_test_now_button.py odottaa kotelon etupaneelin painikkeen painamista. Kun painike aktivoidaan, kaistanleveyden mittaus käynnistetään manuaalisesti. Kun ohjelma käynnistetään (Raspberry Pi: n uudelleenkäynnistyksen yhteydessä), RGB -LED vilkkuu punaisena.
post_restart_message.py kirjoittaa nollauskoodin (arvo = 3) koontinäytön lokiosioon. Tämä osoittaa, että kaistanleveysmonitori on käynnistetty uudelleen. Ohjelman käynnistyksen aikana RGB -LED vilkkuu sinisenä.
test_LED.py ja test_relay.py ovat yksinkertaisia komentosarjoja, joita voidaan käyttää RGB -LEDin ja releen laitteistotoiminnon testaamiseen.
epdconfig.py ja epd2in9.py ovat laiteohjaimia Wavesharen tarjoamaan e-ink-näyttöön.
Jotta ohjelmat voivat käyttää Ubidots -hallintapaneelia, sinun on lisättävä yksittäiset tunnuksesi ja laitteen tai muuttujan nimet (jos käytät eri merkintöjä). Etsi osio, kuten yllä olevassa kuvassa (korvaa XXXXXXXX tunnuksellasi).
Kattavat opetusohjelmat kojelaudan rakentamisesta ja kojelaudan integroimisesta Python -ohjelmaan löytyvät suoraan Ubidots -sivulta (https://help.ubidots.com/en/) tai Googlen kautta.
Vaihe 6: IOT -kojelauta
Ubidotsin isännöimä koontinäyttö (katso https://ubidots.com) sisältää useita alueita, jotka kuvataan lyhyesti alla.
- Nopeus- ja latausnopeuden aikajärjestys. Puolen tunnin välein uusi arvo lisätään kaavioon.
- Mitatun ping -ajan aikakulku. Joka toinen tunti lisätään kaavioon uusi arvo.
- Keskimääräisen latausnopeuden aikasarja. 24 tunnin keskiarvo lasketaan ja kirjoitetaan kaavioon.
- Laskentataulukko edustaa nykyisiä mittausarvoja, mukaan lukien aikaleima.
- Kaukosäätimen painike modeemin nollaamiseksi Internetin kautta. Kysely tapahtuu 3 minuutin välein, eli voi kestää jonkin aikaa, ennen kuin toiminto suoritetaan.
- Viimeisten nollausten kirjaaminen, mukaan lukien nollauksen syy (etäkäynnistys, virran katkaisu tai katoaminen, alimman kaistanleveyden alittaminen)
Kattavat opetusohjelmat kojelaudan rakentamisesta ja kojelaudan integroimisesta Python -ohjelmaan löytyvät suoraan Ubidots -sivulta (https://help.ubidots.com/en/) tai Googlen kautta.