Innehållsförteckning:

IoT RPi LED -meddelandekort: 3 steg (med bilder)
IoT RPi LED -meddelandekort: 3 steg (med bilder)

Video: IoT RPi LED -meddelandekort: 3 steg (med bilder)

Video: IoT RPi LED -meddelandekort: 3 steg (med bilder)
Video: How do you install LED lights on stairs - Smart Bright LEDs 2024, December
Anonim
Image
Image
Hardware Setup
Hardware Setup

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

Hardware Setup
Hardware Setup
Hardware Setup
Hardware Setup

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

Programvaruinstallation
Programvaruinstallation
Programvaruinstallation
Programvaruinstallation
Programvaruinstallation
Programvaruinstallation
Programvaruinstallation
Programvaruinstallation

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: