Inhaltsverzeichnis:
Video: IoT RPi LED Message Board - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
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
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
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:
DIY Circuit Activity Board mit Büroklammern - HERSTELLER - STEM: 3 Schritte (mit Bildern)
DIY Circuit Activity Board mit Büroklammern | HERSTELLER | STEM: Mit diesem Projekt können Sie den Weg des elektrischen Stroms ändern, um durch verschiedene Sensoren zu laufen. Mit diesem Design können Sie zwischen dem Aufleuchten einer blauen LED oder dem Aktivieren eines Summers wechseln. Sie haben auch die Wahl, einen lichtabhängigen Widerstand mit
So erstellen Sie einen RPi-Feueralarm: 4 Schritte
So erstellen Sie einen RPi-Feueralarm: Hallo !! In diesem anweisbaren werde ich Ihnen beibringen, wie man einen Feueralarm mit einem Raspberry Pi macht. Dieser Feueralarm erkennt und benachrichtigt Sie mit Warnmeldungen bei einem Brand und ruft die Polizei per Knopfdruck
So erstellen Sie eine Message Board-Website mit PHP und MYSQL – wikiHow
So erstellen Sie eine Message Board-Website mit PHP und MYSQL: Diese Anleitung zeigt Ihnen, wie Sie eine Message Board-Website mit PHP, MySQL, HTML und CSS erstellen. Wenn Sie neu in der Webentwicklung sind, machen Sie sich keine Sorgen, es gibt detaillierte Erklärungen und Analogien, damit Sie die Konzepte besser verstehen. Matte
So erstellen Sie einen linienfolgenden Roboter mit Rpi 3: 8 Schritte
So bauen Sie einen linienfolgenden Roboter mit Rpi 3: In diesem Tutorial erfahren Sie, wie Sie einen linienfolgenden Roboter-Buggy bauen, damit er mit Leichtigkeit über eine Strecke sausen kann
RPI Minetest Server 4.15: 18 Schritte
RPI Minetest Server 4.15: Dies ist das allererste Tutorial im vereinfachten 1-2-3-Schritt-Stil zum Starten eines Minetest-Servers 4.15 auf dem Raspberry Pi!INFO: Minetest ist ein von Minecraft inspiriertes Open-Source-Spiel, das größtenteils auf Mods basiert. (Mods=Plugins für euch MC-Fans!) Ich weiß von