Ziel
Eine LED-Matrix-Anzeige, die mit dem Browser per WLAN angesteuert werden kann. Es soll Laufschrift angezeigt werden. Das ganze soll möglich preisgünstig sein und man sollte es ohne Löten aufbauen können. Möglichst einfache Konfiguration wäre auch noch prima. Und das Gerät sollte dem Benutzer auch noch die URL zeigen, unter der es im WLAN erreichbar ist. Also so was:Was passiert im Video?
Die ESP8266-LED-Matrix
- wird eingeschaltet
- meldet sich im WLAN an
- zeigt die eigene IP-Adresse
- wird mit einem Text beschickt
- der Text scrollt auf der Matrix
Was brauchen wir, was kostet das?
- ESP-12-WLAN-Modul (ca 3,50€ mit Breakout-Board)
- FTDI-232-Interface (temporär zum Programmieren) (ca 2€)
- 8x8-LED-Matrix mit MAX7219-Chip (ab etwa 2,50€/Stück)
- Stromversorgung 3,3 Volt (ab 2€)
- Breadboard + Kabel (ab 3,00€)
Schaltung
Fritzing-Dateien mit der Schaltung gibt es auf GitHub: https://github.com/hermann-kurz/esp8266WifiMatrix/tree/master/fritzing
ESP-12-WiFi-Modul
Für das WiFi-Modul wurde das ESP-12-Modul (basierend auf dem ESP8266-Chip) genommen. Dieses Modul ist FCC-zugelassen also legal verwendbar, was auf andere Module mit dem ESP8266-Chip nicht zutrifft.Ein Problem ist, dass die Pins im 2mm-Raster sind, das Breadboard aber ein 2,54mm-Raster hat. Deshalb ist es sinnvoll, gleich ein ESP-12-Modul auf einem Breakout-Board zu kaufen, das die Pins im 2,54mm-Raster bereitstellt - sonst muss man selbst Drähte anlöten, um es im Breadboard zu betreiben. Diese Module sind extrem preiswert (unter 3€) auf eBay erhältlich!
Arduino-Plattform auf ESP-12-Modul
Das Tolle am ESP-12-Modul ist, dass es sich über die Arduino-IDE programmieren lässt! Dazu wird eine angepasste IDE benutzt, die angepasste Libraries an Bord hat. Die Installation ist hier beschrieben. Damit hat man einen WiFi-fähigen Arduino für nur 3€. Einfach unglaublich..MAX7219-Module
Für die Ansteuerung der 8x8-LED-Matrizen, werden MAX7219-Chips verwendet. Die sind eigentlich für 7-Segment-Anzeigen gedacht, aber jemand hat dafür eine Arduino-Libary zur Ansteuerung von 8x8-LED-Matrizen geschrieben, die wir nutzen. Fertige Module die eine LED-Matrix und das MAX7219-Ansteuer-IC enthalten gibt es ab etwa 2,50€ auf eBay.Sinnvoll ist es, ferug aufgebaute Module zu kaufen, da bei Bausätzen öfter mal Bauteile fehlen, oder falsch sind.
Die Daten werden zu den MAX7219-Modulen seriell übertragen, sie brauchen nur drei Signale (CS, CLK und DIN) und können kaskadiert, also hintereinander geschaltet werden.
Die drei Anschlüsse werden dann mit dem ESP8266 so verbunden:
ESP-12 (Name) | ESP-12 (Pin) | MAX7219-Matrix |
---|---|---|
GPIO_2 | 11 | CS |
GPIO_14 | 5 | CLK |
GPIO_13 | 7 | DIN |
Die Anzahl der benutzten Module wird dabei im Quellcode angepasst. Ich habe mal fünf Module hibtereinandergeschaltet, das ergibt dann eine 40x8-Matrix.
FTDI-Adapter
Um das ESP-12-Modul zu programmieren, braucht man noch einen USB/Seriell-Adapter mit 3,3V-Pegel. Am besten sucht man nach einem sogenannten FTDI232-Adapter. Es gibt allerdings auch sehr viele Clones, die gleich bezeichnet sind, aber unter Windows andere Treiber brauchen. Unter Linux funktionieren die Clones normalerweise out-of-the-box.ESP-12 (Name) | ESP-12 (Pin) | FTDI232-Adapter |
---|---|---|
TXD | 16 | RXI |
RXD | 15 | TXO |
Wichtig ist noch, dass GND des Adapters mit GND des ESP-12-Moduls verbunden wird.
Programmiermodus
Zum Programmieren müssen einige Pins des ESP-12-Moduls auf definierte Pegel gelegt werden:ESP-12 (Name) | ESP-12 (Pin) | Pegel |
---|---|---|
CH_PD | 3 | 3,3V |
VCC | 8 | 3,3V |
GPIO_0 | 12 | GND |
GPIO_15 | 10 | GND |
GPIO0 (Pin12 des ESP-12) auf Masse (GND) gelegt werden. Nach dem Programmieren muss man das Kabel dann entfernen.
Schaltung/Aufbau auf Breadboard
Insgesamt ergibt sich damit folgende Schaltung, die man mit einem Breadboard zusammenstecken kann.
Fritzing
Die Schaltung ist als Fritzing-File auf GitHub verfügbar:
Software
Für die einzelnen Komponenten gibt es Arduino-Libraries. Die mussten teilweise ein bischen angepasst werden, damit sie verwendet werden konnten. Alle Libraries und das Hauptprogramm habe ich auf GitHub unter einer Open-Source-Lizenz verfügbar gemacht.
MAX7219-Matrix-Library
Wichtigster Bestandteil ist die Library MAX7219-Library von "Squix", die mit einigen Patches aus dessen Blog versehen wurde. Sie ist ebenfalls auf GitHub erhätlich: https://github.com/hermann-kurz/MAX7219LedMatrix
WiFi & Webserver
Für das ESP-8266-Modul ist eine WiFi-Library in der Arduino-Library enthalten, die direkt verwendet wird. Das Vorgehen ist so, dass sich das Modul nach dem Einschalten in das WLAN-Netz verbindet. Hierzu sind SSID und Passwort ins Programm einkompiliert.Nachdem das ESP-Modul im WLAN-Netz ist, zeigt es seine URL mit IP-Adresse auf der Matrix an. Verbindet sich nun jemand mit dieser URL, sieht er eine Seite, wo er Text eingeben kann. Nach Abschicken wird dann der Text angezeigt, bis ein neuer eingegeben wird.
Eine Fallstrick ist noch der Zeichensatz: im Matrix-Modul ist ein Latin1-Font enthalten, über den Browser kommen aber UTF-8-codierte Zeichen rein, die nach Latin1 konvertiert werden.
Vorgehen
Schaltungsaufbau
Zuerst baut man die Schaltung auf. Ich habe dafür aus ein paar Holzleisten ein kleines Gehäuse gebaut, in dem die Display nach vorne bündig reinpassen.
Hintenrum sieht das nicht sehr schön aus, funktioniert aber prima. Man sieht links die Stromversorgung, in der Mitte das Breadboard mit dem ESP-12 und im Hintergrund die fünf 8x8-Matrizen, die miteinander verbunden sind.
Spannung beachten
Man darf das ESP-12-Modul auf keinen Fall mit 5 Volt betreiben, es verträgt nur 3,3 Volt. Beim Spannungsregler kann man das einstellen. Ich betreibe auch die LED-Matrizen mit 3,3 Volt. Die würden auch 5 Volt vertragen, das habe ich aber nicht getestet.
Software besorgen
Als nächstes besorgt man sich die Arduino-IDE für den SP8266 https://github.com/esp8266/Arduino uns installiert sie. Dann muss ggf noch ein Treiber für den FTD232-Adapter installiert werden.
Software kompilieren, SSID/Passwort anpassen
Dann holt man sich den Quellcode von https://github.com/hermann-kurz/esp8266WifiMatrix und installiert in der IDE die Library für die MAX7219-Module: https://github.com/hermann-kurz/MAX7219LedMatrix. Um ins eigene WLAN zu kommen muss im Quellcode SSI und Passwort angegeben werden.
Programmieren (Programmiermodus)
Nun kann man das ESP-12-Modul in den Programmiermodus schalten, indem man GPIO-0 auf Masse legt, das Modul programmieren programmieren, und anschließend den Programmiermodus wieder rausnehmen.
Inbetriebnahme
Das Gerät ist damit fertig. Nach Anlegen der Versorgungsspannung startet die Matrix und bucht sich ins WLAN ein. Anchließend wird die eigene URL angezeigt. Im Browser kann man nun einen Text eingeben, der nach dem Abschicken durchscrollt.
Verbesserungsmöglichkeiten
Setup
Momentan müssen SSID und Passwort in den Arduino-Sketch reinkompiliert werden. Da wäre eine eigene Setup-Routine sehr sinnvoll, mit dem man die WiFi-Matrix über einen Browser konfigurieren könnte.Font
Der verwendete Font ist etwas "fett". Den könnte man etwas schmaler machen, dann würden auch mehr Zeichen auf einmal auf die Matrix passen.Links
- Projekt auf GitHub: https://github.com/hermann-kurz/esp8266WifiMatrix
- Download Arduino-IDE für ESP8266: https://github.com/esp8266/Arduino
- Arduino-IDE auf ESP8266: http://www.µc.net/2015/03/esp8266-mit-arduino-ide-direkt.html
- LED-Matrix-Library für MAX7219: https://github.com/hermann-kurz/MAX7219LedMatrix
- Schaltung als Fritzing-Dateien: https://github.com/hermann-kurz/esp8266WifiMatrix/tree/master/fritzing