Schon vor vielen Monaten sorgte die Vorstellung eines neuen Mikroprozessors für einen Aufschrei in der Maker-Szene. Eine 32-Bit-Architektur mit wenigstens 80 MHz und rund 50 kB RAM sind für einen Prozessor, der kaum 5 x 5 mm groß ist, eine beachtliche Leistung. Was den ESP jedoch so besonders macht, ist das integrierte WLAN-Protokoll. Im 2.4 GHz-Band werden WEP- und WPA-Verschlüsselung als Client, Access Point oder sogar in der Kombination unterstützt. Um dem Paket die Krone aufzusetzen, kostet ein ESP-Modul, auf dem der Prozessor, ein Flash-Speicher und notwendige Komponenten montiert sind, kaum mehr als drei Euro, wenn es direkt in China bestellt wird. Klingt doch fantastisch, oder?
Mittlerweile hat sich eine ganze Palette an ESP-Modulen etabliert, die den ESP8266 montiert haben. Sie unterscheiden sich dabei hauptsächlich in der Art der Antenne – Leiterbahnen, Keramik oder Extern – sowie in der Anzahl der herausgeführten Pins des Prozessors. Ich habe mir vorgenommen, als ersten Test eine Fado-Lampe von Ikea um WLAN-gesteuertes Licht zu erweitern. Zwischenzeitlich habe ich mir ein ESP-01 und ein ESP-03 beschafft. Das erste Modul bestitzt acht Pins mit 0.1″ (2.54mm) Abstand. Dadurch ist es sehr angenehm im Einsatz auf Entwicklungs-Boards. Von den acht Pins dinen zwei Pins als GPIO, wobei sie jedochauch für spezielle Funktionen verwendet werden. Liegt hier beim Hochfahren ein falscher Pegel an, startet das Modul nicht oder im falschen Modus. Sie sind also nur bedingt brauchbar. Da ich sowohl WS2811-Licht als auch ein MOSFET ansteuern möchte, benötige ich wenigstens zwei GPIOs. Leider klappte es für mich nicht so recht, die beiden Pins dauerhaft im beschriebenen Szenario zu betreiben. Zum Glück verbleibt mir noch das ESP-03…
Der Kampf beginnt schon mit der Montage. Ich besitze weder Werkzeug zum Ätzen noch eine Platinen-Fräse. Mir stehen nur ein Lötkolben und Lochraster-Platinen mit einem Rastermaß von 0.1″ zur Verfügung. Das ESP-03 hat jedoch einen Pin-Abstand von 2mm. Dank besonders dünnen Lötzinns und einer Lupe war es mir möglich, das Modul auf dem Lochraster zu befestigen. Das Layout war dabei völlig ungeplant und entstand nach und nach. Hieraus resultiert sicher die Ähnlichkeit zu Spaghetti. Als Spannungswandler von 12 Volt auf 3.3 Volt verwende ich ein Modul, das ich günstig auf Ebay erstanden habe. Für kaum mehr als einen Euro bietet es mit maximal 3 Ampere Strom reichlich Reserven und ist variabel in der Ausgangsspannung. Die Kunst ist, mit der winzigen Schraube auf die korrekte Spannung zu kommen. Mit Messgerät und Schraubenzieher einige Umdrehungen, dann hatte ich irgendwann die 3.3 V auf dem Display. CH_PD habe ich per 2.2 kOhm mit VCC verbunden. GND hängt an GND, VCC an VCC, GPIO0 an VCC für den normalen Betrieb sowie GPIO15 an GND. Über USB noch ein FTDI an das Modul, Stecker eingesteckt und… nichts. Das Modul entwickelte spürbar Temperatur, aber eine serielle Verbindung war mir nicht möglich.
Was nun? Leider scheint hier bei den ESP, vor allem beim 03er, keine klare Antwort zu geben. Ich vermag nicht genau zu sagen, was am Ende dazu führte, dass das Modul endlich lief. Ich habe einige Informationen gefunden, die dazu beitrugen, ich führe daher alle unternommenen Anstreungen auf. Die nebenstehende Abbildung zeigt die Bezeichungen der verschiedenen Pins des Moduls. In den Tiefen des Internets fand ich heraus, dass GPIO16 der Reset-PIN ist und für einen normalen Betrieb dauerhaft auf HIGH stehen muss. Nur für den Tiefschlaf wird dieser Pin auf LOW gebracht. GPIO2 muss für einen normalen Betrieb ebenfalls auf HIGH stehen. Manche Quellen berichten darüber hinaus, dass CH_PD ohne Widerstand mit VCC verbunden sein muss. Nachdem ich die genannten Veränderungen am Layout durchgeführt hatte, war das Modul über die serielle Schnittstelle erreichbar. Zeit für die nächste Herausforderung – NodeMCU auf den ESP-Prozessor flashen.
Bei NodeMCU handelt es sich um ein alternatives „Betriebssystem“ für den ESP, das die Ausführung von Quellcode in der Sprache Lua ermöglicht. Die Verwendung einer Skriptsprache ist dabei ein zweischneidiges Schwert. Die vereinfachte Programmierung, die bei NodeMCU darüber hinaus durch eine umfangreiche API ergänzt wird, geht wegen der Interpretation eines Skriptes auf Kosten der Leistung. Das Auftreten einer Exception – ungültiger Quellcode, falscher Wert, etc. – sorgt für einen Reset des Systems. Das Flashen war mir anfangs nicht möglich. Nach rund sieben Prozent brach das Flashen mit der Fehlermeldung „invalid head of packet“ ab. Das Reduzieren der Baud-Rate auf 115.200 sowie des Flash-Speichers auf 512 kBit ermöglichte mir das Aufspielen von NodeMCU. Nach einem Reset begrüßte mich das Modul mit der Versionsnummer des geflashten Systems. Die Software-Tests konnten beginnen.
In ersten Tests war mir das Schalten eines MOSFETs, das ich ebenfalls montiert hatte, möglich. Aus meinem WS2811-LED-Streifen konnte ich jedoch keine Photonen entlocken. An einem anderen Mikro-Prozessor war es mir jedoch möglich, Farben zu erzeugen. Ein Defekt liegt also nicht vor. Gerade, als ich einen Transistor verwenden wollte, um eine höhere Spannung an den Eingang des WS2811 zu bringen, muss ich wohl irgendeinen Kontakt ungünstig überbrückt haben. Seitdem wird der Prozessor extrem heiß und gibt kein Signal mehr von sich. Das war es dann leider mit diesem Chip. Ich habe mir nun ein paar ESP-12 bestellt. Diese haben zwar nur 2mm Pin-Abstand, kommen jedoch mit einer Adapterplatine auf 0.1″. Damit kann ich hoffentlich einfacher arbeiten – vor allem dann, wenn mir wieder etwas kaputt geht :-).