Arduino

Wifi-Modul ESP8266: Up and running

11. 05. 2016

Wenn man im Internet nach WiFi-Modulen für den Arduino sucht, findet man sehr viele Shields, die jedoch so um die 70 Euro kosten. Es existiert jedoch ein kleines WLAN-Modul namens ESP8266, das man um etwa 3 Euro auf eBay erhält. Dieses Modul anzuschließen ist nicht ganz so selbsterklärend wie die WiFi-Schilder, aber immer noch recht einfach – wenn man die richtige Anleitung findet.

In diesem Beitrag möchte ich zeigen, wie man das Modul verkabelt und mit dem PC erste Befehle absetzt.

Benötigte Bauteile:

Zunächst benötigt man natürlich das Modul selbst, das „ESP8266 ESP-01“. Es gibt mehrere Varianten vom ESP8266, das günstigste ist jedoch das, was wir suchen. Wie gesagt: Gibt es auf eBay um 2 Dollar aufwärts. Je näher zu Österreich man es bestellt, desto teurer wird es.

ESP8266E01

Weiters wird ein FTDI USB-to-TTL-Modul benötigt, beispielsweise das FTD232RL. Dieses Modul wird benötigt, damit wir direkt mit dem USB-Port mit dem WiFi-Modul kommunizieren können. Weiters hat es den Vorteil, eine 3,3 Volt-Leitung zur Verfügung zu stellen; die des Arduino genügt leider nicht.

ft232rl

Wer sich jetzt fragt: Wann kommt denn der Arduino ins Spiel: Dieser wird zunächst gar nicht benötigt. Wir sprechen mit dem WiFi-Modul direkt über den FTD232RL – erst später lassen wir den Arduino mit dem WLAN kommunizieren. Doch auch dann brauchen wir (zumindest beim Arduino UNO) dieses FTD232RL-Modul, da der Arduino nur eine Kommunikationsschnittstelle zur Verfügung stellt – die dann für die Kommunikation mit dem PC verwendet wird. Und wir brauchen eine weitere, damit der Arduino auch mit dem WLAN-Modul kommunizieren kann.

Weitere Bauteile sind jene, die jeder Arduino-Bastler daheim haben sollte: Ein Steckbrett und Kabel. Erwähnenswert ist vielleicht noch, dass ein USB-Kabel für den Anschluss des FTD232RL an den PC benötigt wird – und zwar ein Typ „Mini“.

Verkabelung

Das WiFi-Modul hat folgenden Aufbau:

ESP8266 EinAusgänge

Verkabelt wird mit einem Breadboard wie folgt (FTDI mit dem Jumper auf 3,3 Volt setzen!):

ESP8266 Flashen Steckplatine

ACHTUNG!!
Die beiden rosa Kabel setzen den ESP8266 in den Programmiermodus!
Wenn man also gerade keine neue Firmware aufspielt, muss man diese Verbindung irgendwo trennen!

Optimal ist der 3,3 Volt – Ausgang des FTDI-Moduls nicht, da der ESP8266 zeitweise bis zu 200 mA benötigt. Besser ist es daher, sich vom FTDI 5 Volt liefern zu lassen (bei meinem kann das mit einem Jumper umgeschalten werden) und dies danach mit einem LM1117 Festspannungsregler auf 3,3 Volt reduzieren. Eine verbesserte Version – mit eben diesem Spannungsregulator von 5 Volt auf 3,3 Volt – sieht so aus:

ESP8266 Flashen Steckplatine_Steckplatine_v2

Bevor man die Schaltung jedoch an den PC anschließt (zunächst einmal ohne Programmiermodus), sollte man sich noch um die Software kümmern.

Die Software

Es gibt natürlich mehrere Möglichkeiten, mit dem Controller zu kommunizieren. Ich habe mich für die Variante mit der Arduino-Software entschieden, da diese ja auch für andere Projekte verwendet wird. Dazu muss man in einem ersten Schritt jedoch der Software erst einmal beibringen, dass es mit dem ESP8266 kommunizieren kann.

Im Internet finden sich unzählige Versionen, wie man der Arduino-Software beibringt, mit dem ESP8266-Board zu kommunizieren. Gottseidank ist dies seit der Version 1.6.4 durch den integrierten „Board-Manager“ ganz einfach:

Zunächst trägt man unter File > Preferences folgende URL ein und schließt das Fenster wieder:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Arduino Board Manager

Anschließend öffnet man die Liste der verfügbaren Board-Ressourcen unter Tools > Boards > Board-Manager, sucht nach „ESP8266“ und installiert dieses:

Arduino ESP8266 Install

Nun kann das USB-Kabel vom FTDI-Controller an den USB-Port angeschlossen werden. Das rote LED am FTDI-Adapter und am EPS8266 sollte leuchten; am ESP8266 blinkt erfahrungsgemäß zu Beginn noch das blaue kurz auf. Falls nicht, bitte die Schaltung überprüfen!

Anschließend wählt man es unter Tools > Board noch das korrekte Board aus (EPS8266 Generic) und stellt den Port um. Normalerweise ist es der nächsthöhere Port mit dem der Arduino angesprochen wir – in meinem Fall ist Arduino COM6, der ESP8266 hängt daher auf COM7.

„Hallo Welt“

Nun sollte man soweit sein, dass man mit dem ESP8266 kommunizieren kann. Dazu zunächst den Serial Monitor im Menü Tools öffnen. Rechts unten auf „Both NL & CR“ und bei Baurate auf „115200“ klicken.

Baudrate

Und jetzt wird es spannend. Als ersten Befehl oben „AT“ eingeben – der EPS8266 sollte nun mit einem „OK“ antworten.

AT_OK

Wenn nicht, kann folgendes schiefgelaufen sein:

  • Der Serial Monitor öffnet sich gar nicht: Wahrscheinlich wurde der falsche COM-Port gewählt. Einfach mit einem anderen versuchen.
  • Der Serial Monitor öffnet sich zwar, alle Lichter leuchten, aber der ESP8266 antwortet nicht: Wahrscheinlich ist eine falsche BAUD-Rate eingestellt. Im Normalfall ist dies 115200; es kann aber – je nach Firmware – auch 9600 oder eine andere Geschwindigkeit sein.
  • Wurde wirklich das Programmiermodus-Kabel getrennt?

Weitere Befehle

Mit „AT+GMR“ kann man feststellen, welche Firmware-Version am ESP8266 installiert ist:

ESP8266 Version

Manchmal sieht die Ausgabe auch anders aus, beispielsweise „00160901“. Hier sind dann die ersten Ziffern 0016 die SDK-Version und 0901 die AT-Befehlssatz-Version.

AT+CWMODE=3 setzt den WiFi-Modus

AT+CWLAP listet die Access Points auf

AT+CWJAP="SSID","Kennwort "verbindet das Modul mit einem Funknetzwerk

Verbesserungen

Quellen

 

image_print
1 Stern2 Sterne3 Sterne4 Sterne5 Sterne
Loading...

Author

Manuel

Ich bin Manuel Wurm, IT-Consultant und Blogger. Ich mag es, verschiedenste Dinge auszuprobieren. Vor allem mit Retro-Computern, Bierbrauen, Bogenschießen und Schlagzeug spielen verbringe ich gerne meine Zeit. Kochen zählt zu meinen größten Hobbys - das spiegelt sich auch auf wurmweb.at wieder, wo ich gerne Rezepte teile und hilfreiche Tipps für Interessierte festhalte.

Related Posts

Comments (1)

Comments are closed.