Go Down

Topic: Werte von Variabeln durch WLAN, ohne neuprogrammierung ändern (Read 1 time) previous topic - next topic

cateyes

Hallo zusammen,

ich habe ein Sketch programmiert der mir die Pflanzen im Balkon automatisch, an bestimmten Uhrzeiten, gießt.

Insgesamt werden mit 12 Feuchtesensoren  12 Pumpen gesteuert und die Ausgabe erfolgt über ein Display.

Jetzt beobachte ich mit diesen Automat die gelieferte Werte der Sensoren am Bildschirm und über die Serielle Schnittstelle, denn ich weiß noch nicht welche Werte (von 0-1009) für welche Pflanze einstellen soll.
Die Arduino ist über USB mit einer Raspberry verbunden und über dem seriellen Monitor der Arduino IDE, über Remote Desktop werden die Werte beobachtet.
Wenn ich merke, dass die Erde zu feucht oder zu trocken ist, ändere ich den Wert einer Variabel und lade den Sketch in der Arduino jedesmal neu.
Das ist nicht besonders elegant.
Besser wäre, über eine ESP8266 die Variable der Feuchte zu "füttern", so ähnlich wie ich die Sensoren auslese.
Ich besitze eine ESP8266-01 und sie soll eine Firmware schon drauf haben, die die AT-Befehle versteht.
Das Problem: Ich kann sie zwar mit der Arduino verbinden, aber ich habe keine Ahnung wie ich vorgehen soll.
Ich brauche nicht eine fertige Lösung, aber ich weiß noch nicht mal, ob ich auf den Holzweg bin.
Wie gehe ich an die Sache ran? Baue ich mit der ESP ein Server? Wo schreibe ich die Werte, damit die Arduino sie "nimmt"? Kann ich die Werte sogar irgendwo schreiben, damit ich sie später lesen kann?

Vielen Dank in Voraus für eventuelle Tipps! Den Rest werde ich mir selbst googlen.


Grüße

Giuseppe
Religion ist heilbar!

noiasca

wäre nicht dieser Thread 90% dessen was du auch suchst? http://forum.arduino.cc/index.php?topic=521886.0

und zu dieser Frage:
Kann ich die Werte sogar irgendwo schreiben, damit ich sie später lesen kann?

--> EEPROM.write / EEPROM.read
DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

Tommy56

Mit dem ESP8266 kannst Du eine Konfigdatei im SPIFFS schreiben. Im Weihnachtsstern  (in #476 ist ein Link zum Code ) habe ich das genutzt.

Änderung über Webinterface und wenn ich will, wird die Konfigdatei neu geschrieben.

Gruß Tommy.
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

postmaster-ino

Hi

Da ich gerade mit FRAMs spiele - FM24C256
Der ist per I2C ansprechbar und kann 32kb (32768 x 8 Bit) Daten speichern, ist 'unbegrenzt' beschreibbar und schneller als der Bus - braucht also keine Wartezyklen wie ein EEprom (womit ich auch Mal spielen wollte).
Mit 10^11 Schreibzyklen bei 400kHz könnte man, laut Datenblatt, eine einzelne Zelle 10 Jahre am Stück beschreiben - wenn der µC noch was Anderes machen soll, außer den FRAM grillen, also ewig.
Einzig das fitzelige Gehäuse SOP8 (... ok, gibt auch kleinere SMD) empfinde ich als nicht sonderlich gut lötbar.
Hatte gestern mit Tommy's Code aus dem Nachbarforum Probleme (Wire lieferte Fehlerwert 2, Erfolg ergibt Fehlerwert 0), heute händisch den Aufruf nach Doku klappt, im Code nachgeschaut, eigentlich Alles genau so, getestet, klappt auch - irgendwer mochte mich Gestern wohl nicht!

Damit könnte man nicht nur für jeden Blumentopf einen eigenen Grenzwert einstellen, man könnte auch den Pflanzendurst protokollieren.

MfG

ElEspanol


Tommy56

Warum? Wenn er schon mal da ist, kann man den doch gut nutzen. Dann von Zeit zu Zeit die Werte nach extern schreiben (zur Auswertung) und wieder von der Anfangsadresse loslegen.

Wenn die Pflanze plötzlich nicht mehr ihre gewohnte Wassermenge abnimmt, könnte sie ein Problem haben.

Ich fand/finde FRAM als gute Alternative zu EEPROM und FLASH für oft geänderte Daten.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

cateyes

Hallo noiasca, Hallo Tommy,

Danke für euren wertvollen Tipps!
@noiasca:

Ja, das ist wirklich was ich suche, dort sind viele wertvolle Informationen die ich sicher gebrauchen kann.
Dort sind auch die pro und Kontra "only ESP" vs "ESP mit Arduino angezeigt.
Als Anfänger reizt mir die Anzeige mit der App Virtuino sehr: wenig lernen, aber optisch ansprechender App, mit "scheinbar" wenig Aufwand.
--> EEPROM.write / EEPROM.read... Ist dort den Anzahl der Schreibzyklen nicht begrenzt?  10000 mal wie bei der Arduino?
Im Moment schreibe ich definiere ich die Werte der Feuchte die die Erde erreichen soll in einer Variabel.
Konnte ich dann ein Befehl wie Int Feuchte = EEPROM.read(wert) wenn ich vorher den Wert mit EEPROM.write schreibe? Entweder habe ich die Frage falsch gestellt, oder ich sehe keinen Vorteil gegenüber direkt den Sketch hochladen...
Ideal wäre, dass ich den Wert der Feuchte in einer APP oder Server schreibe (Über PC oder APP) damit ich im Sketch sowas wie " Int Feuchte = AUSDENSERVER.read(wert)

@Tommy:
Zuerst Kompliment für dein Weihnachtsstern! Deine Programmierung ist (in meine unerfahrenen Augen) wie in Lehrbuch: Überall Kommentare, die Variablen sind sparsam definiert, das Programm sehr schön strukturiert.
Bevor ich dein Sketch in meiner Arduino "Brutzle" möchte ich das meiste verstehen. Wie Du im Bild siehst, versuche ich auch die Sachen so gut wie möglich zu verstehen und umzusetzen. Auch wenn es mir oft try and pray sehr anzieht...
Dein Engagement in diesen Forum ist enorm, fast immer bist Du dabei mit Tipps und Ratschläge.
Ich versuche die Funktionsweise des server "http://bienonline.magix.net/public/esp8266-webserver-klasse.html" zu verstehen: Ist ein freier Service im Internet?
Und dann werde ich versuchen dein Sketch zu verstehen, oder zumindest den Teil wo es um die Kommunikation geht, wobei ich muss gestehen, das es mir einer Nummer zu groß für mich erscheint.
Ich fange mal an die ESP an der Arduino nano zum testen zu verbinden. Dafür habe ich ein bidirektionaler Pegelwandler besorgt. (5 Stück für 3,80)
Ich werde die 3,3V an: Pegelumvandler LV und GND anschließen, dann an der ESP (VCC und GND)
Die 5V werde ich an Pegelumvandler HV und GND anschließen
Die RXD der ESP an LV1, von HV1 zu RXD der Arduino anschließen
Die TXD der ESP an LV2, von HV2 zu TXD der Arduino anschließen
Dann werde ich mit ein Standardsketch schauen ob meine Schaltung funktioniert. Led 13 blinken lassen.
Dann versuche ich eure Tipps zu verstehen und für ein mein Projekt in einer separaten arduino testen.
Wenn alles läuft werde ich alles in mein Hauptsketch einbauen und bei Erfolg euch ganz feste drücken!
Keine Angst...Nur virtuell! :-)

So, jetzt ran an die bulette!

Gruß
Giuseppe
Religion ist heilbar!

cateyes

Hi

Da ich gerade mit FRAMs spiele - FM24C256
Der ist per I2C ansprechbar und kann 32kb (32768 x 8 Bit) Daten speichern, ist 'unbegrenzt' beschreibbar und schneller als der Bus - braucht also keine Wartezyklen wie ein EEprom (womit ich auch Mal spielen wollte).
Mit 10^11 Schreibzyklen bei 400kHz könnte man, laut Datenblatt, eine einzelne Zelle 10 Jahre am Stück beschreiben - wenn der µC noch was Anderes machen soll, außer den FRAM grillen, also ewig.
Einzig das fitzelige Gehäuse SOP8 (... ok, gibt auch kleinere SMD) empfinde ich als nicht sonderlich gut lötbar.
Hatte gestern mit Tommy's Code aus dem Nachbarforum Probleme (Wire lieferte Fehlerwert 2, Erfolg ergibt Fehlerwert 0), heute händisch den Aufruf nach Doku klappt, im Code nachgeschaut, eigentlich Alles genau so, getestet, klappt auch - irgendwer mochte mich Gestern wohl nicht!

Damit könnte man nicht nur für jeden Blumentopf einen eigenen Grenzwert einstellen, man könnte auch den Pflanzendurst protokollieren.

MfG
Das hört sich auch interessant an! Ich werde mich auch dahingehend informieren. Dankeschön! Hier ist wie in Traumland für mich!
Religion ist heilbar!

cateyes

FRAM, absoluter Overkill fürs Blumengiessen ;)
Laaach! Blumengießen.... 12 Sensoren, 12 Pumpen, 12 verschiedene Pflanzen.
Nach 2 Wochen habe ich den idealen Wert der Feuchte für eine(!) Palme herausgefunden. ( und mindestens 100 mal die Arduino neu programmiert)

Ich habe eine Sicherung eingebaut, falls ein Sensor kaputt geht, oder falls ein Vogel ihn herausreißt... Nur durch Werte ändern.

Für Blumengießen hätte ich mir einer der unzähligen Sketch herauskopiert und drauf gebruzzelt.
Da steckt viel mehr dahinter. Wie Tommy schon sagt... den Pflanzen soll gut gehen!
Und danach kommt der "Dünger-Modus"! Da ändert sich der Widerstand der Erde wieder und ich fange neu an...

Aber vielleicht hast Du Recht und Du hast eine bessere Idee?

 
Religion ist heilbar!

Tommy56

Zum FRAM habe ich nebenan ein paar Funktionen #22 geschrieben.
Zur Kopplung NodeMCU könnte das hier weiter helfen. Beachte die unterschiedliche Ausrichtung von Strukturen.
 
Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

noiasca

Quote
10000 mal wie bei der Arduino?
Im Moment schreibe ich definiere ich die Werte der Feuchte die die Erde erreichen soll in einer Variabel.
Konnte ich dann ein Befehl wie Int Feuchte = EEPROM.read(wert) wenn ich vorher den Wert mit EEPROM.write schreibe? Entweder habe ich die Frage falsch gestellt, oder ich sehe keinen Vorteil gegenüber direkt den Sketch hochladen...
Da du in deinem Eingangspost von ESP und AT Befehlen gesprochen hast, bin ich von einer Konstrukt ausgegegangen, wo du mit deinem Arduino den ESP mittels AT Kommandos ansteuerst, ergo auch veränderte Parameter am Arduino speicherst.

Zu den Schreibzyklen am Arduino/Atmel AVR generell - ich hab jetzt auf die schnelle keine Referenz gefunden daher Halbwissen:
10.000 --> FLASH/Programmspeicher
100.000 --> EEPROM

ich bin der Meinung dass 100.000 Parameteränderungen viel sind und somit jede Speicherzelle deine Blume überlebt ;-)


zu
Quote
oder ich sehe keinen Vorteil gegenüber direkt den Sketch hochladen...
ich finde es schon einfacher in einer Weboberfläche einen Parameter zu ändern, als eine Ausbesserung einer Konstante im Sketch und den Sketch wieder neu hochzuladen.

Wenn du dich aber überzeugen lässt und den ESP01+Arduino gegen einen NodeMCU/WEMOS auszutasuchen und den NodeMCU/Wemos direkt programmierst, kannst du wie bereits vorgeschlagen auch das Filesystem SPIFFS des ESP's nutzen.

Du hast keinen Schaltplan reingestellt wie du die 12 Sensoren/12 Pumpen angesteuert hast, daher folgt Raterei:
Selbst wenn dir am NodeMCU/Wemos die GPIOs ausgehen, kannst ja auch deine Schaltung einfach 3, 4 mal aufbauen. Dann brauchst auch weniger Kabel zwischen deinen Blumentöpfen. Also mehrere separate Blumengießer, dafür kein gedöns mit Portexpander, Levelshifter etc.
DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

Tommy56

Und danach kommt der "Dünger-Modus"! Da ändert sich der Widerstand der Erde wieder und ich fange neu an...
Wenn der Widerstand der Erde in Deine Messung eingeht, hast Du die falsche Meßmethode, da dabei Elektrolyse stattfindet und sich Deine Elektroden zersetzen und die Metallionen sich oft nicht mit den Pflanzen vertragen (oder umgekehrt).

Wie misst Du die Feuchte?

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

ElEspanol

Laaach!
...

Aber vielleicht hast Du Recht und Du hast eine bessere Idee?
Ich bezog mich rein auf die Hardware. Fürs Blumengiesen reicht der Eeprom locker aus, Notfalls mit intelligenter Verwaltung der Speicherplätze.

noiasca

OT: sorry fürs kapern

Wie misst Du die Feuchte?
was gäbe es denn da vernünftiges? Diese "Feuchteplatinen" beim FC sind ja wirklich nur was für 14 Tage zum anschauen...
DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

Tommy56

Suche mal hier im Forum nach "Gießomat", da sind auch andere Sensoren mit erwähnt. Nebenan gibt es auch einen Thread und eine Realisierung.

Allen gemeinsam ist das kapazitive Messprinzip. Es fließt also kein Strom durchs Erdreich.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Go Up