Innholdsfortegnelse:

IoT RPi LED -meldingstavle: 3 trinn (med bilder)
IoT RPi LED -meldingstavle: 3 trinn (med bilder)

Video: IoT RPi LED -meldingstavle: 3 trinn (med bilder)

Video: IoT RPi LED -meldingstavle: 3 trinn (med bilder)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Image
Image
Maskinvareoppsett
Maskinvareoppsett

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

Maskinvareoppsett
Maskinvareoppsett
Maskinvareoppsett
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

Programvareoppsett
Programvareoppsett
Programvareoppsett
Programvareoppsett
Programvareoppsett
Programvareoppsett
Programvareoppsett
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: