Forum: Mikrocontroller und Digitale Elektronik ESP 8266 Datenübertragung


von Guenter B. (gbl)


Lesenswert?

Hallo,

ich habe vor mir eine Datenübertragung zwischen 2 ESP 8266 Modulen zu 
realiesieren. Hierbei sollen Messwerte vom AD-Wandler (8bit davon würden 
reichen) per WLAN auf einen zweiten ESP8266 übertragen werden.

Ich habe mir schon einige Beispielcodes angeschaut. Diese basieren alle 
auf einem Webserver.
Meine Frage: Reicht eine solche Übertragung bei einer Datenhäufigkeit 
von ca 5000 Messwerten/Sekunde aus oder gibt es hier bessere Techniken 
für solche Übertragungen?


Hat jemand so etwas schon mal gemacht?

Gruß

Günter

von Stefan F. (Gast)


Lesenswert?

Guenter B. schrieb:
> Ich habe mir schon einige Beispielcodes angeschaut. Diese basieren alle
> auf einem Webserver.

Logisch, weil das Ding einen Netzwerkanschluss hat und das derzeit 
übliche Terminal für Netzwerk-Dienste ist eben der Web Browser.

Diese Module können problemlos mehr als 100 Kilobyte pro Sekunde senden 
und empfangen. Wenn deine Messwerte nicht allzu groß sind, sollte das 
reichen.

Sie können aber nicht 5000 einzelne Zahlen (Netzwerk-Pakete) pro Sekunde 
senden. Außerdem hast du zwischendurch immer wieder mal Aussetzer von 
typischerweise bis zu 200ms (selten noch mehr). Du musst die Daten also 
Puffern und in großen Blöcken übertragen.

Hier sollte man die Unterschiede zwischen TCP und UDP kennen lernen:

Siehe http://stefanfrings.de/esp8266/index.html

von Joachim S. (oyo)


Lesenswert?

Da einen Web(HTTP-)server zu verwenden erscheint in der Tat unnötig und 
sogar eher kontraproduktiv. Da braucht's nun wirklich keinen unnötigen 
HTTP-Overhead.

Würde vorschlagen, einfach einen gewöhnlichen TCP Socket zu verwenden. 
Wenn 8 Bit genügen, entspricht dann einfach jedem über den Socket 
gesendeten Byte genau ein Messwert.

Wichtig wäre halt noch, dass nicht für jeden der 5000 Messwerte pro 
Sekunde ein eigenes Paket gesendet wird, sondern immer erst soundsoviele 
Messwerte in einem Puffer gesammelt werden, bevor sie zusammen als ein 
Paket verschickt werden. Mglw. passiert das sogar eh automatisch, ohne 
dass Du Dich darum kümmern müsst, da bin ich mir gerade nicht sicher.

Google am besten einfach mal nach "ESP8266 TCP Socket Server Client", da 
dürftest Du recht schnell was passendes finden.

von TR.OLL (Gast)


Lesenswert?

Esp-Now?

von Stefan F. (Gast)


Lesenswert?

Joachim S. schrieb:
> Mglw. passiert das sogar eh automatisch, ohne
> dass Du Dich darum kümmern müsst, da bin ich mir gerade nicht sicher.

Die AT Firmware macht es automatisch. Sie sammelt in 100ms Intervallen.

Aber der Arduino Core macht es nicht automatisch (hätte ich dort auch 
weder erwartet noch begrüßt).

von Guenter B. (gbl)


Lesenswert?

ESP-Now kannte ich noch nicht. Danke für den Tipp.

Könnte ich eventuell die Module mit der AT-Firmware betreiben und 
einfach als serielle Übertragungssteckke laufen lassen? Dann hätte ich 
ja bis zu 115.000 bps. Die AD-Wandlung müßte ich dann wahrscheinlich 
über einen ATTiny oder ATMega realisieren und dem ESP seriell zuführen ?

von Stefan F. (Gast)


Lesenswert?

Guenter B. schrieb:
> Könnte ich eventuell die Module mit der AT-Firmware betreiben und
> einfach als serielle Übertragungssteckke laufen lassen? Dann hätte ich
> ja bis zu 115.000 bps.

Ja kannst du, aber bedenke die 100ms Intervalle. Kannst du damit leben?

Die 115.000 bps sind für die serielle Übertragung. Bedenke, dass du nach 
jedem Kommando auf die Antwort warten musst, welche schon ohne Störungen 
100 bis 200ms dauert. Während dieser Wartezeit kannst du nichts senden, 
das drückt den Datendurchsatz erheblich nach unten.

Wenn es dann immer noch schnell genug ist, nutze ruhig die AT Firmware.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.