Forum: Mikrocontroller und Digitale Elektronik Probleme mit NodeMCU clones (lolin wemos V3.0)


von esp32-Bastler (Gast)


Lesenswert?

Hallo,

ich habe hier 5 NodeMCU clones aus drei verschiedenen Quellen vor mir 
liegen, die alle die gleichen Probleme haben. Beschriftet sind alle drei 
auf der Rückseite mit: "wemos.cc LoLin new NodeMcu V3"

Ich kann alle sowohl mit der NodeMcu-Firmware als auch mit der aktuellen 
MicroPython-Firmware flashen, die --verify-Option teilt mir auch mit, 
dass alles OK ist.
1
esptool.py --port COM21 --baud 460800  erase_flash
2
esptool.py v1.2.1
3
Connecting...
4
Running Cesanta flasher stub...
5
Erasing flash (this may take a while)...
6
Erase took 10.2 seconds
7
8
esptool.py --port COM21 --baud 460800  write_flash --verify --flash_mode qio --flash_size 32m --flash_freq 40m  0x00000000  nodemcu-master.bin
9
esptool.py v1.2.1
10
Connecting...
11
Running Cesanta flasher stub...
12
Flash params set to 0x0040
13
Writing 458752 @ 0x0... 458752 (100 %)
14
Wrote 458752 bytes at 0x0 in 10.7 seconds (344.5 kbit/s)...
15
Leaving...
16
Verifying just-written flash...
17
Verifying 0x6f603 (456195) bytes @ 0x00000000 in flash against nodemcu-master-12-modules-2016-11-23-12-42-57-integer.bin...
18
-- verify OK (digest matched)

Jedoch kann ich auf keines der Boards zugreifen.  Der Zustand hängt von 
der verwendeten Firmware ab.

Nach einem Erase_Flash bleiben die Boards im Flash-Modus, der COM-Port 
ist im OS (Linux und Windows) verfügbar.

Wenn danach Micropyton geflasht wird, meldet sich das Board nach einem 
Reset nicht mehr zurück, es wird kein COM-Port mehr erkannt, es sei 
denn, man drückt wieder Reset und den Flash-Button.

Wenn NodeMCU geflasht wird, meldet sich das Board wieder mit einem 
COM-Port zurück, die blaue LED auf dem eigentlichen ESP-Modul beginnt 
hektisch zu blinken.  Auf dem COM-Port bekommt man mit den üblichen 
Baudraten jedoch nur Müll zu sehen.  Wenn man den COM-Port jedoch auf 
unübliche 78440 8N1 setzt, bekommt man fortlaufend folgenden Output:
1
 ets Jan  8 2013,rst cause:2, boot mode:(3,4)
2
3
load 0x40100000, len 24104, room 16 
4
tail 8
5
chksum 0x83
6
load 0x3ffe8000, len 2264, room 0 
7
tail 8
8
chksum 0xb2
9
load 0x3ffe88d8, len 8, room 0 
10
tail 8
11
chksum 0x76
12
csum 0x76
13
rf_cal[0] !=0x05,is 0xFF

Recherchen zeigen, dass 78440 baud wohl die originale Boot-Datenrate 
eines ESP8266 sind.  Mein Eindruck ist, dass nach dem Flashen der Chip 
in einem Endlos-Loop hängt.

Sobald ich die Firmware auf ein Witty-Modul oder einen Wemos D1 oder 
einen Wemos D1 mini (alle auch mit CH360 Chipset) flashe, läuft die 
Firmware ohne Probleme.

Das Resultat ist unabhängig von USB-Kabeln, Betriebssystem und Rechner 
immer identisch.  Die genannten Vergleichsboards funktionieren unter 
allen getesteten Kombinationen.

Hat jemand irgendwelche weiteren Ideen?

von Joachim S. (oyo)


Lesenswert?

Was für ein Firmware-Image ist das genau? Hast Du Dir das von 
https://nodemcu-build.com/ erzeugen lassen?

Wenn Du magst, kannst Du es mal testweise mit diesem Firmware-Image 
probieren:
https://github.com/oyooyo/nodemcu-firmware/raw/uuid.space-dev/bin/nodemcu-firmware.bin
und diesem Kommando:
1
esptool.py --port COM21 --baud 115200  write_flash --verify --flash_mode qio --flash_size 32m --flash_freq 80m  0x00000000 nodemcu-firmware.bin

Damit flashe ich meine NodeMCU DevKit v3 und hatte bislang noch nie 
Probleme.

EDIT: Ah, das Problem liegt offenbar eher daran:
http://nodemcu.readthedocs.io/en/master/en/flash/#upgrading-firmware
Du musst die Datei esp_init_data_default.bin entpacken und flashen.

War bei mir bislang noch nie nötig, aber ich habe auch noch nie einen 
erase_flash gemacht.

von esp32-Bastler (Gast)


Lesenswert?

Danke für die Hinweise, hab das auch mal ausprobiert.  Sowohl die 
angegebene Firmware als auch das zusätzliche Flashen von 
esp_init_data_default.bin helfen leider nicht.

Bislang habe ich auch nie ein esp_init_data_default.bin geflasht, und 
prinzipiell das Flash gelöscht, da dies zum Flashen von Micropython 
empfohlen wird und die ESPs haben alle getan.

von Joachim S. (oyo)


Lesenswert?

esp32-Bastler schrieb:
> Danke für die Hinweise, hab das auch mal ausprobiert.  Sowohl die
> angegebene Firmware als auch das zusätzliche Flashen von
> esp_init_data_default.bin helfen leider nicht.
>
> Bislang habe ich auch nie ein esp_init_data_default.bin geflasht, und
> prinzipiell das Flash gelöscht, da dies zum Flashen von Micropython
> empfohlen wird und die ESPs haben alle getan.

Schade, dann fällt mir auf die Schnelle nix mehr ein, was Du probieren 
könntest.
Schon merkwürdig, das Ganze. Wenn das jetzt nur bei einem Board 
aufgetreten wäre, könnte man das ja noch mit einem defekten Board 
erklären. Aber bei fünf Boards aus drei verschiedenen Quellen kann das 
ja eigentlich nicht sein... Ich selbst habe auch gleich mehrere dieser 
"LoLin v3"-Boards, die funktionieren allesamt einwandfrei.

von esp32-Bastler (Gast)


Lesenswert?

Noch ein Ergebnis:

Ich kann die Boards mit der Arduino-IDE programmieren (Blink-Sketch, 
basic Access-Point) und sehe die onboard LED (pin2) blinken, bzw. die 
SSID des Accesspoints.

Allerdings ist in diesen Fällen der COM-Port auch nicht verfügbar.

Der Blink-Sketch läuft nicht, sobald ich im Blink-Loop eine serielle 
Ausgabe versuche. In dem Fall passiert einfach nichts.

Bin etwas ratlos. Es scheint eher ein Problem mit dem Initialisieren der 
seriellen Schnittstelle sein.

von Dirk K. (dekoepi)


Lesenswert?

Meine Lolin V3 zeigen solch ein Verhalten nicht. Lassen sich ganz normal 
mit aktueller NodeMCU-Firmware flashen. Das wird ja aber auch nur via 
dem eingebauten USB-zu-Seriell-Wandler direkt an das ESP8266-Board 
durchgereicht.

Hast du deine Firmware mal mit einem zB FTDI-USB-zu-Seriell-Wandler 
direkt an einem ESP-12E/F probiert? Klingt ein wenig so, also ob die 
Firmwares einen Hau weg haben.

von Esp32-bastler (Gast)


Lesenswert?

Dirk K. schrieb:
> Hast du deine Firmware mal mit einem zB FTDI-USB-zu-Seriell-Wandler
> direkt an einem ESP-12E/F probiert? Klingt ein wenig so, also ob die
> Firmwares einen Hau weg haben

Wie im Eingangspost geschrieben, laufen die verwendeten Firmwares auf 
drei anderen Boards. An der Firmware an sich kann es daher nicht liegen:
> Sobald ich die Firmware auf ein Witty-Modul oder einen Wemos D1
> oder einen Wemos D1 mini (alle auch mit CH360 Chipset) flashe,
> läuft die Firmware ohne Probleme.

von esp32-Bastler (Gast)


Lesenswert?

Nochmals Hallo,

ich bin am Überlegen, was eigentlich die Ursache sein kann, dass der 
COM-Port während des Flashens zu 100% verfügbar ist, sobald die CPU 
jedoch die Firmware startet verschwindet.

Wenn ich einen externen USB-Adapter verwende, ist der COM-Port sofort 
verfügbar, sobald der Adapter in den USB-Port des Rechners gesteckt 
wird.  Es spielt dabei keine Rolle, ob TX und RX angeschlossen sind, und 
welche Baudrate der angeschlossene Microcontroller verwendet, oder ob 
die Pins überhaupt als Schnittstelle verwendet werden.

Hier meldet sich der CH340 nur dann am Computer an, wenn der 
dahinterliegende Mikrocontroller im Flash-Mode ist, sobald der eine 
Firmware startet, verschwindet der COM-Port.  Sobald der Controlle in 
den Reset geht (auch noch bevor der Flash-Mode startet!), erscheint die 
serielle Schnittstelle.

von Sven L. (svenni77)


Lesenswert?

Hallo,

ich habe scheinbar ein ähnliches Problem. Mein LoLin-Modul zeigt immer 
nur

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 27064, room 16
tail 8
chksum 0xef
load 0x00000000, len 0, room 0
tail 0
chksum 0xef
load 0x00000000, len 0, room 8
tail 0
chksum 0xef
csum 0xef
csum err

an und bootet auch nicht vernünftig hoch. Hast Du das Problem lösen 
können?

von Sven L. (svenni77)


Lesenswert?

Das Problem habe ich doch relativ schnell beheben können und wollte - 
der Vollständigkeit halber - mein Ergebnis für die Nachwelt festhalten. 
Im Internet findet man diverse angefangene Threads, aber eine direkte 
Lösung habe ich nicht gefunden. Aus Zeitgründen konnte ich bisher noch 
nicht die Ursache eingrenzen, insofern schreibe ich einfach, was ich 
geändert habe:

1. Aus Bequemlichkeit habe ich zuerst die esptool.exe benutzt und im 
Laufe der Fehlersuche dann auf das python-Script gewechselt.
2. Beim Aufstarten der AT-Kommando-Firmware habe ich folgendes entdeckt:

2nd boot version : 1.5
  SPI Speed      : 40MHz
  SPI Mode       : DIO
  SPI Flash Size & Map: 32Mbit(512KB+512KB)
jump to run user1 @ 1000

Also habe ich dem python-Script noch den Parameter --flash_mode dio 
mitgegeben.

3. Die Flash-Frequenz kann man ohne Probleme verringern, das habe ich 
sicherheitshalber mit dem Parameter --flash_freq 20m getan.

Danach ist die selbstgebaute NodeMcu-Firmware sofort und ohne Fehler im 
Bootloader aufgestartet.

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.