Analoge Thermostate am Arduino auswerten und per Esp8266 an mysql senden

Hallo zusammen,
ich stehe seit Tagen vor dem Problem, dass ich analoge Thermostate am Arduino Uno abgreife und diese via ESP8266-01S per WLAN an einen MySQL Server senden möchte.

Ja man könnte ein Wemos oder ähnliches benutzen. Das ist aber nicht meine intention, da ich wissen will wie es auf diesem Weg funktioniert.

Es gibt unendlich viele Anleitungen im Netz aber so wirklich verstehe ich keines. Ich habe daher ein paar Fragen bzw. auch Anfängerfragen.

1.Frage: Ist das allgemein möglich oder bin ich auf dem Holzweg?

Ich habe bereits Anleitung mit Json oder SerialSoftware ausprobiert aber nix funktioniert so richtig. Vermute mal liegt an meinem Laienwissen.

Das Problem ist der eine schließt den ESP anders an als der nächste usw... Mal RX auf TX und umgekehrt, mal TX auf TX, Mal auf 2 und 3 am Arduino, mal mit Widerstand zwischen RX mal ohne....

So langsam bin ich ratlos, da selbst ein meiner Meinung nach eine Sehr gute Anleitung für mich auch nicht funktioniert.

2.Frage: Hat jemand einen Rat wo ich ansetzen kann?
3.Frage: Hat jemand sowas am laufen?

Bin für jeden Rat dankbar.

Schönen Abend noch
Bourton88

analoge Thermostate

Ich kenne nur digitale Thermostate, oder welche mit Wachsfüllung, die mögen analog sein, sind aber völlig ohne E-Technik.

Am Rande:
Das permutieren über alle Möglichkeiten ist selten Ziel führend.
Eher ist Rauch zu erwarten.

Klare Gedanken, machen ein klares Programm.
Verwirrung führt in die Irrung.

Du hast erst mal 2 generelle Wege, um Daten in eine MySQL-DB zu bringen:

Den direkten Weg (der dürfte über AT-Kommandos sehr schwer sein) oder über ein PHP (oder sonst eine Sprache) Script auf dem Webserver, der die Daten dann in die DB einträgt.

Da ich mir die AT-Kommandos und den ESP8266-01 nie angetan habe, kann ich nur für den den D1 mini sprechen. Mit dem laufen beide Wege bei direkter Programmierung des ESP8266 problemlos.

Du kannst den ESP8266-01 auch direkt programmieren (dabei geht die AT-Firmware flöten) und ihn z.B. per I2C an den UNO anbinden. Für den NodeMCU habe ich das hier mal gemacht.

Gruß Tommy

Das ist schonmal ein guter Hinweis Tommy, Danke. Wenn du von Webserver sprichst meinst du den wo masql läuft oder den Esp8266 als Webserver einrichten?

Ich weiß nicht ob du mir vielleicht die nächste Frage auch beantworten kannst

Alle/Viele benutzen immer den NodeMCU. Was ist der Vorteil ausser mehr Pins? Ich kann doch den darauf gelöteten Esp8266 auch so nutzen oder nicht? Spare ich mir quasi das Drama mit der Spannungsversorgung und der Widerständen am RX und TX pin wie bei einem ESP8266-01s?

Schönen Gruß
Bourton88

Hab nicht verstanden wo es bei Dir hapert.
Was funktioniert und was nicht?
Funktionieren einzelne Teilprobleme?
Grüße Uwe

Den NodeMCU hätte ich dir jetzt auch empfohlen, oder einen Wemos D1 mini.
Der Vorteil ist nicht nur die Anzahl der Pins, sondern auch die einfachere Programmierung. Der hat einen USB-Serial-Chip drau und kann damit direkt über USB programmiert werden.

Eine einfache Verbindung zu deinen Arduinos ist dann per Serieller Schnittstelle darüber kannst du dann die Daten übertragen. Und für die serielle brauchst du min. 1 Widerstand, da der Arduino mit 5V an den Pins arbeitet, der ESP8266 mit 3,3Volt.

Du hast am NodeMCU und am WEMOS (LOLIN) D1 mini einen direkten USB-Anschluss und
kannst sie damitdirekt in der IDE programmieren und über Serial debuggen.

Ich meine einen Webserver, der PHP kann (also kein ESP8266) und der auf die MySQL-DB zugreifen kann.
Das muss nicht die gleiche Maschine sein, auf der die DB läuft, kann es aber.

Bei mir ist das ein Webserver beim Provider und die DB auch. Das kann aber auch alles auf einem lokalen PC, einem NAS oder einem RASPI laufen.

Gruß Tommy

Wie schließe ich den Esp8266 denn richtig an die Serielle Schnittstelle an?

Esp8266 an Arduino UNO:

TX an 1KOhm an TX und RX an 1KOhm and RX

ODER

RX an 1KOhm an TX und TX an 1KOhm an RX

Ich könnte noch 3 Beispiele aufzählen die ich gefunden habe.... Was ist denn richtig? :frowning:

bourton88:
Wie schließe ich den Esp8266 denn richtig an die Serielle Schnittstelle an?

Esp8266 an Arduino UNO:

TX an 1KOhm an TX und RX an 1KOhm and RX

ODER

RX an 1KOhm an TX und TX an 1KOhm an RX

Ich könnte noch 3 Beispiele aufzählen die ich gefunden habe.... Was ist denn richtig? :frowning:

Das zweite Beispiel.

RX an TX und TX an RX.
mit Widerstand dazwischen.

Merke: der Empfänger (RX) empfängt vom Sender (TX).

Der Esp8266 läuft ja mit der Baudrate 115200 und Arduino mit 9600. Ist das ein Problem um den Seriellen Monitor mitlaufen zu lassen um ALLE Serial.prints zu sehen?

Wenn ich das programmiere wie in diversen Beispielen sehe ich immer nur die, die ich vom Uno aus sende. Ich weiß nie was und in welchem Format auf dem ESP ankommt. So ist es schwer was weiterzuleiten.

bourton88:
Der Esp8266 läuft ja mit der Baudrate 115200 und Arduino mit 9600. Ist das ein Problem um den Seriellen Monitor mitlaufen zu lassen um ALLE Serial.prints zu sehen?

Wenn ich das programmiere wie in diversen Beispielen sehe ich immer nur die, die ich vom Uno aus sende. Ich weiß nie was und in welchem Format auf dem ESP ankommt. So ist es schwer was weiterzuleiten.

Verstehe ich nicht.
Du musst schon beide Seiten der seriellen gleich schnell laufen lassen, sonst geht das nicht.

Okay alles klar.. Vielleicht auch ein Verständnis Problem meinerseits.

Den Esp8266 muss ich glaube ich mit 115200 laufen lassen sonst funktioniert er nicht richtig?

Den Arduino kann ich einfach mit serial.begin(115200) starten?

bourton88:
Okay alles klar.. Vielleicht auch ein Verständnis Problem meinerseits.

Den Esp8266 muss ich glaube ich mit 115200 laufen lassen sonst funktioniert er nicht richtig?

Den Arduino kann ich einfach mit serial.begin(115200) starten?

Ich vermute, hier liegst du noch falsch.

Der ESP wird nicht an der seriellen Hardware-Schnittstelle angeschlossen, sondern per SoftwareSerial an digitale Pins des Uno.

Wenn du die Serielle verwendest, kannst du den nicht debuggen, also auslesen, da beides (ESP8266 und Serieller Monitor) nicht gleichzeitig geht.

HotSystems:
Das zweite Beispiel.

RX an TX und TX an RX.
mit Widerstand dazwischen.

Merke: der Empfänger (RX) empfängt vom Sender (TX).

Was ist dann hiermit gemeint?

Also doch Z.B. TX von Esp an Digital 3 von Uno und RX an Digital 4?

bourton88:

Das zweite Beispiel.

RX an TX und TX an RX.
mit Widerstand dazwischen.

Merke: der Empfänger (RX) empfängt vom Sender (TX).

Was ist dann hiermit gemeint?

Also doch Z.B. TX von Esp an Digital 3 von Uno und RX an Digital 4?

Deine Frage verstehe ich gerade nicht.

Die passt nicht zum zietierten Post.

Meine Frage ist wo schließe ich den TX und RX Pin vom Esp8266 am Arduino an?

In dem ersten Post hast du gesagt TX an RX usw.... Im anderen Post steht an einem DIGITAL PIN.

Oder brauche ich beides? Einmal für den Betriebsmodus und einmal zum debugen?

Das mit dem Widerstand sehe ich eine Fehlerquelle.
Auf dem Arduino UNO bei der Hardware Seriellen Schnittstelle zwischen dem ATmega328 und ATmega16U2 sind zwei 1kOhm Widerstände.

Wenn Du einen 3,3V TX-Ausgang mit einem 1kOhm am RX des ATmega328 anschließt und dieser mit einem 1kOhm Widerstand an den Ausgang des ATmega16U2 angeschlossen ist, hast Du einen Spannungsteiler der die Spannung massiv reduziert sodaß die Pegel nicht erkannt werden.

Grüße Uwe

Du kannst Anstatt der Hardwarschnittstelle auf dem UNO eine Softwareschnittstelle verwenden. Das funktioniert bei so hohen Baudraten nicht gut. Du könntest aber einen Leonardo oder MEGA 2560 mit freien Hardwareschnittstellen verwenden.
Grüße Uwe

uwefed:
Du kannst Anstatt der Hardwarschnittstelle auf dem UNO eine Softwareschnittstelle verwenden. Das funktioniert bei so hohen Baudraten nicht gut. Du könntest aber einen Leonardo oder MEGA 2560 mit freien Hardwareschnittstellen verwenden.
Grüße Uwe

Funktioniert nicht gut heißt keine Datenübertragung oder Verbindungsabbrüche etc.?

Würdest du also einen Einsatz mit einem Esp8266 und einem Uno nicht empfehlen?

OK....das sind natürlich Dinge, die man bei solchen Projekten Wissen sollte/muss.

Eine serielle Schnittstelle besteht immer aus "RX und TX". der ESP8266-01 hat diese extra rausgeführt und kann diese zur seriellen Übertragung nutzen.

Der Uno hat diese auch rausgeführt, sollte aber möglichst nicht für eine serielle Datenübertragung zu externen Modulen genutzt werden, da diese nach dem Flashen für den seriellen Monitor zum Debuggen genutzt wird. Und das ist kein Bus, kann also nicht gleichzeitig für den seriellen Monitor und für den ESP8266 genutzt werden.

Also benötigst du die Library "SoftwareSerial.h" für eine weitere serielee Schnittstelle zur Datenübertragung an den ESP8266. Diese nutzt dann digitale Pins deiner Wahl, außer D0 und D1 (RX und TX), nennen sich dann aber ebenso RX und TX, je nach deiner Definition.