Inhaltsverzeichnis:

IoT RPi LED Message Board - Gunook
IoT RPi LED Message Board - Gunook

Video: IoT RPi LED Message Board - Gunook

Video: IoT RPi LED Message Board - Gunook
Video: Raspberry Pi LED Matrix Display 2024, Juli
Anonim
Image
Image
Hardware-Setup
Hardware-Setup

In diesem Instructable habe ich ein WLAN-verbundenes LED-Messageboard mit einem Raspberry Pi (RPi) gemacht. Benutzer verbinden sich mit ihrem Browser mit dem Webserver des Raspberry Pi, um kurze Nachrichten zu senden, die auf dem 8x8-LED-Display angezeigt werden. Da die Verbindung von 8x8 LED-Matrix mit dem MAX7219-Treiber in Python von anderen im Internet gut dokumentiert ist, konzentriert sich dieses Projekt auf den Aufbau einer Webserver-Schnittstelle und die Verwendung von ZeroMQ Messaging zur Verwaltung eingehender Nachrichten.

Update: Hier ist ein Nachfolgeprojekt IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board

(Ich bin ein Club-Moderator für den Girls Who Code Club und habe dieses einfache Projekt entwickelt, um Schülern das Design und das Messaging von Weboberflächen beizubringen.)

Schritt 1: Hardware-Setup

Hardware-Setup
Hardware-Setup
Hardware-Setup
Hardware-Setup

Dieses Projekt erfordert folgende Hardware:

  • Himbeer-Pi
  • USB-Stromquelle wie Anker mit einem kurzen USB-zu-MicroUSB-Kabel
  • MAX7219 Punktmatrixmodul mit Flachbandkabel (Aliexpress für weniger als 2 USD)
  • Gehäuse (ich habe eines aus einem Karton gemacht und schwarz lackiert)

Hardware-Setup ist der einfache Teil. Verbinden Sie einfach ein 5-adriges Flachbandkabel von der LED-Matrix mit dem RPi pro MAX7219-Bibliotheksdokument.

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

Ich habe ein doppelseitiges Schaumstoffband verwendet, um die LED-Einheit am RPi-Gehäuse zu befestigen. Dann habe ich ein Gehäuse aus einem Karton gemacht, um sowohl RPi als auch Batterie unterzubringen.

Schritt 2: Software-Setup

Software-Setup
Software-Setup
Software-Setup
Software-Setup
Software-Setup
Software-Setup
Software-Setup
Software-Setup

RPi sollte folgende Software haben:

  • Python 3
  • Apache 2 Webserver
  • Max7219-Treiber für Python
  • ZeroMQ-Messaging

Python 3

RPi sollte Python 3 bereits vorinstalliert haben. Während mein Code für Python 3 geschrieben ist, sollte Python 2 mit wenigen kleinen Änderungen funktionieren.

Apache 2

Richten Sie Apache ein und aktivieren Sie die Python-CGI-Skripterstellung. Im Folgenden finden Sie einige großartige Ressourcen zum Einrichten von Apache auf RPi, daher werde ich es hier nicht wiederholen. Folgen Sie einfach den unten stehenden Tutorials, um Apache und CGI einzurichten. Stellen Sie sicher, dass *.py-Skripte in einem Browser ausführbar sind.

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

Max7291-Treiber

Installieren Sie den Max7219-Treiber, indem Sie der neuesten Installationsanleitung folgen:

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

Führen Sie nach der Installation den Beispielcode matrix_test.py pro Installationsanleitung aus, um "Hello World" auf der LED-Matrix anzuzeigen. Dies muss funktionieren, bevor Sie mit dem nächsten Schritt fortfahren.

ZeroMQ-Messaging

Warum brauchen wir Messaging? Versuchen Sie, den obigen Beispielcode, matrix_test.py, auf zwei Terminalbildschirmen gleichzeitig auszuführen. Das System lässt zu, dass mehrere Codes gleichzeitig ausgeführt werden, aber Sie sehen, dass sich Nachrichten überschneiden, was nicht wünschenswert ist. In einer Einzelbenutzerumgebung ist dies möglicherweise kein Problem, da Sie sicherstellen können, dass nur ein Programm gleichzeitig ausgeführt werden kann. In einer Mehrbenutzerumgebung wie dem Web muss das System eine FIFO-Warteschlange (First-In-First-Out) erstellen, um sicherzustellen, dass nur eine Person den Code ausführen kann, während andere warten. Obwohl es andere Lösungen gibt, um dies zu erreichen, habe ich mich entschieden, ZeroMQ zu verwenden, um die FIFO-Warteschlange zu verwalten. Der ZeroMQ-Servercode enthält den eigentlichen Funktionsaufruf, um eine Nachricht nacheinander auf der LED-Matrix anzuzeigen, während der Webserver als ZeroMQ-Client agiert, um Nachrichten abzufragen und an den ZeroMQ-Server zu senden. Auf diese Weise können mehrere Benutzer gleichzeitig Nachrichten über eine Webseite senden, der ZeroMQ-Server zeigt jedoch nur eine Nachricht gleichzeitig an.

Für dieses Projekt installieren wir nur das Python-Paket pyzmq und nicht das gesamte ZeroMQ-Paket.

Lauf:

sudo pip3 installieren pyzmq

Lesen Sie den ZeroMQ-Leitfaden auf https://zguide.zeromq.org und probieren Sie das Server- und Client-Beispiel von the hello world in Python aus. Kopieren Sie den Python-Beispielcode für Server und Client in RPi und stellen Sie sicher, dass sie funktionieren, bevor Sie mit dem nächsten Schritt fortfahren.

Schritt 3: Einrichtung der Webseite

Auf der Webseite habe ich das Bootstrap-CSS/JS-Framework verwendet, um die Seite hübsch aussehen zu lassen. Dies ist völlig optional.

Laden Sie die angehängte Datei led_msg.tar.gz in das Apache-Stamm- oder Unterverzeichnis herunter. Um die gzip'd tar-Datei zu entpacken, führen Sie Folgendes aus:

tar -xzvf led_msg.tar.gz

Dadurch werden folgende Dateien erstellt:

msg.py (Hauptprogramm)

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

Installieren Sie optional das Bootstrap-CSS/JS-Framework unter dem statischen Verzeichnis.

Geben Sie die URL für msg.py in Ihren Browser ein und stellen Sie sicher, dass die Webseite angezeigt wird. Senden Sie noch keine Nachricht!!!

Bevor Nachrichten gesendet werden können, muss der ZeroMQ-Server gestartet werden, um Nachrichten vom Webseiten-Client anzunehmen und auf der LED-Matrix anzuzeigen. Auf dem Bildschirm wird nichts angezeigt, wenn der ZeroMQ-Server nicht ausgeführt wird.

Laden Sie den angehängten max7219_server.py-Code in Ihr Home-Verzeichnis herunter, nicht in das Apache-Root-Verzeichnis, wo er von Webbenutzern ausgeführt werden könnte. Führen Sie es als root aus:

sudo python max7219_server.py

Jetzt ist der ZeroMQ-Server bereit, Nachrichten von der Webseite zu empfangen. Geben Sie eine einfache Nachricht von der Webseite ein und senden Sie sie. Wenn alles richtig eingerichtet ist, sehen Sie diese Meldung auf dem ZeroMQ-Serverbildschirm sowie auf der LED-Matrix.

Wenn Sie den Server herunterfahren möchten, führen Sie einfach Control-C aus, um den Serverbildschirm zu verlassen.

Das ist es. Ich hoffe, Sie werden dieses Projekt genauso genießen wie ich.

Eine Verbesserung, die Sie vornehmen könnten, besteht darin, die ZeroMQ-Kommunikation zwischen dem Server und den Clients asynchron zu gestalten, damit die Webseite nicht wartet, während andere Nachrichten angezeigt werden. Außerdem können Sie im Kaskadenmodus eine zusätzliche LED-Matrix anschließen. Das überlasse ich dir.

Empfohlen: