Tech-Ecke / Programmieren / ESP-01(s) (8266)

ESP-01(s) - Ergänzung zu Arduino ESP8266


Diese Seite versteht sich als Ergänzung zur Arduino ESP-8266 Seite, welche sich auf den WEMOS D1-Mini bezieht. Programmiertechnisch gibt es praktisch keinen Unterschied, weshalb hier zunächst als Einstieg die Arduino ESP-8266 Seite genutzt werden kann.
Die Hardware ist aufgrund des fehlenden Entwicklerboards jedoch etwas anders und auf diesen wird hier vornehmlich eigegangen. Die Vorteile des "nackten" ESP8266 Moduls ist neben der Baugröße auch ein signifikant niedriger Stromverbrauch im Deep-Sleep-Modus.
Der ESP-01 besitzt nur zwei IO-Pins, welche beide nur digital genutzt werden können. Die Vorteile gegenüber einem ESP-12x Modul sind, einfachere Minimal-Schaltung und günstigerer Preis. Letzteres war wohl in den Anfängen des ESP-12 ein Argument, zumindest wenn man mit den beiden digitalen Ein-/Ausgängen hinkam. Aktuell (Okt. 2024) ist der Preisunterschied jedoch vernachlässigbar und wenn man nicht aufpasst bezahlt man sogar für den ESP-01 noch mehr :-/      

Der ESP-01s ist eine Weiterentwicklung des ESP-01. Signifikantester Unterschied ist der Speicher, welche in der überarbeiteten Version von 1 MB auf 4 MB angewachsen ist. Es gibt noch weitere Unterschiede wenn man ins Detail geht, jedoch sind diese, inklusive dem Speicherzuwachs für simple IoT-Anwendungen nicht wirklich relevant. Wer das Modul im Deep-Sleep-Modus betreiben möchte ist mit dem ESP-01 unter Umständen besser bedient, da hier die notwendige Brücke etwas einfacher anzubringen ist, da der entsprechende Pin des ESP-Chips einfach etwas besser zu erreichen ist.

Programer

Im Gegensatz zum WEMOS D1-Mini, welcher mit einem Programer on Bord daherkommt, benötigt man für das ESP-01 Modul einen separaten Programer. Im Grunde würde hierfür ein Standard "USB to Serial" Adapter reichen, jedoch geht es eleganter mit einem speziellen Programer, auf die das Modul einfach aufgesteckt werden kann. Für den ESP-12 hatte ich mir den Diymore ESP-WROOM-32 zugelegt, welcher auch den ESP-01(s) aufnehmen kann. Es tut aber auch ein einfacher ESP-01 Programer, der oft zusammen mit einem Modul angeboten wird und dabei den Gesamtpreis kaum erhöht. Ich würde darauf achten, das der Programer mit einem Reset-Knopf ausgestattet ist, das ist leider nicht immer der Fall.



Board-Auswahl

Die Board-Bibliothek ist gleich zum WEMOS D1-Mini, jedoch muss hier anstatt "LOLIN(WEMOS) D1 mini (clone)" das "Generic ESP8266 Modul" ausgewählt werden.



Minimal-Schaltplan

Um den ESP-01 außerhalb vom Programer zum Leben zu erwecken wird neben der Spannungsversorgung auch ein High am Pin EN (CH_PD).
Der ESP-01s begnügt sich hingegen schon mit der Spannungsversorgung, da EN bereits auf der Modulplatine hochgezogen wird.

ESP-01

 

ESP-01s
 

Der Kondensator (100 nF) hilft gegen HF Einstreuungen, kann aber bei Batteriebetrieb mit sehr kurzen Leitungen wohl auch wegfallen. Ein größer dimensionierter Kondensator im μF-Bereich könnte auch als Puffer dienen, wenn die Batterie zu schwächeln beginnt. Im Wifi-Betrieb kommt es zu kurzen Spitzen mit mehreren 100 mA.



Ein- und Ausgänge

Dem ESP-01 stehen zunächst zwei Ein/Ausgänge zur Verfügung GPIO0 und GPIO2. Darüber hinaus lassen sich jedoch auch die beiden Pins der seriellen Schnittstelle RX und TX als IO-Pins definieren, so dass insgesamt 4 IO-Pins nutzbar sind. Dann ist allerdings während der Laufzeit keine Kommunikation über die serielle Schnittstelle möglich, logischer Weise auch nicht zum Serial-Monitor, was das Debugging ungemein erschwert.

Um RX als IO-Pin nutzen zu können muss folgendes im Setup-Bereich stehen: pinMode(3, FUNCTION_3); Dadurch ist er als digitaler Eingang nutzbar und durch Ergänzen von pinMode(3, OUTPUT); auch als Ausgang. Gleiches gilt für den TX, jedoch ist hier Pin-Nr. 2 anstatt 3 einzusetzen.
Alle GPIO's sind standartmäßig Eingang definiert und können per pinMode(x, OUTPUT); als Ausgang festgelegt werden.
Geschaltet werden die Ausgänge mit digitalWrite(x, HIGH); bzw. digitalWrite(x, LOW); wobei "x" durch die entsprechenden IO-Nummer zu ersetzen ist. 

 


Boot-Probleme wenn GPIO0 auf Low

Sollte das ESP-Modul nicht booten bzw. beim Bootvorgang hängen bleiben, dann liegt es eventuell daran, dass an einem der beiden Eingänge ein Low-Signal  (Pin gegen Masse) anliegt. Hat der IO0 beim Booten ein Low-Signal, so startet der ESP-01 im Programmiermodus. Auch ein "Low" am IO2 und TX verhindert das Booten. Lediglich RX darf als Eingang beim Booten ein Low-Signal besitzen.
Wenn man nicht ausschließen kann, dass ein Eingabeelement (Reedkontakt, Taster, Schalter...) beim Starten des Moduls immer unbelastet ist, dann sollte man als Eingang den RX-Pin verwenden!



Deep-Sleep-Schaltung

Um den ESP-01 aus dem Deep-Sleep-Modus zu katapultieren muss RST einen Low-Pegel erhalten, dieser wird nach Ablauf der Deep-Sleep-Zeit vom Pin XPD_DCDC des ESP-Chips geliefert. Leider ist dieser nicht nach außen auf einen Anschlussspin geführt und man muss somit die Brücke direkt auf dem Board löten. Das Unterfangen ist allerdings nur was für geübte Löter mit ruhiger Hand.

Hier eine gut gelungene Methode um die Brücke herzustellen: https://youtu.be/foljGPuLjYk?feature=shared (ESP-01 ist zugänglicher als ESP-01s).
Mehr zum Thema Deep-Sleep und Programmierung gibt's hier.



CAD-Model

Wer das Modul in eine eigene Gehäusekonstruktion integrieren möchte, kann hier die CAD Daten herunterladen. Sie liegen im Format  IGS, STEP und STL vor.

,

  Download (als STL, IGS und STP)


Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !
[letzte Aktualisierung 26.04.2024]