ESP8266

Aus FABLAB FSG
Wechseln zu: Navigation, Suche
Adafruit HUZZAH ESP8266 Breakout (Preis unter 10 €).

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.


ESP8266 Modul

Für die Kommunikation werden vier Anschlüsse benötigt: TX, RX, V+ und GND. Sie befinden sich auf der rechten Seite.

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: Huzzah ESP8266 Datenblatt

ESP8266 ist ein 3.3V-Gerät. 5 Volt Spannung wird es zerstören! (Der Huzzah-Breakout ist glücklicherweise von der 3.3V-5V-Problematik befreit, denn Pegelwandler sind bereits vorhanden.)

Verwendete Hardware

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

Firmware

Es gibt mehrere verschiedene Firmwaretypen, die häufig benutzt werden:

  • NODEMCU Lua Firmware: diese Firmware ist auf dem HUZZAH ESP8266 Breakout vorinstalliert
  • Firmware Arduino-IDE: man kann den Baustein direkt mit der Arduino-IDE programmieren - damit wird die NODEMUC Lua Firmware gelöscht
  • AT-Befehle: Espressif-Firmware (dies ist die Firmware des Herstellers - mit dieser Firmware können AT-Befehle 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.

Expressif-Firmware installieren (flashen)

Um eine (neue) Firmware auf dem ESP8266 Baustein aufzuspielen sind vier Schritte abzuarbeiten

Übersicht

  1. Toolchain installieren.
  2. Firmware herunterladen.
  3. ESP8266 mit dem USB-Serial Adapter verbinden und in den Bootmodus versetzten.
  4. Firmware flashen.

Details

1. Toolchain installieren

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
  • Die Software enthält zwei Skripte, esptool.py und setup.py. esptool.py ist die Software mit der man den Baustein flasht. setup.py kann dazu verwendet werden, esptool.py systemweit zu installieren (insbesondere wird dabei auch bei Bedarf python-serial mitinstalliert).
  • mit dem folgenden Befehl kann überprüft werden, ob das Script grundsätzlich läuft:
esptool -h

2. Firmware herunterladen

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)

3. ESP8266 mit dem USB-Serial Adapter verbinden und in den Bootmodus versetzen.

Verbindung mit Hilfe eines USB-Serial Adapters

Vier Kabel werden für die Verbindung benötigt.
USB-Serial Adapter ESP8266 Breakout
black ground
red V+
white TX
green RX

Flashmode

Um eine Firmware aufspielen zu können, muss der Baustein zuvor in den Bootmodus versetzt werden. Der Bootmodus besitzt keinen Timeout!

  1. Halte den GPIO0-Taster gedrückt, nun leuchtet die rote LED.
  2. Während der GPIO0-Taster gedrückt ist drücke den RESET-Taster.
  3. Lass den RESET-Taster los, die rote LED leuchtet jetzt nur noch sehr schwach.

Der Baustein kann jetzt geflasht werden. (Beim flashen blinkt die blaue LED.)

4. Firmware flashen

Flashen

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 werden
  • Der Flashvorgang wird auf der Konsole angezeigt, sodass eventuell auftretende Fehler schnell sichtbar werden.
  • Anschließend ist das Board zu resetten (RESET-Taster).

Testen des Moduls

Zum 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.

Diese Einstellung kann durch ein # (Kommentar) zurückgesetzt werden. Daran sollte man denken, wenn man andere Bausteine verwenden will!

GTKTerm Konfiguration.

Die Standardbaudrate ist 115200 (eventuell andere Baudraten testen!)

Insgesamt sind für einen Test folgende Schritte erforderlich:

  1. USB-Serial Adapter mit PC und ESP8266-Board verbinden
  2. gtkterm öffnen (Baudrate, Port wählen)
  3. Im Gtkterm AT eingeben und mit Return abschließen

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.

AT Befehle

Die zum SDK 1.5 gehörigen AT-Befehle sind im ESP8266 AT Instruction Set Version 1.5 gelistet:


AT Instruction Set v1.5