(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
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
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)...
>> 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.
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 ;)
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.
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).
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?
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.
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