Als ich mit dem ESP angefangen hatte, gab es einige Stolpersteine, an denen ich festgehangen hatte. Dabei euch das nicht auch passiert, habe ich hier mal etwas zusammengefasst, worauf ihr achten solltet:
Wenn man mit der Arduino IDE arbeiten möchte (Ja, manche möchten das…), muss man dieser noch den ESP "beibringen".
Hierzu fügt man unter Datei/Voreinstellungen unter "Zusätzliche Boardverwalter-URLs" folgendes hinzu:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
Als Schnittstelle zwischen dem USB-Port des PCs und dem ESP-01 verwende ich einen einfachen ESP8266-Programmer.
Um den ESP aber in den Programmier-Modus zu setzen, muss Pin GPIO 0 beim Starten auf GND gezogen werden.
Dies tut der Programmer nicht von alleine, hier muss entweder ein Widerstand mit rein gestopft werden oder
man lötet einen Taster an, den man beim Einstecken des Programmers in den USB-Port gedrückt hält.
Am Anfang hatte ich noch Berührungsängste und wollte nicht an dem frisch gekauften Gerät rumlöten. Also habe ich mich für die Methode mit dem Widerstand entschieden. Nach einiger Zeit debugging wird das aber mühselig, ständig den Programmer vom PC abzuziehen, den ESP abzustecken, den Widerstand rauszuholen, den ESP wieder in der Programmer zu stecken, und den dann wieder in den PC zu stecken… Ne, das sollte dann doch einfacher gehen!
Schließlich überwand ich mich und nahm den Lötkolben raus. Ich hab dann einfach auf der Unterseite an den beiden Pins Kabel angelötet und daran dann einen Taster. Das vereinfacht einem das Leben sehr! Wenn ich den Programmer mit ESP in den PC stecke und in den Programmiermodus möchte, halte ich dabei nur den Taster gedrückt. Soll der Programmer nur als Seriell-Adapter dienen, steckt man ihn ohne Drücken des Tasters in den PC.
Der ESP ist im DeepSleep-Mode sehr stromsparend, denn er schaltet alles ab bis auf die RTC und deren eigenes kleines RAM.
Damit der ESP aus diesem Zustand wieder erwacht, muss der Reset-Pin RST auf Low gezogen werden.
Verwendet man im Code ESP.deepSleep(), zählt die RTC diese Zeit und zieht dann Pin GPIO 16 auf Low.
Will man, dass der ESP nach definierter Zeit wieder aus dem DeepSleep erwacht, so muss der Pin GPIO 16 mit dem Reset-Pin RST verbunden werden.
Ja, das funktioniert auch ohne Lupe und ohne feine Lötspitze, Spaß macht das aber nicht! Wer den DeepSleep mit automatischen Aufwachen nutzen möchte:
Hier lohnt sich wirlich eine Anschaffung von einer Dritten Hand inclusive Vergrößerungsglas, einer feinen Lötspitze, (sehr) dünnem Lötzinn und Flussmittel!
Es sei geraten: Viel Flussmittel an dem Pin aufzutragen, dann muss man mit der Dosierung des Lötzinns nicht so vorsichtig sein. Ansonsten gilt hier:
Nur die Ruhe bewahren!
und Übung macht den Meister!
. Ich habe mich ewig daran versucht und hatte schon Panik,
den Chip durch die Hitze irgendwann zu himmeln. (Wäre ja letztlich nicht so schlimm, so viel kosten die auch nicht.) Aber es hat geklappt: Nach dem 5. hat man Übung drin!
(Btw: Den ersten habe ich ohne Lupe und mit nicht ganz so feiner Spitze gelötet… :D )
Das Ergebnis könnt ihr hier bestaunen:
Damit der ESP auch arbeitet muss der Pin CHIP_EN auf High gezogen sein!
Mit der Funktion ESP.getVcc() bekommt man die aktuelle Versorgungsspannung des Chips in mV.
Um diese Funktion verwenden zu können, muss allerdings zu Beginn noch ADC_MODE(ADC_VCC); definiert sein!
"Software is like Sex, it is best if it is free."
Linus Torvalds
Klimaanlage defekt.
Der Techniker ist informiert!