TCP Kommunikation mit einem Arduino und einem ESP8266

Hallo,

ich arbeite gerade an einem Projekt, in welchem der Arduino Strings von einem Webserver in Form von TCP-Paketen erhalten soll. Den Arduino habe ich mit dem ESP8266 zusammengeschaltet um es über WLAN mit dem Internet zu verbinden.

Da ich relativ neu bin und nur wenig Erfahrung in diesem Bereich habe, wollte ich nachfragen, ob jemand Ahnung hat?

Im Prinzip benötige ich Hilfe beim Programmieren des Arduinos, damit er mithilfe des ESP8266 Strings von einem Webserver empfangen kann.

Vielen Dank im Voraus!

Du solltest Dir erst mal Gedanken um die Aufgabenverteilunf zwischen beiden Prozessoren machen.
Welchen ESP8266 hast Du und wie ist die Kommunikation von diesem mit dem Arduino?

Gruß Tommy

Zu der Aufgabenverteilung: der Arduino Uno ist der Hauptprozessor und soll einen Motor ansteuern, sobald er einen String von einem Webserver erhält. Der Esp soll diesen unterstützen, indem es mit dem Wlan verbunden ist.

Es ist ein ESP8266-01

Ich hatte das bisher über eine UDP Kommunikation umgesetzt und es hat auch funktioniert, jedoch hat man bei diesem Protokoll das Problem, dass Pakete unterwegs verloren gehen können. Darum möchte ich die Kommunikation auf TCP/IP umstellen.

Bisher ist der ESP mit dem Arduino über
TX - RX und
RX - TX verbunden

RX und TX am Arduino zu verwenden ist ungünstig, da darüber die Programmierung und die Kommunikation mit dem seriellen Monitor läuft. Du wirst dazu Softserial nehmen müssen.

Zum ESP8266-01 kann ich nichts weiter sagen, da ich den 12E in Form des NodeMCU / WEMOS D1 pro mini verwende und diesen als Hauptprozessor sehe. Bei Bedarf nach mehr IO kann man einen NANO als intelligente Porterweiterung über I2C drunter schnallen.

Gruß Tommy

Danke für die Tipps Tommy!

Bisher habe ich mich an diesen Link orientiert. Dabei hat die Verbindung über TX / RX am Arduino problemlos funktioniert.

Mein Ziel ist es, das Ganze so ähnlich wie in diesem Thread zu lösen. Allerdings möchte ich dabei ein Protokoll verwenden, das zuverlässig ist.

der Arduino Uno ist der Hauptprozessor

Das halte ich für keine gute Idee!

Mein Tipp: Umdenken!
Mache den ESP-01 zum Hauptprozessor, denn der ist ja erheblich, ja, sehr sehr viel, leistungsfähiger.
Steuere den UNO vom ESP aus.
Per I2C

Ich könnte es einmal ausprobieren den Arduino als Slave zu verwenden. Leider habe ich dabei nicht so viel Ahnung.

Werde ich einen Levelshifter dafür bestellen müssen?

I2C zwischen ESP8266 und einem Arduino UNO ohne Levelshifter

Könnte die Schaltung ähnlich wie in diesem Link aussehen? Und hast du einen Ansatz wie ich das Ganze programmiertechnisch umsetze?

Der ESP8266 ist nicht 5V-tolerant.

Das Protokoll kannst Du selbst so gestalten (und programmieren), wie es Deinen Anforderungen entspricht. Diese solltest Du zuerst genau festlegen.

Vor ein paar Tagen wurde hier Code zur CRC-Prüfung diskutiert.

Gruß Tommy

Werde ich einen Levelshifter dafür bestellen müssen?

Grundsätzlich ist ein Levelshifter eine gute Idee!

Alternativ:
Die Pullup gegen 3,3V ziehen, nicht gegen 5V.
Für den ESP ist es genau das richtige/notwendige.
Und auch der 5V ATMega kommt damit klar.