ESP8266

Ansteuerungen grundlegender Hardwarebausteine


ESP8266

esp8266

Der ESP8266 ist ein günstiger Microcontroller von esspressif für ca. 3 € mit eingebauten WLAN-Fähigkeiten. Er wird in Modulen wie ESP-01, ESP-12 oder ESP-12E verbaut, die sich z.B. in der Anzahl der Pins unterscheiden. Das ESP-12E-Modul ist recht beliebt, da es sehr viele Pins besitzt und wird z.B. auf einem Development-Board wie dem nodemcu-devkit (oben abgebildet) oder dem “Wemos D1 Mini” verbaut.

Micropython ist eine Variante von Python, die auf verschiedene Mikrocontroller zugeschnitten ist - so auch für den ESP8266.

Die Anleitung von Micopython für den ESP8266 erklärt viele wesentliche Funktionen. Weitere technische Details befinden sich in den folgenden Dokumenten:

nodemcu devkit

Häufig wird der ESP8266 auf einem Entwicklerboard verbaut, um ihn leichter ansteuern zu können. Eine USB-Schnittstelle stellt zum einen eine Stromversorgung und zum anderen eine einfache Kommunikationsmöglichkeit bereit. Die Pins sind auf eine Steckerleiste herausgeführt und beschriftet. Ein prominenter Vertreter ist das “nodemcu devkit”, welcher auf dem obigen Bild zu sehen ist. Details über das Enticklungsboard sind online oder über das Datenblatt verfügbar.

USB-Treiber

Auf dem Board ist ein USB-UART Wandler verbaut. Manchmal benötigt er einen Treiber, der nachträglich installiert werden muss.

Ein populärer Treiber für Windows ist unter  MSXFAQ verlinkt.

Unter Mac OS lässt sich ein Treiber mit Homebrew installieren.

 $ brew cask install homebrew/cask-drivers/wch-ch34x-usb-serial-driver

Installation der Firmware

Zuerst muss die Firmware für Micropython installiert werden. Diese lässt sich von der Webseite herunterladen oder selbst kompilieren.

Für die Installation der Firmware gibt es das Tool esptool.py, das sich ebenso einfach installieren lässt.

$ sudo pip install esptool

Anschließend kann die vorhandene Firmware auf den ESP8266 zunächst gelöscht und mit dem zweiten Befehl die neue Firmware übertragen werden.

$ esptool.py --port /dev/ttyUSB0 erase_flash
$ esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash --flash_size=detect 0 esp8266-DATUM-v1.VERSION.bin

Wenn es bei Übetragungsgeschwindigkeiten über 115200 Baud zu Problemen kommt, muss die Geschwindigkeit reduziert werden.

Die Befehle sind der Anleitung von mircopython entnommen.

Zugriff über die serielle Schnittstelle

Nun kann mit einem Terminalprogramm auf den Microcontroller zugegriffen werden. Das geht mit putty, minicom, screen oder auch miniterm.py, wenn das Board über einen USB-Anschluss verfügt. Ansonsten fungieren die Pins GPIO1=TX und GPIO3=RX als serielle Schnittstelle. Die Baudrate beträgt 115200.

$ screen /dev/ttyUSB0 115200

oder

$ miniterm.py /dev/ttyUSB0 115200

Für /dev/ttyUSB0 muss die serielle Schnittstelle angegeben werden, mit welcher sich der Chip am USB-Port anmeldet. Unter Windows findet man die Information im Geräte-Manager: COM gefolgt von einer Zahl.

Wenn miniterm.py noch nicht installiert ist, kann es mit pip install pyserial installiert werden.

Im Anschluss erhält man eine Python-Konsole, die man für eigene Projekte verwenden kann. Beim Start steht der ESP als Access Point zur Verfügung, auf den sich Clients mit dem Standardpasswort micropythoN verbinden können.

Pin-Belegung (nodemcu devkit)

Das nodemcu-devkit ist eines der populärsten Boards, das den ESP8266 verbaut. Hierfür existiert eine gute Dokumentation der Pinbelegung. Die Nummerierung bezieht sich jeweils immer auf die Pinnummer am Chip und kann bei unterschiedlichen Ausführungen von der Nummerierung auf dem jeweiligen Board abweichen.

pinout

Dateitransfer

Mit dem mächtigen Tool ampy lassen sich leicht Dateien auf den Chip kopieren, von ihm lesen oder auf ihm ausführen. Es wird mit pip3 install adafruit-ampy installiert. Dazu muss ggf. eine bestehende Verbindung über die serielle Schnittstelle zuvor beendet werden.

Dateien lassen sich mit ls anzeigen. Der Parameter -p gibt die serielle Schnittstelle an, über die die Verbindung besteht.

$ ampy -p /dev/ttyUSB0 ls

Dateien können mit get lokal ausgegeben werden.

$ ampy -p /dev/ttyUSB0 get main.py

Sie können auch abgespeichert werden.

$ ampy -p /dev/ttyUSB0 get main.py main.py

Ebenso einfach können Dateien auf den Chip kopiert werden.

$ ampy -p /dev/ttyUSB0 put main.py

Eine Datei kann auch direkt ausgeführt werden.

$ ampy -p /dev/ttyUSB0 run mein_script.py

Neben ampy gibt es weitere Tools für den Dateitransfer. mpfshell ist ein shell-basierter Datei-Explorer, um den ESP zu erkunden. rshell ist eine remote shell für den ESP8266. webrepl ist eine weitere Möglichkeit.

Ansteuerung über I²C

Der ESP kann über den I²C-Bus auch mit Sensoren oder anderen Modulen kommunizieren. Zwei der GPIO-Pins werden dafür benötigt: einer als Clock- (scl) und einer als Daten-Pin (sda). Die Datei esp8266_i2c_scan.py zeigt beispielhaft, wie man auf dem I²C-Bus nach Geräten scannen kann.