In diesem Artikel zeige ich Dir, wie Du dir ein LED-Matrix Display für Dein Smart-Home bauen kannst.
Inhaltsverzeichnis
1. Einführung
In diesem Artikel wollen wir ein ESP8266 LED Matrixdisplay aufbauen und programmieren, welches wir über ioBroker steuern können. Als Display verwende ich mehrere Max7219 Displays mit 8×8 Punkten. Um eine Zeichenkette übersichtlich und damit gut lesbar darzustellen, sollen mindestens 12 Display-Module hintereinander geschalten werden. Am Display soll der Text, die Helligkeit und die Geschwindigkeit des Lauftextes per MQTT-Nachricht gesteuert werden können. Im nächsten Kapitel liste ich zunächst die verwendeten Materialen auf.
2. Verwendete Materialen
Für die Entwicklung des Displays habe ich folgende Materialen verwendet:
3. Aufbau der Schaltung
Der Aufbau der Schaltung ist relativ einfach. Für die Stromversorgung werden die 5V des ESP8266 an das Display angeschlossen.
Die restlichen Pins werden wie folgt angeschlossen:
Matrix | ESP8266 |
VCC | 5V (VIN) |
GND | GND |
DIN | D7 |
CS | D3 |
CLK | D5 |
Den Grundaufbau habe ich auf einem Breadboard aufgebaut. In einem späteren Schritt (im Artikel nicht enthalten), wird für das Display noch ein passendes Gehäuse gebaut. Die einzelnen Displays lassen sich relativ einfach in Reihe schalten. Wichtig ist dabei drauf zu achten dass immer Out -> in geschalten wird.
4. Programmierung
Für die Programmierung des Matrix-Displays müssen wir im ersten Schritt die benötigten Bibliotheken für GFX, das Max7219-Display sowie für die MQTT-Anbindung installieren.
Bibliotheken im Bibliotheksverwalter:
- Adafruit_GFX
- PubSubClient
Hinweise zur Installation von Bibliotheken
Installation von Bibliotheken über den Bibliotheksverwalter
Bibliotheken über Github
Hinweise zur Installation von Bibliotheken
Manuelle Installation von Bibliotheken ohne den Bibliothekenverwalter
Im nächsten Schritt erstellen wir uns in Arduino einen neuen Sketch und kopieren den folgenden Code in den Sketch:
Im folgenden Diagramm wird der Ablauf grob erklärt:
Das Script beginnt mit den Include-Anweisungen für die eingesetzten Bibliotheken. Nach den Include-Anweisungen folgt der Konfigurationsblock, mit dem die Pin- und Displaykonfiguration gesetzt wird. In meinem Beispiel werden 12 Module nebeneinander (horizontal) eingesetzt. Zudem werden hier die WiFi-Einstellungen sowie die IP-Adresse des MQTT-Brokers (IP von ioBroker) definiert. Abschließend werden noch Standardwerte für die Geschwindigkeit, Helligkeit und Schriftgröße des Displays gesetzt.
Mit der Methode „setup_wifi“ wird eine WiFi-Verbindung aufgebaut. Der Fortschritt des Verbindungsaufbaus wird über die serielle Schnittstelle ausgegeben. Bei einem erfolgreichen Verbindungsaufbau wird zudem die IP-Adresse des Displays über die serielle Schnittstelle ausgegeben.
Die Methode „setup“ initialisiert das Display mit den Standardwerten und richtet die Displays entsprechend aus. Dazu die Methode setRotation des matrix-Objekts aufgerufen. Nach der Initialisiertung des Displays wird die WiFi-Verbindung hergestellt und die Verbindung zum MQTT-Broker aufgebaut. Zudem wird die Callback-Methode gesetzt.
Mit der Methode „MQTTCallback“ wird auf eine Veränderung der abonnierten MQTT-Datenpunkte reagiert. Dazu wird der Topic sowie der Inhalt der Nachricht analysiert und entsprechend die Konfiguration des Displays verändert. Folgende Datenpunkte werden vom Broker abonniert:
- MatrixDisplay2/text
- MatrixDisplay2/intensity
- MatrixDisplay2/scrollwait
Die Methode „printMatrix“ erstellt die Laufschrift mit der hinterlegten Konfiguration.
Mit der „reconnect“ Methode wird in der loop-Methode überprüft ob eine WiFi-Verbindung vorhanden ist. Zudem wird die Verbindung zum MQTT-Broker hergestellt.
5. Integration in ioBroker
Die Integration in ioBroker ist wie immer extrem einfach. Im Bereich Objekte unter dem Ordner mqtt.0 habe ich einen weiteren Ordner „MatrixDisplay2“ angelegt, in dem nun die einzelnen Datenpunkte zur Steuerung des Displays gespeichert werden. Ich habe die Datenpunkte mit dem Tool „MQTTBox“ vorab publiziert und angelegt.
Nun lässt sich die Matrix über die oben gezeigten Datenpunkte steuern und konfigurieren.
Ich hoffe Dir gefällt der Artikel ? Ich freue mich über Deinen Kommentar!