ESP8266 agiert zu Arduino

Für manche ist er nur ein WLAN-Modem, für andere ein genialer Baustein mit programmierbarem Mikrocontroller. Auf jeden Fall kann er viel, der ESP8266. Auch, wenn man nur die AT-Firmware nutzt, also über sein Interface diverse AT-Befehle sendet, um beispielsweise einen Accesspoint einzurichten oder einen HTTP-Server aufzubauen.

Das geschieht dann im Zusammenspiel mit einem Rechner, lässt sich aber recht kompakt mit zum Beispiel einem Arduino Nano aufbauen. Um sich eine eigene Firmware zu bauen, gibt es ein SDK von Espressif.

Manche versuchen sich auch im Standalone-Betrieb und entwickeln dahingehend… Die Ressourcen des Controllers sind jedoch recht beschränkt. Soweit wollen wir hier auch nicht gehen. Und unsere beiden briefmarkengroßen ESPs haben auch eine aktuelle Firmware, die 8-Pin-Variante hinkte etwas hinterher.

Im Folgenden soll also gezeigt werden, wie man einen ESP8266 ohne USB-zu-seriell-Adapter anspricht, zu diesem mittels Arduino-IDE AT-Befehle sendet und später das mit einem C-Sketch „automatisch“ tut. Das erste Bild zeigt dann auch schon unsere fertige Schaltung (noch ohne jedwede Sensoren).

Den ESP gibt es in verschiedenen Bauformen, wir haben sowohl die Variante mit 8-Pin-Konnektor (esp01) und dann zwei Bausteinchen der zweiten Bauform (esp07) erworben, auf der alle GPIO’s auf das normale Pinraster herausgelegt sind.

Stiftleisten muss man dann anlöten, das Teil ist dann aber recht gut zu verbauen und auf einem Breadboard zu testen. Auch deshalb sind wir später vom esp01 (noch im Bild) auf diese Variante gewechselt.

Die Verbindung macht man wie hier:

ESP    – Pins Arduino
———————
VCC    – 3.3V
TX     – D2
RX     – D3 über Spannungsteiler
CHP_PD – 3.3V über 10K
GND    – GND

Die Platine ist bei der Versorgung und dem Pegel am seriellen Eingang nicht tolerant. Deshalb braucht es dort 3.3 Volt. Da rückwärts vom Arduino aber auch 3Volt-Signale richtig erkannt werden, reicht ein Spannungsteiler (in eine Richtung wirkend). Und das wird dann am besten über einen Schaltplan klar:

Da der ESP kurzzeitig bis zu 200mA verbrauchen kann, wird das über den 3V3-Ausgang des Nano mitunter etwas knapp (beim Uno und beim Mega geht das). Bei meinen Versuchen, war die hauseigene Versorgung über den Nano nicht ausreichend.

Wenn ihr da viel Zeit beim Experimentieren sparen wollt (auch 220µ-Kondensator, wie oft beschrieben, je nach ESP-Modell mitunter nicht ausreichend), dann versorgt die Schaltung am besten gleich mit einer externen Quelle.

Bei uns ein Spannungswandler von YwRobot, welcher sowohl 5V als auch 3.3V abgeben kann (siehe Bilder).

Jetzt wird ein Seriell-zu-Seriell Skript notwendig (zumindest haben wir das zuerst für unsere ersten Versuche auf dem Nano installiert, da wir keinen seriellen Adapter zur Verfügung hatten).

Jedenfalls kann man dann bequem über die Arduino-IDE eine Reihe von AT-Befehlen zum ESP übertragen und die entsprechenden Antworten debuggen.

Einen „First Time Use Guide“ und Übersicht der wichtigsten Befehle gibt es hier: https://nurdspace.nl/ESP8266#AT_Commands .

Daneben existieren mittlerweile ein paar weitere gute Quellen, wie https://www.mikrocontroller.net/articles/ESP8266 .

Wir nutzen übrigens eine Arduino-IDE 1.6.4 unter Linux-Mint und hatten keine Probleme damit.

Wie wir die Softwareseite mittels unseres eigenen Skripts genau gelöst haben, dazu aber vielleicht später in einem Codeschnipsel und außerdem mehr im zweiten ESP-Projekt (hier zu finden).

Hier noch unsere AT-Befehle im Einzelnen:

AT+CWMODE=1
AT+RST (vorherige Einstellung wird erst nach Reset übernommen)
AT+CWJAP=“ssid“,“passwd“ (Daten des eigenen WLAN)
AT+CIPSTO=30
AT+CIPMUX=1 (im Serverbetrieb muss gemuxt werden)
AT+CIPSERVER=1,port

Im letzten Bild sieht man dann schon, dass sich der ESP in der Liste unserer Wifi-Geräte mit einer diversen IP wiederfindet und wir ihn als „esp01“ benannt haben.

Jetzt kann mittels „AT+CIPSEND=…“ die Website bedient werden, welche wir unter Angabe der IP des ESP und des oben ausgewählten Ports (port) im Browser erreichen. Noch ist die Seite jedoch leer…

Swen Hopfe

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert