Hallo!
Ich habe ein ESP8266, aber ich bekomme es einfach nicht zum laufen. Das
Empfangen von Daten funktioniert tadelos, das senden jedoch nicht.
Das ESP8266 bezieht seinen Strom von einem Elego Powerboard, welches per
Jumper auf 3.3V gepolt wurde.
Die Verkabelung sieht wie folgt aus:
ESP "3V3" auf Powerboard "+" (Gelbes Kabel)
ESP "EN" auf Powerboard "+" (Graues Kabel)
ESP "RX" auf USB Adapter "TX" (Gelbes Kabel)
ESP "TX" auf USB Adapter "RX" (Graues Kabel)
ESP "GND" auf Powerboard "-" (Blaues Kabel)
Ich weiß das die Farben der Kabel etwas ungünstig gewählt wurde, hatte
jedoch auf die schnelle keine anderen da.
Wenn ich das Powerboard aktiviere, blinkt der ESP kurz blau auf.
Während des "Bootvorgangs" des ESP kann ich in dem Seriellen Monitor den
Bootloader Code auf 74880 Baud lesen.
Nach kurzer Zeit ist auf 115200 Baud der Hersteller Text sowie die Zeile
"Ready" zu erkennen.
Über RX Empfange ich problemlos Nachrichten.
Wenn ich jetzt aber versuche den Befehl "AT" zu senden, passiert gar
nichts. Habe bereits verschiedene Programme versucht wie z.b. Putty und
Term 1.9b und habe auch bereits alle Baud Arten im Testverfahren
durchprobiert, jedoch war der TX Counter immer auf 0 und ich war nicht
in der Lage einen Befehl zu senden.
Habe auch schon probiert TX und RX auf dem Arduino selbst als Träger zu
verwenden, jedoch tritt hier das gleiche Problem auf.
Wenn ich den Port I00 an GND anklemme, leuchtet die blaue LED dauerhaft,
jedoch kann ich immer noch keine Befehle senden.
Habe auch test weise mit verschiedenen Tools versucht ein Firmware
Update aufzuspielen, jedoch schlug auch dieser Datentransfer fehl.
Laut dem Bootloader Code ist eine Firmware von März 2016 vorinstalliert.
Ist der ESP einfach nur defekt oder habe ich etwas falsch gemacht?
Gruß Patrick
Ein Fehler, der mir zumindest gleich in's Auge gesprungen ist:
Du hast die GND-Leitung vom USB-UART-Wandler nicht verbunden, die muss
aber natürlich mit GND vom ESP bzw. der "-"-Leitung vom Power-Board
verbunden werden.
Als Du "AT\r\n" geschickt hast - hast Du da auch sicher die
Steuerzeichen \r und \n geschickt? So richtig 100%ig schlau wurde ich
aus dem Screenshot diesbezüglich nicht.
Ansonsten könntest Du evtl. mal probieren, statt eines allgemeinen
Terminalprogramms die Software "ESPlorer" zu verwenden:
https://esp8266.ru/esplorer/
bzw. Direktdownload:
http://esp8266.ru/esplorer-latest/?f=ESPlorer.zip
Hier übrigens eine einfache Grafik aus dem ESP8266 Arduino-Repository,
wie das ESP-01-Modul verbunden werden sollte:
https://raw.githubusercontent.com/esp8266/Arduino/master/doc/ESP01_connect.jpg
Wobei Du da im Grunde schon fast alles richtig gemacht hast - DTR und
RTS sind zwar nicht verbunden, aber für einen reinen Funktionstest der
AT-Firmware sollten die ja auch nicht nötig sein.
Hallo Joachim! Danke für den Tipp mit dem ESPlorer! Endlich bekomme ich
nach über einer Woche experimentieren ein Signal von dem Modul.
Ich habe wirklich geglaubt das mein Modul defekt sein muss..
Allerdings verstehe ich nicht warum der ESP mit dem ESPlorer
funktioniert, mit Arduino IDE Putty Term 1.9b jedoch nicht. Hast du
eine Ahnung was ich falsch gemacht habe?
Gruß Patrick
Patrick schrieb:> Allerdings verstehe ich nicht warum der ESP mit dem ESPlorer> funktioniert, mit Arduino IDE Putty Term 1.9b jedoch nicht. Hast du> eine Ahnung was ich falsch gemacht habe?
Ich würde vermuten, dass es halt mit den Steuerzeichen \r und \n zu tun
hat, dass die aus irgendeinem Grund nicht richtig gesendet wurde. Ist
aber wirklich einfach rein geraten, so richtig plausibel erscheint es
mir nicht mal selbst... ;-)
> Da wird wohl keine Firmware drauf sein?
Nein, man sieht am Screenshot deutlich, dass die Firmware geladen wurde
und dass die Baudrate auch richtig eingestellt wurde:
1
#Ai-Thinker Technology Co. Ltd.
2
3
ready
Der Fehler ist auch offensichtlich:
1
AT\r\n
Du musst AT senden, gefolgt von einem Zeilenumbruch im DOS/Windows
Format. Das sind zwei Bytes, die dezimal dargestellt die Werte 13 und 10
haben. In C und vielen anderen Programmiersprachen werden sie im
Quelltext als "\r\n" geschrieben (escape-sequence). Sie werden in
Dokumentation oft auch als <CR><LF> geschrieben.
ASCII 13 = <CR> = Carriage Return = '\r' in C
ASCII 10 = <LF> = Line Feed = '\n' in C
[code]
send("AT\r\n")
[/coode]
Du hast aber aber nicht die beiden Steuerzeichen des DOS Zeilenumbruches
(=2 Bytes) gesendet, sondern vier sichtbare Zeichen.
Du musst dein Terminal so konfigurieren, dass es beim Drücken der Enter
Taste einen DOS Zeilenumbruch sendet. Und dann tippst du ein:
AT
und drückst dann die Enter Taste, nicht den Send Button.
Bei dem abgebildeten Terminalprogramm handelt es sich ja offenbar
hierum:
https://sites.google.com/site/terminalbpp/
Wenn ich die Dokumentation auf der Webseite richtig interpretiere, dann
muss man in diesem Programm für AT\r\n
1
AT$0D$0A
schreiben. Allerdings bin ich aus der Doku nicht ganz schlau geworden,
ob das bei diesem Programm nur für Makros gilt, oder grundsätzlich.
Stefan U. schrieb:> Du musst dein Terminal so konfigurieren, dass es beim Drücken der Enter> Taste einen DOS Zeilenumbruch sendet. Und dann tippst du ein:>> AT>> und drückst dann die Enter Taste, nicht den Send Button.
Korrekt. Alternativ geht es auch so:
AT <ENTER> <STRG-J>
Denn standardmäßig sendet die Enter-Taste in jeder gängigen
Terminal-Emulation nur ein CR (\r). Mit der Tastenkombination STRG-J
sendet man noch ein LF (\n) hinterher.
EDIT:
Ich verstehe absolut nicht, warum die AT-Firmware-Entwickler das
überhaupt geändert haben. Früher reichte beim ESP8266 das \r, also die
ENTER-Taste - genauso, wie es auch jede AT-Modem-Software vor 20 Jahren
gemacht hat. Warum diese Inkompatibilität? Oder war es eher Inkompetenz?
Guck Dir mal an, wie beim HC-05 Bluetooth Modul die Kommandos terminiert
werden - da waren die Entwickler noch "kreativer". Ich glaube, die
Chinesen habe ein "gutes" Kraut zum rauchen.
Stefan U. schrieb:> Guck Dir mal an, wie beim HC-05 Bluetooth Modul die Kommandos terminiert> werden - da waren die Entwickler noch "kreativer". Ich glaube, die> Chinesen habe ein "gutes" Kraut zum rauchen.
Wieso? Die Terminieren via Timeout. Das ist nicht so schlecht, höchstens
langsam. Die HC Module werden aber meist auch nur einmalig so
konfiguriert und dann im Betrieb nicht mehr.
Nur dumm, dass alle Kommandos ignoriert werden, wenn sie mit einem
Zeilenvorschub enden.
Einige Terminalprogramme können gar nicht ohne Zeilenvorschub senden,
das ist eine geniale Hürde für Einsteiger.