netcoast.ch - Projekte aus der echten Welt in der virtuellen Welt

Inhaltsverzeichnis

Min

Einleitung

Ich teile dieses Thema in 3 Abschnitte auf:
1. Abschnitt: ESP8266-01 über den Serial Monitor der Arduino IDE direkt mit AT-Befehlen ansprechen, konfigurieren und Daten verarbeiten.
2. Abschnitt: ESP8266-01 über SoftwareSerial mit dem Arduino verbinden und Daten verarbeiten.
3. Abschnitt: Firmware vom ESP flashen (wenn nötig).

Es empfiehlt sich jewils die Anweisungen genau durchzulesen, wenn man etwas weglässt, sucht man dann stundenlang nach Fehler die keine sind...

Schema direkte Verbindung ESP8266-01 (ESP-01) und Arduino / andere Hersteller ohne SoftwareSerial mit AT Befehlen

Dieses Beispiel zeigt eine Test-Basiskonfiguration, in der wir einfach mit dem ESP8266-01 über die Arduino IDE kommunizieren möchten.
Hier fungiert der Arduino lediglich als Adapter, deshalb ist der Reset mit Ground verbunden und RX mit RX und TX mit TX (normalerweise wären diese ja gekreuzt):

Ich verzichte hier absichtlich auf einen Logic-Level-Shifter, trotz der 3.3V / 5V Problematik.
Alternativ kann auch der Programmer CH340G oder ein FTDI Programmer wie der YP-05 (Achtung hier würden RX und TX gekreuzt werden) verwendet werden.

ESP8266-01 mit AT Befehle über den Seriellen Monitor betreiben

Verbindung mit dem ESP-01 über den Seriellen Monitor herstellen und über AT Befehle einrichten (Einführung)

Bei diesem Vorgehen wird auf dem Arduino noch kein Sketch ausgeführt, er wird lediglich als Adapter für die Verbindung vom PC zum ESP8266-01 genutzt.
Voraussetzung dazu:
1. Das Bare-Minimum (leeres Sketch) ist auf dem Arduino geladen.
2. Reset und GND vom Arduino sind verbunden.

Alternativ funktionieren diese Beispiele auch mit einem CH340G Programmer oder YP-05 FTDI Programmer.
Die Verkablung gemäss oben (bei dem YP-05 FTDI Programmer wären aber TX und RX gekreuzt).
  1. Werkzeuge / Port -> Port wählen.
  2. Werkzeuge / Serieller Monitor öffnen
  3. Einstellung NL und CL einstellen
  4. BAUD-Rate bestimmen, Standard ist 115200 Baud, ob das für euch stimmt, sieht man bei Schritt 5.
  5. AT -> Senden -> es muss ein OK zurückkommen, wenn kein OK kommt, wird die BAUD-Rate nicht stimmen.
    9600 Baud, 57600 Baud oder 74880 Baud sind die gängigsten. Sonst suchen bis gefunden.
    Kommt bei keine BAUD-Rate eine Antwort, nochmals die Verkabelung überprüfen und sonst das flashen der Firmware ins Auge fassen, da eventuell der AT-Befehlssatz fehlt.

Die AT Befehle werden immer in Kombination mit einem + ausgeführt.
Zum Beispiel: AT+CWMODE=1


AT+CWMODE - Einstellen ob der ESP als Client, Access Point oder beides arbeiten soll
Gesetzter Modus abfragen:
AT+CWMODE?
Modus setzen:
AT+CWMODE=1
  • STA = 1 -> Client-Modus (der ESP wird mit einem WLan-Router verbunden).
  • AP = 2 -> AccessPoint-Modus (der ESP wird als Server gestartet und andere Geräte können sich mit ihm verbinden).
  • Beides = 3 -> Arbeitet zum einen als Client und als AccessPoint, der ESP erhält dann zwei IP-Adressen.
AT+CWJAP - Sich als Client mit einem WLan verbinden
AT+CWJAP="<SSID>","<Passwort>"
AT+CIFSR - IP-Adresse vom ESP anzeigen.
AT+CIFSR
Hier wird dann die IP-Adresse(n) vom ESP ausgegeben.
Je nach gewähltem CWMODE eine oder zwei.

Grundsätzlich ist hier die Basiskonfiguration eingerichtet und der ESP8266-01 kann verwendet werden.

Basis AT Befehle

Befehl Beschreibung
AT Testet gestartetes AT.
Antwort: OK
AT+RST Neustart vom Modul.
Antwort: OK
AT+GMR Zeigt die Versionsinformation.
Antwort: AT-Version, SDK-Version, Kompilationszeit.
AT+GSLP Startet den Deep-Sleep Modus.
AT+RESTORE Setzt die Werkseinstellungen.
Antwort: OK, der Chip wird automatisch neugestartet, wenn der Befehl ausgeführt wurde.
AT+UART_CUR Aktuelle UART Konfiguration.
AT+UART_DEF Gespeicherte UART Konfiguration im Flashspeicher.
AT+UART_DEF?
Antwort:+UART_DEF:<baudrate>,<databits>,<stopbits>,<parity>,<flow control>OK
AT+UART_DEF=9600,8,1,0,0
Antwort: OK
AT+SLEEP Schlafmodus konfigurieren.
AT+WAKEUPGPIO GPIO-PIN für das Aufwachen aus dem leichten Schlafmodus.
AT+SYSRAM Zeigt die aktuell verfügbare RAM-Grösse.
AT+SYSRAM?
Antwort:SYSRAM:XY
AT+SYSIOSETCFG Setzt Konfiguration von IO Pin.
AT+SYSIOGETCFG Holt Konfiguration von IO Pin.
AT+SYSGPIODIR Setzt die Richtung vom IO Pin.
AT+SYSGPIOWRITE Setzt den GPIO Output-Level.
AT+SYSGPIOREAD Holt den GPIO Input-Level.
AT+SYSMSG_CUR Setzt aktuelle Systemmeldungen.
AT+SYSMSG_DEF Holt aktuelle Systemmeldungen.

Mit dem ESP-01 über den Seriellen Monitor mithilfe der AT Befehle Daten von einer Webseite einholen

Wichtig Bei dieser Variante über den Seriellen Monitor arbeiten wir ohne mitgeben von den "\r\n", aber es muss im Seriellen Monitor bei Zeilenende "Sowohl NL als auch CR" angewählt sein.
AT+CIPSTART="TCP","217.26.54.196",80
AT+CIPSEND=74
GET /ResponseTest/Antwort.html HTTP/1.0
Host: www.esp8266.netcoast.ch
Leere Zeile senden
oder:
AT+CIPSTART="TCP","www.esp8266.netcoast.ch",80
AT+CIPSEND=74
GET /ResponseTest/Antwort.html HTTP/1.0
Host: www.esp8266.netcoast.ch
Leere Zeile senden
  1. AT+CIPSTART="TCP","217.26.54.196",80 -> hiermit wird die Verbindung zum Server aufgebaut.
  2. AT+CIPSEND=74 -> hier teilen wir mit, wieviele Zeichen wir jetzt an den Server senden. GET... -> 40 Zeichen, Host...-> 30 Zeichen und die Leerzeile sind 4 Zeichen (\r\n\)
  3. GET /ResponseTest/Antwort.html HTTP/1.0
  4. Host: www.esp8266.netcoast.ch
  5. Noch eine Leerzeile senden (einfach auf Senden / Enter klicken)
Erklärung der Befehle:
AT+CIPSTART -> Verbindung zum Server, kann eine IP oder DNS sein.
AT+CIPSEND=-> Anzahl sendender Zeichen (Eine Leerzeile wird mit 4 Zeichen gezählt, da \r\n). (Zeile 1 = 40)+(Zeile 2 = 30)+(Zeile 3 = 4)=74
GET ... -> Der GET nach der Adresse.
HOST -> Hostname
Leere Zeile -> Diese muss gesendet werden, geht diese vergessen erhält man Fehlermeldungen.

Mit dem ESP-01 über den Seriellen Monitor mithilfe der AT Befehle Daten an eine Webseite senden (GET + POST)

GET-Variante
AT+CIPSTART="TCP","217.26.54.196",80
AT+CIPSEND=87 (->GET + HOST Zeichen + 4)
GET /ResponseTest/AntwortAktiv.php?NAME=Max HTTP/1.0
Host: www.esp8266.netcoast.ch
Leere Zeile senden
->Leerzeile zählt als 4 (\r\n)
Antwort: OK
Bei ERROR / CLOSED sollte die Verbindung zum AP kontrolliert werden.
Erklärung der Befehle:
AT+CIPSTART -> Verbindung zum Server, kann eine IP oder DNS sein.
AT+CIPSEND=-> Anzahl sendender Zeichen (Eine Leerzeile wird mit 4 Zeichen gezählt, da \r\n). (Zeile 1 = 53)+(Zeile 2 = 30)+(Zeile 3 = 4)=87
GET ... -> Der GET nach der Adresse mit den Variablen.
HOST -> Hostname
Leere Zeile -> Diese muss gesendet werden, geht diese vergessen erhält man Fehlermeldungen.


POST-Variante
AT+CIPSTART="TCP","217.26.54.196",80
AT+CIPSEND=165
POST /ResponseTest/AntwortAktiv.php HTTP/1.1
Host: www.esp8266.netcoast.ch
Content-Type: application/x-www-form-urlencoded
Content-Length: 14
Leere Zeile senden
VORNAME=Muster
Leere Zeile senden
->Leerzeile zählt als 4 (\r\n)

Erklärung der Befehle:
AT+CIPSTART -> Verbindung zum Server, kann eine IP oder DNS sein.
AT+CIPSEND=-> Anzahl sendender Zeichen (Eine Leerzeile wird mit 4 Zeichen gezählt, da \r\n). (Zeile 1 = 45)+(Zeile 2 = 30)+(Zeile 3 = 48)+(Zeile 4 = 19)+(Zeile 5 = 4)+(Zeile 6 = 15)+(Zeile 7 = 4)=165
POST ... -> Der POST nach der Adresse.
HOST -> Hostname
Content-Type -> Was für eine Art von Daten wir senden.
Content-Length -> Bezieht sich auf die zu sendenden Variablen und deren Inhalt (hier VORNAME).
Leere Zeile -> Diese muss gesendet werden, geht diese vergessen erhält man Fehlermeldungen.
VORNAME=Muster -> die Übermittelte(n) Variable(n). Leere Zeile -> Diese muss gesendet werden, geht diese vergessen erhält man Fehlermeldungen.

ESP8266-01 mit aktueller Firmware flashen

ESP8266-01 mit aktueller Firmware flashen über den Programmer CH340G

Das flashen der Firmware mit dem Programmer CH340G ziemlich einfach.
Wichtig ist dabei, dass die im Bild markierten Pins für das flashen überbrückt werden.
Dies habe ich einfach mit einem Reststück eines Widerstandbeins bewerkstelligt:

1. Tool herunterladen -> Flash Download Tools (ESP8266 & ESP32 & ESP32-S2) (Quelle: espressif.com -> Tools)
2. BIN herunterladen aktuelle Version ESP8266 NONOS SDK (Quelle espressif.com -> SDKs)
3. alles entpacken
4. Tool starten -> Developer Mode -> ESP8266 DownloadTool


5. Settings setzen

6. Readme unter ESP8266_NONOS_SDK-x.x.x\bin\at öffnen, Einträge könnten sich zu dieser Abbildung unterscheiden.
  boot_v1.2+.bin (oder aktueller) - 0x00000
  user1.1024.new.2.bin - 0x01000
  esp_init_data_default.bin - 0xfc000
  blank.bin - 0x7e000 & 0xfe000

7. Einträge übertragen

8. Board einstecken -> COM-Port wählen

9. Start und warten bis "FINISH" erscheint.



ESP8266-01 mit aktueller Firmware flashen über Arduino / MEGA


1. Tool herunterladen -> Flash Download Tools (ESP8266 & ESP32 & ESP32-S2) (Quelle: espressif.com -> Tools)
2. BIN herunterladen aktuelle Version ESP8266 NONOS SDK (Quelle espressif.com -> SDKs)
3. alles entpacken
4. Tool starten -> Developer Mode -> ESP8266 DownloadTool


5. Settings setzen

6. Readme unter ESP8266_NONOS_SDK-x.x.x\bin\at öffnen, Einträge könnten sich zu dieser Abbildung unterscheiden.
  boot_v1.2+.bin (oder aktueller) - 0x00000
  user1.1024.new.2.bin - 0x01000
  esp_init_data_default.bin - 0xfc000
  blank.bin - 0x7e000 & 0xfe000

7. Einträge übertragen

8. Board einstecken -> COM-Port wählen

9. Reset von ESP kurz auf LOW
10. Start und warten bis "FINISH" erscheint.



ESP8266-01 mit aktueller Firmware flashen über den Programmer YP-05 (FTDI)

Bei mir funktioniert das Flashen der Firmware, ich erhalte aber regelmässig beim Donwload-Prozess den Fehler "8-download data fail". Darauf gehe ich in der Beschreibung genauer ein.


Tipp: Einen Elektrolytkondensator mit 330 - 1000 µF zwischen VCC und GND.

1. Tool herunterladen -> Flash Download Tools (ESP8266 & ESP32 & ESP32-S2) (Quelle: espressif.com -> Tools)
2. BIN herunterladen aktuelle Version ESP8266 NONOS SDK (Quelle espressif.com -> SDKs)
3. alles entpacken
4. Tool starten -> Developer Mode -> ESP8266 DownloadTool


5. Settings setzen

6. Readme unter ESP8266_NONOS_SDK-x.x.x\bin\at öffnen, Einträge könnten sich zu dieser Abbildung unterscheiden.
  boot_v1.2+.bin (oder aktueller) - 0x00000
  user1.1024.new.2.bin - 0x01000
  esp_init_data_default.bin - 0xfc000
  blank.bin - 0x7e000 & 0xfe000

7. Einträge übertragen
8. RST auf GND (LOW) stecken

9. Board einstecken -> COM-Port wählen

10. Start -> Reset von ESP vom GND abziehen
11. ...warten bis "FINISH" erscheint.
Möglicherweise erscheint der Fehler "8-download data fail":

Dieser kommt bei mir regelmässig, meistens hat es dann im zweiten Durchlauf mit folgendem Vorgehen geklappt:
a) RST -> GND, b) RST wieder weg, c) RST -> GND d) Start e) nach 10 Sekunden im SYNC, RST wieder von GND weg ...


Designed & styled by slaps313