(77 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Der ESP8266 ist ein kleiner Chip von der chinesischen Firma Espressif der es ermöglicht die Daten die er an seiner seriellen empfängt über eine WLAN-Verbindung bereitzustellen. Dabei kann der Chip zum einem als Client als auch als Server | Der ESP8266 ist ein kleiner Chip (QFN32) von der chinesischen Firma Espressif der es ermöglicht die Daten die er an seiner seriellen Schnittstelle empfängt über eine WLAN-Verbindung bereitzustellen. Dabei kann der Chip zum einem als Client als auch als Server fungieren. Der Chip ist vergleichsweise neu und bietet eine gute Grundlage für eigene Projekte die eine Integration | ||
in ein WLAN benötigen. Der ESP8266 ist aktuell auf drei "Breakout Boards" (ESP-01, ESP-02 und ESP-03) anzutreffen. Die Unterscheidungsmerkmale der Breakoutboards sind nachfolgend unter [[ESP8266#Varianten | Varianten]] aufgeführt. | |||
== Hardware == | |||
Der ESP8266-Chip benötigt eine Versorgungsspannung von +3,3V. Die Eingänge sind <u>'''nicht'''</u> 5V tolerant und dürfen ausschließlich mit einer Spannung von +3,3V beaufschlagt werden. Der ESP8266 benötigt eine Spannungsversorgung von +3,3V die mindestens 300mA liefern kann, sollte es Probleme geben bei der Kommunikation sollte auf jedenfall zuerst die Spannungsversorgung überpüft werden. | |||
=== Eckdaten === | |||
Nachfolgend einige Eckdaten die dem englischsprachigen Datenblatt des ESP8266 entnommen wurden. | |||
* 802.11 b/g/n protocol | |||
* Wi-Fi Direct (P2P), soft-AP | |||
* Integrated TCP/IP protocol stack | |||
* Integrated TR switch, balun, LNA, power amplifier and matching network | |||
* Integrated PLL, regulators, and power management units | |||
* +19.5dBm output power in 802.11b mode | |||
* Integrated temperature sensor | |||
* Supports antenna diversity | |||
* Power down leakage current of < 10uA | |||
* Integrated low power 32-bit CPU could be used as application processor | |||
* SDIO 2.0, SPI, UART | |||
* STBC, 1×1 MIMO, 2×1 MIMO | |||
* A-MPDU & A-MSDU aggregation & 0.4µs guard interval | |||
* Wake up and transmit packets in < 2ms | |||
* Standby power consumption of < 1.0mW (DTIM3) | |||
=== Varianten === | |||
Der Chip ist bei allen Varianten der Breakout Boards der selbe, einzig die Anzahl der herausgeführten Signale, die Abmessungen und die Antenne unterscheiden sich zwischen den Varianten. | |||
== | '''ESP-01''' | ||
* Antenne auf Platine integriert | |||
* 8 Pin Stiftleiste (UART, GPIO0, GPIO2, RST, PD) | |||
* Baudrate: 115200 (8N1) | |||
* LEDs: Rot = Power, Blau = Aktivität | |||
* Firmware Update möglich | |||
* Größe: 14,5 x 24,8mm | |||
'''ESP-02''' | |||
* U-FL Anschluss für externe Antenne | |||
* 8 Pin Lötanschluss (UART, GPIO0, GPIO2, RST, PD) | |||
* Baudrate: 115200 (8N1) | |||
* LEDs: Rot = Power, Blau = Aktivität | |||
* Firmware Update möglich | |||
* Größe: 14,5 x 14,7mm | |||
'''ESP-03''' | |||
* Integrierte Keramik Antenne auf der Platine | |||
* Antennensignal auf Pin (ANT) | |||
* 14 Pin Lötanschluss (UART, GPIO0, GPIO2, GPIO12-GPIO15, GPIO18, ANT, RST, PD) | |||
* Baudrate: 115200 (8N1) | |||
* LEDs: Rot = Power, Blau = Aktivität | |||
* Firmware Update möglich | |||
* Größe: 17,4 x 12,2mm | |||
=== Pinbelegung === | === Pinbelegung === | ||
[[File:ESP8266_Pinout.png|240px|thumb|right]] | |||
{| class="wikitable" style="float:left; margin-right:1em" | {| class="wikitable" style="float:left; margin-right:1em" | ||
Line 34: | Line 87: | ||
=== Befehle === | === Befehle === | ||
Werden Befehle an das ESP8266 gesendet müssen diese zwingend mit einem <CR><LF> (<code>\r\n</code>) abgeschlossen werden um von dem ESP8266 erkannt zu werden. | |||
==== Allgemeine Befehle ==== | |||
Befehle die Informationen über das ESP8266 bereitstellen und zum setzen von globalen Einstellungen. | |||
{| class="wikitable" style="float:left; margin-right:1em" | |||
! Befehl || Beschreibung || Parameter || Beispiel | |||
|- | |||
| AT || Test-Befehl, gibt immer "OK" zurück wenn Verbindung besteht || || ''AT'' | |||
|- | |||
| AT+RST || Führ Reset durch || || ''AT+RST'' | |||
|- | |||
| AT+GMR || Gibt Firmware-Informationen aus || || ''AT+GMR'' | |||
|- | |||
| AT+CIOBAUD=<baud> || Ändern der Baudrate || <baud> = 9600,<br>19200,<br>38400,<br>57600,<br>74880,<br>115200,<br>230400,<br>460800,<br>921600 || ''AT+CIOBAUD=9600'' | |||
|- | |||
| AT+CSYSWDTENABLE || Watchdog starten || || ''AT+CSYSWDTENABLE'' | |||
|- | |||
| AT+CSYSWDTDISABLE || Watchdog beenden || || ''AT+CSYSWDTDISABLE'' | |||
|- | |||
| AT+<x>? || Gibt Wert aus auf dem <x> gesetzet ist || || ''AT+CIPMUX?'' | |||
|- | |||
| AT+<x>=<..> || Setze <x> auf Wert <..> || || ''AT+CWMODE=3'' | |||
|- | |||
| AT+<x>=? || Gibt Hilfe von <x> aus (Parameter, Wertebereich, ...) || || ''AT+CWJAP=?'' | |||
|- | |||
|} | |||
<div style="clear:both"></div> | |||
==== Allgemeine Wifi Befehle ==== | |||
Befehle zum setzen von allgemeinen Einstellungen für Verbindungen des ESP8266. | |||
{| class="wikitable" style="float:left; margin-right:1em" | |||
! Befehl || Beschreibung || Parameter || Beispiel | |||
|- | |||
| AT+CWMODE=<mode> || Setzt Wifi-Betriebsmodus || 1 = Client <br> 2 = AP <br> 3 = Client + AP || ''AT+CWMODE=3'' | |||
|- | |||
| AT+CIPMUX=<mode> || Einstellungen für mehrere Verbindungen || 0 = Einzelverbindung <br> 1 = mehrere Verbinungen || ''AT+CIPMUX=1'' | |||
|- | |||
| AT+CIPMODE=<mode> || Einstellen des Datenmodus || 0 = Transparent <br> 1 = Datenmodus || AT+CIPMODE=1 | |||
|- | |||
|} | |||
<div style="clear:both"></div> | |||
==== Client Wifi Befehle ==== | |||
Befehle bei der das ESP8266 als Client fungiert und eine Verbindung mit einem bestehenden WLAN-Netzwerk eingeht. | |||
{| class="wikitable" style="float:left; margin-right:1em" | |||
! Befehl || Beschreibung || Parameter || Beispiel | |||
|- | |||
| AT+CWJAP="<ssid>","<pass>" || Verbinden mit Wifi-Netzwerk (WLAN-Router) || <ssid> = SSID <br> <pass> = Password || ''AT+CWJAP="POLLOS","HEISENBERG"'' | |||
|- | |||
| AT+CWLAP || Ausgabe der zurzeit verfügbaren WLAN-Netzwerke || || ''AT+CWLAP'' | |||
|- | |||
| AT+CWQAP || Trennt verbindung zum WLAN-Netzwerk || || AT+CWQAP | |||
|- | |||
| AT+CIFSR || Ausgabe der eigenen IP-Adresse || || AT+CIFSR | |||
|- | |||
|} | |||
<div style="clear:both"></div> | |||
==== AP Wifi Befehle ==== | |||
Einrichten eines eigenen WLAN-Netzwerk mit dem ESP8266, das ESP8266 fungiert dann als Server. | |||
{| class="wikitable" style="float:left; margin-right:1em" | |||
! Befehl || Beschreibung || Parameter || Beispiel | |||
|- | |||
| AT+CWSAP="<ssid>","<pass>"[,<chan>,<enc>] || Einstellungen für das WLAN-Netzwerk || <ssid> = SSID <br> <pass> = Password <br> <chan> = Kanal 1...14 <br> <enc> = Verschlüsselung <br>(0 = Offen,<br>1 = WEP,<br>2 = WPA_PSK,<br>3 = WPA2_PSK,<br>4 = WPA_WPA2_PSK) || ''AT+CWSAP="POLLOS","HEISENBERG",1,3'' | |||
|- | |||
| AT+CWLAP || Ausgabe der zurzeit verfügbaren WLAN-Netzwerke || || ''AT+CWLAP'' | |||
|- | |||
| AT+CWLIF || Zeigt verbundene Client-PCs an || || AT+CWLIF | |||
|- | |||
|} | |||
<div style="clear:both"></div> | |||
==== Client IP Befehle ==== | |||
Befehle mit denen ein Datenaustausch zwischen dem Client (ESP8266) und einem Server, der einen Datenendpunkt darstellt, über das TCP oder UDP Protokoll eingegangen werden kann. | |||
{| class="wikitable" style="float:left; margin-right:1em" | |||
! Befehl || Beschreibung || Parameter || Beispiel | |||
|- | |||
| AT+CIPSTATUS || Ausgabe der Verbundenen IP (TCP/UDP, Id, Port) || || ''AT+CIPSTATUS'' | |||
|- | |||
| AT+CIPSTART="<type>","<address>",<port> || Aufbauen einer Einzelverbindung <br> (AT+CIPMUX=0) || <type> = TCP oder UDP <br> <address> = IP-Adresse <br> <port> = Port || ''AT+CIPSTART=“TCP”,”192.168.0.1”,666'' | |||
|- | |||
| AT+CIPSEND=<len> || Senden von Daten bei Einzelverbindung || <len> = Länge der Daten (byte) || ''AT+CIPSEND=5 <br> >Hallo'' | |||
|- | |||
| AT+CIPCLOSE || Schließen einer bestehenden TCP/UDP-Verbindung || || AT+CIPCLOSE | |||
|- | |||
| AT+CIPSTART="<type>","<address>",<port> || Aufbauen von mehreren Verbindungen <br> (AT+CIPMUX=1) || <type> = TCP oder UDP <br> <address> = IP-Adresse <br> <port> = Port || ''AT+CIPSTART=“TCP”,”192.168.0.1”,666'' | |||
|- | |||
| AT+CIPSEND=<id>,<len> || Senden von Daten bei mehreren Verbindungen || <id> = 0...4 <br> <len> = Länge der Daten (byte) || ''AT+CIPSEND=0,5 <br> >Hallo'' | |||
|- | |||
| AT+CIPCLOSE=<id> || Schließen einer definierten bestehenden TCP/UDP-Verbindung || || ''AT+CIPCLOSE=0'' | |||
|- | |||
|} | |||
<div style="clear:both"></div> | |||
==== Server IP Befehle ==== | |||
ESP8266 agiert als Server und empfingt Daten auf einem definierten Port. | |||
{| class="wikitable" style="float:left; margin-right:1em" | |||
! Befehl || Beschreibung || Parameter || Beispiel | |||
|- | |||
| AT+CIPSERVER=1[,<port>] || Startet einen TCP-Server || <port> = TCP-Port || ''AT+CIPSERVER=1,666'' | |||
|- | |||
| AT+CIPSERVER=0 || Beendet den TCP-Server || || ''AT+CIPSERVER=0'' | |||
|- | |||
| AT+CIPSTO=<timeout> || Setzt Timeout für TCP-Server Verbindungen || <timeout> = 0...28800s || AT+CWLIF | |||
|- | |||
|} | |||
<div style="clear:both"></div> | |||
=== Daten empfangen === | |||
Werden Daten über eine bestehende Verbindung mit dem ESP8266 empfangen, gibt es diese über die serielle Schnittstelle aus. | |||
{| class="wikitable" style="float:left; margin-right:1em" | |||
! Befehl || Beschreibung || Inhalt || Beispiel | |||
|- | |||
| +IPD,<len>:<data> || Empfange Daten bei Einzelverbindung (AT+CIPMUX=0) || <len> = Länge des empfangenen Datenpakets <br> <data> = Empfangene Daten als ASCII || ''+IPD,2:ON'' | |||
|- | |||
| +IPD,<id>,<len>:<data> || Empfange Daten bei mehreren Verbindungen (AT+CIPMUX=1) || <id> = ID der Verbindung 0..4 <br> <len> = Länge des empfangenen Datenpakets <br> <data> = Empfangene Daten als ASCII || ''+IPD,0,5:HALLO'' | |||
|- | |||
|} | |||
<div style="clear:both"></div> | |||
=== Firmware === | |||
Den Quellcode der Firmware des ESP8266(SDK) erhält man von dem Hersteller Esprssif, nachdem man eine Geheimhaltungserklärung unterschreiben hat. | |||
==== Update ==== | |||
Um das ESP8266 auf eine neue Firmware zu updaten muss wie folgt vorgegangen werden: | |||
# Zunächst prüfen ob eine serielle Verbindung mit dem ESP8266 funktioniert (Application Mode), dazu ESP8266 mit Spannung versorgen und die Pins mit folgenden Pegeln belegen<br> | |||
#:RST an VCC (+3,3V)<br> | |||
#:PD an VCC (+3,3V)<br> | |||
#:GPIO0 an VCC (+3,3V)<br> | |||
#:GPIO2 an VCC (+3,3V)<br> | |||
# Per serieller Verbindung "AT<CR><LF>" an das ESP8266 senden, dieses muss mit einem "OK<CR><LF>" antworten. Sollte das nicht funktionieren die Verbindung überprüfen (RXD und TXD müssen gekreuzt werden!! Baudrate: 115200 (alte Firmware: 57600) 8N1) | |||
# Aktuelle Versionsstände der auf dem ESP8266 befindlichen Firmware können über den Befehl "AT+GMR<CR><LF>" ermittelt werden. Das ESP8266 anwortet dann z.B. wie folgt: "00160901<CR><LF>". Dabei geben die ersten vier Zahlen den Verionsstand des SDK wieder (00.16) und die letzen vier Zahlen den Stand der AT-Befehle (0.9.0.1). | |||
# Zum flashen einer neuen Firmware den ESP8266 in den Flash Mode versetzen, durch setzen der Pegel auf:<br> | |||
#:RST an VCC (+3,3V)<br> | |||
#:PD an VCC (+3,3V)<br> | |||
#:GPIO0 an GND (0V)<br> | |||
#:GPIO2 an VCC (+3,3V)<br> | |||
# Die neue Firmware kann mit dem Tool XTCOM UTIL<ref>[http://www.electrodragon.com/w/File:XTCOM_UTIL.zip XTCOM_UTIL.zip]</ref> auf das ESP8266 geladen werden. Dazu das Programm "XTCOM_UTIL.exe" starten, über Tools-->Config Device den COM-Port und die Baudrate (115200) auswählen und auf Connect klicken. | |||
# Über API Test-->Flash Image Download das betreffende File auswählen (flash.bin bzw. rom.bin) und Adresse (flash.bin = 0x0000, rom.bin = 0x4000) an die das File geschreiben werden soll. Bei der aktuelllen AT Firmware (ver. 0.9.2.2<ref>http://www.electrodragon.com/w/File:V0.9.2.2_AT_Firmware.bin.zip</ref>) muss nur an die Adresse 0x0000 geschrieben werden! Die Baudrate liegt bei der aktuellen Version standardmäßig auf 9600. Dann auf "Download" klicken. | |||
Bei einer neueren Firmware (SDK:00.17 AT:0.9.0.1) gibt es die Möglichkeit ein Update über das Internet durchzuführen. Dazu muss wie folgt vorgegangen werden: | |||
# Setzen des ESP8266 in den Client oder Client+AP Mode | |||
#: AT+CWMODE=3<CR><LF> | |||
# Durchführen eines Neustart | |||
#: AT+RST<CR><LF> | |||
# Verbindung zu einem bestehenden WLAN-Netzwerk aufbauen um eine Verbindung mit dem INternet zu ermöglichen | |||
#: AT+CWJAP="ssid","yourpasswd"<CR><LF> | |||
# Überprüfen ob das ESP8266 erfolgreich eine IP-Adresse von dem WLAN-Router beziehen konnte (DHCP) | |||
#: AT+CIFSR<CR><LF> | |||
# Updateprozess beginnen | |||
#: AT+CIUPDATE<CR><LF> | |||
ESP8266 gibt bei erfolgreichen Update die folgenden Meldungen aus: | |||
: +CIPUPDATE:1 found server | |||
: +CIPUPDATE:2 connect server | |||
: +CIPUPDATE:3 got edition | |||
: +CIPUPDATE:4 start start | |||
: OK | |||
Sollte es zu einem Fehler kommen wird der Updateprozess beendet und ERROR ausgegeben. | |||
== Ein-/Ausgabe == | |||
=== Reset === | |||
<pre> | |||
AT+RST<\r><\r><\n> | |||
<\r><\n> | |||
OK<\r><\n> | |||
<\r><\n> | |||
ets Jan 8 2013,rst cause:4, boot mode:(3,0)<\r><\n> | |||
<\r><\n> | |||
wdt reset<\r><\n> | |||
load 0x40100000, len 24444, room 16 <\r><\n> | |||
tail 12<\r><\n> | |||
chksum 0xe0<\r><\n> | |||
ho 0 tail 12 room 4<\r><\n> | |||
load 0x3ffe8000, len 3168, room 12 <\r><\n> | |||
tail 4<\r><\n> | |||
chksum 0x93<\r><\n> | |||
load 0x3ffe8c60, len 4956, room 4 <\r><\n> | |||
tail 8<\r><\n> | |||
chksum 0xbd<\r><\n> | |||
csum 0xbd<\r><\n> | |||
<\r><\n> | |||
ready<\r><\n> | |||
</pre> | |||
== Fehlersuche == | |||
'''Kommunikation mit ESP8266 geht nicht'''<br> | |||
PD auf +3,3V (PowerDown inaktiv)<br> | |||
RXD und TXD kreuzen (TXD --> RXD, RXD --> TXD)<br> | |||
ESP8266 mit Spannung +3,3V versorgen<br> | |||
<br> | |||
'''ESP8266 startet Bootloader und bricht dann mit "fatal exception" ab'''<br> | |||
Versorgungsspannung nicht ausreichend<br> | |||
Spannungsquelle liefert nicht genug Strom?<br> | |||
Versrgungsspannung unsauber<br> | |||
'''Einstellungen werden durch ESP8266 nicht übernommen'''<br> | |||
Wenn Einstellungen nicht übernommen werden AT+RST ausgeführen um die Einstellungen zu aktivieren<br> | |||
== Quellen == | |||
[[File:ESP8266_Specifications_English.pdf]] <br> | |||
[https://www.mikrocontroller.net/articles/ESP8266 ESP8266-Wiki auf mikrocontroller.net] <br> | |||
[https://www.mikrocontroller.net/topic/342240 Thread zum ESP8266 auf mikrocontroller.net] <br> | |||
[http://playground.boxtec.ch/doku.php/wireless/esp8266 ESP8266 WiFi Module (boxtec.ch)] <br> | |||
[http://shop.boxtec.ch/esp8266-wifi-transceiver-modul-esp01-p-42143.html ESP8266 ESP-01 (boxtec.ch)] <br> | |||
[http://shop.boxtec.ch/esp8266-wifi-transceiver-modul-esp02-p-42187.html ESP8266 ESP-02 (boxtec.ch)] <br> | |||
[http://shop.boxtec.ch/esp8266-wifi-transceiver-modul-esp03-p-42188.html ESP8266 ESP-03 (boxtec.ch)] <br> | |||
[http://hackaday.com/2016/09/09/overhauling-the-esp8266s-flash-memory-handling/ Overhauling The ESP8266’s Flash Memory Handling] | |||
== Einzelnachweise == | |||
<references> |
Latest revision as of 10:06, 22 January 2017
Der ESP8266 ist ein kleiner Chip (QFN32) von der chinesischen Firma Espressif der es ermöglicht die Daten die er an seiner seriellen Schnittstelle empfängt über eine WLAN-Verbindung bereitzustellen. Dabei kann der Chip zum einem als Client als auch als Server fungieren. Der Chip ist vergleichsweise neu und bietet eine gute Grundlage für eigene Projekte die eine Integration in ein WLAN benötigen. Der ESP8266 ist aktuell auf drei "Breakout Boards" (ESP-01, ESP-02 und ESP-03) anzutreffen. Die Unterscheidungsmerkmale der Breakoutboards sind nachfolgend unter Varianten aufgeführt.
Hardware
Der ESP8266-Chip benötigt eine Versorgungsspannung von +3,3V. Die Eingänge sind nicht 5V tolerant und dürfen ausschließlich mit einer Spannung von +3,3V beaufschlagt werden. Der ESP8266 benötigt eine Spannungsversorgung von +3,3V die mindestens 300mA liefern kann, sollte es Probleme geben bei der Kommunikation sollte auf jedenfall zuerst die Spannungsversorgung überpüft werden.
Eckdaten
Nachfolgend einige Eckdaten die dem englischsprachigen Datenblatt des ESP8266 entnommen wurden.
- 802.11 b/g/n protocol
- Wi-Fi Direct (P2P), soft-AP
- Integrated TCP/IP protocol stack
- Integrated TR switch, balun, LNA, power amplifier and matching network
- Integrated PLL, regulators, and power management units
- +19.5dBm output power in 802.11b mode
- Integrated temperature sensor
- Supports antenna diversity
- Power down leakage current of < 10uA
- Integrated low power 32-bit CPU could be used as application processor
- SDIO 2.0, SPI, UART
- STBC, 1×1 MIMO, 2×1 MIMO
- A-MPDU & A-MSDU aggregation & 0.4µs guard interval
- Wake up and transmit packets in < 2ms
- Standby power consumption of < 1.0mW (DTIM3)
Varianten
Der Chip ist bei allen Varianten der Breakout Boards der selbe, einzig die Anzahl der herausgeführten Signale, die Abmessungen und die Antenne unterscheiden sich zwischen den Varianten.
ESP-01
- Antenne auf Platine integriert
- 8 Pin Stiftleiste (UART, GPIO0, GPIO2, RST, PD)
- Baudrate: 115200 (8N1)
- LEDs: Rot = Power, Blau = Aktivität
- Firmware Update möglich
- Größe: 14,5 x 24,8mm
ESP-02
- U-FL Anschluss für externe Antenne
- 8 Pin Lötanschluss (UART, GPIO0, GPIO2, RST, PD)
- Baudrate: 115200 (8N1)
- LEDs: Rot = Power, Blau = Aktivität
- Firmware Update möglich
- Größe: 14,5 x 14,7mm
ESP-03
- Integrierte Keramik Antenne auf der Platine
- Antennensignal auf Pin (ANT)
- 14 Pin Lötanschluss (UART, GPIO0, GPIO2, GPIO12-GPIO15, GPIO18, ANT, RST, PD)
- Baudrate: 115200 (8N1)
- LEDs: Rot = Power, Blau = Aktivität
- Firmware Update möglich
- Größe: 17,4 x 12,2mm
Pinbelegung
Pin-Nr. | Name | Bemerkung |
---|---|---|
1 | GND | Masse |
2 | TXD | Daten senden (max. 3,3V) |
3 | GPIO2 | Ein- / Ausgangspin |
4 | PD | Abschalten (low = aktiv) |
5 | GPIO0 | Ein- / Ausgangspin |
6 | RST | Reset (low = aktiv) |
7 | RXD | Daten empfangen (max. 3,3V) |
8 | VCC | Versorgungsspannung 3,3V (max. 3,6V) |
Software
Befehle
Werden Befehle an das ESP8266 gesendet müssen diese zwingend mit einem <CR><LF> (\r\n
) abgeschlossen werden um von dem ESP8266 erkannt zu werden.
Allgemeine Befehle
Befehle die Informationen über das ESP8266 bereitstellen und zum setzen von globalen Einstellungen.
Befehl | Beschreibung | Parameter | Beispiel |
---|---|---|---|
AT | Test-Befehl, gibt immer "OK" zurück wenn Verbindung besteht | AT | |
AT+RST | Führ Reset durch | AT+RST | |
AT+GMR | Gibt Firmware-Informationen aus | AT+GMR | |
AT+CIOBAUD=<baud> | Ändern der Baudrate | <baud> = 9600, 19200, 38400, 57600, 74880, 115200, 230400, 460800, 921600 |
AT+CIOBAUD=9600 |
AT+CSYSWDTENABLE | Watchdog starten | AT+CSYSWDTENABLE | |
AT+CSYSWDTDISABLE | Watchdog beenden | AT+CSYSWDTDISABLE | |
AT+<x>? | Gibt Wert aus auf dem <x> gesetzet ist | AT+CIPMUX? | |
AT+<x>=<..> | Setze <x> auf Wert <..> | AT+CWMODE=3 | |
AT+<x>=? | Gibt Hilfe von <x> aus (Parameter, Wertebereich, ...) | AT+CWJAP=? |
Allgemeine Wifi Befehle
Befehle zum setzen von allgemeinen Einstellungen für Verbindungen des ESP8266.
Befehl | Beschreibung | Parameter | Beispiel |
---|---|---|---|
AT+CWMODE=<mode> | Setzt Wifi-Betriebsmodus | 1 = Client 2 = AP 3 = Client + AP |
AT+CWMODE=3 |
AT+CIPMUX=<mode> | Einstellungen für mehrere Verbindungen | 0 = Einzelverbindung 1 = mehrere Verbinungen |
AT+CIPMUX=1 |
AT+CIPMODE=<mode> | Einstellen des Datenmodus | 0 = Transparent 1 = Datenmodus |
AT+CIPMODE=1 |
Client Wifi Befehle
Befehle bei der das ESP8266 als Client fungiert und eine Verbindung mit einem bestehenden WLAN-Netzwerk eingeht.
Befehl | Beschreibung | Parameter | Beispiel |
---|---|---|---|
AT+CWJAP="<ssid>","<pass>" | Verbinden mit Wifi-Netzwerk (WLAN-Router) | <ssid> = SSID <pass> = Password |
AT+CWJAP="POLLOS","HEISENBERG" |
AT+CWLAP | Ausgabe der zurzeit verfügbaren WLAN-Netzwerke | AT+CWLAP | |
AT+CWQAP | Trennt verbindung zum WLAN-Netzwerk | AT+CWQAP | |
AT+CIFSR | Ausgabe der eigenen IP-Adresse | AT+CIFSR |
AP Wifi Befehle
Einrichten eines eigenen WLAN-Netzwerk mit dem ESP8266, das ESP8266 fungiert dann als Server.
Befehl | Beschreibung | Parameter | Beispiel |
---|---|---|---|
AT+CWSAP="<ssid>","<pass>"[,<chan>,<enc>] | Einstellungen für das WLAN-Netzwerk | <ssid> = SSID <pass> = Password <chan> = Kanal 1...14 <enc> = Verschlüsselung (0 = Offen, 1 = WEP, 2 = WPA_PSK, 3 = WPA2_PSK, 4 = WPA_WPA2_PSK) |
AT+CWSAP="POLLOS","HEISENBERG",1,3 |
AT+CWLAP | Ausgabe der zurzeit verfügbaren WLAN-Netzwerke | AT+CWLAP | |
AT+CWLIF | Zeigt verbundene Client-PCs an | AT+CWLIF |
Client IP Befehle
Befehle mit denen ein Datenaustausch zwischen dem Client (ESP8266) und einem Server, der einen Datenendpunkt darstellt, über das TCP oder UDP Protokoll eingegangen werden kann.
Befehl | Beschreibung | Parameter | Beispiel |
---|---|---|---|
AT+CIPSTATUS | Ausgabe der Verbundenen IP (TCP/UDP, Id, Port) | AT+CIPSTATUS | |
AT+CIPSTART="<type>","<address>",<port> | Aufbauen einer Einzelverbindung (AT+CIPMUX=0) |
<type> = TCP oder UDP <address> = IP-Adresse <port> = Port |
AT+CIPSTART=“TCP”,”192.168.0.1”,666 |
AT+CIPSEND=<len> | Senden von Daten bei Einzelverbindung | <len> = Länge der Daten (byte) | AT+CIPSEND=5 >Hallo |
AT+CIPCLOSE | Schließen einer bestehenden TCP/UDP-Verbindung | AT+CIPCLOSE | |
AT+CIPSTART="<type>","<address>",<port> | Aufbauen von mehreren Verbindungen (AT+CIPMUX=1) |
<type> = TCP oder UDP <address> = IP-Adresse <port> = Port |
AT+CIPSTART=“TCP”,”192.168.0.1”,666 |
AT+CIPSEND=<id>,<len> | Senden von Daten bei mehreren Verbindungen | <id> = 0...4 <len> = Länge der Daten (byte) |
AT+CIPSEND=0,5 >Hallo |
AT+CIPCLOSE=<id> | Schließen einer definierten bestehenden TCP/UDP-Verbindung | AT+CIPCLOSE=0 |
Server IP Befehle
ESP8266 agiert als Server und empfingt Daten auf einem definierten Port.
Befehl | Beschreibung | Parameter | Beispiel |
---|---|---|---|
AT+CIPSERVER=1[,<port>] | Startet einen TCP-Server | <port> = TCP-Port | AT+CIPSERVER=1,666 |
AT+CIPSERVER=0 | Beendet den TCP-Server | AT+CIPSERVER=0 | |
AT+CIPSTO=<timeout> | Setzt Timeout für TCP-Server Verbindungen | <timeout> = 0...28800s | AT+CWLIF |
Daten empfangen
Werden Daten über eine bestehende Verbindung mit dem ESP8266 empfangen, gibt es diese über die serielle Schnittstelle aus.
Befehl | Beschreibung | Inhalt | Beispiel |
---|---|---|---|
+IPD,<len>: | Empfange Daten bei Einzelverbindung (AT+CIPMUX=0) | <len> = Länge des empfangenen Datenpakets = Empfangene Daten als ASCII |
+IPD,2:ON |
+IPD,<id>,<len>: | Empfange Daten bei mehreren Verbindungen (AT+CIPMUX=1) | <id> = ID der Verbindung 0..4 <len> = Länge des empfangenen Datenpakets = Empfangene Daten als ASCII |
+IPD,0,5:HALLO |
Firmware
Den Quellcode der Firmware des ESP8266(SDK) erhält man von dem Hersteller Esprssif, nachdem man eine Geheimhaltungserklärung unterschreiben hat.
Update
Um das ESP8266 auf eine neue Firmware zu updaten muss wie folgt vorgegangen werden:
- Zunächst prüfen ob eine serielle Verbindung mit dem ESP8266 funktioniert (Application Mode), dazu ESP8266 mit Spannung versorgen und die Pins mit folgenden Pegeln belegen
- RST an VCC (+3,3V)
- PD an VCC (+3,3V)
- GPIO0 an VCC (+3,3V)
- GPIO2 an VCC (+3,3V)
- RST an VCC (+3,3V)
- Per serieller Verbindung "AT<CR><LF>" an das ESP8266 senden, dieses muss mit einem "OK<CR><LF>" antworten. Sollte das nicht funktionieren die Verbindung überprüfen (RXD und TXD müssen gekreuzt werden!! Baudrate: 115200 (alte Firmware: 57600) 8N1)
- Aktuelle Versionsstände der auf dem ESP8266 befindlichen Firmware können über den Befehl "AT+GMR<CR><LF>" ermittelt werden. Das ESP8266 anwortet dann z.B. wie folgt: "00160901<CR><LF>". Dabei geben die ersten vier Zahlen den Verionsstand des SDK wieder (00.16) und die letzen vier Zahlen den Stand der AT-Befehle (0.9.0.1).
- Zum flashen einer neuen Firmware den ESP8266 in den Flash Mode versetzen, durch setzen der Pegel auf:
- RST an VCC (+3,3V)
- PD an VCC (+3,3V)
- GPIO0 an GND (0V)
- GPIO2 an VCC (+3,3V)
- RST an VCC (+3,3V)
- Die neue Firmware kann mit dem Tool XTCOM UTIL[1] auf das ESP8266 geladen werden. Dazu das Programm "XTCOM_UTIL.exe" starten, über Tools-->Config Device den COM-Port und die Baudrate (115200) auswählen und auf Connect klicken.
- Über API Test-->Flash Image Download das betreffende File auswählen (flash.bin bzw. rom.bin) und Adresse (flash.bin = 0x0000, rom.bin = 0x4000) an die das File geschreiben werden soll. Bei der aktuelllen AT Firmware (ver. 0.9.2.2[2]) muss nur an die Adresse 0x0000 geschrieben werden! Die Baudrate liegt bei der aktuellen Version standardmäßig auf 9600. Dann auf "Download" klicken.
Bei einer neueren Firmware (SDK:00.17 AT:0.9.0.1) gibt es die Möglichkeit ein Update über das Internet durchzuführen. Dazu muss wie folgt vorgegangen werden:
- Setzen des ESP8266 in den Client oder Client+AP Mode
- AT+CWMODE=3<CR><LF>
- Durchführen eines Neustart
- AT+RST<CR><LF>
- Verbindung zu einem bestehenden WLAN-Netzwerk aufbauen um eine Verbindung mit dem INternet zu ermöglichen
- AT+CWJAP="ssid","yourpasswd"<CR><LF>
- Überprüfen ob das ESP8266 erfolgreich eine IP-Adresse von dem WLAN-Router beziehen konnte (DHCP)
- AT+CIFSR<CR><LF>
- Updateprozess beginnen
- AT+CIUPDATE<CR><LF>
ESP8266 gibt bei erfolgreichen Update die folgenden Meldungen aus:
- +CIPUPDATE:1 found server
- +CIPUPDATE:2 connect server
- +CIPUPDATE:3 got edition
- +CIPUPDATE:4 start start
- OK
Sollte es zu einem Fehler kommen wird der Updateprozess beendet und ERROR ausgegeben.
Ein-/Ausgabe
Reset
AT+RST<\r><\r><\n> <\r><\n> OK<\r><\n> <\r><\n> ets Jan 8 2013,rst cause:4, boot mode:(3,0)<\r><\n> <\r><\n> wdt reset<\r><\n> load 0x40100000, len 24444, room 16 <\r><\n> tail 12<\r><\n> chksum 0xe0<\r><\n> ho 0 tail 12 room 4<\r><\n> load 0x3ffe8000, len 3168, room 12 <\r><\n> tail 4<\r><\n> chksum 0x93<\r><\n> load 0x3ffe8c60, len 4956, room 4 <\r><\n> tail 8<\r><\n> chksum 0xbd<\r><\n> csum 0xbd<\r><\n> <\r><\n> ready<\r><\n>
Fehlersuche
Kommunikation mit ESP8266 geht nicht
PD auf +3,3V (PowerDown inaktiv)
RXD und TXD kreuzen (TXD --> RXD, RXD --> TXD)
ESP8266 mit Spannung +3,3V versorgen
ESP8266 startet Bootloader und bricht dann mit "fatal exception" ab
Versorgungsspannung nicht ausreichend
Spannungsquelle liefert nicht genug Strom?
Versrgungsspannung unsauber
Einstellungen werden durch ESP8266 nicht übernommen
Wenn Einstellungen nicht übernommen werden AT+RST ausgeführen um die Einstellungen zu aktivieren
Quellen
File:ESP8266 Specifications English.pdf
ESP8266-Wiki auf mikrocontroller.net
Thread zum ESP8266 auf mikrocontroller.net
ESP8266 WiFi Module (boxtec.ch)
ESP8266 ESP-01 (boxtec.ch)
ESP8266 ESP-02 (boxtec.ch)
ESP8266 ESP-03 (boxtec.ch)
Overhauling The ESP8266’s Flash Memory Handling
Einzelnachweise
<references>