Innehållsförteckning:
Video: IoT RPi LED -meddelandekort: 3 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
I denna instruktionsbok har jag gjort ett wifi-anslutet LED-meddelandekort med en Raspberry Pi (RPi). Användare kommer att ansluta till Raspberry Pi: s webbserver med sina webbläsare för att skicka korta meddelanden som kommer att visas på 8x8 LED -skärmen. Eftersom gränssnittet 8x8 LED-matris med MAX7219-drivrutinen i Python är väl dokumenterad av andra på Internet, fokuserar detta projekt på att bygga ett webbservergränssnitt och använda ZeroMQ Messaging för att hantera inkommande meddelanden.
Uppdatering: Här är ett uppföljningsprojekt IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board
(Jag är en klubblättare för Girls Who Code Club och jag kom med detta enkla projekt för att lära eleverna om webbgränssnittsdesign och meddelanden.)
Steg 1: Maskinvaruinstallation
Detta projekt kräver följande hårdvara:
- Raspberry Pi
- USB -strömkälla som Anker med en kort USB till MicroUSB -kabel
- MAX7219 punktmatrismodul med bandkabel (Aliexpress för mindre än $ 2)
- Låda (jag gjorde en av en kartong och spraymålade i svart)
Hårdvaruinstallation är den enkla delen. Anslut bara en 5 -trådig bandkabel från LED -matrisen till RPi per MAX7219 biblioteksdokument.
LED-> RPi ======== VCC-> GPIO Pin #2 (5v) GND-> GPIO Pin #6 (GND) DIN-> GPIO Pin #19CS-> GPIO Pin #24CLK-> GPIO Pin # 23
Jag använde en dubbelsidig skumtejp för att fästa LED-enheten på RPi-fodralet. Sedan gjorde jag ett hölje av en kartong för att rymma både RPi och batteri.
Steg 2: Programinstallation
RPi bör ha följande programvara:
- Python 3
- Apache 2 webbserver
- Max7219 drivrutin för Python
- ZeroMQ -meddelanden
Python 3
RPi bör ha Python 3 redan förinstallerat. Medan min kod är skriven för Python 3, bör Python 2 fungera med några mindre ändringar.
Apache 2
Installera Apache och aktivera Python CGI -skript. Nedan finns några bra resurser för att konfigurera Apache på RPi så jag kommer inte att upprepa här. Följ bara självstudierna nedan för att konfigurera Apache och CGI. Se till att *.py -skript kan köras från en webbläsare.
- https://raspberrywebserver.com/cgiscripting/
- https://www.knight-of-pi.org/apache-web-server-with-cgi-for-python/
Max7291 drivrutin
Installera Max7219 -drivrutinen genom att följa den senaste installationsguiden:
https://max7219.readthedocs.io/en/latest/install.html
Efter installationen, kör exempelkoden, matrix_test.py, per installationsguide för att visa "Hej världen" på LED -matrisen. Detta måste fungera innan du går vidare till nästa steg.
ZeroMQ -meddelanden
Varför behöver vi Messaging? Prova att köra ovanstående exempelkod, matrix_test.py, på två terminalskärmar samtidigt. Systemet tillåter att flera koder körs samtidigt men du ser att meddelanden överlappar varandra vilket inte är önskvärt. I en enda användarmiljö är detta kanske inte ett problem eftersom du kan se till att bara ett program kan köras åt gången. I en fleranvändarmiljö som webb måste systemet skapa en FIFO-kö (First-In-First-Out) -kö för att säkerställa att endast en person kan köra koden medan andra väntar. Även om det kan finnas andra lösningar för att uppnå detta, bestämde jag mig för att använda ZeroMQ för att hantera FIFO -kön. ZeroMQ -serverkoden innehåller det faktiska funktionsanropet för att visa ett meddelande på LED -matrisen ett i taget medan webbservern fungerar som en ZeroMQ -klient för att fråga och skicka meddelanden till ZeroMQ -servern. På så sätt kan flera användare skicka meddelanden via en webbsida samtidigt, men ZeroMQ -servern visar bara ett meddelande i taget.
För det här projektet kommer vi bara att installera Python -paketet pyzmq och inte hela ZeroMQ -paketet.
springa:
sudo pip3 installera pyzmq
Läs ZeroMQ -guiden på https://zguide.zeromq.org och prova hej världsservern och klientexemplet i Python. Kopiera Python -exempelkoden för både server och klient till RPi och se till att de fungerar innan du går till nästa steg.
Steg 3: Inställning av webbsida
På webbsidan använde jag bootstrap css/js -ramverket för att få sidan att se vacker ut. Detta är helt valfritt.
Ladda ner den bifogade led_msg.tar.gz-filen till Apache-roten eller underkatalogen. För att ta bort gzip'd -tarfilen, kör:
tar -xzvf led_msg.tar.gz
Detta skapar följande filer:
msg.py (huvudprogram)
mallar/interstitial.html (html -mall) mallar/send_msg.html (html -mall) static/img/led_150x150.jpg (jpg används i html -mall)
Alternativt kan du installera bootstrap css/js -ramverket under den statiska katalogen.
Ange webbadressen för msg.py din webbläsare och se till att webbsidan kommer upp. Skicka inte ett meddelande än !!!
Innan meddelanden kan skickas måste ZeroMQ -servern startas för att acceptera meddelanden från webbsideklienten och visa dem på LED -matrisen. Ingenting visas på skärmen om ZeroMQ -servern inte körs.
Ladda ner den bifogade max7219_server.py -koden till din hemkatalog, inte i Apache root dir där den kan köras av webbanvändare. Kör det som root:
sudo python max7219_server.py
Nu är ZeroMQ -servern redo att ta emot meddelanden från webbsidan. Ange och skicka ett enkelt meddelande från webbsidan. Om allt är rätt inställt ser du det meddelandet på både ZeroMQ -serverskärmen och på LED -matrisen.
Om du vill stänga av servern, gör bara Control-C för att lämna serverskärmen.
Det är allt. Hoppas du kommer att tycka om detta projekt lika mycket som jag.
En förbättring du kan göra är att göra ZeroMQ -kommunikationen mellan servern och klienterna asynkron så att webbsidan inte väntar medan andra meddelanden visas. Du kan också fästa ytterligare LED -matris i kaskadläge. Jag lämnar det upp till dig.
Rekommenderad:
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: 7 steg (med bilder)
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: Jag planerar att använda denna Rapsberry PI i ett gäng roliga projekt tillbaka i min blogg. Kolla gärna in det. Jag ville börja använda mitt Raspberry PI men jag hade inte ett tangentbord eller en mus på min nya plats. Det var ett tag sedan jag installerade en hallon
Digital RPi LED -termometer: 6 steg (med bilder)
Digital RPi LED -termometer: Raspbian OSLär dig hur jag gjorde denna digitala LED -termometer, med en Raspberry Pi Zero W, LED -remsa, en OLED -skärm och en anpassad PCB. Den cyklar automatiskt genom en lista över städer och visar temperaturen på OLED displayen och lysdioderna. Men
RPi IoT Smart Light med Firebase: 4 steg (med bilder)
RPi IoT Smart Light Använda Firebase: Den här guiden visar hur du skapar och konfigurerar en app för att styra Raspberry Pi via Firebase (en online -databas). Och sedan 3D -utskrift av ett fodral för Pi Zero W, en Powerboost 1000C, ett batteri och en Blinkt
RPi-Zero IoT-händelseindikator / färglampa: 6 steg (med bilder)
RPi-Zero IoT-händelseindikator / färglampa: Ingen ytterligare mikrokontroller, & Ingen HAT-tilläggsmodul krävs. RPi-Zero gör allt. Ännu bättre, använd en RPi-Zero W! Exempelanvändning: Statusindikator för webbtjänst (t.ex. DowJonesIndex-spårning), statusindikator för politiska eller sportevenemang, humörljus
Återanvänd optisk enhet med RPi: 6 steg (med bilder)
Återanvänd optisk enhet med RPi: Detta projekt kom till efter att min älskade bärbara optiska enhet började uppträda illa. CD -facket skulle upprepade gånger dyka upp när jag gav min bärbara dator ett tryck eller flyttade det på något sätt. Min diagnos av problemet var att det måste ha funnits en del