Forum: Mikrocontroller und Digitale Elektronik Lag in der Wireless Kommunikation ESP32 + Raspberry


von Stephan L. (stephan13)


Lesenswert?

Hallo,

wie kann man am Besten eine Kurzstrecken Funkverbindung zwischen einem 
RaspberryPI und mehreren ESP32 aufbauen, welche im Bereich von ms 
reagiert?

Hintergrund:
Ich habe ca. 1m große LOVE Buchstaben gebaut und mit LED Lampen 
versehen. Die Lampen sollen nun mit verschiedenen Effekten z.B. 
Lauflicht gesteuert werden können. Die Steuerung soll über eine App 
erfolgen.

Bisherige Realisierung:
Alle LED Lampen werden über Relaise-Boards angesteuert. Im ersten 
Buchstaben ist ein RaspberryPI verbaut. Dieser baut einen WLAN Hotspot 
auf und stellt ein Node-Red Dashboard für die Bedienung zur Verfügung. 
Die Beleuchtungs-Logik ist ebenfalls über Node-Red realisiert und es ist 
ein MQTT Broker (Mosquitto) installiert. Die ESP32 aus den anderen 3 
Buchstaben verbinden sich über WLAN und MQTT mit dem Raspberry.

Problem:
Grundsätzlich funktioniert das Setup. Allerdings kommt es beim Lauflicht 
zu einem ungleichmäßigem Lauf. Die Verbindung über WLAN und MQTT scheint 
manchmal zu stocken und daher zu langsam zu ein. Im nächsten Augenblick 
werden dann wieder zwei Lampen gleichzeitig viel zu schnell geschaltet. 
An der CPU Auslastung des Raspberry scheint es nicht zu liegen. Diese 
ist auf einem normalen Niveau.

Habt ihr noch Ideen woran das liegen könnte? Oder evtl. Vorschläge zum 
Umbau des Setup? Könnte eine Bluetooth Verbindung effizienter laufen?

Danke für die Unterstützung!

von Patrick C. (pcrom)


Lesenswert?

Ich denke das hat alles mit dein Protocol zu tun.

Bestudiere mal die unterschied zwischen kommandos in situation A und B :
A)
Master to Slave1 : Licht AN
Master to Slave2 : Licht AN
Master to Slave3 : Licht AN
Master to Slave4 : Licht AN
Master to Slave1 : Licht AUS
Master to Slave2 : Licht AUS
Master to Slave3 : Licht AUS
Master to Slave4 : Licht AUS

B)
Master to Slave1 : Bei TRIGGER musz du AN gehen
Master to Slave2 : Bei TRIGGER musz du AN gehen
Master to Slave3 : Bei TRIGGER musz du AN gehen
Master to Slave4 : Bei TRIGGER musz du AN gehen
TRIGGER
Master to Slave1 : Bei TRIGGER musz du AUS gehen
Master to Slave2 : Bei TRIGGER musz du AUS gehen
Master to Slave3 : Bei TRIGGER musz du AUS gehen
Master to Slave4 : Bei TRIGGER musz du AUS gehen
TRIGGER

Mit TRIGGER meine ich in broadcast (der durch alle slaves gleich 
empfangen wird) oder zB eine synchronisierte Clock zwischen die Slaves.

Bei option A ist man abhaengig von delays im sender/empfanger
Bei option B ist man nicht mehr davon abhaengig.

Patrick aus die Niederlaende

von Stefan F. (Gast)


Lesenswert?

Guter Vorschlag.

Ich denke, das MQTT Protokoll ist für diese Art der Anwendung nicht 
wirklich vorgesehen. Es geht ja eher darum, Kommandos oder Daten in eine 
Warteschlange zu stellen, damit sie irgendwann später abgerufen werden.

Für direkte Kommandos scheint mit das UDP Protokoll geeigneter.

Generell musst du bei WLAN aber in jeder Minute mit Delays bis 200ms 
rechnen, vereinzelt sogar noch länger. Denn du wirst nicht immer der 
einzige Nutzer dieser Funk-Kanäle sein.

Also vielleicht doch besser Kabel verwenden.

von Frank K. (Gast)


Lesenswert?

Patrick C. schrieb:
> Mit TRIGGER meine ich in broadcast (der durch alle slaves gleich
> empfangen wird) oder zB eine synchronisierte Clock zwischen die Slaves.

Genauso wird das in der professionellen Lichttechnik gemacht. Und damit 
lassen sich mehrere tausend Lampen gleichzeitig ansteuern.

Stefan ⛄ F. schrieb:
> Ich denke, das MQTT Protokoll ist für diese Art der Anwendung nicht
> wirklich vorgesehen.

Sehe ich auch so

von Stephan L. (stephan13)


Lesenswert?

Danke für die Infos!

Kabel würde ich gerne vermeiden, da die Buchstaben mit Akku betrieben 
werden können und es dann wenig Sinn macht für die Steuerung doch wieder 
ein Kabel zu verlegen.

Hast du zufällig ein Tutorial für UDP Befehle? Evtl. sogar passend für 
Kommunikation Raspberry Node-Red und ESP32?

Was ist mit der Bluetooth Idee? Ich konnte dazu relativ wenig bei der 
Internetrecherche finden. Scheint nicht weit verbreitet zu sein ESP32 
direkt per Bluetooth zu steuern...

von Stefan F. (Gast)


Lesenswert?

Stephan L. schrieb:
> Hast du zufällig ein Tutorial für UDP Befehle? Evtl. sogar passend für
> Kommunikation Raspberry Node-Red und ESP32?

Ich habe nur eins für den ESP8266 mit Arduino
http://stefanfrings.de/esp8266/index.html#udpsketch

Aber die WLAN typischen Delays bekommst du damit auch nicht weg.

> Was ist mit der Bluetooth Idee?
Läuft auf der gleichen Funkfrequenz wie WLAN -> vermutlich gleiche 
Probleme

Informiere dich mal über Funkmodule die nicht auf 2,4 GHz laufen, damit 
kommst du womöglich besser zurecht.

von Brain 2.0 (Gast)


Lesenswert?

Bei Funkmodulen empfehle ich die HC-12.
Die werden seriell angesteuert und arbeiten sehr schön mit einem ESP8266 
zusammen.
Das wird dann auch mit dem ESP32 gut funktionieren.

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.