Forum: Mikrocontroller und Digitale Elektronik nodeMCU: Probleme bei Einrichtung


von Ben S. (ben_s414)


Angehängte Dateien:

Lesenswert?

(Bild: https://i.imgur.com/pvOMq3P.jpg)

Hallo,

trotz diverser Tutorials im Netz komme ich einfach nicht weiter mit 
meinen nodeMCUs.
Beide vorhandenen Geräte habe ich als Bild angehängt. Der erste Gerät 
(links) wurde schon vor geraumer Zeit bei irgend einem Asiashop bestellt 
(Vorgangsweise siehe unten). Nachdem ich damit nicht weiter kam, habe 
ich das zweite Gerät (rechts) bei einem deutschen Shop bestellt; klar, 
das muss nicht heißen, dass es sich nicht auch ggf. um einen Nachbau 
handelt, ich wollte aber wenigstens schnelle Lieferzeit haben, um weiter 
Testen zu können.

I. Gerät

1. per USB an Macbook: kein Erfolg
2. per Arduino Mega an Macbook: Zugriff möglich, aber Arduino IDE wollte 
nicht so ganz
3. per USB an Laptop mit ~Ubuntu: Esplorer kann auf Gerät zugreifen, 
Flashen per esptool funktioniert
---> das Gerät war noch mit der originalen AT Firmware bestückt. Ich 
habe recht schnell nodeMCU geflasht, kompiliert wurde die Firmware über 
einen Online-Generator (1. Versuch zu viele Module, zweiter Versuch 
"Standard Auswahl" der Module)

Ergebnis: Firmware anscheinend vollständig installiert. Trotzdem erkennt 
ESplorer die Firmware nicht ("Can't autodetect firmware, because proper 
answer not received. Please, reset module or continue.")
Die Verbindung mit meinem WLAN lies sich allerdings anscheinend 
herstellen. Es wurde eine IP vergeben, in der Fritzbox tauchte das Gerät 
mit eigener IP auf. Korrekte IP, korrektes Subnetz, korrekter Gateway. 
Lässt sich über ESPlorer auch anzeigen. ABER: das Gerät kann nicht 
angepingt werden, bzw. der Pingvorgang verläuft sehr strange... anstatt 
diverse fehlerhafte Versuche anzuzeigen, bleibt der erste Ping einfach 
stehen, bis ich mit Strg+C abbreche. Erst dann sehe ich die 100% package 
loss.
Normalerweise kenne ich es so, dass ping entweder erfolgreiche, oder 
eben fehlerhafte Pingversuche hintereinander anzeigt, bis man abbricht 
(oder die Anzahl halt vorher festgelegt wurde).

Lua Webserver als Beispieldatei funktioniert nicht bzw. nur halb (auf 
das Gerät kann nicht zugegriffen werden, trotz korrekter IP, Port 80).

Lua Testscript zum blinken der LED funktioniert nicht.

Nun dachte ich, dass ich mit der Firmware bestimmt einfach irgendwie die 
Konfiguration zerschossen habe, oder sonstwie einen Fehler gemacht habe 
(ich bin Anfänger auf diesem Gebiet). Also zweites Modul zum Testen 
bestellt.

II. Gerät
Kam gerade an. Keine Verbindung per Macbook möglich.

Verbindung über ~Ubuntu via /dev/tty.USB0 möglich. AT Firmware war noch 
installiert. Auch hier konnte die Version nicht angezeigt werden, 
Meldung von ESPlorer wie oben.

Ein paar Tests gemacht, alle scheinen funktioniert zu haben (APs 
anzeigen, AP verbinden, ...). Alles via AT statt nodeMCU bzw. lua. So 
weit, so gut. Gerät wird in der FB angezeigt. Korrekte IP. Im ESPlorer 
zeigt das Gerät korrekte IP, korrektes Subnetz, korrekten Gateway an. 
Super.
Ping wieder nicht möglich. Gleicher Fehler.
**KORREKTUR**: ich schreibe schon seit mindestens 20 Minuten an diesem 
Beitrag. Eben testweise noch mal gepingt, JETZT wird das Gerät 
komischerweise erkannt (Pings erfolgreich, 3 packets transmitted, 3 
packets received, 0% package loss).

Wie soll ich nun weiter vorgehen? Wieder versuchen, nodeMCU / lua zu 
installieren? Bei AT bleiben?

Ich möchte mit dem Gerät übrigens eine WLAN Klingel bauen. Will heißen, 
Taster an das Gerät, bei Tastendruck soll per WLAN ein Signal 
abgeschickt werden, welches mich per Smartphone benachrichtig, dass 
geklingelt wurde (ist aktuell mit einem Pythonscript auf dem Raspberry 
Pi gelöst, welches per Telegram API eine Benachrichtigung losschickt; 
das Script kann ggf. per TCP Befehl getriggert werden, falls der nodeMCU 
per TCP an den Pi kommt, das muss ich noch recherchieren).

Hauptfrage ist jetzt: was mache ich, damit sich alles einrichten lässt? 
Mit AT komme ich wohl nicht weit. Neue Firmware flashen macht mir ein 
bisschen Sorgen, da es bei dem ersten Gerät ja nicht so ganz geklappt zu 
haben scheint. Mircopython hatte ich auch kurz auf dem ersten Gerät 
installiert, das mir insofern hilft, dass ich mit Python wenigstens 
vertraut bin (im Gegensatz zu lua).

Sorry, ist wahrscheinlich alles ein Witz und totales Anfängerproblem, 
aber ich bin auch kein Profi und hoffe, dass mir hier trotzdem jemand 
weiterhelfen kann =)

Vielen Dank im Voraus und LG

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

bisher war auf allen NodeMCU-Boards NodeLUA installiert, mit AT-Software 
waren nur die Einzel-ESP-Module bestückt.

Einerseits schreibst Du, daß Du Mircopython drauf hattest, also hast Du 
doch eine neue Firmware geflasht?

Das ESplorer die installeirte Firmware meist nicht erkennt, kenne ich. 
Wundert mich auch nicht direkt, es hängt ja ausschließlich von der 
Firmware ab, wie diese sich zu erkennen gibt und ein "Standard" ist mir 
da beim ESP nicht bekannt. Standard ist nur der Bootloader im Rom des 
ESP.

Deine Beschreibung verwirrt mich also etwas...

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Meine nodeMCU kamen auch immer(!) mit der AT-Firmware. Egal nodemcu aus 
dem online Generator geflasht, Version wird nicht erkannt, geht aber 
trotzdem.

von Ben S. (ben_s414)


Lesenswert?

Also der gesamte Ablauf ist etwas komisch...
1
PORT OPEN 11520
2
3
Communication with MCU..

Nichts passiert. RST Button auf MCU gedrückt:
1
Communication with MCU..Got answer! Communication with MCU established.
2
3
AutoDetect firmware...
4
5
Can't autodetect firmware, because proper answer not received (may be unknown firmware).
6
Please, reset module or continue.
7
(unkenntliche Zeichenkette)
8
9
ready
10
WIFI CONNECTED
11
WIFI GOT IP

Wenn ich über die Terminal-Eingabe in ESPlorer nun ein einfach "AT" 
eingebe, erscheint
1
AT
2
AT
3
4
OK

Ein lua-Befehl, z.B. "=wifi.ap.getip()" erzeugt diese Ausgabe
1
=wifi.ap.getip()
2
=wifi.ap.getip()
3
ERROR

Daher gehe ich davon aus, dass die NodeLUA Firmware nicht, oder nicht 
korrekt, installiert ist.

Der Webserver lässt sich nicht starten (AT+CIPSERVER=1,80)
1
ERROR

AT+CIPSTATUS
STATUS:2

AT+CIPMODE?
+CIPMODE:0

Es wundert mich ein bisschen, dass beide Geräte weder im Originalzustand 
(2. Gerät, AT Firmware), noch nach dem Flashen (1. Gerät, NodeLUA) die 
tatsächliche Firmware erkennen können. Selbst, wenn ich beim Flashen 
einen Fehler gemacht habe, sollte die originale AT-Firmware doch erkannt 
werden..?

Auf dem Gerät steht zwar, dass man statt in 115200 zuerst in 9600 BAUD 
verbinden soll, dann bekomme ich aber gar keine lesbaren Zeichen.

Ich hab jetzt praktisch nur die Möglichkeit, testweise NodeLUA zu 
flashen. Da ich aber mit dem vorherigen Gerät damit auch keinen Erfolg 
habe, sträube ich mich noch ein wenig davor. So wie Gerät 2 jetzt ist, 
ist es zumindest noch im Originalzustand (von dem ich nicht weiß, wie 
ich ihn nach einem falschen Flashvorgang exakt wiederherstellen 
könnte)...

von Joachim S. (oyo)


Lesenswert?

Ben S. schrieb:
>
1
> AT
2
> AT
3
> 
4
> OK
5
>
>
> Ein lua-Befehl, z.B. "=wifi.ap.getip()" erzeugt diese Ausgabe
>
1
> =wifi.ap.getip()
2
> =wifi.ap.getip()
3
> ERROR
4
>
>
> Daher gehe ich davon aus, dass die NodeLUA Firmware nicht, oder nicht
> korrekt, installiert ist.

Ja, das spricht dafür, dass da die AT-Firmware drauf ist.

> Es wundert mich ein bisschen, dass beide Geräte weder im Originalzustand
> (2. Gerät, AT Firmware), noch nach dem Flashen (1. Gerät, NodeLUA) die
> tatsächliche Firmware erkennen können. Selbst, wenn ich beim Flashen
> einen Fehler gemacht habe, sollte die originale AT-Firmware doch erkannt
> werden..?

Vergiss die Firmware-Erkennung von ESPlorer einfach. Ich glaube, die 
Firmware-Erkennung von ESPlorer hat bei mir noch absolut nie, nicht ein 
einziges Mal, funktioniert. Ich habe daher mittlerweile in den Optionen 
von ESPlorer die Firmware-Erkennung einfach deaktiviert. Ich weiss 
ehrlich gesagt eh nicht, was die überhaupt bringen soll...

> Auf dem Gerät steht zwar, dass man statt in 115200 zuerst in 9600 BAUD
> verbinden soll, dann bekomme ich aber gar keine lesbaren Zeichen.

Ist offenbar auch falsch; sowohl NodeMCU als auch AT-Firmware arbeiten 
m.W.n. mittlerweile standardmässig mit 115200.

>
> Ich hab jetzt praktisch nur die Möglichkeit, testweise NodeLUA zu
> flashen. Da ich aber mit dem vorherigen Gerät damit auch keinen Erfolg
> habe, sträube ich mich noch ein wenig davor. So wie Gerät 2 jetzt ist,
> ist es zumindest noch im Originalzustand (von dem ich nicht weiß, wie
> ich ihn nach einem falschen Flashvorgang exakt wiederherstellen
> könnte)...

Stattdessen hast Du jetzt irgendeine unbekannte AT-Firmware drauf, was 
wohl auch nicht das Wahre ist.
Meines Wissens nach gilt nämlich als Faustregel, dass die ab Werk 
installierte AT-Firmware eh ersetzt werden sollte, weil da je nach 
Herstellungsdatum etc. nicht immer die gleiche Version der AT-Firmware 
drauf ist, und die verschiedenen Versionen der AT-Firmware teilweise 
inkompatibel sind.
Selbst wenn man tatsächlich die AT-Firmware benutzen will, macht es also 
Sinn, eine bestimmte (üblicherweise wohl: die neueste) Version der 
AT-Firmware zu flashen.
Die findest Du offenbar hier:
https://github.com/espressif/ESP8266_NONOS_SDK/tree/master/bin/at_sdio
...zusammen mit Hinweisen, an welche Adresse die einzelnen Dateien 
geflasht werden müssen.

Ohne Gewähr, da ich die AT-Firmware noch nie selbst benutzt habe.

Als ersten Test kannst Du wohl bei der AT-Firmware bleiben, aber auf 
Dauer scheint dann doch fast jeder auf Arduino-IDE/C oder NodeMCU/LUA 
umzusteigen.
Bzgl. des Umstands, dass Deine LUA-Test-Scripte nicht funktioniert 
haben, würde ich tendenziell am ehesten darauf tippen, dass die Scripte 
eben irgendeinen Fehler hatten, und es eher nicht an der Hardware oder 
der Firmware lag.

von Ben S. (ben_s414)


Lesenswert?

Vielen Dank für die Tipps.

Ich muss bei dem Versuch, neu zu Flashen, nun einen großen Fehler 
gemacht haben, denn unter jeglicher Baudrate kommen nur noch unlesbare 
Zeichenketten.
Sowohl per direktem Zugriff (screen /dev/ttyUSB0 <baudrate>), als auch 
über ESPlorer.

Da ich kein Windows Gerät habe (mit dem man sich das Flashen wohl 
erheblich vereinfachen könnte), bin ich jetzt etwas aufgeschmissen. 
Erneutes Flashen bringt gar nichts, da ich immer wieder nur unleserliche 
Zeichen bekommen.

Werde es parallel nun mal mit einem ESP-201 probieren. Davon fliegt hier 
eh ein halbes Dutzend rum, wenn ich da einen kaputtspiele, ist es nur 
halb so wild ;)

von Stefan F. (Gast)


Lesenswert?

Der Mikrocontroller im ESP Modul hat einen seriellen Bootloader, der 
durch die richtige Kombination von High/Low Pegeln an GPIO0, GPIO2 und 
GPIO15 gefolgt von einem einen Hardware Reset aktiviert wird. Der 
Bootloader ist unveränderlich, er kann nicht kaputt geflsht werden.

Dieses Bootloader sprichst du am besten mit dem alten pyhton Script 
"esptool,py" an, denn das funktioniert im Gegensatz zu allen GUI's die 
ich ausprobiert habe zuverlässig.

Folge den Anleitungen auf dieser Seite, ich bin sicher, dass du deine 
Module damit wieder an Laufen bekommst: 
http://stefanfrings.de/esp8266/index.html

> Windows Gerät .. (mit dem man sich das Flashen wohl erheblich
> vereinfachen könnte)

Nein im Gegenteil. Windows zickt bei seriellen USB Geräten sehr viel 
häufiger als Linux.

Übrigens: Auch bei mir funktioniert die Versionserkennung im ESPlorer 
nicht. Aber das ist egal, ignoriere die Fehlermeldung einfach.

von Ben S. (ben_s414)


Lesenswert?

Ha! Mit der verlinkten Anleitung bin ich nun soweit, dass ich 
tatsächlich die AT Firmware flashen und endlich! testweise den HTTP 
Server aufsetzen konnte. Riesigen Dank =)

Ich werde nach der Anleitung nun einmal probieren, die node Firmware zu 
flashen. Dann sollte ja auch das Abrufen eines angeschlossenen Taster ja 
auch kein Hexenwerk mehr sein.

NACHTRAG: also die über den Online Generator erstellte LUA Firmware 
lässt sich auf dem 2. Gerät trotzdem nicht flashen, bzw. egal, wie ich 
es anstelle, es kommen nur unleserliche Zeichen. Beim 1. Gerät läuft die 
AT Firmware fehlerfrei, sodass ich nun darüber versuchen werde, das 
Gerät weiter meinen Anforderungen anzupassen (sofern überhaupt möglich).

: Bearbeitet durch User
von Ben S. (ben_s414)


Lesenswert?

Langsam glaube ich, auf der Beziehung zwischen mir und dem node liegt 
ein Fluch :D

Um jetzt ein wenig produktiver arbeiten zu können, habe ich noch einmal 
probiert, das Gerät am Mac anzuschließen, statt über den (leider 
kleinen) Ubuntu Laptop zu arbeiten. Naja:
- CH340G Treiber installiert
- Arduino Software geladen
- Zusätzliche Funktionien für nodeMCU installiert

Jetzt kann ich mich über tty.wchusbserial142130 verbinden. Die serielle 
Schnittstelle zeigt auf dem Macbook aber nur mit Baud 74880 lesbare 
Zeichen an (alle Modi ausgetestet, sämtliche anderen zeigen nur 
Kauderwelsch)

CoolTerm bietet 74889 Baud nicht an, dort kann ich ebenfalls keine 
lesbaren Zeichen erzeugen. Also zurück zur Arduino IDE:
1
 ets Jan  8 2013,rst cause:2, boot mode:(3,7)
2
3
load 0x4010f000, len 1384, room 16 
4
tail 8
5
chksum 0x2d
6
csum 0x2d
7
v09f0c112
8
~ld

AT macht gar nichts. Anpingen unter der bekannten IP funzt noch.

Ich habe jetzt einen Taster und eine LED angeschlossen, nach folgendem 
Schema

3V -> Breadboard PLUS
G -> Breadboard MINUS
D2 -> Taster (l)

Taster (r) -> Breadboard PLUS
Taster (l) -> LED
(und Taster (l) -> D2)
LED -> Breadboard MINUS

Ich möchte nun eigentlich nur noch soweit kommen, dass ich beim Drücken 
des Tasters eine URL per cURL aufrufen* (bzw. alternativ einen Befehl* 
an eine vordefinierte IP Adresse sende).

*Schema cUrl 
https://api.telegram.org/bot'+apiKey+'/sendMessage?chat_id='+each+'&text='+message
(hier müsste ich dann noch %message mit Uhrzeit und String definieren 
können)

**und zwar an einen Raspberry Pi. Sollte ich hier einen TCP Befehl 
senden? Oder einfach einen bestimmten Port anpingen, den der Pi erkennt 
und daraufhin einen Befehl ausführt?
(wäre vermutlich simpler, wenn der Pi auf einen Befehl wartet, woraufhin 
er das Script triggert? Oder ruhig direkt über nodeMCU laufen lassen?)

Ist das für jemanden wie mich (=offensichtlich gerade etwas wenig 
Durchblick) machbar?

von Joachim S. (oyo)


Lesenswert?

Ben S. schrieb:
> Jetzt kann ich mich über tty.wchusbserial142130 verbinden. Die serielle
> Schnittstelle zeigt auf dem Macbook aber nur mit Baud 74880 lesbare
> Zeichen an (alle Modi ausgetestet, sämtliche anderen zeigen nur
> Kauderwelsch)
>
> CoolTerm bietet 74889 Baud nicht an, dort kann ich ebenfalls keine
> lesbaren Zeichen erzeugen. Also zurück zur Arduino IDE:
>
>
1
>  ets Jan  8 2013,rst cause:2, boot mode:(3,7)
2
> 
3
> load 0x4010f000, len 1384, room 16
4
> tail 8
5
> chksum 0x2d
6
> csum 0x2d
7
> v09f0c112
8
> ~ld
9
>
>
> AT macht gar nichts. Anpingen unter der bekannten IP funzt noch.

Für den Fall, dass Dir das bislang nicht bewusst ist:

Der ESP8266 sendet nach jedem Reset als erstes eine kurze Status-Ausgabe 
wie die obige, und zwar stets mit dem besagten 74880 Baud, und 
unabhängig von der konkret verwendeten Firmware/Software.

Die eigentliche Software/Firmware, die nach dem Reset/Booten ausgeführt 
wird, benutzt hingegen fast nie 74880 Baud, sondern üblicherweise 
115200.
In der Praxis führt das dazu, dass man fast unweigerlich zumindest ein 
paar unlesbare Zeichen bekommt, egal, welche Baudrate man einstellt:
- Wenn man 74880 einstellt, dann kann man zwar die obige Status-Ausgabe 
lesen, die bei jedem Reset gesendet wird - dafür kann man nicht mit der 
eigentlichen Firmware kommunzieren, die üblicherweise halt eine andere 
Baudrate benutzt
- Wenn man hingegen die korrekte Baudrate einstellt, die die Firmware 
benutzt, dann kann man erfolgreich mit der Firmware kommunzieren - dafür 
wird die nach jedem Reset gesendete, ein paar hundert Zeichen lange 
Status-Ausgabe halt nur als unleserliche Zeichen angezeigt

Fazit: Bei 74880 Baud kannst Du zwar die Status-Ausgabe lesen, aber mehr 
auch nicht; 74880 ist mit ziemlicher Sicherheit die falsche Baudrate. 
Die aktuellen Versionen sowohl der AT- als auch NodeMCU-/LUA-Firmware 
benutzen meines Wissens nach standardmässig 115200.

von Stefan F. (Gast)


Lesenswert?

Jepp, das kann ich 100% bestätigen. Du hast gar nichts falsch gemacht, 
diese Dinger verhalten sich einfach so seltsam. Würgs as designed.

von Ben S. (ben_s414)


Lesenswert?

Ach so... also nicht ganz ausgereiftes Design (oder hat das irgend einen 
tieferen Sinn?) :D

Nachdem ich die Klingel nun erfolgreich gebastelt habe (leider mit 
Pushover statt Telegram Benachrichtigung), es aber mit der 
Stromversorgung draußen etwas hapert, habe ich das Projekt noch einmal 
komplett neu aufgezogen: Beitrag "mumbi m-TG102 "smarte" Türklingel bauen"

LG

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.