WLAN - UART - Multicast

Wie passen das WLAN Netz, die UART Schnittstelle und Multicast IP Pakete zusammen? Auf den ersten Blick erst mal gar nicht.
Aber da sich der ESP8266 sehr einfach über die Arduino Umgebung programmieren lässt, rückt das ganze dann doch in den Bereich des einfach möglichen.

Der ESP8266 sendet Daten die er über die UART Schnittstelle empfängt an eine Multicast Gruppe in das Netzwerk. Außerdem läuft auf dem ESP8266 ein TCP Server. Alle Daten die über diesen Socket eingehen, werden wiederum an die UART Schnittstelle weitergeleitet. Den Arduino Code dazu habe auf github und ein passendes Python Beispielscript hoch geladen.
Wenn jemand mitwirken möchte, ist dieser dazu herzlich eingeladen!!!

Darüber hinaus kann per UART oder über die TCP Verbindung das WLAN Passwort und die Verbindung zu einem WLAN Accesspoint geändert werden. Die Daten werden nach dem setzen des Passworts im EEprom abgelegt.
Außerdem horcht der ESP8266 auch an einem UDP Port um Broadcast Anfragen entgegen zu nehmen. Als Antwort bekommt der Sender dann die IP und die Multicast Gruppe sowie die Chip ID des Controllers zurück gesendet.

Die Funktionalität liest sich sicherlich erst mal super, aber leider gibt es auch den ein oder anderen Nachteil um den man sich noch intensiv kümmern muss. Aktuell ist der Code eher im Status einer Machbarkeitsstudie.

Nachteile:

  • Zur zeit ist es noch nicht möglich große Datenpakete zu übertragen. Der ESP8266 hat einen 256 Byte großen Hardware Puffer für den UART. Nach dem dieser voll ist, muss etwas gewartet werden um das nächste Paket zu senden. Der ESP8266 benötigt zwischendurch immer mal wieder Zeit für sein internes WLAN Management.In verschiedenen Tests hat sich heraus gestellt, dass 64 Byte Pakete mit einem Delay von c.a. 12ms fehlerfrei funktionieren. Dies führt dann ungefähr zur Übertragungsrate die der halben Baudrate (115200) entspricht. Dies müsste aber in einer anderen Umgebung erneut erprobt werden.
  • Ein weiterer Nachteil ist, dass der ESP8266 nur Multicast Datenpakete versendet, wenn er sich als Client in einem WLAN befinden. Stellt er selber den Accesspoint bereit, sendet dieser leider keine Multicast pakete. Jedeoch nimmt er die Anfrage über die TCP Verbindung an damit man ihm die Zugangsdaten eines anderen EEproms zusenden kann.

Genauere Informationen entnehmt ihr bitte der README des github Projektes bzw. der noch hinzuzufügenden Kommentare im Code 🙂 . Außerdem ist ein kleines python3 Script zum ersten Test mit enthalten.

Dieser Beitrag wurde unter Arduino, Opensource, Python abgelegt und mit , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

3 Kommentare zu WLAN - UART - Multicast

  1. Ulli sagt:

    Moin,

    der ESP8266 hat einen internen Puffer von 128 Byte (nicht 256 Byte). In der Version 2.2.0 des ESP8266 hat HarwareSerial auch keine weiteren zusätzlichen Puffer. Es werden nur die internen Hardware-Puffer benutzt. Siehe: http://bienonline.magix.net/public/index.html

  2. labelohase sagt:

    Hallo Kalle
    da es mit arduino nicht ganz meine Sache ist habe ich eine Frage.
    ist es mit NodeLua auch möglich dass ich empfangene serielle Daten weiter zu Browser sende?
    lg l-hase

    • Kalle sagt:

      Moin,
      ich kann mir gut vorstellen, dass das auch möglich ist, aber da kann ich dir leider nicht weiter helfen.

      LG
      Kalle

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.