Lichtwecker mit Arduino + ESP8266

Hallo zusammen,

ich bin seit einigen Monaten damit beschäftigt eine Bettlampe mit dem Arduino aufzubauen.
Die Lampe besitzt eine LED die mittels pwm Signal gesteuert wird. Zusätzlich kommen Mini Servos zum Einsatz, die die Lampe bewegen.
Aktuell wird die Lampe über drei Taster aus und ein geschaltet bzw. bewegt. Das funktioniert soweit auch ganz gut.

Nun möchte ich die Lampe um die Funktion eines Lichtweckers erweitern. Dabei möchte ich die Weckzeit und die Position der Lampe per wifi an den Arduino übertragen.
Meine Überlegung war die Werte (Weckzeit, Helligkeit, Position) von einer Android-App (MIT App Inventor 2) über ein ESP8266 wifi-Modul an den Arduino zu übertragen.

Nach langer Internetrecherche für eine passende Anleitung bin ich dann auf folgender Seite gelandet:

Hierbei werden Werte mittels "http:/ip.xxx.xxx.xxx:80/Wert=123" an den ESP8622 übertragen. Der Arduino bekommt dann den Wert mittels:

esp8266.find("Wert="); 
Wert= (esp8266.read()-48);

Problem dabei ist:

  • es funktioniert nur in eine Richtung (Android-App -> Arduino), sollte aber wenn möglich in beide Richtungen Werte übertragen können
  • Übertragen mehrere Werte habe ich bisher nicht hinbekommen
  • das Übertragen von neuen Werte innerhalb eines kurzen Zeitraums führt zu Fehlern, bzw. werden anschließend keine neuen Werte mehr übertragen.

Meine Frage:
Wie kann ich die Übertragung zwischen Android app über den ESP8266 an den Arduino (und vom Arduino hin zur Android app) am besten realisieren?

Für jede Anregung, Hinweise, Kritik wäre ich sehr dankbar.

Vielen Dank für eure Hilfe!

Grüße
Simon

Da gibt es viele Möglichkeiten. Am Einfachsten ist es, wenn Du auf dem ESP einen Webserver installierst und den Zugriff über einen Browser durchführst.
Da kannst Du dann wählen, ob Du normale HTML-Zugriffe, die Fetch-API oder AJAX verwenden willst, um Daten auszutauschen.

Wie das mit einer App funktioniert, kann ich Dir nicht sagen, da ich keine nutze.

Gruß Tommy

Hallo,

Du solltest dann aber alles mit dem ESP machen und nicht die serielle Verbindung vom Uno zu einem ESP8266-01 nutzen. schau dir mal den ESP Wemos D1 mini an der hat ein paar ein und Ausgänge. Allerdings alles mit 3,3V. Die ESP Controler lassen sich auch mit Adruino IDE programieren. Es gibt auch Module mit noch ein paar mehr E/A´s

Die Webseite selbst kannst Du mit einem Texteditor erstellen und dann auf einen Filesystem des ESP speichern und drauf zugreifen. Bei den ESPWiFi Beispielen ist ein Webserver mit bei ,der leicht verständlich ist und den man gut an seine eigenen Bedürfnisse anpassen kann. Webseerver hat den Vorteil klappt halt mit jedem Brauser.

Die Uhrzeit kannst Du dann aus dem Internet oder einer Fritzbox mit NTP holen, damit brauchst Du auch keine RTC mehr. Das macht der ESP fast von alleine und es ist auch eine automatische Sommer/Winterzeit Umstellung seit einiger Zeit mit dabei.

Heinz

Also einen ESP8266-01 für einen Anfänger zu empfehlen grenzt schon an Körperverletzung :wink:

Ein LOLIN/WEMOS D1 mini pro oder ein NodeMcu 1.0 sollte es schon sein. Die kannst Du direkt aus der IDE programmieren. Das ist für Dich einfacher.

Gruß Tommy

Hallo,

Tommy56:
Also einen ESP8266-01 für einen Anfänger zu empfehlen grenzt schon an Körperverletzung :wink:

Ein LOLIN/WEMOS D1 mini pro oder ein NodeMcu 1.0 sollte es schon sein. Die kannst Du direkt aus der IDE programmieren. Das ist für Dich einfacher.

Gruß Tommy

der 8266-01 wurde in dem vom T0 angegeben Link besprochen, das ist keine gute Idee und macht keinen Spass. Ich selbst hab, wie viele andere sicher auch, zu Beginn ebenfalls den Fehler gemacht. Man fängt halt mit einem UNO an und sucht dann nach einer Lösung das Ding ans Heimnetzt zu bekomen. Und dabei stolpert man dann über den ESP8266-01 und anschliessend dann über die AT Befehle.

Also nicht machen !!

Gruß Heinz

Danke für die schnellen Antworten.

Ich hatte mich bewusst gegen einen Webserver entschieden, um das Erstellen einer Webseite zu umgehen. In einem früheren Projekt habe ich bereits daran versucht und bin kläglich gescheitert
:confused: . Aber ich denke, dass ein Webserver die besser Lösung ist. Ich starte einen neuen Versuch. Hättest du diesbezüglich eine gute Anleitung oder Beispiel?

Rentner:
Hallo,

der 8266-01 wurde in dem vom T0 angegeben Link besprochen, das ist keine gute Idee und macht keinen Spass. Ich selbst hab, wie viele andere sicher auch, zu Beginn ebenfalls den Fehler gemacht. Man fängt halt mit einem UNO an und sucht dann nach einer Lösung das Ding ans Heimnetzt zu bekomen. Und dabei stolpert man dann über den ESP8266-01 und anschliessend dann über die AT Befehle.

Also nicht machen !!

Gruß Heinz

Die serielle Verbindung und die AT Befehle haben mich auch schon einige Stunden gekostet.

Ich habe mir auch schon überlegt ein anders Board zu verwenden. Da hatte ich aber bedenken, ob die Anzahl an Ein- und Ausgangs Pins ausreichend sind. Ich habe auch zwei Lampen aufgebaut (für jede Bettseite eine), was dann bedeutet 6x Taster, 6x mini Servos, 2x pwm Signal für die LEDs.

du brauchst ja "fast keine" webseite. du brauchst den Server vorangig für das entgegennehmen deines Uhrzeit-Parameters.

Gut, dann schau dir das einfachste Beispiel in der IDE an:

ESP8266WebServer | HelloServer

das Ding hat drei Handler, einen für
\ root ... eine reine Textausgabe
inline ... damit du siehst dass du auch direkt "ein wenig Text" rausschreiben kannst
und einen für eine Klassische 404 Seite. In dieser 404 Seite ist auch ein Beispiel wie man an eventuell übergebene Parameter kommt.

Genau das willst du: quasi ein

if (server.argName(0) ="Wert") Wert=server.arg(0)

je nach dem was deine Variable Wert ist musst noch ein int draus machen, aber das geht auch:

Wert=server.arg(0).toInt()

Mit diesen Angaben sollte eigentlich bis Sonntag abend deine erste Mini-Anwendung am ESP laufen.

@noiasca: Wer wird denn mit = vergleichen? (server.argName(0) ="Wert")

@TO: Für Webseiten immer wieder zu empfehlen: Selfhtml

Gruß Tommy

jemand der nur pseudocode nicht in codetags hinschreibt.