Innholdsfortegnelse:
Video: IoT RPi LED -meldingstavle: 3 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
I denne instruksen har jeg laget et wifi-tilkoblet LED-meldingstavle ved hjelp av en Raspberry Pi (RPi). Brukere vil koble seg til Raspberry Pi sin webserver ved å bruke nettleserne sine for å sende inn korte meldinger som vises på 8x8 LED -skjermen. Siden grensesnitt 8x8 LED-matrise med MAX7219-driveren i Python er godt dokumentert av andre på Internett, fokuserer dette prosjektet på å bygge et nettservergrensesnitt og bruke ZeroMQ Messaging for å administrere innkommende meldinger.
Oppdatering: Her er et oppfølgingsprosjekt IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board
(Jeg er en klubbtilrettelegger for Girls Who Code Club, og jeg kom med dette enkle prosjektet for å lære studenter om webgrensesnittdesign og meldinger.)
Trinn 1: Maskinvareoppsett
Dette prosjektet krever følgende maskinvare:
- Bringebær Pi
- USB -strømkilde som Anker med en kort USB til MicroUSB -kabel
- MAX7219 prikkmatrisemodul med båndkabel (Aliexpress for mindre enn $ 2)
- Vedlegg (jeg laget en av en pappeske og spraymalte i svart)
Maskinvareoppsett er den enkle delen. Bare koble en 5 -tråds båndkabel fra LED -matrisen til 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
Jeg brukte en dobbeltsidig skumbånd for å feste LED-enheten til RPi-saken. Deretter lagde jeg et kabinett av en pappeske for både RPi og batteri.
Trinn 2: Programvareoppsett
RPi bør ha følgende programvare:
- Python 3
- Apache 2 nettserver
- Max7219 driver for Python
- ZeroMQ -meldinger
Python 3
RPi bør ha Python 3 allerede forhåndsinstallert. Selv om koden min er skrevet for Python 3, bør Python 2 fungere med få mindre endringer.
Apache 2
Sett opp Apache og aktiver Python CGI -skripting. Nedenfor er noen flotte ressurser for å sette opp Apache på RPi, så jeg vil ikke gjenta her. Bare følg opplæringen nedenfor for å konfigurere Apache og CGI. Sørg for at *.py -skript kan kjøres fra en nettleser.
- https://raspberrywebserver.com/cgiscripting/
- https://www.knight-of-pi.org/apache-web-server-with-cgi-for-python/
Max7291 driver
Installer Max7219 -driveren ved å følge den siste installasjonsveiledningen:
https://max7219.readthedocs.io/en/latest/install.html
Etter installasjonen, kjør eksempelkoden, matrix_test.py, per installasjonsguide for å vise "Hello World" på LED Matrix. Dette må fungere før du går til neste trinn.
ZeroMQ -meldinger
Hvorfor trenger vi meldinger? Prøv å kjøre eksempelkoden ovenfor, matrix_test.py, på to terminalskjermer samtidig. Systemet vil tillate flere koder å kjøre samtidig, men du vil se meldinger som overlapper hverandre, noe som ikke er ønskelig. I et enkelt brukermiljø er dette kanskje ikke et problem siden du kan sørge for at bare ett program kan kjøres om gangen. I et flerbrukermiljø, for eksempel web, må systemet opprette en FIFO-kø (First-In-First-Out) for å sikre at bare én person kan utføre koden mens andre venter. Selv om det kan være andre løsninger for å oppnå dette, bestemte jeg meg for å bruke ZeroMQ til å administrere FIFO -køen. ZeroMQ -serverkoden inneholder det faktiske funksjonsanropet for å vise en melding på LED -matrisen en om gangen mens webserveren fungerer som en ZeroMQ -klient for å spørre og sende meldinger til ZeroMQ -serveren. På denne måten, mens flere brukere kan sende meldinger via en webside samtidig, vil ZeroMQ -serveren bare vise en melding om gangen.
For dette prosjektet vil vi bare installere Python -pakken pyzmq og ikke hele ZeroMQ -pakken.
løpe:
sudo pip3 installer pyzmq
Les ZeroMQ -guiden på https://zguide.zeromq.org og prøv hello world -serveren og klienteksemplet i Python. Kopier Python -eksempelkoden for både server og klient til RPi, og kontroller at de fungerer før du går til neste trinn.
Trinn 3: Nettsideoppsett
På nettsiden brukte jeg bootstrap css/js -rammeverket for å få siden til å se pen ut. Dette er helt valgfritt.
Last ned den vedlagte led_msg.tar.gz-filen til Apache-roten eller underkatalogen. For å fjerne gzip'd -tarfilen, kjør:
tar -xzvf led_msg.tar.gz
Dette oppretter følgende filer:
msg.py (hovedprogram)
maler/interstitial.html (html -mal) maler/send_msg.html (html -mal) static/img/led_150x150-j.webp
Du kan eventuelt installere bootstrap css/js -rammeverket under den statiske katalogen.
Skriv inn nettadressen for msg.py nettleseren din og kontroller at nettsiden kommer opp. Ikke send melding enda !!!
Før meldinger kan sendes inn, må ZeroMQ -serveren startes for å godta meldinger fra nettside -klienten og vise dem på LED -matrisen. Ingenting vil vises på skjermen hvis ZeroMQ -serveren ikke kjører.
Last ned den vedlagte max7219_server.py -koden til hjemmekatalogen din, ikke i Apache root dir hvor den kan kjøres av webbrukere. Kjør den som root:
sudo python max7219_server.py
Nå er ZeroMQ -serveren klar til å motta meldinger fra nettsiden. Skriv inn og send inn en enkel melding fra nettsiden. Hvis alt er konfigurert riktig, ser du meldingen på ZeroMQ -serverskjermen så vel som på LED Matrix.
Hvis du vil stenge serveren, gjør du bare Control-C for å gå ut av serverskjermen.
Det er det. Håper du vil like dette prosjektet like mye som jeg gjorde.
En forbedring du kan gjøre er å gjøre ZeroMQ -kommunikasjonen mellom serveren og klientene asynkrone slik at websiden ikke venter mens andre meldinger vises. Du kan også koble til ekstra LED -matrise i kaskademodus. Jeg overlater det til deg.
Anbefalt:
Slik gjør du det: Installere Raspberry PI 4 Headless (VNC) med Rpi-imager og bilder: 7 trinn (med bilder)
Howto: Installere Raspberry PI 4 Headless (VNC) Med Rpi-imager og bilder: Jeg planlegger å bruke denne Rapsberry PI i en haug med morsomme prosjekter tilbake i bloggen min. Sjekk det gjerne ut. Jeg ønsket å begynne å bruke Raspberry PI igjen, men jeg hadde ikke tastatur eller mus på min nye plassering. Det var en stund siden jeg konfigurerte en bringebær
Digitalt RPi LED -termometer: 6 trinn (med bilder)
Digitalt RPi LED -termometer: Raspbian OSLær hvordan jeg lagde dette digitale LED -termometeret, med en Raspberry Pi Zero W, LED -stripe, en OLED -skjerm og en tilpasset PCB. Den sykluser automatisk gjennom en liste over byer og viser temperaturen på OLED displayet og LED -lampene. Men
RPi IoT Smart Light Using Firebase: 4 trinn (med bilder)
RPi IoT Smart Light Using Firebase: Denne guiden viser deg hvordan du lager og konfigurerer en app for å styre Raspberry Pi via Firebase (En online database). Og så 3D -utskrift av etui til Pi Zero W, en Powerboost 1000C, et batteri og en Blinkt! .For å være lettest å følge med på, anbefaler jeg
RPi-Zero IoT hendelsesindikator / fargelampe: 6 trinn (med bilder)
RPi-Zero IoT hendelsesindikator / fargelampe: Ingen ekstra mikrokontroller, og amp; Ingen HAT-tilleggsmodul kreves. RPi-Zero gjør alt. Bedre ennå, bruk en RPi-Zero W! Prøvebruk: Webtjenestestatusindikator (f.eks. DowJonesIndex-sporing), Statusindikator for politisk eller sportsarrangement, humørlys
Repurpose optisk stasjon med RPi: 6 trinn (med bilder)
Gjenbruk optisk stasjon med RPi: Dette prosjektet ble til etter at min elskede bærbare optiske stasjon begynte å oppføre seg feil. CD -skuffen ville dukke opp gjentatte ganger når jeg ga den bærbare datamaskinen et trykk eller flyttet den på noen måte. Min diagnose av problemet var at det må ha vært noen