- kollino.de - https://www.kollino.de -

ESP8266-01 WLAN-Modul flashen

ESP8266-01

Wollen wir die ESP8266 [1]-Firmware aktualisieren (oder, da das SoC von diversen Drittherstellern verwendet wird, mit einer offiziellen Espressif-Firmware), müssen wir das Modul neu flashen.

Wie das geht, zeige ich Euch in diesem Beitrag.

 

Was benötigen wir dafür?

Einen Arduino UNO [2]/Nano, etc. oder einen FTDI-Programmer,
ein ESP8266 [1]-(S)01-Modul
eine externe 3,3V-Stromversorgung,
Breadboard [3],
Widerstände (3x 10KOhm, 1x 1KOhm),
Taster,
Kabel

Die Flash-Software, so wie die (aktuellste) Firmware.

 

Flash Download Tools herunterladen

Zuerst sollten wir uns die „Flash Download Tools“-Software von Espressif herunterladen. Diese ist hier [4] zu finden unter „Tools“ -> „Flash Download Tools (ESP8266 & ESP32)“
(Das Programm ist für Windows PC. So weit ich gesehen habe, existiert unter github auch eine Variante für Linux-Rechner, da das Tool sowieso Phyton benutzt und somit Plattformunabhängig ist.
Da ich die Linux-Version aber nicht testen konnte, bezieht sich das Tutorial auf das Windows-Tool.)

Installieren muss man es nicht, da man das Tool direkt im Verzeichnis starten kann.

 

Firmware herunterladen

Es gibt zwei Arten von Software Development Kits (SDK) für ESP8266: Nicht-OS-SDK und RTOS-SDK.
Das Nicht-OS-SDK basiert, wie der Name schon sagt, auf keinem Betriebssystem.
Mit diesem SDK kann man IOT-Demo- und AT-Befehle kompilieren.
Das RTOS-SDK basiert dagegen auf FreeRTOS.

Ich verwende das Nicht-OS-SDK (technisch gesehen, die Firmware-Dateien, die auf dem Nicht-OS-SDK basieren).
Die ESP8266-Firmwaredateien liegen in Form von Binärdateien vor (.bin-Dateien).

Da ich nur den AT-Befehlssatz des ESP8266 verwenden werde, werde ich nur die mit den AT-Befehlen verknüpften Bin-Dateien herunterladen.
Diese sind ebenfalls hier [4] auf der Espressif-Seite unter dem Reiter „AT“ zu finden und dort können die letzten aktuellen AT Commands Firmware für ESP8266 heruntergeladen werden.

Jetzt haben wir alles zusammen und können loslegen.

Sehr wichtig: Nutzt Ihr einen Arduino [2] als Programmer, so installiert als erstes den Sketch „BareMinimum“, oder schreibt den folgenden Code auf Euren Arduino [2].

Falls Ihr das nicht macht, kann es sein, dass das anschließende Flashen des ESP-Moduls nicht funktioniert und der Vorgang mit kuriosen Fehlermeldungen abgebrochen wird.

Wir nutzen den Arduino [2] ja sozusagen als Durchgangsmedium, um mit dem ESP-Modul kommunizieren können. Hier würde ein anderer installierter Sketch möglicherweise die Kommunikation verhindern oder stören.

Jetzt bauen wir die folgende Schaltung auf, um das ESP-Modul ansteuern zu können:

[5]

[6]

Zum Vergrößern Bild anklicken

Kurze Anmerkung zur Schaltung:
Mit dem Button können wir einen Reset auslösen.
Die externe Stromversorgung sorgt dafür, dass das Modul nur mit 3.3V betrieben wird. Der 3.3V-Ausgang des Arduinos reicht in den meisten Fällen nicht aus, da er nicht genügend Strom zur Verfügung stellt. Das ESP-Modul ist – gerade beim booten – nämlich sehr hungrig.
RX (ESP-Modul) muss mit RX (Arduino) verbunden sein und
TX (ESP-Modul) muss mit TX (Arduino) verbunden sein, da wir ja das ESP-Modul programmieren müssen (zur Erinnerung: Der Arduino trägt die Signale nur an das Modul weiter und kommuniziert nicht mit ihm.)

 

Flashen der Firmware

Um die Firmware jetzt auf unseren ESP8266 [1] flashen zu können, muss man sich in das Verzeichnis begeben, in dem sich das entpackte Programm befindet.
Startet die Anwendungsdatei ESPFlashDownloadTool_vx.y.z.

Es öffnet sich ein Fenster, in dem wir den ersten Programmpunkt „ESP8266 Download Tool“ anklicken und starten.

[7]

zum Vergrößern Bild anklicken

Es öffnet sich ein weiteres Fenster, in dem man die Firmware-Dateien auswählen muss, die installiert werden sollen.

[8]

zum Vergrößern Bild anklicken

Es müssen vier Dateien an vier verschiedene Speicheradressen hochgeladen werden.

File Address in Flash Memory
boot_v1.7.bin 0x00000
user1.1024.new.2.bin 0x10000
esp_init_data_default.bin 0xFC000
blank.bin 0xFE000

HINWEIS: Diese Liste bezieht sich auf die Flash-Speicherzuordnung für Firmware über Funk (FOTA) für ESP8266 [1]-Module mit 1 MB Flash. (Neuere Module haben alle 1MB Flash)
Informationen zu anderen Flash-Größen sind in der ESP8266 [1]-Kurzanleitung zu finden.

Im ESP8266 Download Tool auf der Registerkarte SPI Download können die eben genannten Dateien mit der Option „Download Path Config“ ausgewählt werden, indem man auf die Schaltfläche […] klickt. Die entsprechenden Adressen tragen wir dann manuell dahinter ein.

Danach stellen wir nach Auswahl der vier Dateien und dem Ausfüllen der Adressen die folgenden Felder wie im Screenshot angegeben, ein.
Wenn später die Einstellungen passen und damit man nicht jedesmal diese Daten neu eingeben muss, kann man einen Haken bei „LOCK SETTINGS“ setzen.
Damit sind die Felder vor dem Überschreiben geschützt.

Jetzt müssen wir noch den richtigen COM-Port auswählen, so wie die korrekte Baudrate.
Kleiner Tipp: UNBEDINGT darauf achten, das „115200“ (115.200 Baud) eingestellt ist, denn beim ersten Start übersah ich, dass „1152000“ (1.152.000 Baud) vorausgewählt war. Ich bin schier verzweifelt und das wegen einer Null die zu viel ist und die nicht direkt auffiel.

Bevor wir jetzt mit dem flashen des ESP-Moduls beginnen können, drücken wir den Button auf dem Breadboard, um das Modul zum Neustart zu zwingen.
Dadurch das GPIO0 nun auf LOW gezogen ist, startet das Modul im Programmiermodus und ist nun bereit, die neue Firmware zu empfangen.

Jetzt klicken wir in der Flash-Tool-Software auf „START“.

Das Flashen der Firmware in ESP8266 [1] sollte beginnen. Links im Terminalfenster erscheint ein „Uploading Stub“. Sollte das nicht der Fall sein, nochmal den Reset-Knopf drücken.
Im rechten Fenster wird unter „DETECTED INFO“ detaillierte Informationen zu dem ESP-Modul angezeigt, und neben dem grünen „Download“-Panel erscheinen zwei MAC-Adressen, die eine AP- und eine STA-Adresse enthalten.

Ganz unten läuft ein blauer Balken von links nach rechts.

Sobald aus dem grünen „Download“-Panel ein „Finish“-Panel wird, ist der Flashvorgang erfolgreich abgeschlossen.

Falls nicht, erscheint eine entsprechende Fehlermeldung links im Terminalfenster.
Sollte das passieren, solltet Ihr als Erstes überprüfen, ob COM-Port und Baudrate korrekt sind.

[9]

zum Vergrößern Bild anklicken

Zum Abschluss prüfen wir, ob die Firmware korrekt installiert wurde. Hierzu öffnen wir einen Seriellen Monitor (beispielsweise in unserer Arduino-IDE unter „Werkzeuge“->“Serieller Monitor“.

 

[10]

zum Vergrößern Bild anklicken

Im unteren Bereich des Fensters muss „Sowohl NL als auch CR“ ausgewählt sein und die Baudrate muss „115200“ betragen.

Ganz wichtig ist es, dass wir jetzt das Kabel von GPIO0 vom Breadboard abziehen und noch einmal den Reset-Knopf drücken.
Somit erreichen wir, dass das ESP-Modul nicht mehr im Programmiermodus, sondern im regulären Modus startet.

Nach ein paar wirren Zeichen sollte ein „ready“ in einer neuen Zeile erscheinen.

Jetzt geben wir in der oberen Eingabezeile „AT+GMR“ ein. Bitte beachten, dass alle AT-Befehle vollständig in Großbuchstaben geschrieben werden, sonst werden sie nicht als solche erkannt.

Mit diesem Befehl können wir die aktuell installierte Firmware-Version auf dem Modul überprüfen.
In diesem Fall ist es die
AT version:1.5.0.0(Oct 24 2017 12:03:18) und die
SDK version:2.1.0(ace2d95)

 

[11]

zum Vergrößern Bild anklicken