Das ESP8266 Modul kann man auf viele verschiedene Arten einsetzen. Wir verwenden es zunächst nur, um mit Hilfe dieses Bausteins einen anderen Mikrocontroller (z.B. Arduino oder Pic) Wlan-fähig zu machen. Dieser Abschnitt bereitet den Baustein für die Arbeit mit dem Mikrocontroller vor. Zuerst wird eine Firmware, die AT-Befehle verarbeiten kann, installiert, anschließend wird getestet, ob die Kommunikation über die serielle Schnittstelle funktioniert.
Wir benutzen das Adafruit HUZZAH ESP8266 Breakout Board. Der Chip ESP8266 stammt von der chinesischen Firma Espressif. Natürlich kann auch jedes andere ESP8266-Modul verwendet werden, der HUZZAH hat jedoch den Vorteil, dass er sehr schnell einsatzfähig ist, denn es sind bereits 5V Logik-Wechsler sowie Spannungsstabilisieung und Taster (Reset, User) vorhanden.
PDF von Adafruit: (siehe Download)
(Der Huzzah-Breakout ist glücklicherweise von der 3.3V-5V-Problematik befreit, denn Pegelwandler sind bereits vorhanden.)
Neben dem Adafruit HUZZAH ESP8266 Breakout wird noch ein USB-to-TTL UART Adapter benötigt.
So ein Kabel gehört in jede Elektronik-Werkstatt: z. B.: http://www.amazon.de/USB-TTL-Serielles-Kabel-Raspberry/dp/B00CNUH6QG/ref=sr_1_1?ie=UTF8&qid=1455478822&sr=8-1&keywords=adafruit+954
Es gibt mehrere verschiedene Firmwaretypen, die häufig benutzt werden:
Für die Espressif-Firmware gilt: Die letzte Firmwareversion, die noch auf Bausteinen mit 4 MB Flash installiert werden kann, ist im SKD 1.4.0 enthalten.
Wir verwenden die Expressif-Firmware, die allerdings zuerst auf das Breakout aufgespielt (geflasht) werden muss.
Es ist jederzeit möglich, eine andere Firmware auf den Baustein zu spielen, allerdings ist diese Prozedur für den Anfänger nicht immer einfach durchzuführen.
Um eine (neue) Firmware auf dem ESP8266 Baustein aufzuspielen sind vier Schritte abzuarbeiten.
Esptool ist ein Pythonscript, mit dieser Software kann man (z. B. mit Ubuntu) eine Firmware auf den Baustein überspielen (flashen). Die Software kann bei Github heruntergeladen werden.
Die Software setzt voraus, dass python und pySerial installiert ist. pySerial kann mit dem folgenden Befehl installiert werden:
apt-get install python-serial
esptool -h
Auf der Homepage von Espressif kann man die jeweils neueste Firmware herunterladen (http://bbs.espressif.com/), der von uns verwendete Chip hat 4 MB Flash-Speicher (32Mbit). Diese Information ist wichtig, da zukünfige Firmware eventuell zu groß sein kann, sodass sie nicht mehr auf den Chip passt. Außerdem werden in Abhängigkeit der Speichergröße verschiedene Adressen beim Flashen verwendet.
Die größe des Flashspeichers kann mit folgenden Befehl in Erfahrung gebracht werden (der Chip muss dafür in den Flashmode gebracht werden).
esptool.py -p /dev/ttyUSB0 flash_id
Die Ausgabe lautet dann:
Manufactuerer: e0 Device: 4016
Device: 4015 hätte beispielsweise nur 2 MB Flash-Speicher.
Um die Firmware aufzuspielen, werden fünf Dateien (eigentlich vier, denn blank.bin wird mit zwei verschiedenen Startadressen aufgespielt) benötigt: Der readme.txt-Datei kann man folgendes entnehmen:
eagle.flash.bin 0x00000 esp_iot_sdk_v1.5.2/bin/at/noboot eagle.irom0text.bin 0x40000 esp_iot_sdk_v1.5.2/bin/at/noboot blank.bin 0x7e000 esp_iot_sdk_v1.5.2/bin/ blank.bin 0xfe000 esp_iot_sdk_v1.5.2/bin/ esp_init_data_default.bin 0xfc000 esp_iot_sdk_v1.5.2/bin/
Download des SKD in der 1.5.2 Version: http://bbs.espressif.com/viewtopic.php?f=46&t=1702 (unten auf der Seite)
USB-Serial Adapter | ESP8266 Breakout |
black | ground |
red | V+ |
white | TX |
green | RX |
Um eine Firmware aufspielen zu können, muss der Baustein zuvor in den Bootmodus versetzt werden. Der Bootmodus besitzt keinen Timeout!
Der Baustein kann jetzt geflasht werden. (Beim flashen blinkt die blaue LED.)
Die Firmware-Dateien befinden sich im Verzeichnis bin. Um den Baustein zu flashen, muss der Port (z.B. /dev/ttyUSB0
) bekannt sein. Der folgende Befehl spielt dann die Firmware auf den ESP8266:
python esptool.py --baud 9600 --port /dev/ttyUSB0 write_flash 0x00000 eagle.flash.bin 0x40000 eagle.irom0text.bin 0x7e000 blank.bin 0xfe000 blank.bin 0xfc000 esp_init_data_default.bin
–port
: Sollte zuvor mit tail -f 20 /var/log/syslog in Erfahrung gebracht werdenZum Testen des Boardes verwenden wir das Serial-Terminal GTKTerm. Getestet wird dadurch, dass einfache Kommandos (sogenannte AT-Befehle) über die serielle Schnittstelle an den Baustein geschickt werden.
Da das ESP8266 und GTKTerm anscheinend line feed (LF) and carriage return (CR) verschieden interpretieren, wird in der Datei ~.gtktermrc (bei Ubuntu) die folgende Zeile angelegt.
macros = Return::\0D\0A
Wenn man jetzt Enter (Return) drückt, wird LFCR richtig interpretiert.
Die Standardbaudrate ist 115200 (eventuell andere Baudraten testen!)
Insgesamt sind für einen Test folgende Schritte erforderlich:
Wenn die Ausgabe OK erscheint, dann wurde alles richtig gemacht. Damit ist der Baustein bereit, um als Wifi-Shield für einen Mikrocontroller zu arbeiten. Alternativ können Sie auch AT+RST eingeben. Der Baustein antwortet dann mit einem ready in der letzen Zeile.
Die zum SDK 1.5 gehörigen AT-Befehle sind im ESP8266 AT Instruction Set Version 1.5 gelistet:
AT Instruction Set v1.5 (siehe Download)