Forum: Mikrocontroller und Digitale Elektronik ESP-12 flashen funktioniert nicht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Werner (desedo54)



Lesenswert?

Hallo zusammen!
Brauche mal eure Unterstützung.

Möchte für ein AhoyDTU-Projekt einen ESP-12 einsetzen. Diesen habe ich 
auf eine Raster-Platine gelötet und auf ein Breadboard gesetzt.
Dieser wird über eine USB2UART-Bridge mit Spannung versorgt und an den 
PC angeschlossen (siehe Datei AI-Thinker-USB.JPG).

Der ESP-12 ist dann als AI-THINKER_0DFD42 mit eigenem WLAN zu sehen.
Zunächst habe ich nun versucht, die generierte Tasmota.bin zu flashen. 
GPIO0 über 4,7k Widerstand auf GND und RST kurz ebenfals auf GND. Am 
Ende war die Meldung "Timed out waiting for packet header" (siehe Datei 
AI-Thinker-Tasmota-Failed.JPG).

Testweise habe einen anderen älteren ESP-12 genommen und mit der 
Tasmota.bin geflashed, was problemlos funktioniert hat (siehe Datei 
AI-Thinker-Tasmota-OK.JPG).

Zum Test habe ich dann den Blue-Led-Test in die Arduino-IDE geladen, 
kompiliert und versucht, auf den ESP-12 zu flashen. Ebenfalls mit dem 
vorgenannten Ergebnis:
<
Der Sketch verwendet 265397 Bytes (27%) des Programmspeicherplatzes. Das 
Maximum sind 958448 Bytes.

Globale Variablen verwenden 28000 Bytes (34%) des dynamischen Speichers, 
53920 Bytes für lokale Variablen verbleiben. Das Maximum sind 81920 
Bytes.

C:\Users\alles\AppData\Local\Arduino15\packages\esp8266\tools\python3\3. 
7.2-post1/python3  -I 
C:\Users\alles\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266 
\3.0.2/tools/upload.py  --chip esp8266 --port COM4 --baud 115200 
--before default_reset --after hard_reset write_flash 0x0 
C:\Users\alles\AppData\Local\Temp\arduino_build_814843/sketch_test_blue- 
led.ino.bin
esptool.py v3.0
Serial port COM4
Connecting........_____....._____....._____....._____....._____.....____ 
_....._____
Traceback (most recent call last):
  File 
"C:\Users\alles\AppData\Local\Arduino15\packages\esp8266\hardware\esp826 
6\3.0.2/tools/upload.py",  line 66, in <module>
    esptool.main(cmdline)
  File 
"C:/Users/alles/AppData/Local/Arduino15/packages/esp8266/hardware/esp826 
6/3.0.2/tools/esptool\esptool.py",  line 3552, in main
    esp.connect(args.before, args.connect_attempts)
  File 
"C:/Users/alles/AppData/Local/Arduino15/packages/esp8266/hardware/esp826 
6/3.0.2/tools/esptool\esptool.py",  line 529, in connect
    raise FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, 
last_error))
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for 
packet header
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for 
packet header
>

Aufgefallen ist mir, dass in der Zeit, wo bei "Connecting" die Punkte 
und Unterstriche angezeigt werden, die rote LED auf der USB2UART-Bridge 
und die blaue LED auf dem ESP-12 im Takt blinken.
In Datei AI-Thinker-Breadboard ist ein Foto des Aufbaus.

Besten Dank für eure Unterstützung.

von Monk (roehrmond)


Lesenswert?

Der ESP Chip braucht fast 500 mA, die kann deine USB-UART Brücke samt 
Kabel nicht zuverlässig liefern. Auch Steckbretter und Dupont Kabel 
haben für so viel Strom zu viel Innenwiderstand.

Löte ein 3,3V Netzteil direkt an das Modul an. Und packe der Gelegenheit 
einen 100 µF (oder 200 µF) Elko direkt an die VCC/GND Pins des Modul.

Den dicken Elko auf dem Steckbrett kannst du dir dann sparen.

Ich sehe auf deinem Foto keinen Pull-Up Widerstand an GPIO0. Vergleiche 
deinen Aufbau mal mit http://stefanfrings.de/esp8266/index.html#fwupdate

: Bearbeitet durch User
von Werner (desedo54)


Lesenswert?

Korrekt, der Pullup an GPIO0 ist nicht vorhanden, lediglich der Pulldown 
für den Flashmode über Schalter ist eingebaut.

Mich irritiert aber, dass das Flashen bei einem anderen ESP-12 
funktioniert hat. In allen Fällen ist der ESP-12 auf einer Rasterplatine 
gelötet und wird auf dem Breadboard aufgesteckt, ohne den Aufbau zu 
verändern.

Werde mal nach der verlinkten Anleitung entsprechende Änderungen 
vornehmen und mich dann noch mal Feedback geben.

von Werner (desedo54)


Angehängte Dateien:

Lesenswert?

Habe nun ein "Flashboard" erstellt (Datei AI-THINKER-Flashboard2.jpg). 
Hier wird nur noch der ESP-12 aufgesteckt, alles andere ist fest 
gelötet.

Auf dem Bild sind auch die beiden ESP-12 abgebildet, die ich momentan 
vorbereitet habe. Der ESP-12 links ist aus einer älteren Bestellung. 
Hier hat das Flashen funktioniert und ich habe Zugriff auf die 
Tasmota-Web-Oberfläche.

Bei dem rechts abgebildeten ESP-12 schlägt das Flashen fehl, auch mit 
dem neu erstellten "Flashboard". Nach einem Reset sehe ich in der 
WLAN-Liste immer das AI-THINKER-0DFD42 WLAN.

Ich werde mal einen weiteren ESP-12 aus der aktuellen Lieferung 
vorbereiten und schauen, ob es damit klappt. Vielleicht ist ja der 
andere ESP-12 defekt?

Gibt es sonst noch Ideen oder Hinweise, wie ich weiter machen kann, um 
das Flashen doch noch erfolgreich hin zu kriegen?

Kann ich eigentlich erkennen, ob ein ESP-12 im Flash-Mode ist?
Ich habe beim einfachen Reset (ohne Flash-Taste) festgestellt, dass die 
ESP-LED zweimal blinkt, während bei einem Reset mit Flash-Taste blinkt 
die ESP-LED nur einmal.

von Monk (roehrmond)


Lesenswert?

Werner schrieb:
> Gibt es sonst noch Ideen oder Hinweise, wie ich weiter machen kann, um
> das Flashen doch noch erfolgreich hin zu kriegen?

Mit fällt nichts mehr ein, auf deinem Foto sieht alles gut aus.

Der 100µF Elko ist überraschend groß (die Abmessungen meine ich), aber 
das tut nichts zur Sache.

> Kann ich eigentlich erkennen, ob ein ESP-12 im Flash-Mode ist?

Ich vermute mal, dass der Bottloader entsprechende Debug Meldungen 
ausgibt, die du mit einem Terminalprogramm empfangen kannst. Die 
Baudrate ist 74880.

: Bearbeitet durch User
von Werner (desedo54)


Lesenswert?

Habe mal die Arduino-IDE gestartet und darin den Monitor und die 
Baudrate auf 74880 gestellt.
Anschließend habe ich die USB2UART-Bridge mit dem PC verbunden. Die 
Bridge wurde vom PC erkannt und ist COM4 zugeordnet (passt zur 
Arduino-IDE).
Erst jetzt habe ich das USB-Netzteil für den ESP-12 eingeschaltet.

Im Arduino-Monitor erschien ..... NICHTS, aber dieses ominöse 
AI-THINKER-WLAN ist weiterhin da. Also ganz defekt scheint der ESP nicht 
zu sein.

von Werner (desedo54)


Lesenswert?

Habe einen weiteren neuen ESP-12 auf eine Raster-Platine gelötet und 
versucht über das "Flashboard" zu flashen. Leider ebenso wieder 
erfolglos.
Im Betriebsmodus erscheint wieder ein AI-THINKER-WLAN.

Die neuen ESP-12 sind ein F-Model, während der erfolgreich geflashte 
ESP-12 ein E-Model ist.

Wenn noch jemand eine Idee hat, wäre ich sehr dankbar dafür.

von Monk (roehrmond)


Lesenswert?

Werner schrieb:
> Im Arduino-Monitor erschien ..... NICHTS

Wenn der ESP normal startet gibt der Bootloader ein paar Zeilen Text 
aus. Dabei meldet er, in welchem Msodus er gestartet wurde.
https://docs.espressif.com/projects/esptool/en/latest/esp8266/advanced-topics/boot-mode-selection.html#boot-log

Eventuell unterstützt dein USB-UART diese krumme Baudrate nicht. Ich 
hatte den Fall zwar noch nicht, halte es jedoch für möglich. Das kannst 
du ja mal mit einem Modul antesten, bei dem die serielle Kommunikation 
funktioniert.

von Werner (desedo54)


Lesenswert?

Danke für den Hinweis.
Auf das "Flashboard" habe ich den erfolgreich geflashten ESP-12E (mit 
Tasmota) gesteckt und den Arduino-Monitor mit dem passenden COM-Port 
geöffnet. Es kommt keine Meldung, egal welche Baud-Rate (4800 - 230400) 
ich einstelle. Bei jeem Wechsel der Baud-Rate blinkt die rote LED am 
UART kurz auf und beim Reset des ESP blinkt kurz die blaue LED auf.

Dann habe ich einen USB-Serial CH340 an einen anderen USB-Port am PC 
angesteckt, den ich für den ESP-01 verwende. Hier habe ich einen ESP-01 
mit einer (anderen) Tasmota-SW aufgesteckt, den Monitor auf den passende 
COM-Port umgestellt und den Reset betätigt. Bei einer Baud-Rate von 
74880 kommt die nachstehende Ausgabe:

10:15:58.269 ->
10:15:58.269 ->  ets Jan  8 2013,rst cause:2, boot mode:(3,6)
10:15:58.269 ->
10:15:58.323 -> load 0x4010f000, len 3584, room 16
10:15:58.323 -> tail 0
10:15:58.323 -> chksum 0xb0
10:15:58.323 -> csum 0xb0
10:15:58.323 -> v3969889e
10:15:58.323 -> ~ld
10:15:58.323 ->
10:15:58.323 ->  ets Jan  8 2013,rst cause:2, boot mode:(3,7)
10:15:58.323 ->
10:15:58.370 -> load 0x4010f000, len 3584, room 16
10:15:58.370 -> tail 0
10:15:58.370 -> chksum 0xb0
10:15:58.370 -> csum 0xb0
10:15:58.370 -> v3969889e
10:15:58.370 -> ~ld
10:15:58.423 ->
10:15:58.423 ->  ets Jan  8 2013,rst cause:2, boot mode:(3,6)
10:15:58.423 ->
10:15:58.470 -> load 0x4010f000, len 3584, room 16
10:15:58.470 -> tail 0
10:15:58.470 -> chksum 0xb0
10:15:58.470 -> csum 0xb0
10:15:58.470 -> v3969889e
10:15:58.470 -> ~ld

Also muss ich wahrscheinlich den UART durch was Neues ersetzen. Gibt es 
dazu eine Empfehlung?

Verstehen tue ich es trotzdem nicht, da ich ja den ESP-12E mit diesem 
Bauteil geflasht habe. Aber wenn das die Lösung ist, ist es OK. 
Hauptsache die Probleme sind weg / gelöst.

von Monk (roehrmond)


Lesenswert?

Werner schrieb:
> Gibt es dazu eine Empfehlung?

Ich benutze ein Adapterkabel von Aliexpress mit einem gefälschten PL2303 
Chip. Unter Linux funktioniert es "einfach so", unter Windows musste ich 
ein bisschen tricksen um einen alten Treiber zu installieren, der diese 
gefälschten Chips nicht unterstützt.

Ansonsten habe ich ziemlich viele Arduino Board mit CH340, von denen 
bisher keine Probleme bereitet hat. Allerdings habe die immer nur mit 
höchstens 115200 Baud verwendet (mehr brauchte ich bisher nicht).

Hier im Forum raten auffällig viele Leute vom PL2303 ab, angeblich 
verschluckt er manchmal ein paar Zeichen. Chips von FTDI werden hingegen 
hoch gejubelt.

von Werner (desedo54)


Lesenswert?

Erst nochmal Danke für die Unterstützung.
Ich habe als Adhoc-Lösung jetzt erst einmal GND, TX und RX von dem 
USB-Serial CH340 abgezwackt und mit dem "Flashboard" verbunden. Damit 
konnte ich den zuletzt vorbereiteten ESP-12F mit der Tasmota-Software 
erfolgreich flashen. Der andere macht weiter Probleme, aber 
wahrscheinlich habe ich den bei irgendeiner Aktion "kaputtgespielt".
Den PL2303 schaue ich mir mal an und werde in bei passender Gelegenheit 
besorgen.

Die beiden erfolgreich geflashten ESP-12 (E+F) werde ich im nächsten 
Schritt mit den NRF24l01+ verbinden. Kann ich zu dem Thema auch Fragen 
hier im Forum stellen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.