Arduino NANO ESP01 - Daten gezielt übertragen

Hallo Liebe mitstreiter,
Ich habe vor mit einem Arduino Nano und einem ESP01 mehrere Datensätze im Float Format auf einen MQTT Server zu bringen.
Jetzt ist mir aufgefallen, dass ich die Daten garnicht Seriell übertragen kann da der ESP01 garnicht weiß welche Art von Daten er übertragen soll.

Daher meine Frage wie stelle ich es an, dass ich über eine Serielle Verbindung die Daten des Nano an den ESP01 übertrage und der weiß wo er sie auf den MQTT schieben muss (also welches Topic er posten muss).

Habe mich schon probiert aber bisher ist da nichts bei rumgekommen.
So wie ich weiß muss der Nano den ESP instruieren ein bestimmtes Topic zu wählen und dann erst die Daten übertragen.

Geht das überhaupt ?

mfg Basti

Geht das überhaupt ?

Klar!

Aber davon mal ab....
Der ESP ist um Größenordnungen leistungsfähiger, als dein Nano.

Alleine aus dem Grund ist es evtl. ein gute Idee, den ESP zu einem I2C Master zu machen und den Nano als Slave zu betreiben.

Bastlerfreundlichen ESP in Form eines NodeMcu oder Wemos D1 besorgen
Ganzes Programm auf den ESP verschieben.

Danke schoneinmal für die schnellen Antworten.

Habe auch schon über einen WeMosD1mini nachgedacht aber da ich ein paar ESP-01 hier rumliegen habe wollte ich diese ersteinmal benutzen.

Ich habe hier in meinem Buch von mitp "ArduinoPraxiseinstieg" auch was zu I2C stehen und lese nebenbei.
Die nutzen hier die Wire.h bibliothek und da frage ich mich direkt ob man damit auch Float Werte direkt übertragen kann und wie ich die Ein und Ausgänge definiere mit der Wire.h weil ich ja beim ESP01 andere Ein und Ausgänge habe.

Die Serielle übertragung gestaltet sich meines erachtens sogar komplizierter wenn ich so an mein Problem denke.

Hallo,
was hast Du denn an dem Nano angeschlossen ? Denke noch mal über das nach was in #1 steht. Wenn es darum geht das du die Ein/Ausgänge des Nano brauchst kannst Du ja diese über I2C an den ESP senden.

Den ESP01 kannst Du ebenfalls mit einen Sketck deiner Wahl beglücken. Das mit den AT Befehlen ist zu umständlich und macht überhaupt keinen Sinn.

Heinz

Du kannst über I2C alles übertragen, Ganzzahlen, Float, Strukturen, Arrays. Du musst es nur richtig machen und aufpassen, weil 32-Bit-Prozessoren teilweise andere Längen und Speicherstrukturen haben als 8-Bitter.

Gruß Tommy

Am Nano ist erstmal nur nen DHT11 für Umgebungstemperatur und ein HW84 als Timer angeschlossen.
Die sollten dann gemeinsam auf meinen MQTT Server ihre Daten übertragen.

Genauso hatte ich das auch vor @Rentner.
Da die angschlossene Peripherie nicht immer I2C zulässt werde ich diese per direkter Verbindung am Arduino anschließen.

@Tommy56 kann man dem ESP01 nicht auch direkt sagen er soll die Daten als 8Bit Daten weiterschieben ?
Der soll diese ja nicht bearbeiten nur weitersenden.

Was dein Arduino oder ESP tut, liegt zum großen Teil in deiner Verantwortung/Macht, denn du bist deines Programms Schmied.

man dem ESP01 nicht auch direkt sagen

Schwer zu beantworten, da:

  1. da der ESP keine Ohren hat
  2. ich deine Lernfähigkeit nicht einschätzen kann

Tipp:
Mit nur drüber reden, wird das nichts!

@Tommy
Das war nicht wortwörtlich gemeint das sollte denke ich klar sein :wink: :D.
Ich meine nur ob man nicht direkt im ESP01 den Input auf 8Bit beschränken kann damit es die Werte nicht verfälscht.

Ich probiers mal aus vielleicht wirds was ^^

Ich habe auch einen ESP01 programmer gebastelt und kann diesen auch programmieren mit der Arduino IDE.
Wollts nochmal eben reinposten

Aber eine kurze Frage dazu noch der ESP hat ja 2GPIO Pins wie definiere ich diese als SDA und SCL

Ich meine nur ob man nicht direkt im ESP01 den Input auf 8Bit beschränken kann damit es die Werte nicht verfälscht.

8 Bit ist etwas wenig für Float.

Aber eine kurze Frage dazu noch der ESP hat ja 2GPIO Pins wie definiere ich diese als SDA und SCL

Ein Blick in die ESP Wire Doku würde dir das sagen.

Mit uint8_t kannst Du ihm sagen, das das 8 Bit sind. Der ESP richtet Speicherstrukturen aber an durch 4 teilbaren Adressen aus, da er darauf schneller zugreifen kann. Da muss man ihm sagen, dass er das in dem Fall nicht tun soll.

Diskussion dazu hier und hier.

Gruß Tommy

Häng den dht direkt an den ESP, eine rtc braucht der ESP nicht, du kannst die Zeit über ntp synchronisieren. Der Nano ist übrig.
Kurzfristig wirst du den dht eh ersetzen, weil er Mist ist. Aber auch einen bme280 kannst di direckt an den ESP8266-01 hängen. Hast ja 4 Gpio zur Verfügung.

BasJoe:
@Tommy
Das war nicht wortwörtlich gemeint das sollte denke ich klar sein :wink: :D.
Ich meine nur ob man nicht direkt im ESP01 den Input auf 8Bit beschränken kann damit es die Werte nicht verfälscht.

Ich probiers mal aus vielleicht wirds was ^^

Ich habe auch einen ESP01 programmer gebastelt und kann diesen auch programmieren mit der Arduino IDE.
Wollts nochmal eben reinposten

Aber eine kurze Frage dazu noch der ESP hat ja 2GPIO Pins wie definiere ich diese als SDA und SCL

Hallo

im Setup

zusätzlich benötigst Du noch ein paar Widerstände.

 // I2C Bus starten an pin 0 u pin 2
  Wire.begin(0, 2);
  delay(2000);

Habe gestern ein wenig mit google die libraries gesucht und bin da auch noch drauf gestoßen.
Aber danke für die Hilfsbereite Art @Rentner.

Kurz mal gefragt,
schaut ihr euch direkt die gesicherte Libraries an um zu erfahren wie die Funktionen einzusetzen sind ?
Im Netz findet man oft sehr unsortierte dinge,
deswegen frage ich mich ob es ne möglichkeit gibt neben den Standartlibs des Arduinos auch andere gute Beschreibungen zu finden?

Ich habe noch einen Shield für den ESP01 um die 2 GPIOs dafür nutzbar zu machen glaube ich aber muss ich dort noch Leitungen anlöten.
Das Teil schimpft sich HW580.

Hallo,

Dein Adapter HW580 ist dafür ehr ungeeignet denke ich. Klar Du könntest die Stromversorgung für die 3,3 V nutzen und was anlöten für die Eingänge 0,2. Irgendwie benötigst du dann aber doch noch zusätzlich etwas Platz dazu. Also bau alles auf ein Stück Lötraster oder Lötstreifen Platine.

ich hab sowas :

USB-Adapter

das ist auf der ESP Seite für 3,3V ausgeführt, bei anderen USB-Seriell Umsetztern werden noch ein paar Widerstände zu Anpassung von 5 auf 3,3V für den ESP Eingang RXD benötigt.

und für den Aufbau.

Adapter

Diesen Adapter kannst Du auf eine Lötraster-Platine zusammen mit den Widerständen bauen.

Empfehlen kann ich die Seite:

Start-Anleitung

Nachtrag: hatte ich vergessen :confused:

Nimm einen Wemos D1 mini dann hast Du mit dem zusätzlichen Hardware Kram nix zu tun. :slight_smile: Und lass den UNO komplett weg.

Heinz