Update der Firmware des ESP8266

Quellen

Grundlagen

Zur Zeit sind sehr preiswerte Breakout-Boards mit dem Modul ESP8266 erhältlich. (...)
Diese sind nur mit den für den Betrieb des Moduls unbedingt nötigen Bauelementen bestückt.
Eine kleine WLAN-Antenne befindet sich direkt auf der Platine.
Der ESP8266 ist ein kompletter 32-Bit-Microcontroller und wird mit einer Betriebsspannung von 3,3 Volt betrieben.
Er kann komplett wie ein Arduino programmiert werden, für diese Versuche wird allerdings das NonOS-SDK verwendet.
Das NonOS-SDK stellt eine AT-Schnittstelle über UART bereit, diese wird mittels eines USB-UART-Adapters vom PC bedient.
Während des Sendebetriebs fliesst kurzfristig ein Strom bis zu 550mA, je nach Entfernung zum WLAN-Access-Point.
Eine Versorgung über USB ist zwar möglich, soll hier aber zur Entlastung des USB-UART-Interface vermieden werden.
Im Versuchsaufbau wird die Betriebsspannung des externen Netzteils mit einem Spannungsregler MCP1700-3302 stabilisiert.
In Verbindung mit Pufferkondensatoren reicht dieser für die ersten Versuche aus.
Ein USB-UART-Adapter wird zur Verbindung des Moduls mit dem PC verwendet, dieses wird auf eine Spannung von 3,3V eingestellt.
Für erste Experimente müssen nur 3 Verbindungen zwischen ESP8266 und UART-Adapter bestehen (GND, RX, TX).

Für ein Update der Firmware muss der Modul in den Flash-Mode versetzt werden.
Zum Erreichen des Flash-Modes muss während des Starts/Einschaltens der GPIO0-Pin mit GND verbunden werden.
Hier reicht ein herausgeführter Draht oder ein einfacher Taster.

Versuchsaufbau

Die für die Versuche nötigen Bauteile werden auf einem Breadboard aufgebaut.

Hardware

Zuerst wird der USB-UART-Adapter it dem PC verbunden.
Der serielle Port wird auf folgende Parameter eingestellt: 115200,8,n,1
Auf dem PC wird ein Terminalprogramm gestartet.
Das Terminalprogramm muss die Zeilen mit einem "\r" und "\n" abschliessen.
Nun kann die Stromversorgung des ESP8266-Moduls zugeschaltet werden.
Der Modul meldet sich nach Abschluss des Bootvorgangs:

Ai-Thinker Technology Co. Ltd.
ready				
		

Nach ein paar Sekunden kann man ein "AT"-Kommando zum Modul senden, es muss mit einem "OK" geantwortet werden.

AT
OK
		

Achtung!

Die RTS/CTS-Signale sind zwar am Chip vorhanden, aber nicht herausgeführt, daher darf der UART-Modus nicht mittels AT-Kommandos
auf HW-Handshake eingestellt werden, denn sonst muss man die Firmware flashen.

Tests des ESP8266-Moduls

Anzeige der Versionen

Wahrscheinlich ist nicht die aktuelle Firmware geladen.
Das Kommando "AT+GMR" fordert die Ausgabe der aktuellen Versionen an:

AT+GMR

AT version:1.2.0.0(Jul  1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
Ai-Thinker Technology Co. Ltd.
Dec  2 2016 14:21:16
OK				
		

Für diesen Softwarestand ist keine ausreichende Dokumentation zu finden.
Daher sollte zuerst die aktuelle Firmware geladen werden.
Der Hersteller der Firmware bietet die Funktion "Firmware Over The Air" (FOTA) an,
damit kann das Laden der Firmware direkt über die WLAN-Verbindung erfolgen.
Leider funktioniert FOTA mit den älteren Versionen nicht mehr, so muss zuerst die Version 2.0 über USB geladen werden.

Laden der Firmware Version 2.0 über USB

Wir brauchen das FLASH_DOWNLOAD_TOOL für ESP8266, verwendet wird Version 3.4.8.

Benötigt werden die BIN-Dateien für NonOS-SDK Version 2.0.0.
Das SDK kann man von der ExpressIf-Webseite komplett als ZIP-Datei laden, die BIN-Dateien befinden sich im Unterverzeichnis bin\at\512+512.
Das Unterverzeichnis muss entsprechend der Flash-Konfiguration des Moduls geladen werden.

Zum Erreichen des Flash-Modes muss während des Starts/Einschaltens der GPIO0-Pin mit GND verbunden werden.

Im Download-Tool wird die Karteikarte "SPIDownload" ausgewählt.
Im Download-Tool werden die BIN-Dateien eingetragen und die Position, an der diese Dateien geladen werden sollen:

Damit die Dateien geladen werden, muss das Häkchen davor gesetzt werden.
Ein Device Master Key muss nicht angegeben werden.

Das Modul brauch flg. Einstellungen:
CrytalFreq 26MHz, SPI-Speed 40MHz, SPI-Mode QIO, Flash Size 8 (!)
Jetzt muss noch die Schnittstelle (hier: COM4) und die Baud-Rate 115200 eingestellt werden.

Danach "START" drücken!
Die Informationen vom Board werden geholt, dann beginnt der Upload, der Fortschrittsbalken zeigt den Verlauf an.
Wenn die Anzeige "FINISH" erscheint, kann die Stromversorgung vom Modul kurz unterbrochen werden, GPIO0 darf dabei nicht mehr mit GND verbunden sein.

Nach Neustart wird das Terminal erneut verbunden.
Das Kommando AT+RST löst einen neuen Reset aus:

 ets Jan  8 2013,rst cause:1, boot mode:(3,0)
load 0x40100000, len 816, room 16 
tail 0
chksum 0x8d
load 0x3ffe8000, len 788, room 8 
tail 12
chksum 0xcf
ho 0 tail 12 room 4
load 0x3ffe8314, len 288, room 12 
tail 4
chksum 0xcf
csum 0xcf
2nd boot version : 1.2
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size : 8Mbit
jump to run user1
		

Erneute Abfrage der Versionsnummern:

AT+GMR

AT version:1.3.0.0(Jul 14 2016 18:54:01)
SDK version:2.0.0(656edbf)
compile time:Jul 19 2016 18:44:44
OK
		

Update der Firmware "Over The Air" (FOTA)

Die derzeit aktuellste Firmware-Version ist 2.1, daher soll die aktuellste Version mittels FOTA geladen werden.
Zuerst muss man die Verbindung mit dem WLAN herstellen:

AT+CWMODE=3

OK
AT+CWJAP="WLAN Netzwerk 3","pastafari"

WIFI CONNECTED
WIFI GOT IP
OK
		

Das Update wird mit dem Befehl "AT+CIUPDATE" angefordert:
(die komischen Zeichen sind wahrscheinlich chinesische Schriftzeichen)

AT+CIUPDATE
+CIPUPDATE:1
+CIPUPDATE:2
+CIPUPDATE:3
+CIPUPDATE:4
OK
WIFI DISCONNECT
 ets Jan  8 2013,rst cause:1, boot mode:(3,0)
load 0x40100000, len 816, room 16 
tail 0
chksum 0x8d
load 0x3ffe8000, len 788, room 8 
tail 12
chksum 0xcf
ho 0 tail 12 room 4
load 0x3ffe8314, len 288, room 12 
tail 4
chksum 0xcf
csum 0xcf
2nd boot version : 1.2
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size : 8Mbit
jump to run user2
?âÜùlÀÄ?b?ä
??bpãbà??l??8???Äl?Ä
ready
WIFI CONNECTED
WIFI GOT IP				
		

Der Reset ist automatisch erfolgt, erneute Überprüfung der Versionen:

AT+GMR
AT version:1.4.0.0(May  5 2017 16:10:59)
SDK version:2.1.0(116b762)
compile time:May  5 2017 16:37:50
OK