Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Tulad ng madalas kong tanungin ang aking sarili kung anong bandwidth ang kasalukuyang ibinibigay ng aking ISP (Gumagamit ako ng isang LTE modem para sa koneksyon sa Internet), naisip ko ang isang sistema ng pagsubaybay sa bandwidth. Dahil ang system ay dapat na compact at power-save, pumili ako ng isang Raspberry Pi Zero bilang gitnang bahagi. Ang Raspberry ay konektado sa modem sa pamamagitan ng WLAN, samakatuwid ang mga problema sa WLAN ay maaari ding makita.
Mga gamit
- Raspberry Pi Zero WH
- Ipakita ang Waveshare e-ink (2.9inch-e-paper-module)
- DC-DC converter (hal. DEBO DCDC 20W)
- RGB LED (kinuha mula sa isang lumang aparato)
- Push-button
- Lumipat
- Relais module (hal. 2 Way Relay module2 Way Way Relay)
- Male konektor + Babae konektor (parehong umaangkop sa laki ng iyong modem power supply plug)
- 3D naka-print na kaso
Hakbang 1: Mga Tampok
- Ang Raspberry Pi Zero ay konektado sa pamamagitan ng WLAN, sumusubok ng hanggang- at bilis ng pag-download at nagsasagawa ng pagsukat ng ping tuwing kalahating oras. Ang isang bersyon ng linya ng utos ng speedtest.net ay ginagamit bilang batayan para sa mga sukat.
- Ang resulta ng pagsukat ng bandwidth at ping ay ipinapakita sa isang e-ink display. Ipinapakita rin ang oras ng pagsukat.
- Kung ang bilis ng pag-download ay nahuhulog sa ibaba ng isang tinukoy na halaga ng threshold, isang relay ang papatayin ang modem at nakabukas sa isang maikling panahon. Ang modem ay sa gayon ay nai-reset nang walang anumang pagbabago ng aparato (ang supply ng kuryente lamang ang nagambala).
- Magagamit ang isang pindutan sa harap ng aparato upang manu-manong ma-trigger ang pagsukat ng bandwidth.
- Ang mga sinusukat na halaga ay ipinapakita sa isang Ubidots Dashboard (IOT Portal). Sa pangkalahatang ideya maaari mo ring makita ang kasaysayan ng oras ng mga sinusukat na halaga at ang mga dahilan para sa huling pag-reset.
- Sa IOT Portal maaari ka ring makahanap ng isang pindutan upang malayuan i-reset ang modem.
- Gumagamit ang monitor ng bandwidth ng suplay ng kuryente ng modem. Hindi kailangan ng karagdagang suplay. Pinagambala ng relais ang pagpapasa ng power supply sa modem - nananatiling nakabukas ang raspberry.
Hakbang 2: Mga kable
Sa unang larawan maaari mong makita ang panloob na disenyo ng bandwidth monitor:
Ang mga pangunahing bahagi ay:
- Push button
- E-ink Display
- Raspberry Pi Zero
- Relay Module
- RGB LED + Resistors (depende sa RGB LED na ginagamit mo)
- Lumipat
- DC-DC Converter
- Babaeng konektor
Ang pangalawang larawan ay nagpapakita ng isang eskematiko ng mga kable. Ang positibong poste ng boltahe ng supply ay pinakain sa pamamagitan ng paglipat sa DC-DC boltahe converter (na nagko-convert ng 12V supply boltahe ng router sa 5V para sa Raspberry) at sa pamamagitan ng relay (sa pamamagitan ng pin na konektado sa normaly) pabalik sa output konektor. Sa gayon ang modem ay ibinibigay din sa kapangyarihan kapag ang bandwidth monitor ay naka-off.
Ang pagsukat ng bandwidth ay maaaring simulang manu-mano sa pamamagitan ng isang pindutan. Ginagamit ang isang RGB LED upang mailarawan ang iba't ibang mga estado ng pagpapatakbo.
Ang koneksyon sa pagitan ng Raspberry Pi at e-ink display ay hindi ipinakita sa circuit diagram. Ikonekta ang display ayon sa talahanayan at ang pin-out sa itaas.
Hakbang 3: Pag-print ng 3D at Pagbubuo ng Habol
Ang mga sumusunod na bahagi ay kinakailangan para sa kaso (tingnan ang larawan sa itaas):
- ibabang bahagi
- itaas na bahagi
- sa harap
- bumalik
- 4x mount
Ang lahat ng mga bahagi ay maaaring mai-print nang walang mga suporta. Maaari mo ring makita ang mga file at ilan sa aking iba pang mga disenyo sa Thingiverse:
Ang display ay maaaring naka-attach sa front panel na may mga mount at isang doble na tape. Ang switch button at konektor ng femal ay naka-screw sa likod at likod na panel. Gumamit ako ng 3x20mm screws upang ikonekta ang dalawang halves ng pabahay. Ang mga pagpapaubaya sa mga uka para sa harap at likurang mga panel ay medyo masikip. Kung kinakailangan, ang harap at likurang mga panel ay dapat na may sanded sa gilid (sa loob upang maiwasan ang pagwasak sa ibabaw).
Hakbang 4: Pag-set up ng Raspberry PI
Ang gabay sa pag-setup na ito ay batay sa pag-iipon ng maraming mga tagubilin sa pag-install mula sa iba't ibang mga mapagkukunan (mga tagagawa ng display ng e-Ink,…). Para sa akin ang mga tagubilin ay humantong sa nais na resulta. Dahil hindi ako dalubhasa sa Linux, walang nagawang mga pag-optimize o katulad. May kamalayan ako na tiyak na mas mahusay at mas mahusay ang mga solusyon.
Ipagpalagay na mayroon ka nang naka-install na Raspbian sa iyong Pi (maraming mga tutorial sa kung paano i-install ang pangunahing sistema ng operasyon) at mayroon kang isang display (sa pamamagitan ng miniHDMI), konektado ang mouse at keyboard. Ang isang wastong pag-set up ng koneksyon sa WLAN sa router o sa Internet ay ipinapalagay din. Maliban kung nakasaad sa ibang paraan, ang lahat ng mga pamamaraan sa pag-install ay isinasagawa sa terminal.
I-install ang Remote desktop (upang mai-access ang PI mula sa iyong computer):
sudo apt-get update
sudo apt-get
i-install ang xrdp
o maaari ka ring gumana nang walang ulo sa pamamagitan ng ssh (tingnan ang hal.
Palitan ANG password:
www.raspberrypi.org/forums/viewtopic.php?t=193620
I-install ang speedtest:
sudo
apt-get install python-pip
sudo pip i-install ang speedtest-sij
upang masubukan kung matagumpay na na-install ang pagpapatakbo ng Speedtest sa terminal:
speedtest -jam
kung ang anumang bagay ay tama dapat kang makakuha ng isang bagay tulad ng sa unang larawan sa itaas.
Pag-install ng mga kablePI
sudo apt-get install git-core
git clone git: //git.drogon.net/wiringPi
cd mga kablePi
./itayo
(tingnan din sa
Alternativ:
sudo apt-get install ng mga wiringpi
(tingnan ang
I-install ang BCM2835
(tingnan ang
Mag-download ng bcm2835-1.60.tar.gz (o isang mas bagong bersyon kung magagamit)
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60
./ configure
gumawa
sudo gumawa ng tseke
sudo gumawa ng pag-install
I-install ang Python imaging library
sudo apt-get install python-imaging
Alternativ:
sudo apt-get install python-pil
Paganahin ang pagpapaandar ng I2C.
Patakbuhin ang sumusunod na utos upang i-configure ang iyong board na Raspberry Pi:
sudo raspi-config
Piliin ang Opsyon ng Interface-> I2C -> oo, upang simulan ang pangunahing driver ng I2C. Pagkatapos ay kailangan mo ring baguhin ang config file. Patakbuhin ang sumusunod na utos upang buksan ang file ng pagsasaayos:
sudo nano / etc / modules
Idagdag ang sumusunod na dalawang linya sa file ng pagsasaayos
i2c-bcm2708
i2c-dev
Tingnan din ang
Paganahin ang pagpapaandar ng SPI
Patakbuhin ang sumusunod na utos upang i-configure ang iyong board na Raspberry Pi:
sudo raspi-config
Piliin ang Opsyon ng Interface-> SPI -> oo, upang simulan ang pangunahing driver ng SPI.
Mag-install ng karagdagang mga font:
sudo apt-get install ttf-mscorefonts-installer
Mag-download at mag-install ng Mga Font (Roboto + Droid)
gksudo
pcmanfm
Upang simulan ang filemanager na may mga root privilege at kopyahin ang mga font ng truetype sa folder / usr / share / font / truetype
Alternativ:
Kopyahin ang mga font sa folder ng Mga Pag-download gamit ang WinSCP (ssh dapat paganahin upang magamit ang WinSCP)
sudo cp -r / home / pi / Mga Download / droid / usr / share / font / truetype
sudo cp -r / home / pi / Mga Download / roboto / usr / share / font / truetype
Kailangan mo ng mga pribilehiyo ng ugat upang mai-access ang font folder. Marahil ay may mga mas mahusay na paraan upang gawin ito (tulad ng nabasa na nabanggit na hindi ako dalubhasa sa Linux) ngunit ang parehong paraan ay nagtrabaho para sa akin.
Mga file ng Python:
Gamitin ang filmanger upang lumikha ng isang bagong folder na "bandwidth_monitor"
Kopyahin ang lahat ng mga file sa direktoryo bandwidth_monitor
Gawing maipapatupad ang mga file ng python at script
chmod + x *.py
chmod + x speedtest-cron.sh
I-configure ang crontab
crontab -e
Ginagamit ang Crontab upang iiskedyul ang pagpapatupad ng programa hal. speedtest tuwing 30 min. Idagdag ang mga sumusunod na linya sa iyong crontab (tingnan din ang pangalawang pigura):
@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
Paglalarawan ng mga naka-iskedyul na gawain:
- sa pag-reboot ang mensahe ng pag-restart ay nakasulat sa dashboard ng IOT
- sa pag-reboot nagsimula ang poll test_now_button
- tuwing 30 minuto ang isang pagsukat ng bandwidth ay ginaganap
- bawat 3 minuto ang katayuan ng pindutang remote reset (sa IOT dashboard) ay naka-check
- isang beses sa isang araw ay nagsimula ang isang cycle ng pag-refresh ng display.
Tingnan ang seksyon ng software para sa isang maikling paglalarawan ng mga programa.
Hakbang 5: Software
Ang software ay nahahati sa maraming mga file / programa:
Ang bandwidth_monitor_0_4.py ay ang pangunahing programa na tinawag ng Crontab tuwing kalahating oras. Gumagawa ito ng isang pagsubok sa bandwidth (sa pamamagitan ng bersyon ng linya ng utos ng speedtest.net). Sa panahon ng pagsubok, ang RGB LED ay asul. Kung ang bandwidth ay nasa itaas ng napiling threshold, ang halaga ay ipinapakita sa e-ink display (kasama ang isang timestamp) at na-export sa dashboard ng Ubidots. Kung ang bandwidth ay nasa ibaba ng threshold ang LED ay nagiging pula at ang pagsukat ay paulit-ulit pagkatapos ng isang maikling pagkaantala. Pagkatapos ng 3 negatibong mga pagtatangka ang relay ay aktibo at sa gayon ang power supply ng modem ay nagambala. Ang pag-reset ng code (halaga = 2) ay nakasulat sa seksyon ng pag-log.
Binabasa ng poll_killswitch.py ang katayuan ng isang variable ng boolean sa dashboard. Kung ang killswitch_state ay totoo ang relais ay naaktibo isang ang suplay ng kuryente ng modem ay nagambala. Ang RGB LED ay nagiging berde sa panahon ng botohan ng killswitch. Matapos ang pag-reset ang killswitch_state ay itinakda na mali at isang entry sa seksyon ng pag-log ng dashboard ay nabuo (halaga = 1).
Ang poll_test_now_button.py ay naghihintay para sa pushbutton sa harap na panel ng kaso upang mapindot. Sa pamamagitan ng pag-aktibo ng pindutan, ang isang pagsukat ng bandwidth ay manu-manong na-trigger. Kapag nagsimula ang programa (sa pag-reboot ng Raspberry Pi) ang RGB LED ay kumikislap ng pula.
Isusulat ng post_restart_message.py ang reset code (halaga = 3) sa seksyon ng pag-log ng dashboard. Ipinapahiwatig nito na ang bandwidth monitor ay na-restart. Sa panahon ng programa simulan ang RGB LED flashes blue.
Ang test_LED.py at test_relay.py ay mga simpleng script na maaaring magamit upang subukan ang pagpapaandar ng hardware ng RGB LED at ang relay.
Ang epdconfig.py at epd2in9.py ay mga driver ng aparato para sa e-ink display na ibinigay ng Waveshare.
Upang payagan ang mga programa na ma-access ang dashboard ng Ubidots, kailangan mong idagdag ang iyong mga indibidwal na token at aparato o variable na pangalan (kung gumagamit ka ng iba't ibang mga notasyon). Maghanap ng seksyon tulad ng ipinakita sa imahe sa itaas (palitan ang XXXXXXXX ng iyong token).
Ang mga kumpletong tutorial sa kung paano bumuo ng dashboard at kung paano isama ang dashboard sa isang programa ng Python ay maaaring matagpuan nang direkta sa pahina ng Ubidots (https://help.ubidots.com/en/) o sa pamamagitan ng Google.
Hakbang 6: IOT Dashboard
Ang dashboard na naka-host ng Ubidots (tingnan ang https://ubidots.com) ay naglalaman ng maraming mga lugar na kung saan ay mailarawan sa ibaba.
- Pagkakasunud-sunod ng oras ng hanggang- at bilis ng pag-download. Tuwing kalahating oras ang isang bagong halaga ay naipasok sa diagram.
- Kurso ng oras ng sinusukat na oras ng ping. Tuwing kalahating oras ang isang bagong halaga ay naipasok sa diagram.
- Pagkakasunud-sunod ng oras ng average na bilis ng pag-download. Ang average na halaga na higit sa 24 na oras ay kinakalkula at nakasulat sa diagram.
- Ang representasyon ng Spreadsheet ng kasalukuyang mga halaga ng pagsukat kasama ang time stamp.
- Remote control button para sa pag-reset ng modem sa pamamagitan ng Internet. Ang pagtatanong ay nangyayari tuwing 3 minuto, ibig sabihin, maaaring tumagal ng ilang oras hanggang sa maisagawa ang pagkilos.
- Ang pag-log sa huling pag-reset kasama ang dahilan ng pag-reset (remote na pag-trigger, pag-off o pagkawala ng boltahe, pagbagsak sa ibaba ng minimum na bandwidth)
Ang mga kumpletong tutorial sa kung paano bumuo ng dashboard at kung paano isama ang dashboard sa isang programa ng Python ay maaaring matagpuan nang direkta sa pahina ng Ubidots (https://help.ubidots.com/en/) o sa pamamagitan ng Google.