Sonntag, 27. September 2015

ESP 8266 mit Arduino verbinden

In diesem Post geht es darum, wie man den ESP 8266, ein Wlan Modul für 4€, mit dem Arduino verbinden kann. Dadurch übernimmt der ESP die Rolle als Webserver, und leitet die Steuerungsbefehle an den Arduino Uno weiter.


Um eine Beispielkommunikation darzustellen wollen wir auf dem ESP eine Weboberfläche erstellen, auf der man die LED des Arduino (Pin 13) steuern kann. Wie man den ESP8266 mit dem Arduino verbindet, habe ich bereits hier erklärt.

Der ESP 8266 als Webserver

Die Weboberfläche besteht aus 2 Radiobuttons und einem Absendebutton. Radiobuttons, sind Buttons, bei denen immer nur ein Button ausgewählt sein kann. Dadurch muss man wählen, ob die LED an oder aus sein soll. Über den Submit Button sendet man das HTML Formular ab. 

Dabei wird das Formular über die Funktion GET übertragen. Diese speichert/übertragt die Werte über die Url:

Um die Url, welche der User aufruft abzufragen, kann man die Funktion  client.readStringUntil('\r') verwenden. Nun muss man nur noch herausfinden, ob der String ?led1=1 oder ?led1=0 enthalten ist, also ob die LED an oder aus sein soll. Dabei ist die Funktion indexOf() hilfreich. Diese gibt -1 zurück, wenn ein String nicht enthalten ist, oder die Position des ersten Zeichen der Zeichenkette im String als Zahl (beispielsweise 5). Dadurch kann man herausfinden, wie die LED geschaltet werden soll.

Um nun die Information an den angeschlossenen Arduino weiterzuleiten, kann man die serielle Verbindung nutzen. Dabei kann man alle gewohnten Befehle auf beiden Seiten nutzen. Wie man eine serielle Verbindung herstellt, erfahrt ihr hier. Bei nur einer LED, kann man einfach 1 für an, oder 0 für aus, übertragen.

Der gesamte Sketch für den ESP 8266 sieht dann so aus:



Der Arduino Sketch

Der Arduino muss nur eine serielle Verbindung mit der selben Datenrate (in diesem Fall 115200) starten, und warten, bis er etwas über die serielle Verbindung empfängt. Auch hier muss man wieder 48 für 0 und 49 für 1 angeben, da die Zahlen als Text übertragen werden, und somit ihre ASCII Werte übermittelt werden. Der Sketch sieht dann so aus:

Fazit

Die Kommunikation zwischen dem ESP 8266 (hier bei AZ-Delivery) und dem Arduino Uno gestaltet sich denkbar einfach, und durch die Verbindung der beiden Geräte kann man ihre Vorteile geschickt kombinieren (ESP als leistungsstarke Webserver, und Arduino als Steuerungseinheit mit vielen Pins).

Kommentare:

  1. Gibt es zu diesem projekt eine belegung für die pins? Und funktioniert dies auch mit einem Arduino NANO?

    AntwortenLöschen
    Antworten
    1. Danke für den Hinweis, habe vergessen den passenden Post zu verlinken (siehe dritter Satz). Dieses Projekt funktioniert auch mit einem Arduino Nano, da auch der Nano eine serielle Verbindung aufbauen kann.

      Löschen
  2. Kann es sein das du die Verlinkung " Wie man den ESP8266 mit dem Arduino verbindet " falsch gesetzt hast ? Ich komme da auf den Artikel
    "LED über Internet steuern mit ESP 8266"

    AntwortenLöschen
    Antworten
    1. Der Post heißt zwar anders, enthält aber im oberen Teil die angegeben Informationen.

      Löschen