Zuletzt geändert am 4. Juli 2016 um 21:50

ESP8266 mit Arduino programmieren

Der ESP8266 kann direkt per Arduino programmiert werden. Normalerweise braucht man dazu extra Buttons, die man kompliziert drücken muss. Wenn man aber einen FTDI hat, der auf 3.3V an den IO-Pinnen läuft und an dem sich die RTS Leitung herausführen lässt, sollte es vollautmatisch wie folgt gehen:

+----------------------------+
|  FTDI Board         -> DTR |
|                     <- RX  |
| U                   -> TX  |
| S                      VCC |
| B                   <- CTS |
|                        GND |
+----------------------------+

+----------------------------+
|  ESP8266 ESP-01            |
|                  RXD  VCC  |
|                GPIO0  RST  |
|  component     GPIO2  CH_PD|
|    side          GND  TXD  |
|                            |
+----------------------------+

ESP       FTDI (auf 3.3V Betrieb stellen!)
=====     ======
GND   <-> GND
VCC   <-> VCC (Externen leistungsfähigen 3.3V Regler nehmen!)
TX    <-> RXD 
RX    <-> TXD
GPIO0 <-> DTR (LOW = Firmware Upload, HIGH = Run)  
GPIO2 <-> über 10K an VCC (3.3V), kann dann aber weiterverwendet werden als Ausgangsport
CH_PD <-> über 10K an VCC (3.3V)
RST   <-> RTS + über 10K an VCC 

        GPIO0 pull to GND for firmware flash
        RST pullup to VCC

Wichtig: Bei größeren Modulen auch GPIO15 auf GND setzen.

Im Arduino "Generic ESP8266" auswählen und PLAY drücken - es sollte das Ding programmieren. Nutzt man ein Terminal-Programm muss ggf. die RTS-Leitung im Program auf einen anderen Pegel gesetzt werden, damit das Programm im ESP gestartet werden kann.

Ich will es möglichst streßfrei...

Selbst der Adafruit Huzzah hat Probleme mit dem SPIFFS Upload wenn ein FTDI verwendet wird, ausserdem benötigt es Tastendrücke zum programmieren. Kaufe daher am besten eine NodeMCU mit einem nicht-FTDI-Chip, am besten CP2102 basiert. Dies lies sich unter Arduino direkt ohne probleme umprogrammieren.

Problem: ESP8266 stürtzt ab / macht kein WLAN

  • Meist ist hier die 3.3V Versorgung nicht leistungsfähig genug. Ein separater 3.3V Regler hilft dann. Bitte mit kurzen bzw. dicken Kabeln anschliessen.

Problem: ESP8266 lässt sich mit Arduino nicht programmieren

  • 3.3V Regler ist möglicherweise nicht leistungsfähig genug -> eigenen Regler aufbauen. Dies ist meist der Fall wenn man die 3.3V von einem Arduino oder FTDI Modul versucht zu verwenden. Die 5V aus dem USB-Port reichen aber in der Regel aus, um davon ein starken 3.3V Regler zu betreiben.
  • Wird ein Modul wie Adafruit Huzzah verwendet ggf. noch einen Elko (~100uF / 6.3V) nah an die Versorgungspinne des ESP-Moduls löten.
  • Modul in den Upload-Modus bringen - meistens muss man dazu entweder eine bestimmte Tastenkombination drücken oder die richtige Reset-Variante in Arduino einstellen.

Problem: ESP8266 lässt sich mit Arduino programmieren, aber der SPIFFS-Upload bricht mit einem Fehler immer ab

  • Versorgung sollte stabil sein und richtige SPIFFS Größe sollte ausgewählt sein (ggf. klappen einige Kombinationen nicht)
  • Das ESP-Upload-Tool scheint nicht sonderlich Fehlertolerant programmiert zu sein - folgendes kann man noch ausprobieren:
    • Erweiterte Einstellungen der seriellen Schnittstelle in der Systemsteuerung ändern (kleinere Blockgröße kann helfen)
    • Statt einem FTDI lieber einen anderen USB-Seriell-Konverter nehmen (CP2102 klappt besser). Dem FTDI scheint ein stabiler Quarz zu fehlen.
    • Eigene Stromversorgung für FTDI und ESP, damit auch der FTDI stabil arbeiten kann.
    • Andere Baudrate in Arduino probieren - 921600 klappt aber auch meistens und ist halbwegs schnell.
  • Not-Betrieb über OTA:
    • Aus Beispiel "ArduinoOTA" -> "BasicOTA" auf das Modul spielen (WLAN Daten vorher im Source anpassen), dieses Resetten.
    • Im Terminal sollte zu sehen sein das sich das Modul mit dem WLAN verbindet und eine IP-Adresse bezieht.
    • Nach einiger Zeit sollte im Arduino unter "Ports" nun dieser spezielle OTA-Port auftauchen. Ggf. Arduino neu starten bzw. Installation überprüfen.
    • Wenn das klappt, den richtigen Sketch (meist ein Webserver) nun erstmal nur kompilieren aber nicht uploaden.
    • Diesen speziellen OTA-Port wählen, *zuerst* nun über "Sketch Data Upload" die SPIFS Daten hochladen.
    • Das Modul bootet darauf neu, noch ist aber das OTA-Program drauf. Nun als letztes auch noch den richtigen Sketch aufspielen. Das Modul bootet neu in diesen Sketch. Will man den Sketch ändern muss man leider alle Schritte hier wiederholen - daher ist es nur als Not-Lösung zu gebrauchen.