INHOUDSOPGAWE:
Video: IoT RPi LED -boodskapbord: 3 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
In hierdie instruksies het ek 'n wifi-gekoppelde LED-boodskapbord gemaak met 'n Raspberry Pi (RPi). Gebruikers sal via hul blaaiers met die Raspberry Pi se webbediener skakel om kort boodskappe in te dien wat op die 8x8 LED -skerm verskyn. Aangesien die koppeling van 8x8 LED-matriks met die MAX7219-bestuurder in Python deur ander op die internet goed gedokumenteer is, fokus hierdie projek op die bou van 'n webbedienerskoppelvlak en die gebruik van ZeroMQ Messaging om inkomende boodskappe te bestuur.
Update: Hier is 'n opvolgprojek IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board
(Ek is 'n klubfasiliteerder vir Girls Who Code Club, en ek het met hierdie eenvoudige projek vorendag gekom om studente te leer oor webinterface -ontwerp en boodskappe.)
Stap 1: hardeware -opstelling
Hierdie projek benodig die volgende hardeware:
- Framboos Pi
- USB -kragbron soos Anker met 'n kort USB na MicroUSB -kabel
- MAX7219 dot matrix module met 'n lintkabel (Aliexpress vir minder as $ 2)
- Omhulsel (ek het een uit 'n kartondoos gemaak en in swart gespuitverf)
Die opstel van hardeware is die maklike deel. Koppel eenvoudig 'n lintkabel van 5 drade van die LED -matriks aan die RPi per MAX7219 biblioteekdokument.
LED-> RPi ======== VCC-> GPIO Pin #2 (5v) GND-> GPIO Pin #6 (GND) DIN-> GPIO Pin #19CS-> GPIO Pin #24CLK-> GPIO Pin # 23
Ek het 'n dubbelzijdige skuimband gebruik om die LED-eenheid aan die RPi-omhulsel te plak. Toe maak ek 'n omhulsel uit 'n kartondoos om RPi en battery te huisves.
Stap 2: sagteware -opstelling
RPi moet die volgende sagteware hê:
- Python 3
- Apache 2 websever
- Max7219 bestuurder vir Python
- ZeroMQ -boodskappe
Python 3
Python 3 moet reeds vooraf geïnstalleer wees op RPi. Terwyl my kode vir Python 3 geskryf is, behoort Python 2 te werk met 'n paar klein veranderinge.
Apache 2
Stel Apache op en aktiveer Python CGI -scripting. Hieronder is 'n paar uitstekende hulpbronne vir die opstel van Apache op RPi, sodat ek dit nie hier sal herhaal nie. Volg die onderstaande tutoriale om Apache en CGI op te stel. Maak seker dat *.py -skrifte uit die blaaier uitgevoer kan word.
- https://raspberrywebserver.com/cgiscripting/
- https://www.knight-of-pi.org/apache-web-server-with-cgi-for-python/
Max7291 bestuurder
Installeer die Max7219 -bestuurder deur die nuutste installeringsgids te volg:
https://max7219.readthedocs.io/en/latest/install.html
Na die installering, voer die voorbeeldkode, matrix_test.py, per installeringsgids uit om "Hello World" op die LED Matrix te vertoon. Dit moet werk voordat u na die volgende stap gaan.
ZeroMQ -boodskappe
Waarom het ons boodskappe nodig? Probeer die bogenoemde voorbeeldkode, matrix_test.py, gelyktydig op twee terminale skerms. Die stelsel laat verskeie kodes gelyktydig toe, maar u sal sien dat boodskappe oorvleuel word, wat nie wenslik is nie. In 'n enkele gebruikersomgewing is dit moontlik nie 'n probleem nie, aangesien u kan seker maak dat slegs een program op 'n slag kan loop. In 'n multi-gebruiker omgewing soos web, moet die stelsel 'n FIFO (First-In-First-Out) tou skep om seker te maak dat slegs een persoon die kode kan uitvoer terwyl ander wag. Alhoewel daar ander oplossings is om dit te bereik, het ek besluit om ZeroMQ te gebruik om die FIFO -tou te bestuur. Die ZeroMQ -bedienerkode bevat die werklike funksie -oproep om een vir een 'n boodskap op die LED -matriks te vertoon, terwyl die webserver as 'n ZeroMQ -kliënt optree om boodskappe aan die ZeroMQ -bediener te doen en dit in te dien. Terwyl veelvuldige gebruikers gelyktydig boodskappe via 'n webbladsy kan stuur, sal die ZeroMQ -bediener slegs een boodskap op 'n slag vertoon.
Vir hierdie projek installeer ons net die Python -pakket pyzmq en nie die hele ZeroMQ -pakket nie.
hardloop:
sudo pip3 installeer pyzmq
Lees die ZeroMQ -gids op https://zguide.zeromq.org en probeer die hello world server en kliëntvoorbeeld in Python. Kopieer die Python -voorbeeldkode vir beide bediener en kliënt na RPi en maak seker dat dit werk voordat u na die volgende stap gaan.
Stap 3: Webblad opstel
Op die webblad het ek die bootstrap css/js -raamwerk gebruik om die bladsy mooi te laat lyk. Dit is heeltemal opsioneel.
Laai die aangehegte led_msg.tar.gz-lêer af na die Apache-wortel of subgids. Voer die volgende uit om die gzip'd -teerlêer te verwyder:
tar -xzvf led_msg.tar.gz
Dit skep die volgende lêers:
msg.py (hoofprogram)
templates/interstitial.html (html -sjabloon) templates/send_msg.html (html -sjabloon) static/img/led_150x150-j.webp
Installeer opsioneel die bootstrap css/js -raamwerk onder die statiese gids.
Voer die URL in vir msg.py in u blaaier en maak seker dat die webblad verskyn. Moet nog nie 'n boodskap indien nie !!!
Voordat boodskappe ingedien kan word, moet die ZeroMQ -bediener begin om boodskappe van die webbladkliënt te aanvaar en dit op die LED -matriks te vertoon. Niks sal op die skerm verskyn as die ZeroMQ -bediener nie werk nie.
Laai die aangehegte max7219_server.py -kode af na u tuisgids, nie in Apache root dir waar dit deur webgebruikers uitgevoer kan word nie. Begin dit as root:
sudo python max7219_server.py
Nou is die ZeroMQ -bediener gereed om boodskappe vanaf die webbladsy te ontvang. Tik en stuur 'n eenvoudige boodskap van die webblad af. As alles korrek ingestel is, sien u die boodskap op die ZeroMQ -bedienerskerm sowel as op die LED Matrix.
As u die bediener wil afsluit, doen net Control-C om die bedienerskerm te verlaat.
Dis dit. Hoop jy geniet hierdie projek net soos ek.
Een van die verbeterings wat u kan maak, is om die ZeroMQ -kommunikasie tussen die bediener en kliënte asynchroon te maak sodat die webblad nie wag terwyl ander boodskappe vertoon word nie. U kan ook 'n ekstra LED -matriks in die kaskade -modus heg. Ek laat dit aan jou oor.
Aanbeveel:
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: 7 stappe (met foto's)
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: ek is van plan om hierdie Rapsberry PI te gebruik in 'n klomp prettige projekte in my blog. Kyk gerus daarna. Ek wou weer my Raspberry PI gebruik, maar ek het nie 'n sleutelbord of muis op my nuwe plek gehad nie. Dit was 'n rukkie sedert ek 'n Framboos opgestel het
RPi IoT slim lig met behulp van Firebase: 4 stappe (met foto's)
RPi IoT Smart Light met behulp van Firebase: Hierdie gids wys u hoe u 'n app kan maak en instel om die Raspberry Pi via Firebase ('n aanlyn databasis) te beheer. En dan druk ek 'n saak vir die Pi Zero W in 3D, 'n Powerboost 1000C, 'n battery en 'n Blinkt
RPi-Zero IoT-gebeurtenisaanwyser / kleurlamp: 6 stappe (met foto's)
RPi-Zero IoT Gebeurtenisaanwyser / Kleurlamp: Geen ekstra mikrobeheerder nie, & Geen HAT-byvoegingsmodule nodig nie. Die RPi-Zero doen alles. Beter nog, gebruik 'n RPi-Zero W! Voorbeeldgebruik: Webdiensstatus-aanwyser (bv
Hoe om 'n rekenaar met maklike stappe en foto's uitmekaar te haal: 13 stappe (met foto's)
Hoe om 'n rekenaar uitmekaar te haal met eenvoudige stappe en foto's: dit is 'n instruksie oor hoe om 'n rekenaar uitmekaar te haal. Die meeste basiese komponente is modulêr en kan maklik verwyder word. Dit is egter belangrik dat u daaroor georganiseerd is. Dit sal u verhinder om onderdele te verloor, en ook om die montering weer
Herbruik die optiese skyf met RPi: 6 stappe (met foto's)
Herbruik optiese skyf met RPi: Hierdie projek het ontstaan nadat die optiese skyf van my geliefde skootrekenaar verkeerd begin werk het. Die CD -skinkbord verskyn herhaaldelik wanneer ek my skootrekenaar druk of op enige manier beweeg. My diagnose van die probleem was dat daar seker 'n paar was