Messwert von Arduino Uno auf Webserver ESP8266 01S

Guten Morgen!

Ich bin mir sicher, diese Frage wurde schon 1000 mal gestellt. Aber ich suche jetzt seit fast 3 Wochen nach einer Lösung und bin noch nicht weiter.
Momentan bin ich dabei, innerhalb eines größeren Projektes eine Füllstandsanzeige einer Zisterne auf einem Arduino Uno zu realisieren. Benutzt wird der HC-SR04 Ultaschallsensor aus dem Starterkit. Soweit läuft auch alles. Nachdem ich mir nun diesen ESP8266 01S zugelegt habe, möchte ich, das der Füllstand der Zisterne auch auf diesem abgebildet wird, um auch aus der Ferne (Smartphone; Notebook) zu wissen, Zisterne voll oder leer.
Über den Befehl: Serial.println(volumeact); vom Arduino (an diesem ist der Sensor angeschlossen) kann ich den Füllstand am seriellen Monitor sehen. Aber wie hole ich mir diesen Wert auf den ESP und binde ihn in den Webserver ein???
So langsam hab ich keinen Plan mehr.
Die Steuerung meiner Gartenpumpe (ein- und ausschalten) funktioniert vom ESP zum Arduino tadellos. Die Pumpe wird dann über einen Output Pin am Arduino über eine Relaiskarte geschalten. ESP und Arduino sind über RX/TX verbunden.
Für jegliche Hilfe wäre ich sehr dankbar!

Verschieben Sie Ihr gesamtes Projekt auf einen ESP8266 oder besser einen ESP32 ... die Verwendung eines ESP01, der mit Ihrem Arduino verbunden ist, sucht wirklich nach Ärger ...

Und warum dann noch ein Uno ?
Das geht doch auch alles mit dem ESP-01s. Da braucht es den Uno doch nicht.
Wenn doch, kannst du die Daten über die UART an den ESP übermitteln.

Ok, für den US-Sensor braucht es weitere Pins, da wäre ein Wemos D1 mini besser, der auch auf einen ESP8266 basiert.

Für deine Zisterne solltest du besser einen wasserdichten Sensor verwenden.

Das kann ich allerdings nicht nachvollziehen.
Ich habe mit dieser Anordnung mehrere Projekte gestartet. Und keine Probleme gehabt.

Ich hab das Starterkit erst seit 4 Wochen und hatte noch nie etwas mit Programmierung oder HTML zu tun. Ich bin also absoluter Neuling auf dem Gebiet.
Normalerweise hätte der Uno auch gereicht, wobei es mit den Pins schon knapp wird. Es werden noch 8 Magnetventile und 2 andere Sensoren angeschlossen. Der ESP kam erst später dazu, nachdem ich mir überlegt hatte, den Füllstand auch aus der Ferne (im Urlaub) zu sehen. Der Messwert auf dem Webserver ist nun das letzte was mir noch fehlt.
Es nutzt mir nichts, wenn mir gesagt wird, das ihr damit nie Probleme hattet. In 4 Wochen kann man da nicht so perfekt sein.

Das hat dir keiner geschrieben.
Lies einfach mal die Antworten richtig.
Wenn dir die Antworten nicht gefallen, ist es ganz allein dein Problem und wir brauchen nicht weiter helfen.

  1. die Serielle ist kein Bus! 3 Teilnehmer machen Probleme
  2. die Anbindung des ESP an den UNO über I2C erfordert keinen Pegelwandler, wenn die Pullup auf 3,3V gehangen werden
  3. der ESP ist um ein vielfaches Leistungsfähiger, als der UNO
  4. den UNO als halb intelligente Porterweiterung betrachten

So wird da ein Schuh draus!

Wie kommst du da drauf.
Ich habe nie 3 Teilnehmer dran. Entweder nur den einen Atmega328 und den ESP an der Hardware Seriellen, oder per SoftwareSerial.

Der TO sagt:

Und wenn du das genau so machst, dann ist das falsch!
Zudem ist einer 5V und der andere 3,3V!

Der TO verwendet einen UNO, da hängen dann der ATMega328P, der ATMega16U2, und der ESP an Tx Rx

Irgendwas stimmt da nicht!
Entweder sind da drei Partner dran, oder du machst es anders als der TO, sagst aber "Ich habe mit dieser Anordnung mehrere Projekte gestartet"!

Mit Glück (bei den original UNO immer) befinden sich Angstwiderstände auf dem Board, welche eine Explosion verhindern.
Die Toleranz, auch des ESP, ist eine Gnade, ohne jede Garantie.

Genau...
Du vermischst meine Antworten.
Die bezog sich auf die Antwort von J-M-L.

Och....

OK, dann drehe ich die Intention um!
Das ist dann keine Kritik an dich, sondern eine Nachricht an den TO, das zu ändern.

haben Sie diese projekte abgeschlossen? :slight_smile:

ESP-01 ist veraltet und viele billige Module da draußen haben veraltete Firmware mit Fehlern.
Sie verlassen sich auf eine langsame serielle Verbindung für AT-Befehle und belasten das Interrupt-System unnötig, wenn Sie SoftwareSerial verwenden, wenn Sie große Nutzlasten senden müssen.
Die Kosten für UNO + ESP01 sind höher als für einen wemos D1 oder ESP32 ...
...

Sie können es natürlich zum Laufen bringen, aber eine bessere MCU wird Ihr Leben einfacher machen.

Ok, dann verstehe ich das auch.

Ich habe einige ESP8266-01(S) im Einsatz!
Viele mit einer Erweiterung auf 4, 8 oder 16MByte
Allerdings immer mit eigener Firmware

Ob der ESP8266-01(S) veraltet ist, oder nicht, ist mir dabei egal.
Er ist klein.
Er ist leistungsfähig.
Er tut was ich will.

Ja, die sind besser als normales ESP-01 (mehr Flash-Speicher und neuere Firmware im Allgemeinen)

Ja, alle Projekte wurden abgeschlossen und laufen, bzw. liefen einige Jahre.
Allerdings alle mit einer eigenen, neu geschriebenen Firmware.
Diese enthalten auch alle einen Webserver sowie OTA. Inkl. einer Speichererweiterung nach combie.

Allerdings habe ich einige davon mittlerweile ausgetauscht und verwende nur einen ESP8266-01s oder Wemos D1 mini, bzw. auch nur den ESP8266-12F. Je nach Bedarf.

Edit:
Sorry, ich sehe gerade, du schriebst von einem ESP8266-01, der TO aber von einem ESP8266-01s, so wie ich es auch verstanden habe.

1 Like

ernsthaft, ich würde keine Kombination UNO -> Serial -> ESP8266 betreiben wollen.

Ich würde mir einen bastlerfreundlichen ESP (NodeMCU oder Wemos D1) besorgen,
dazu einen Wetterfesten Sensor für 3.3 V und dann gleich den ESP programmieren.

Ganz ohne HTML Kenntnisse wird es aber nicht gehen. Du willst ja schließlich was ausgeben. Da musst du dir also auch noch Grundlagen aneignen.

Dann hast Du wohl diese Hürde bereits überwunden und läßt Dich nicht verwirren, wenn ich anstelle des ESP8266 01S, den ich nicht habe, einen ESP32 mit Serial2 verwende.

Simulierte Messung durch Zufallszahlen mit dem UNO:

#include <SoftwareSerial.h>
SoftwareSerial esp(7, 8); // RX , TX

void setup() {
  Serial.begin(9600);
  Serial.println("\nStart ...");
  esp.begin(9600);
}

void loop() {
  int volumeact = random(1000, 2000);
  Serial.println(volumeact);
  esp.println(volumeact);
  delay(1000);
}

Datenempfang mit dem ESP32:

void setup()
{
  Serial.begin(9600);
  Serial.println("\nStart ESP");
  Serial2.begin(9600);  // UNO
}

void lesen()
{
  static byte pos = 0;
  static char buf[10] = "\0";    // soll den Datenstrom aufnehmen

  if (Serial2.available())
  {
    char ein = Serial2.read();
    buf[pos] = ein;
    Serial.print(ein, HEX);  Serial.print(' ');
    pos++;
    buf[pos] = '\0';
    if (pos >= sizeof(buf)) pos = 0;
    if (ein == '\x0A')
    {
      pos = 0;
      Serial.println(buf);
    }
    buf[pos] = '\0';
  }
}

void loop() {
  lesen();
}

Probiere mal, ob das bei Dir auch so geht, natürlich nicht mit Serial2.

Agmue, ich vermute mal, dass diese Verbindung zwischen den beiden Controllern nicht das Problem ist. Eher möchte der TO wissen, wie er die nötigen Daten im Webserver (offen ist, ob er den schon hat) anzeigen soll.
Und dazu mein Tipp an @anon56418722, schau dir diese Website von Fips an. Da gibt es sehr schöne Beispiele, die du nutzen kannst.

In diesem Thema ist mir noch einiges unklar, daher wollte ich mal einen Testballon starten. Entweder bekomme ich "Klasse" oder "Nee" zurück, etwas Risiko darf sein :crazy_face:

Nicht zu vergessen meine Anleitung: Einführung zu fipsok.de.