hi,
ich mache dieses Semester ein Projekt an der Hochschule mit zwei Kommilitonen. Dabei geht es um eine TCP Kommunikation zwischen einem Arduino UNO WiFi DevEd. mit integrierten Wifi ( ) und einem Rasperry Pi. Der Arduino soll Daten eines Drucksensors über einen Socket zum Rasperry Pi senden, der diese abspeichert und ausgibt. Als Vermittler dient dabei ein handelsüblicher Router. Unser Problem liegt dabei an der Socketprogrammierung in C bzw. Arduino C/C++. Da der Arduino Uno Wifi noch relativ neu ist finden wir wenig Beispiele. Die im Arduino IDE zur Verfügung gestellten Beispiele bringen auch nicht viel, da sie auf bzw. auf die Wifi- Shield zu geschnitten sind, weshalb im seriellen Monitor nur die Meldung "Shield is not present" angezeigt wird. Dazu kommt, dass der Arduino Uno Wifi teilweise andere Bibliotheken verwendet (#include <UnoWiFiDevEd.h> ) und dazu im Netz kaum Informationen zu finden sind (Github etc). Wir sind jetzt schon einige Wochen am Recherchieren und Probieren.
Hat jemand von euch Erfahrung mit dem Arduino Uno Wifi DevEd und hat diesen beispielsweise schon in einem Netzwerk als Sender in der TCP Socket-Kommunikation verwendet? Wir wissen einfach nicht weiter, da wir keine wirkliche Erfahrung im Netzwerkprogrammierung und mit dem Arduino haben. Wir würden uns sehr über hilfreiche Antworten freuen, auch Sketches und Links würden uns enorm helfen.
Warum wollt Ihr Euch den Overhead von TCP aufladen? UDP ist viel einfacher zu realisieren.
Letztendlich steuert der Arduino ja auch nur einen ESP8266 über AT-Kommandos. Ihr solltest also auch bei ESP8266 suchen.
Die Aufgabe besteht eigentlich aus 2 Teilen:
-
Ansteuern des ESP und connect zum WiFi. Dann Connect zum Server. Da habt Ihr dann einen WiFiClient, der in etwa dem Client einer Ethernetverbindung entspricht.
-
An diesen Client flanscht Ihr dann Eure Software an. Ich vermute ja mal, dass der RasPi der Server sein soll.
Wenn Ihr noch nicht so auf dieses Board festgelegt sein, könnte auch der NodeMCU oder der WMOS D1 etwas für Euch sein. Ich weiß ja nicht was Ihr messen wollt.
Evtl. noch einen Link zu TCP mit dem ESP8266.
Gruß Tommy
Also TCP ist vorgegeben von unserem Prof. Also der Ablauf wie wir da vorgehen haben wir schon verstanden. Das Problem ist halt das der neue Arduino wifi irgendwie nicht so ersichtlich für uns ist. Weil wie bereits geschildert Vieles bisschen anders ist wie bei einem normalen Arduino mit Wifi-Shield. Zumal ich ähnliche Posts von Leuten gesehen habe mit ähnlichen Problemen, allerdings konnten mir die Antworten dort auch nicht weiterhelfen zumal es manchmal gar keine gab. Trotz integrierten ESP8266 kann man nicht einfach Codes übernehmen oder zumindest haben wir es noch nicht hinbekommen, da Bibliotheken anders sind.
Der Aufbau einer TCP-Verbindung war in dem Link ja erklärt.
Ihr müsst nicht für Alles auf Biblitheken warten, sondern könnt Euch das doch selbst programmieren. Studere kommt von sich bemühen.
Notfalls müsst Ihr das halt über AT-Kommandos bauen, wenn Ihr so komische Hardware habt. Da steuert ein 8-Bit MC (Arduino UNO) einen wesentlich leistungsfähigeren 32-Bit MC (ESP8266) als WiFi-Modem über klassische AT-Modem-Befehle an.
Ich kann EUch da nicht weiter helfen, da ich den umgekehrten Weg gehe. Wenn ich WiFi will, nehme ich den leistungsfähigen NodeMCU und wenn ich mehr Eingänge dazu will, hänge ich Portexpander oder einen Arduino (Nano) als intelligente Porterweiterung per I2C an diesen ran.
Gruß Tommy