2016/09/09 18:52 1/13 ESP8266 WiFi Module ESP8266 WiFi Module Die ESP8266 Module von Espressif bieten eine sehr günstige Möglichkeit, Mikrokontroller Projekte mit Internet Verbindung zu erweitern. Die gute Reichweite, einfache Konfiguration und vor allem der niedrige Preis machen diese Module sehr attraktiv für IoT Projekte aller Art. Dadurch dass die Module erst seit sehr kurzem auf dem Markt sind, besteht noch sehr wenig Dokumentation, diese Seite soll bekannte Informationen zusammenführen. Anschlussbelegung / Pinout ESP8266 ESP8266 ESP-01 Label VCC GND TXD RXD Signal 3.3V (max 3.6V) Versorgungsspannung Ground Transmit Data (3.3V Pegel) Receive Data (3.3V Pegel!) Boxtec Playground - http://playground.boxtec.ch/ Last update: 2016/09/09 16:56 wireless:esp8266 http://playground.boxtec.ch/doku.php/wireless/esp8266 CH_PD Chip Power down: (LOW = Power down aktiv) GPIO0 General Purpose I/O 0 GPIO2 General Purpose I/O 2 RST Reset (LOW = Reset aktiv) ESP8266 ESP-02 Label Signal VCC 3.3V (max 3.6V) Versorgungsspannung GND Ground UTXD Transmit Data (3.3V Pegel) URXD Receive Data (3.3V Pegel!) GPI014 (CH_PD) Chip Power down: (LOW = Power down aktiv) GPIO0 General Purpose I/O 0 GPIO2 General Purpose I/O 2 RST Reset (LOW = Reset aktiv) ← ACHTUNG: Atkualisiertes Anschlussdiagramm! ESP8266 ESP-03 http://playground.boxtec.ch/ Printed on 2016/09/09 18:52 2016/09/09 18:52 3/13 ESP8266 WiFi Module Label Signal VCC 3.3V (max 3.6V) Versorgungsspannung GND Ground UTXD Transmit Data (3.3V Pegel) URXD Receive Data (3.3V Pegel!) CH_PD Chip Power down: (LOW = Power down aktiv) GPIO0 General Purpose I/O 0 GPIO2 General Purpose I/O 2 GPIO12 General Purpose I/O 12 GPIO13 General Purpose I/O 13 GPIO14 General Purpose I/O 14 GPIO15 General Purpose I/O 15 GPIO16 General Purpose I/O 16 (RESET) WIFI_ANT WiFi Antenna NC Not connected Standardbeschaltung des ESP-03 Moduls: VCC: 3.3V; GND: GND; CH_PD: 3.3V, GPIO15: GND; und gegbenfalls UTXD/URXD mit RX/TX des Host Microcontrollers. RESET: GPIO16 kann als RESET verwendet werden, nachdem auf dem ESP-03 Modul die im Bild markierte Lotbrücke geschlossen wurde. Boxtec Playground - http://playground.boxtec.ch/ Last update: 2016/09/09 16:56 wireless:esp8266 http://playground.boxtec.ch/doku.php/wireless/esp8266 Hinweis: Alle Eingänge des ESP8266 sind nicht 5V tolerant und dürfen ausschliesslich mit 3.3V betrieben werden. AT Kommandos ● ● ● ● ● Baudrate: normal 115200, Für Arduino 9600, alte Modelle 57600 Der AT Teil des Kommandos kann gross oder klein geschrieben werden, der nachfolgende Befehl muss jedoch immer gross geschrieben werden Achte darauf, dass vor, nach und innerhalb des Befehls keine Leerzeichen (Space) vorkommen AT-Kommandos müssen mit CR (\r\n) terminiert werden Settings zur WLAN Verbindung werden automatisch dauerhaft gespeichert und nach Reset wieder wirksam Allgemeine AT Kommandos AT Kommando Beschreibung Parameter Beispiel AT Test Kommando, gibt immer “OK” zurück AT Reset des Moduls, gibt Bootmeldungen des Moduls gefolgt von AT+RST AT+RST ready zurück AT+GMR Abfrage der Firmware Version AT+GMR WiFi AT Kommandos AT Kommando Parameter 1=Station AT+CWMODE=<mode> Setzen des WiFi Betriebsmodus1) 2=Access Point 3=Beides AT+CWMODE? Abfrage WiFi Betriebsmodus Abfrage möglicher AT+CWMODE=? Einstellungen für WiFi Betriebsmodus http://playground.boxtec.ch/ Beschreibung Beispiel AT+CWMODE=1 AT+CWMODE? AT+CWMODE=? Printed on 2016/09/09 18:52 2016/09/09 18:52 5/13 AT+CIPMUX=<mode> ESP8266 WiFi Module Verwenden mehrerer Verbindungen AT+CIPMODE=<mode> Einstellen des Datenmodus AT+CIPMODE? 0=Einzelverbindung 1=Mehrere Verbindungen 0=transparent 1=Daten Ausgabe des eingestellten Datenmodus AT+CIPMUX=1 AT+CIPMODE=1 AT+CIPMODE? WiFi Kommandos (Station / Client) AT Kommando Beschreibung Parameter Beispiel ssid: “SSID” Verbinden mit WiFi AT+CWJAP=<ssid>,<pass> pass: AT+CWJAP=“makerday”,”M4k3rd4y” Netzwerk “Passwort” Ausgabe des aktuell AT+CWJAP? AT+CWJAP? verbundenen WiFi Netzwerks Ausgabe der AT+CWLAP AT+CWLAP verfügbaren APs2) Trennt die AT+CWQAP Verbindung mit AT+CWQAP einem Access Point Ausgabe der AT+CIFSR AT+CIFSR eigenen IP Adresse WiFi Kommandos (Access Point) AT Kommando Beschreibung Setzen der Access Point Parameter3) Im Access-Point Modus hat das Modul die AT+CWSAP=<ssid>,<pass>[,<chan>,<enc>] IP-Adresse 192.168.4.1. Es weist DHCP Clients Adressen ab 192.168.4.100 zu. Ausgabe der aktuellen AT+CWSAP? Einstellungen für den AP Listet AT+CWLIF angeschlossenen Stations IPs4) Parameter Beispiel ssid: “SSID” pass: “Passwort” chan: “Kanal” enc: “Encryption” (0=Offen AT+CWSAP=“makerday”,”M4k3rd4y”,5,3 1=WEP 2=WPA_PSK 3=WPA2_PSK 4=WPA_WPA2_PSK) AT+CWSAP? AT+CWLIF WiFi Kommandos (IP Client) AT Kommando Boxtec Playground - http://playground.boxtec.ch/ Beschreibung Parameter Beispiel Last update: 2016/09/09 16:56 AT+CIPSTATUS wireless:esp8266 http://playground.boxtec.ch/doku.php/wireless/esp8266 Ausgabe Status der IP Verbindung(en) AT+CIPSTATUS type: “TCP” oder “UDP” Erstellen einer address: IP Verbindung AT+CIPSTART=<type>,<address>,<port> “IP-Adresse” AT+CIPSTART=“TCP”,”192.168.3.10”,3000 mit port: AT+CIPMUX=0 TCP/UDP Port Senden von Daten über len: AT+CIPSEND=4 AT+CIPSEND=<len> einzelne Datenlänge >9901 Verbindung5) Schliessen einer einzelnen AT+CIPCLOSE AT+CIPCLOSE TCP oder UDP Verbindung id: 0-4 type: “TCP” Erstellen einer oder “UDP” IP Verbindung address: AT+CIPSTART=<id>,<type>,<address>,<port> AT+CIPSTART=“TCP”,”192.168.3.10”,3000 mit “IP-Adresse” AT+CIPMUX=1 port: TCP/UDP Port Senden von id: 0-4 Daten über AT+CIPSEND=1,4 AT+CIPSEND=<id>,<len> len: merhere >9901 Datenlänge Verbindungen6) Schliessen einer von AT+CIPCLOSE=<id> mehreren TCP id: 0-4 AT+CIPCLOSE=1 oder UDP Verbindung WiFi Kommandos (IP Server) AT Kommando Beschreibung AT+CIPSERVER=1[,<port>] Startet den TCP Server AT+CIPSERVER=0 Beendet den TCP Server Setzt Timeout für TCP AT+CIPSTO=<timeout> Server Gibt Timeout für TCP AT+CIPSTO? Server aus Parameter port: Port Beispiel AT+CIPSERVER=1,8001 AT+CIPSERVER=0 timeout=0-28800s AT+CIPSTO=180 AT+CIPSTO? Wird ein IP Server gestartet, kann dieser max 5 gleichzeitige Verbindungen bearbeiten. Weitere Verbindungen können erstellt werden, werden jedoch erst bedient wenn andere geschlossen werden oder durch Timeout beendet werden. Alte Versionen (vermutlich bis 00150910) konnten auch UDP Verbindungen annehmen. Der IP Server in der aktuellen Firmware 0.40 und 0.50 unterstützt nur noch TCP. Auf dem Modul werden eingehende Daten direkt mit dem Prefix +IPD ausgegeben: +IPD,1,6:201.9 OK http://playground.boxtec.ch/ Printed on 2016/09/09 18:52 2016/09/09 18:52 7/13 ESP8266 WiFi Module +IPD,0,6:ON OK Die Ausgabe ist wie folgt aufgeteilt: +IPD,<id>,<len>,<data> Dabei ist id die ID der Verbindung (0-5), len die Länge des erhaltenen Datenpakets und data enthält die vom Client erhaltenen Daten. In obigem Beispiel sendet als zuerst die Verbindung 1 den Wert 201.9 und dann die Verbindung 0 den String ON Hinweis: Der IP-Server kann nur im Modus AT+CIPMUX=1 eingeschaltet werden. Beispiel Code /* Kontaktiert eine emoncms Instanz unter IP DSTIP Port DSTPORT und virtueller Hostname HOST und sendet die interne Spannung und Temperatur des ATmega328 zur Aufzeichnung alle 15s */ #define #define #define #define #define #define #define #define #define SSID "DEINE-SSID" WIFIPASS "Dein.WIFI-Passwort" DSTIP "192.168.10.120" DSTPORT 80 CH_PD_PIN A0 HOST "emon.mydomain.ch" APIKEY "abcdef1234567890abcdef1234567890" USER_AGENT "User-Agent: Mozilla/0.1 (esp8266; wifi-hack)" LED_PIN 13 void setup() { digitalWrite(A0, HIGH); Serial.begin(115200); pinMode(LED_PIN, OUTPUT); pinMode(CH_PD_PIN, OUTPUT); digitalWrite(CH_PD_PIN, HIGH); espInit(); } void loop() { sendIotData(); delay(15000); } Boxtec Playground - http://playground.boxtec.ch/ Last update: 2016/09/09 16:56 wireless:esp8266 http://playground.boxtec.ch/doku.php/wireless/esp8266 void espInit() { Serial.println("AT+RST"); delay(1000); if(Serial.find("ready")) { blinkOk(); } else { blinkAlert(); } Serial.println("AT+CWMODE=1"); delay(500); Serial.println("AT+CIPMUX=0"); delay(500); // Join WiFi Network Serial.print("AT+CWJAP=\""); Serial.print(SSID); Serial.print("\",\""); Serial.print(WIFIPASS); Serial.println("\""); delay(3500); if(Serial.find("OK")) { blinkOk(); } else { blinkAlert(); } } void sendIotData(){ char tpl[] = "GET /input/post.json?json={espvcc:%s,esptemp:%s}&apikey=%s HTTP/1.1\r\nHost: %s\r\n%s\r\n\r\n"; char temp[6]; char vcc[8]; double _vcc = readVcc()/1000.0; double _temp = getTemp(); dtostrf(_temp, 2, 1, temp); dtostrf(_vcc, 1, 2, vcc); char databuf[256] = ""; sprintf(databuf, tpl, vcc, temp, APIKEY, HOST, USER_AGENT); int ix = 1; for (ix=0; ix<256; ix++) { if ( databuf[ix] == 0 ) { break; } } Serial.print("AT+CIPSTART=\"TCP\",\""); Serial.print(DSTIP); Serial.print("\","); Serial.println(DSTPORT); delay(500); Serial.print("AT+CIPSEND="); http://playground.boxtec.ch/ Printed on 2016/09/09 18:52 2016/09/09 18:52 9/13 ESP8266 WiFi Module Serial.println(ix); delay(100); Serial.println(databuf); delay(500); } void blinkAlert() { for (int c=0; c<3; c++) { digitalWrite(LED_PIN, HIGH); delay(80); digitalWrite(LED_PIN, LOW); delay(80); } } void blinkOk() { digitalWrite(LED_PIN, HIGH); delay(500); digitalWrite(LED_PIN, LOW); } long readVcc() { long result; ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); delay(2); ADCSRA |= _BV(ADSC); while (bit_is_set(ADCSRA,ADSC)); result = ADCL; result |= ADCH<<8; result = 1126400L / result; return result; } double getTemp(void) { unsigned int wADC; double t; ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3)); ADCSRA |= _BV(ADEN); delay(20); ADCSRA |= _BV(ADSC); while (bit_is_set(ADCSRA,ADSC)); wADC = ADCW; // The offset of 324.31 could be wrong. It is just an indication. t = (wADC - 324.31 ) / 1.22; // The returned temperature is in degrees Celcius. return (t); } Boxtec Playground - http://playground.boxtec.ch/ Last update: 2016/09/09 16:56 wireless:esp8266 http://playground.boxtec.ch/doku.php/wireless/esp8266 Firmware Update Ein Image für den Update auf Firmware 0.91 kann hier heruntergeladen werden: ● Firmware ESP8266 v0.91 Firmware ESP8266 v0.91 Dieses Image benötigst Du unabhängig davon ob Du den Update mit Windows oder Linux durchführen willst. Firmware Update mit Linux Diese Anleitung gilt nur für die AT Firmware auf alten Modulen mit 512KB Flash. Das aktuelle SDK (ab 1.5.0) erfordert Module mit mindestens 1024MB Flash. Utility: esptool 1. Verbinde das Modul mit einem USB zu seriell Adapter wie dem Foca Board und achte darauf, dass das Foca Board auf 3.3V eingestellt ist. Prüfe ob die Verbindung funktioniert in dem Du die aktuelle Firmware abfragst:AT+GMR 00150900 2. Verbinde den Pin GPIO00 mit GND 3. Reset des Moduls (RST kurz auf GND) 4. Flashen des ersten Images7): ./esptool.py write_flash 0x000000 eagle.app.v6.flash.bin 5. Reset des Moduls (RST kurz auf GND) 6. Flashen des zweiten Images8): ./esptool.py write_flash 0x40000 eagle.app.v6.irom0text.bin 7. GPIO00 von GND trennen 8. Reset des Moduls (RST kurz auf GND) 9. Firmware Version prüfenAT+GMR 00160901 Firmware Update mit Windows (nicht getestet) Utility: XTCOM-UTIL Mit XTCOM-UTIL können die beiden Firmware Images nacheinander auf das Modul geladen werden, dabei muss auch GPIO00 mit GND verbunden werden um das Modul in den Update Modus zu bringen. Stromverbrauch / Latenz http://playground.boxtec.ch/ Printed on 2016/09/09 18:52 2016/09/09 18:52 11/13 ESP8266 WiFi Module Stromverbrauch Durchschnittliche Stromaufnahme bei kurzer Distanz zum AP: 30mA, bei größerer Distanz bis zu 200mA Durchschnittliche Stromaufnahme im AP Modus: 80mA Kurzzeitig kann die Stromaufnahme bis zu 500mA betragen! Netzwerk Latenz Ein Ping dauert meist 30-130ms. Die Übertragung von Daten dauert meist 100-200ms, unabhängig von der Paketgröße. Ein Datenpaket kann maximal 1024 Bytes Nutzdaten enthalten. ESP8266 mit Arduino IDE programmieren Seit einiger Zeit können alle ESP8266 Module auch direkt aus der Arduino IDE programmiert werden, ein externer Mikrokontroller ist dann nicht mehr nötig. Mit 512kB - 1MB Flash bieten die Module mehr als genug Platz für anspruchsvolle Steuerungen. Um die Module direkt aus der Arduino IDE ab 1.6 zu programmieren muss in den Einstellungen folgende Boards Manager URL hinzugefügt werden: http://arduino.esp8266.com/stable/package_esp8266com_index.json Um das Modul in den Bootloader Modus zu versetzen muss GPIO00 auf GND gezogen werden während Boxtec Playground - http://playground.boxtec.ch/ Last update: 2016/09/09 16:56 wireless:esp8266 http://playground.boxtec.ch/doku.php/wireless/esp8266 ein Reset ausgeführt wird (RESET Pin auf GND). In diesem Zustand angekommen, kann ein Sketch ganz normal via Upload Button aus der Arduino IDE hochgeladen werden. Fehlersuche ● ● ● ● Hast Du CH_PD auf 3.3V gezogen wenn Du versuchst mit dem Modul zu kommunizieren ? RX/TX vertauscht ? Hast Du sichergestellt, dass Du ausschliesslich mit 3.3V Pegel mit dem Modul kommunizierst ? Wenn Einstellungen nicht übernommen werden: AT+RST ausgeführt um die Einstellungen zu aktivieren ? Links ● ● ● ● ● ● ● ● ● ● ESP8266 User Forum ESP8266 User Wiki ESP8266 Datasheet ESP8266 core for Arduino | ESP8266 core for Arduino github: esptool OneDrive SDK Mirror Github ESP8266 Lua based firmware for wifi-soc esp8266 Hackaday: How to directly program the ESP8266 WiFi module ESP8266 wifi configurator in Arduino lang.. uses eeprom for configs, boots to AP mode if no working config found Referenzen ● ● ● ● ● ● Electrodragon: Wi07c Nurdspace: ESP8266 Produkteseite Espressif Datenblatt ESP7266 (Chinesisch) AT Kommandos ESP7266 (Chinesisch) Mikrokontroller.net Forum , 3) Wird erst nach einem Reset mit AT+RST aktiv 2) Zurzeit resultiert dies leider in einem zuverlässigen Reset 4) nur in CWMODE 2 und 3 verfügbar 5) , 6) Die Daten folgen erst nach dem CIPSEND Befehl, nicht auf einer Zeile 7) , 8) Der Fehler Exception: Failed to leave Flash mode kann ignoriert werden, das Update funktioniert trotzdem 1) http://playground.boxtec.ch/ Printed on 2016/09/09 18:52 2016/09/09 18:52 13/13 From: http://playground.boxtec.ch/ - Boxtec Playground Permanent link: http://playground.boxtec.ch/doku.php/wireless/esp8266 Last update: 2016/09/09 16:56 Boxtec Playground - http://playground.boxtec.ch/ ESP8266 WiFi Module
© Copyright 2025 ExpyDoc