ESP8266 Modul WiFi Konfiguration

esp8266-wifi
Das vom Hersteller Espressiv angebotene ESP8266 Modul ist ein Microcontroller mit integriertem Hardware WLAN, 512kB Flash Speicher und einer seriellen UART -Schnittstelle. Aktuell kann man ESP8266 Module schon für unter 3€ kaufen. Gerade eben habe ich sogar ein Modul für 2,26€ incl. Versand nach Deutschland bei aliexpress.com gesehen. Wahnsinn! So billig kann man das Internet der Dinge heute schon haben …

Die WiFi Konfiguration der Module ist abhängig von der verwendeten Firmware. Vom Hersteller wird eine Firmware mit ausgeliefert, die über die serielle Schnittstelle (RX/TX) über AT Kommandos kommuniziert. Diese Firmware ist gut geeignet, wenn man z.B. ein vorhandenes Projekt auf Arduino oder Espruino Basis um ein sehr günstiges WLAN Modul ergänzen möchte. Einfach die RX und TX Pins mit dem vorhandenen Modul verbinden und innerhalb kürzester Zeit hat man ein existierendes Microcontroller Projekt um ein 802.11 Wi-Fi ergänzt. Dabei ist es egal, ob der ESP8266 sich mit einem Access Point verbinden soll oder ob das Modul selbst der Access Point ist und Verbindungen von anderen Geräten (PC, Smartphone, Tablett oder WiFi Modul) zulässt.
Die AT Kommandos zum konfigurieren des WiFi sehen wie folgt aus:

AT-RST
AT+CWMODE=2
AT+CIFSR
AT+CIPMUX=1
AT+CIPSERVER=1,80

Diese AT-Befehle reichen schon aus, um den ESP8266 in einen WiFi Access Point zu verwandeln, der auf dem Port 80 einen Server laufen hat.

Hier noch mal die Befehle im Detail:

AT+RST führt einen Reset durch.
AT+CWMODE=2 konfiguriert den ESP8266 als WiFi Access Point.
AT+CIFSR gibt die IP Adresse des Moduls aus.
AT+CIPMUX=1 aktiviert den Multiplexer, der mehrere WLAN Verbindungen zu dem Modul ermöglicht. AT+CIPSERVER=1,80 startet einen TCP/IP Server auf Port 80.

Nachdem man diese Befehle ausgeführt hat, kann man sich nun mit Port 80 des Moduls verbinden. Z.B. mit einem Telnet Client oder sogar mit einem Browser wie z.B. dem Chrome oder dem Firefox. Die Rohdaten werden dann über die serielle Schnittstelle des Moduls ausgegeben und können vom Microcontroller verarbeitet und beantwortet werden. Eine konkrete Implementierung mit einem Espruino werde ich in einem späteren Post hier unter dieletztedomain.de veröffentlichen.

Eine andere Möglichkeit ist es, sich mit dem ESP8266 via WiFi an einem vorhandenen WLAN Accesspoint anzumelden und dann auch vollen Zugriff auf das Internet zu haben. Das ist sinnvoll, wenn man z.B. Messdaten auf einem zentralen Server in der Cloud speichern möchte oder Daten aus dem Internet (z.B. Facebook Likes oder abgeschlossene Warenkörbe) auf einem kleinen LED Display anzeigen möchte. In dem Fall muss man das Modul mit dem Befehl „AT+CWMODE=1“ in den Station-Client Mode versetzen und die Zugangsdaten über den AT+CWJAP Befehl festlegen. Alles ins allem sieht das dann wie folgt aus.

AT+RST
AT+CWMODE=1
AT+CWJAP="SSID","PASSWORD"
AT+CWLAP
AT+CIFSR
AT+CIPMUX=0
AT+CIPSERVER=1,80

Das Modul ist nun mit dem Internet verbunden und hat einen laufenden Server auf Port 80, der je nach Einstellung im WLAN Router auch aus dem Internet erreichbar ist.
Da der ESP8266 nicht nur als Ergänzung zu vorhandenen Projekten eine ideale Lösung ist sondern auch ganz alleine schon eine Menge kann, lohnt es sich, die vorhandene Firmware durch eine alternative Firmware namens NodeMCU zu ersetzen. Diese Firmware macht eine Programmierung des ESP8266 Prozessors in Lua möglich. Diese Programmiersprache ist in Bezug auf die Performance nicht mit einem C-Programm vergleichbar, aber dank des 80MHz Prozessors (Kann auf 160MHz hochgetacktet werden) für die meisten Anwendungsfälle mehr als ausreichend. Ich selbst habe z.B. einen SR-HC04 erfolgreich mit dem ESP8266 verbunden. Auch wenn das Ermitteln des Messwertes etwas zeitkritisch ist.
Die WiFi Konfiguration in LUA sieht dann wie folgt aus:

wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","password")
print(wifi.sta.getip())

Damit die das Modul im Station-Client Mode und mit dem WLAN Accesspoint verbunden. Die letzte Zeile gibt nur die IP Adresse aus und kann genauso gut auch weggelassen werden.
Alternativ dazu kann man auch selber zu einem WiFi Access Point werden und das geht wie folgt:

wifi.setmode(wifi.SOFTAP)
print(wifi.sta.getip())

In dem Fall hat man einen offenen WiFi Access Point und kann einen TCP/IP Server direkt auf dem Microcontroller realisieren. Das ist dank der Programmiersprache Lua auch kein Problem. Ein einfacher http Server sieht dann z.B. wie folgt aus:

srv=net.createServer(net.TCP) 
srv:listen(80,function(conn) 
    conn:on("receive",function(conn,payload) 
    print(payload) 
    conn:send("<h1> Hallo Welt </h1>  ")
    end) 
end)

Das fertige Programm wird dann in einer Datei namens init.lua direkt auf dem Flash Speicher des Moduls gespeichert. So wird es direkt nach dem Start/Reset des Moduls automatisch ausgeführt und der Server läuft, sobald man das Modul mit der benötigten Versorgungsspannung von 3,3 Volt verbindet (Voraussetzung ist, dass die Pins VSS, RST, GPIO0, etc. auch korrekt verdrahtet sind.

Fazit:
Das ESP8266 ist eine ideale Stand-Alone Lösung für „Irgendwas mit WiFi“ für das Internet der Dinge mit einem kleinen Geldbeutel. Denn wo bekommt man schon einen 80MHz Prozessor, 512kB Flash Speicher und ein Hardware-WLAN incl. TCP/IP Stack für weniger als 3 € mit einer sehr aktiven Community, vielen fertigen Lösungen und Code Beispielen.


Meine Apps im Google Play-Strore
Jetzt bei Google Play