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 auf amazon.de) 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).
Gibt es zu diesem projekt eine belegung für die pins? Und funktioniert dies auch mit einem Arduino NANO?
AntwortenLöschenDanke 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öschenKann es sein das du die Verlinkung " Wie man den ESP8266 mit dem Arduino verbindet " falsch gesetzt hast ? Ich komme da auf den Artikel
AntwortenLöschen"LED über Internet steuern mit ESP 8266"
Der Post heißt zwar anders, enthält aber im oberen Teil die angegeben Informationen.
Löschen