WLED auf einen ESP8622 flashen

Seit einigen Jahren existieren LED-Strips mit einzeln adressierbaren LEDs. Diese können für unterschiedlichste Projekte genutzt werden und z.B. über einen Arduino angesteuert werden. Auch über einen ESP8622 kann eine solche Ansteuerung vorgenommen werden. Wer die nicht von Hand tun möchte und mehr eine Lösung aus einem Guss benötigt, der sollte sich WLED ansehen.

Der ESP8266 auf einem Entwicklungsboard

Bei WLED handelt es sich um ein Open-Source-Projekt, welches speziell für die Steuerung von adressierbaren LED-Streifen entwickelt wurde. Es ermöglicht LED-Streifen einfach zu konfigurieren und zu steuern, um Lichteffekte zu erzeugen. WLED kann auf hierbei auf dem ESP8266 und ESP32 installiert werden.

Um WLED auf einem ESP8266 zu installieren, muss im ersten Schritt das esptool installiert werden (in diesem Fall mittels Homebrew unter macOS):

brew install esptool

Nachdem das entsprechende WLED-Binary heruntergeladen wurde, kann mit dem Flash-Vorgang begonnen werden:

esptool.py write_flash 0x0 ./WLED_0.15.0-b4_ESP8266.bin 
esptool.py v4.7.0
Found 3 serial ports
Serial port /dev/cu.wlan-debug
Connecting......................................
/dev/cu.wlan-debug failed to connect: Failed to connect to Espressif device: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
Serial port /dev/cu.usbserial-21420
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 60:01:94:2d:8b:e7
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Flash will be erased from 0x00000000 to 0x000d9fff...
Compressed 890480 bytes to 641849...
Wrote 890480 bytes (641849 compressed) at 0x00000000 in 62.1 seconds (effective 114.8 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Ist der Flashvorgang erfolgreich vonstattengegangen, so startet die Firmware und öffnet einen WLAN-AP mit dem Namen WLED-AP. Über das initiale Passwort wled1234 kann nun die Konfiguration vorgenommen werden.

Testprogramm für den ESP8266

Beim Setup, zur Nutzung des Mikrocontrollers ESP8266, wird ab und an ein Programm benötigt um die Funktionsweise des Controllers bzw. des Flashvorgangs zu testen. Der einfachste Weg dies zu testen ist es die integrierte LED des Controllers zu nutzen. Dazu wird folgendes Programm benötigt:

void setup() {
  pinMode(2, OUTPUT);
}

void loop() {
  digitalWrite(2, LOW);   
  delay(250);            
  digitalWrite(2, HIGH);  
  delay(250);
}

Das Programm definiert PIN 2 des Controllers als Ausgang und sendet anschließend alle 250 Millisekunden ein Signal an diesem PIN. Dies führt dazu, dass die eingebaute LED des Controllers in kurzen Abständen blinkt und somit das Setup und der Controller getestet werden kann.

Feinstaub selber messen

Feinstaub wirkt in den Medien im Moment wie die ultimative Geißel des Menschheit. Problematisch an Feinstaub ist dass dieser nicht sichtbar ist und entsprechend tief in die Lunge vordringt. Da wäre es natürlich interessant zu erfahren, wie viel Feinstaub sich vor der eigenen Wohnung oder dem eigenen Haus befindet. Um dies zu messen wird ein entsprechendes Messgerät benötigt. Mit dem Bau eines solchen Messgerätes beschäftigt sich die Webseite luftdaten.info.

luftdaten.info

Neben einer Bauanleitung findet sich auf der Webseite weitere Informationen rund um das Projekt, z.B. um auf die API zur Abfrage der Daten zuzugreifen. Betrieben wird das Projekt vom OK Lab Stuttgart, welches zur Code for Germany Initiative gehört. Die Daten des fertigen Sensors können an luftdaten.info übertragen werden oder nur lokal genutzt werden. Quelltexte der verwendeten Soft- und Firmware sind auf GitHub zu finden. Lizenziert ist die Software unter der GPL in Version 3 und somit freie Software.

ESP8266 als Apple I Emulator

Mit dem ESP8266 wurde schon eine Vielzahl von interessanten Projekten entwickelt. Eines der Projekte welches aus der Menge heraussticht, ist ein Emulator für den Apple I. Besonders ist dabei nicht der Emulator als solches, sondern die Art wie er an den Bildschirm angeschlossen wird. Über einen Draht wird das Bild als PAL Signal ausgestrahlt und kann somit von jedem Fernseher empfangen werden.

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=rCqbB1UmW8o

Das System wird fast komplett kabellos betrieben, denn die Eingabe über die Tastatur erfolgt ebenfalls kabellos mittels Telnet. Um Software auf den Rechner zu bringen, ist ein TFTP-Server implementiert.

Das NodeMCU-Board in Version 3, mit einem verbauten ESP8266

Der Emulator emuliert die MOS 6502 CPU in ihrer Originalgeschwindigkeit von einem Megahertz und stellt 20 Kilobyte an RAM zur Verfügung. Das Projekt ist auf GitHub zu finden. Es ist unter der MIT-Lizenz lizenziert und damit freie Software.

Pinbelegung des NodeMCU-Boards

Wenn man einen ESP8266 programmiert, so wird man dessen GPIOs nutzen um externe Dinge wie Sensoren oder ähnliches anzusteuern bzw. auszulesen. Versucht man das gleiche mit einem NodeMCU-Board wird man feststellen das die Pinbelegung des Boards nicht mit der vom ESP8266 übereinstimmt.

Das NodeMCU-Board in Version 3

Wenn man die Pinbelegung des NodeMCU-Boards mit der vom ESP8266 in Reinform vergleicht, ergibt sich folgendes Bild:

NodeMCU D0 zu ESP8266 16
NodeMCU D1 zu ESP8266 5
NodeMCU D2 zu ESP8266 4
NodeMCU D3 zu ESP8266 0
NodeMCU D4 zu ESP8266 2
NodeMCU D5 zu ESP8266 14
NodeMCU D6 zu ESP8266 12
NodeMCU D7 zu ESP8266 13
NodeMCU D8 zu ESP8266 15
NodeMCU D9 zu ESP8266 3
NodeMCU D10 zu ESP8266 1

Bei der Entwicklung über die Arduino IDE braucht man allerdings keine Sorgen machen. Wird hier das NodeMCU-Board genutzt, so findet man definierte Konstanten von D0 bis D10 um die NodeMCU-GPIOs direkt anzusprechen. Einige der Pins haben auf dem Board eine besondere Funktion:

D1 (I2C Bus / SCL (Clock-Signal))
D2 (I2C Bus / SDA (Datenleitung))
D4 (wie LED_BUILTIN, aber invertierte Logik)
D5 (SPI Bus SCK (Clock-Signal))
D6 (PI Bus MISO)
D7 (SPI Bus MOSI)
D8 (SPI Bus SS (CS))
D9 (Serielle Konsole RX)
D10 (Serielle Konsole TX)