Inhoudsopgave:

IoT RPi LED-prikbord - Ajarnpa
IoT RPi LED-prikbord - Ajarnpa

Video: IoT RPi LED-prikbord - Ajarnpa

Video: IoT RPi LED-prikbord - Ajarnpa
Video: How I built my modern Atari XL computer 2024, November
Anonim
Image
Image
apparatuur installatie
apparatuur installatie

In deze Instructable heb ik een wifi-verbonden LED-prikbord gemaakt met behulp van een Raspberry Pi (RPi). Gebruikers zullen via hun browser verbinding maken met de webserver van de Raspberry Pi om korte berichten in te dienen die op het 8x8 LED-display zullen verschijnen. Aangezien het koppelen van 8x8 LED-matrix met de MAX7219-driver in Python goed is gedocumenteerd door anderen op internet, richt dit project zich op het bouwen van een webserverinterface en het gebruik van ZeroMQ Messaging om inkomende berichten te beheren.

Update: Hier is een vervolgproject IoT Decimaal/Hexadecimaal 8x8 LED Matrix Tekentafel

(Ik ben een clubfacilitator voor Girls Who Code Club en ik bedacht dit eenvoudige project om studenten te leren over webinterface-ontwerp en berichtenuitwisseling.)

Stap 1: Hardware-installatie

apparatuur installatie
apparatuur installatie
apparatuur installatie
apparatuur installatie

Dit project vereist de volgende hardware:

  • Raspberry Pi
  • USB-stroombron zoals Anker met een korte USB naar MicroUSB-kabel
  • MAX7219 dot-matrixmodule met een lintkabel (Aliexpress voor minder dan $ 2)
  • Behuizing (ik heb er een gemaakt van een kartonnen doos en in het zwart gespoten)

Hardware-installatie is het makkelijke gedeelte. Sluit eenvoudig een 5-aderige lintkabel van de LED-matrix aan op de RPi per MAX7219 bibliotheekdocument.

LED->RPi========VCC->GPIO Pin #2 (5v)GND->GPIO Pin #6 (GND)DIN->GPIO Pin #19CS ->GPIO Pin #24CLK->GPIO Pin # 23

Ik heb een dubbelzijdige schuimtape gebruikt om de LED-eenheid op de RPi-behuizing te bevestigen. Vervolgens maakte ik een behuizing van een kartonnen doos om zowel de RPi als de batterij te huisvesten.

Stap 2: Software-installatie

Software-installatie
Software-installatie
Software-installatie
Software-installatie
Software-installatie
Software-installatie
Software-installatie
Software-installatie

RPi zou de volgende software moeten hebben:

  • Python 3
  • Apache 2 webserver
  • Max7219-stuurprogramma voor Python
  • ZeroMQ-berichten

Python 3

RPi zou Python 3 al vooraf moeten hebben geïnstalleerd. Hoewel mijn code is geschreven voor Python 3, zou Python 2 moeten werken met een paar kleine wijzigingen.

Apache 2

Stel Apache in en schakel Python CGI-scripting in. Hieronder staan een paar geweldige bronnen voor het instellen van Apache op RPi, dus ik zal het hier niet herhalen. Volg de onderstaande tutorials om Apache en CGI in te stellen. Zorg ervoor dat *.py-scripts uitvoerbaar zijn vanuit een browser.

  • https://raspberrywebserver.com/cgiscripting/
  • https://www.knight-of-pi.org/apache-web-server-with-cgi-for-python/

Max7291-stuurprogramma

Installeer het Max7219-stuurprogramma door de nieuwste installatiehandleiding te volgen:

https://max7219.readthedocs.io/en/latest/install.html

Voer na de installatie de voorbeeldcode matrix_test.py uit per installatiehandleiding om "Hello World" op de LED-matrix weer te geven. Dit moet werken voordat u naar de volgende stap kunt gaan.

ZeroMQ-berichten

Waarom hebben we Berichten nodig? Probeer de bovenstaande voorbeeldcode, matrix_test.py, tegelijkertijd op twee terminalschermen uit te voeren. Het systeem staat toe dat meerdere codes tegelijkertijd worden uitgevoerd, maar u zult zien dat berichten elkaar overlappen, wat niet wenselijk is. In een omgeving met één gebruiker is dit misschien geen probleem, omdat u ervoor kunt zorgen dat er slechts één programma tegelijk kan worden uitgevoerd. In een omgeving met meerdere gebruikers, zoals internet, moet het systeem een FIFO-wachtrij (First-In-First-Out) maken om ervoor te zorgen dat slechts één persoon de code kan uitvoeren terwijl anderen wachten. Hoewel er misschien andere oplossingen zijn om dit te bereiken, heb ik besloten om ZeroMQ te gebruiken om de FIFO-wachtrij te beheren. De ZeroMQ-servercode bevat de eigenlijke functieaanroep om een bericht één voor één op de LED-matrix weer te geven, terwijl de webserver fungeert als een ZeroMQ-client om informatie op te vragen en berichten naar de ZeroMQ-server te verzenden. Op deze manier, terwijl meerdere gebruikers tegelijkertijd berichten via een webpagina kunnen verzenden, zal de ZeroMQ-server slechts één bericht tegelijk weergeven.

Voor dit project installeren we gewoon het Python-pakket pyzmq en niet het hele ZeroMQ-pakket.

loop:

sudo pip3 installeer pyzmq

Lees de ZeroMQ-gids op https://zguide.zeromq.org en probeer het voorbeeld van de hello world server en client in Python. Kopieer de Python-voorbeeldcode voor zowel server als client naar RPi en zorg ervoor dat ze werken voordat u naar de volgende stap gaat.

Stap 3: Webpagina-instelling

Op de webpagina heb ik het bootstrap css/js-framework gebruikt om de pagina er mooi uit te laten zien. Dit is volledig optioneel.

Download het bijgevoegde led_msg.tar.gz-bestand naar de Apache-hoofdmap of -submap. Om het gzip'd tar-bestand uit te pakken, voer je uit:

tar -xzvf led_msg.tar.gz

Dit creëert de volgende bestanden:

msg.py (hoofdprogramma)

templates/interstitial.html (html-sjabloon) templates/send_msg.html (html-sjabloon)static/img/led_150x150-j.webp

Installeer optioneel het bootstrap css/js-framework onder de statische map.

Voer de URL voor msg.py uw browser in en zorg ervoor dat de webpagina verschijnt. Stuur nog geen bericht!!!

Voordat berichten kunnen worden verzonden, moet de ZeroMQ-server worden gestart om berichten van de webpagina-client te accepteren en deze op de LED-matrix weer te geven. Er wordt niets op het scherm weergegeven als de ZeroMQ-server niet actief is.

Download de bijgevoegde max7219_server.py-code naar uw thuismap, niet in de Apache-hoofdmap waar het door internetgebruikers kan worden uitgevoerd. Voer het uit als root:

sudo python max7219_server.py

Nu is de ZeroMQ-server klaar om berichten van de webpagina te ontvangen. Voer een eenvoudig bericht van de webpagina in en verzend het. Als alles correct is ingesteld, ziet u dat bericht zowel op het ZeroMQ-serverscherm als op de LED-matrix.

Als u de server wilt afsluiten, voert u gewoon Control-C uit om het serverscherm te verlaten.

Dat is het. Ik hoop dat je net zoveel van dit project zult genieten als ik.

Een verbetering die u zou kunnen aanbrengen, is om de ZeroMQ-communicatie tussen de server en clients asynchroon te maken, zodat de webpagina niet wacht terwijl andere berichten worden weergegeven. U kunt ook een extra LED-matrix in cascademodus bevestigen. Ik laat dat aan jou over.

Aanbevolen: