Im nachfolgenden Artikel möchte ich euch den ESP8266 vorstellen sowie meine ersten Erfahrungen mit diesem interessanten und günstigen Stück Hardware (für weitergehende Informationen habe ich unter dem Artikel eine kleine Linkliste erstellt). Dazu gehe ich erst kurz darauf ein, was der ESP8266 ist, dann werde ich beschreiben, wie man ihn programmieren kann und schließlich zeige ich noch praktische Einsatzzwecke auf. Dazu wird es in diesem Blog in nächster Zeit auch noch ein paar Artikel geben, die diese praktischen Umsetzungen im Detail beschreiben.
1. ESP8266 – was ist das?
Der ESP8266 ist ein WLAN-SoC (System-on-a-Chip), also ein WiFi-Modul, das sich selbstständig nutzen und programmieren lässt. Daher kann der ESP8266 auch unabhängig von z.B. einem Arduino verwendet werden, da man eigene Programme darauf laden kann. Dieser Umstand machte den ESP8266 schnell beliebt in der „Bastlerszene“, vor allem, da er zu einem sehr günstigen Preis zu bekommen ist (je nach Ausführung für ca. 1-5€ aus China).
Hierbei ist zu erwähnen, dass es mittlerweile sehr viele Ausführungen gibt. Der Chip (also der ESP8266) darauf ist überall identisch, die Boards unterscheiden sich aber an der Anzahl der nutzbaren GPIOs (sprich Anschluss-Pins). Einen Überblick über gängige Module findet ihr z.B. hier.
Außerdem gibt es auch noch ein Entwicklungsboard mit dem Namen „NodeMCU“, das sich bequem über den verlöteten USB-Anschluss programmieren lässt (bei den anderen Modellen benötigt man zusätzlich einen USB-to-UART-Adapter, wie den FT232RL, den es in China aber bereits für unter 2€ gibt).
Mit 80MHz ist der ESP8266 übrigens schneller getaktet als die meisten Arduinos, die (in den günstigen Modellen) mit 8 bzw. 16 MHz takten. Für einen Microcontroller ist das recht flott – ein weiterer Vorteil zu Gunsten des ESP8266.
Wichtig ist, dass der ESP8266 mit 3V betrieben wird – nicht 5V oder mehr wie bei einigen Arduinos möglich. Eine Stromversorgung direkt über USB ohne Spannungsteiler o.ä. ist somit nicht möglich. Auch haben nicht alle ESP8266-Varianten einen analogen Eingang (nur die -07er [16 Pin Modell] und -12er Modelle) – auch hier ein großer Unterschied zu den Arduinos, die i.d.R. gleich mehrere analogen Eingänge zur Verfügung stellen. Wer also analogen Sensoren (Lichtsensoren, Thermistoren etc.) am ESP8266 betreiben möchte, sollte also aufpassen, welches Modell er sich zulegt. Auch unterscheiden sich die Modelle hinsichtlich ihrer Speicher- (Flash-) Größe (von 0,5MB bis 4MB). Wer größere Programme nutzen möchte, sollte sich vor Kauf erkundigen, wie groß der Speicher auf dem gewünschten Board ist.
2. ESP8266 – wie programmieren?
Im Gegensatz zum Arduino, der in aller Regel mit der eigens dafür entwickelten Arduino IDE programmiert wird, habt ihr beim ESP8266 mehr Möglichkeiten, eigene Programme auf das Gerät zu bekommen.
Grundsätzlich gibt es 2 Ansätze: Die Nutzung einer bestehenden Firmware, die z.B. Micropython- oder Lua-Scripte entgegennimmt und ausführt oder das Erstellen einer eigenen Firmware z.B. über die Arduino IDE.
Da ich selbst bisher nur die Arduino-IDE verwendet habe, verweise ich an dieser Stelle auf andere Informationsquellen wie den ESP8266-Artikel auf mikrocontroller.net.
Angeschlossen werden die ESP8266-Module wie oben beschrieben über einen USB-to-UART-Adapter. Zu beachten ist hierbei, dass dieser mit 3,3V betrieben werden muss (nicht mit den 5V direkt von USB!). Zudem sollte eine externe Stromversorgung (3,3V) eingesetzt werden, da es Probleme geben kann, wenn der ESP8266 nur durch den Adapter mit Strom versorgt wird. Behelfsweise kann man auch einen Elko zwischen VCC und GND klemmen (habe 220µF genommen), was den ESP8266 wesentlich stabiler laufen lässt.
Zudem sollte man sich vor Inbetriebnahme erkundigen, welche zusätzlichen Pins auf Masse bzw. VCC gelegt werden müssen, um sein jeweiliges Modell programmieren zu können. Beim einfachen, aber beliebten ESP-01 z.B. muss CH_PD auf 3,3V und GPIO_0 auf GND gesetzt werden, um ihn zu programmieren. Bei meinem ESP-201 muss zusätzlich noch GPIO_15 auf GND gelegt werden.
Meinen ESP-201 habe ich also so mit dem FTDI-Adapter verbunden, damit ich ihn problemlos mit eigener Software bespielen konnte:
Der zugehörige Schaltplan sieht so aus:
3. ESP8266 – wozu verwenden?
Die Einsatzzwecke sind sehr vielseitig, viele Libraries, die ursprünglich für den Arduino entwickelt wurden, sind bereits für den ESP8266 angepasst worden, sodass die Programmierung über die Arduino-IDE die Ansteuerung externer Hardware wie Funksender oder IR-Dioden sehr einfach gestaltet.
In meinen ersten Stunden mit dem ESP8266 konnte ich daher bereits die Steuerung von Funksteckdosen über ein Webinterface samt Statusspeicherung der einzelnen Dosen (analog zur Umsetzung mit dem Raspberry Pi) realisieren sowie die Ansteuerung meines TV-Gerätes über eine IR-Diode (wobei es hier zu Problemen mit der Stromversorgung trotz Kondensator kam, sodass ich die Schaltung hierzu noch umbauen werde). Auch lässt sich damit das Äquivalent der Umsetzung mit Arduino und Raspberry / Banana Pi ersetzen. Tutorials mit vollständigem Programmcode und Schaltbildern zu diesen beiden Umsetzungen werden demnächst hier im Blog folgen.
Ich hoffe, ich konnte euch hiermit einen kleinen Überblick über den ESP8266 geben. Gerade für das „Internet of things“ eignet sich dieses Bauteil meiner Meinung nach sehr gut, da man damit eigene Aktoren oder Sensoren ans Netz anbinden kann – und das zu einem äußerst günstigen Preis.
Bei Fragen, Anregungen etc. könnt ihr natürlich wie immer das Kommentarfeld unten benutzen.
Linkliste
- Kolban’s book on the ESP8266 (gratis eBook zum ESP8266)
- ESP8266 (mikrocontroller.net)
- WiFi Kochbuch mit ESP8266
- How to Directly Program an Inexpensive ESP8266 WiFi Module | Hackaday
- Projekte zum ESP8266 auf GitHub
Hallo! Sehr interessantes Spielzeug. Gibt es auch einen deutschen Elektronikanbieter der es anbietet? Würde ungern in China bestellen.
Und: Wie ist die Reichweite? Muss man in der Nähe vom Router sein oder kann man es auch etwas abseits betreiben?
Danke!
Hi Ingo,
ob du sie bei deutschen Elektronikhändlern direkt bekommst, kann ich dir gar nicht sagen. In der Bucht oder auf Amazon finden sich aber sicher Import-Händler, die die Modelle anbieten (wenn auch teurer).
Die Reichweite mit meinem ESP-201 und der mitgelieferten, einfachen Antenne habe ich bisher noch nicht ausgereizt, vom Erdgeschoss in den ersten Stock ist der Empfang aber stabil.
Danke für die Auskunft!
Welches Netzteil wäre denn für den 201 geeignet? Thx
Hi Chris,
zum Experimentieren auf dem Breadboard sind passende Stromversorgungen, wie z.B. diese Platine zum Draufstecken gut geeignet. Soll es abseits vom Breadboard mal fest verlötet werden, würde ich bei einem Elektronikhändler meines Vertrauens einfach mal nach „3V Netzteil“ schauen.
Hallo Alex / Hallo zusammen,
mein ESP8266 ist heute zusammen mit meinem FTDI-Bauteil (FT232RL) angekommen. Leider ist der Upload von Sketches aus der Arduino IDE ziemlich unzuverlässig – mal klappt es, mal nicht. Hast du eine Idee, woran das liegen könnte?
P.S.: Nutze einen Kondensator wie in deiner Schaltung
Hallo Franz,
vermutlich geht es dir da so wie mir – der Adapter ist einfach Schrott, da der Chip sehr billig kopiert wurde. Am Besten einen originalen FTDI Chip/Adapter besorgen oder einen CP2102, CH340 etc.
Danke für diesen und die andren Artikel zum ESP8266. Habe mir heute die ganze Pallette an Modellen in China für ein paar Euro bestellt. Mal schauen was ich damit alles anstelle.
Kann ich diese auch verwenden?
http://www.ramser-elektro.at/shop/module-sensoren-adapter-und-co/esp8266-esp12f-wlan-modul/
Ja – warum auch nicht? ;)
Hi, erst einmal vielen Dank für die Wissensteilung. Ist nicht selbstverständlich. Ich habe mich an Deine Anleitung gehalten und mein Script auf den ESP8266 geladen. Lief gut. Jetzt mein Frage: Wie ist denn Dein Vorgehen, direkt nach dem hochladen? Welche Schritte gehst Du und welche Pins sind wo angeschlossen. Und im Live Betrieb, wie hast Du das Stromproblem des ESP8266 gelöst? setzt Du Kondensatoren und Widerstände ein? Mein ESP fällt regelmäßig aus, verbindet sich wieder und fällt wieder aus. Ist sehr in-stabil. Und ich habe das Gefühl, dass meine Stromversorgung nicht sauber ist. Ich würde mich auf eine Zeichnung freuen und wenns nicht zu viel Mühe macht, den Weg 1.2.3 der Handschritte wenn Du den ESP nach dem Hochladen vom PC ziehst. Ich habe nämlich auch bei mir das Gefühl, dass das Abziehen des SeriellenUSB Loader der ESP8266 noch in seinem Developer Mode bleibt. Einfach Strom aus und Strom an klappt bei mir nicht immer. Ich muss immer drei vier mal den ESP vom Strom nehmen, bis der endlich schnallt, dass er jetzt alleine laufen soll. DANKE SCHÖN
Hi,
danke für dein Lob :)
Zu deinen Fragen: Ich nutze hauptsächlich die NodeMCU-Boards, da diese einen Flash-Baustein haben und die Stromversorgung auch über den Micro-USB-Anschluss erfolgt.
Wenn ich die einfachen ESP-Modelle verwende, dann mit einer externen Stromversorgung am Breadboard – das sieht man z.B. hier. In dem gerade verlinkten Artikel habe ich in einem Hinweis auch noch mal beschrieben, wie man den ESP8266 aus dem Flash-Modus bekommt.
Hallo,
habe deine Artikel jetzt schon zum xten male gelesen und kommen mit meiner ersten Funktion mit dem NODEMCU nicht zurecht. Vielleicht kannst du mir Hilfestellung geben.
Ich wollte Testweise nur eine externe LED per Gpio schalten.
Firmware geflasht mit LUA O.K.
Folgende Befehle ausgeführt:
gpio.mode(5,gpio.OUTPUT)
gpio.write(5,gpio.HIGH)
print(gpio.read,5) — > = 0 PIN D1 = GPIO 5 = 0 Volt
gpio.write(5,gpio.LOW)
print(gpio.read,5) — > = 1 PIN D1 = GPIO 5 = 0 Volt
Es sollte doch beim Umschalten des GPIO-Port einmal Spannung anliegen und einmal nicht.
Wo liegt mein Fehler?