Satura rādītājs:
- 1. darbība. Aparatūras iestatīšana
- 2. darbība. Programmatūras iestatīšana
- 3. darbība: tīmekļa lapas iestatīšana
Video: IoT RPi LED ziņojumu dēlis: 3 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:55
Šajā pamācībā esmu izveidojis ar Wi-Fi savienotu LED ziņojumu dēli, izmantojot Raspberry Pi (RPi). Lietotāji izveidos savienojumu ar Raspberry Pi tīmekļa serveri, izmantojot savu pārlūkprogrammu, lai iesniegtu īsziņas, kas tiks parādītas 8x8 LED displejā. Tā kā 8x8 LED matricas saskarne ar MAX7219 draiveri Python ir labi dokumentēta internetā, šis projekts koncentrējas uz tīmekļa servera saskarnes izveidi un ZeroMQ Messaging izmantošanu ienākošo ziņojumu pārvaldībai.
Atjauninājums: Šeit ir turpinājuma projekts IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board
(Es esmu kluba koordinators Girls Who Code Club, un es nācu klajā ar šo vienkāršo projektu, lai mācītu studentus par tīmekļa saskarnes dizainu un ziņojumapmaiņu.)
1. darbība. Aparatūras iestatīšana
Šim projektam nepieciešama šāda aparatūra:
- Raspberry Pi
- USB barošanas avots, piemēram, Anker, ar īsu USB -MicroUSB kabeli
- MAX7219 punktu matricas modulis ar lentes kabeli (Aliexpress par mazāk nekā 2 USD)
- Korpuss (es izgatavoju vienu no kartona kastes un izsmidzināju melnā krāsā)
Aparatūras iestatīšana ir vieglā daļa. Vienkārši pievienojiet 5 vadu lentes kabeli no LED matricas ar RPi atbilstoši MAX7219 bibliotēkas dokumentam.
LED-> RPi ======== VCC-> GPIO Pin #2 (5v) GND-> GPIO Pin #6 (GND) DIN-> GPIO Pin #19CS-> GPIO Pin #24CLK-> GPIO Pin # 23
Es izmantoju divpusēju putu lenti, lai piestiprinātu LED bloku RPi korpusam. Pēc tam no kartona kastes es izveidoju korpusu, kurā bija gan RPi, gan akumulators.
2. darbība. Programmatūras iestatīšana
RPi jābūt šādai programmatūrai:
- Python 3
- Apache 2 tīmekļa serveris
- Max7219 draiveris Python
- ZeroMQ ziņojumapmaiņa
Python 3
RPi jābūt iepriekš instalētai Python 3. Kamēr mans kods ir rakstīts Python 3, Python 2 vajadzētu darboties ar nelielām izmaiņām.
Apache 2
Iestatiet Apache un iespējojiet Python CGI skriptu. Zemāk ir daži lieliski resursi Apache iestatīšanai RPi, tāpēc es šeit neatkārtošos. Vienkārši izpildiet tālāk sniegtos norādījumus, lai iestatītu Apache un CGI. Pārliecinieties, vai *.py skripti ir izpildāmi no pārlūkprogrammas.
- https://raspberrywebserver.com/cgiscripting/
- https://www.knight-of-pi.org/apache-web-server-with-cgi-for-python/
Max7291 vadītājs
Instalējiet Max7219 draiveri, ievērojot jaunāko instalēšanas rokasgrāmatu:
https://max7219.readthedocs.io/en/latest/install.html
Pēc instalēšanas palaidiet parauga kodu, matrix_test.py, katrai instalēšanas rokasgrāmatai, lai LED matricā parādītu “Hello World”. Tam ir jādarbojas, pirms pāriet uz nākamo soli.
ZeroMQ ziņojumapmaiņa
Kāpēc mums ir nepieciešama ziņojumapmaiņa? Mēģiniet palaist iepriekš minēto koda piemēru matrix_test.py divos termināļa ekrānos vienlaikus. Sistēma ļaus darboties vairākiem kodiem vienlaicīgi, taču jūs redzēsit, ka ziņojumi tiek pārklāti, kas nav vēlams. Viena lietotāja vidē tas var nebūt problēma, jo jūs varat pārliecināties, ka vienlaikus var darboties tikai viena programma. Vairāku lietotāju vidē, piemēram, tīmeklī, sistēmai ir jāizveido FIFO (First-In-First-Out) rinda, lai pārliecinātos, ka kodu var izpildīt tikai viena persona, kamēr citi gaida. Lai gan var būt arī citi risinājumi, kā to panākt, es nolēmu izmantot ZeroMQ, lai pārvaldītu FIFO rindu. ZeroMQ servera kods satur faktisko funkcijas izsaukumu, lai pa vienam parādītu ziņojumu uz LED matricas, kamēr tīmekļa serveris darbojas kā ZeroMQ klients, lai noskaidrotu un iesniegtu ziņojumus ZeroMQ serverim. Tādā veidā, lai gan vairāki lietotāji vienlaikus varēja iesniegt ziņojumus, izmantojot tīmekļa lapu, ZeroMQ serveris vienlaikus parādīs tikai vienu ziņojumu.
Šim projektam mēs vienkārši instalēsim Python pakotni pyzmq, nevis visu ZeroMQ pakotni.
palaist:
sudo pip3 instalējiet pyzmq
Izlasiet ZeroMQ rokasgrāmatu vietnē https://zguide.zeromq.org un izmēģiniet hello world servera un klienta piemēru programmā Python. Kopējiet Python parauga kodu gan serverim, gan klientam uz RPi un pārliecinieties, vai tie darbojas pirms nākamās darbības.
3. darbība: tīmekļa lapas iestatīšana
Tīmekļa lapā es izmantoju bootstrap css/js sistēmu, lai lapa izskatītos skaista. Tas ir pilnīgi neobligāti.
Lejupielādējiet pievienoto failu led_msg.tar.gz Apache saknē vai apakšdirektorijā. Lai atceltu gzip'd tar faila atzīmēšanu, palaidiet:
tar -xzvf led_msg.tar.gz
Tādējādi tiek izveidoti šādi faili:
msg.py (galvenā programma)
templates/interstitial.html (html veidne) templates/send_msg.html (html veidne) static/img/led_150x150-j.webp
Pēc izvēles instalējiet bootstrap css/js sistēmu statiskajā direktorijā.
Ievadiet pārlūkprogrammas vietni msg.py un pārliecinieties, vai tiek parādīta tīmekļa lapa. Vēl neiesniedz ziņu !!!
Pirms ziņojumu iesniegšanas ir jāsāk ZeroMQ serveris, lai pieņemtu ziņojumus no tīmekļa lapas klienta un parādītu tos LED matricā. Ja ZeroMQ serveris nedarbojas, ekrānā nekas netiks parādīts.
Lejupielādējiet pievienoto kodu max7219_server.py savā mājas direktorijā, nevis Apache saknes direktorijā, kur to varētu izpildīt tīmekļa lietotāji. Palaidiet to kā root:
sudo python max7219_server.py
Tagad ZeroMQ serveris ir gatavs saņemt ziņas no tīmekļa lapas. Ievadiet un iesniedziet vienkāršu ziņojumu no tīmekļa lapas. Ja viss ir pareizi iestatīts, jūs redzēsit šo ziņojumu ZeroMQ servera ekrānā, kā arī LED matricā.
Ja vēlaties izslēgt serveri, vienkārši izmantojiet Control-C, lai izietu no servera ekrāna.
Tieši tā. Ceru, ka jums patiks šis projekts tikpat ļoti kā man.
Viens no uzlabojumiem, ko jūs varētu veikt, ir padarīt ZeroMQ komunikāciju starp serveri un klientiem asinhronu, lai tīmekļa lapa negaidītu, kamēr tiek parādīti citi ziņojumi. Varat arī pievienot papildu LED matricu kaskādes režīmā. Es to atstāšu jūsu ziņā.
Ieteicams:
LED sloksnes ziņojumu dēlis: 3 soļi
LED sloksnes ziņojumu dēlis: šī pamācība palīdzēs jums izveidot ziņojumu dēli no individuāli adresējamām NeoPixel LED sloksnēm. Šis projekts ir pielāgota Džoša Levina veidotās zīmes versija, kas atrodama vietnē https://github.com/bigjo
MXY dēlis - zema budžeta XY ploteru zīmēšanas robotu dēlis: 8 soļi (ar attēliem)
MXY dēlis - zema budžeta XY ploteru zīmēšanas robotu dēlis: Mans mērķis bija izveidot mXY tāfeli tā, lai XY ploteru zīmēšanas mašīna būtu ar mazu budžetu. Tāpēc es izveidoju tāfeli, kas atvieglo tiem, kas vēlas izveidot šo projektu. Iepriekšējā projektā, izmantojot 2 gab. Nema17 soļu motorus, šī tāfele
Raspberry Pi ziņojumu dēlis: 11 soļi (ar attēliem)
Raspberry Pi ziņojumu dēlis: Šis ir projekts, pie kura es strādāju savai draudzei. Mēs vēlējāmies elektronisku ziņojumu dēli, kas būtu uzstādīts narthex/vestibila zonā un ik pēc dažām sekundēm pārvietotos pa statiskiem slaidiem. Tie bija mūsu dizaina mērķi: statiski slaidi, bez video vai
VALENTĪNAS DIENA Mīlestības putni: kaste, lai nosūtītu un saņemtu telegrammas audio ziņojumu: 9 soļi (ar attēliem)
VALENTĪNAS DIENA Mīlestības putni: kaste, lai nosūtītu un saņemtu telegrammas audio ziņu: pārbaudiet video šeit Kas ir mīlestība (putni)? Ak, bērniņ, nesāp man, nekaitē man vairs. Tā ir atsevišķa ierīce, kas saņem sūtītas balss ziņas tavai mīlestībai, ģimenei vai draugam. Atveriet lodziņu, nospiediet pogu, kamēr runājat, atlaidiet, lai nosūtītu
Punktu matrica; 8x8 ar ziņojumu vai attēliem: 4 soļi
Punktu matrica; 8x8 ar ziņojumu vai attēliem: šajā pamācībā tiks parādīti punktiņu matricas attēli, kurus izveidoju ar punktu matricu 8x8. Lūdzu, apskatiet iekļautos videoklipus un programmas. Punktu matrica ir divdimensiju displejs. Tas sastāv no 8 kolonnām un 8 rindām. Ja uzmanīgi aplūkojat