Server/Client-Kommunikation mit Wemos

Ich plane ein Projekt bei dem ich an drei Stellen mit einem Wemos verschiedene Motoren steuere. Die drei Standorte sind im Raum verteilt und sollen auch ein wenig mobil sein. Daher erscheint mir Kabel ein wenig unpraktisch. Daher habe ich mir folgendes überlegt, benötige aber einen Tipp bzgl. Machbarkeit und Umsetzung.

Ich habe eine Skizze wie ich mir den Aufbau vorstelle angehängt. Bei "Motor mit Wemos" habe ich jeweils einen Wemos mit L298N-Motorsteuerung geplant mit dem zwei Motoren gesteuert werden können. Diese Gesamtkomponente soll es 3 Mal geben.

Als zentrale Steuereinheit stelle ich mir auch einen Wemos vor. Daran angeschlossen ein Joystick (für Steuerung der beiden Motore in X/Y-Richtung) und 3 Buttons um auszuwählen, welcher der 3 Standorte jetzt ferngesteuert werden soll.

Bsp:
Man wählt an der Steuerung "Ort 1" aus und bewegt dann den Joystick, dann soll "Richtung_X", "Geschwindigkeit_X", "Richtung_Y" und "Geschwindigkeit_Y" über WLAN an "Ort 1" gesendet werden und der Wemos bewegt dann entsprechend die Motoren.

Alles soll in einem Raum passieren, d.H. keine große Entfernung. Ein WLAN in das die Wemos sich einwählen können ist vorhanden. Hab auch gelesen, dass man mit dem Wemos einen AP aufspannen kann, wenn das einfacher/praktischer ist geht das auch.

Meine Fragen:

  • Kann ich überhaupt irgendwie mit einem Wemos 3 andere steuern (wichtig: muss nicht gleichzeitig sein, nacheinander reicht). Vielleicht: Auswählen öffnent Verbindung, neue Auswahl schließt alte Verbindung und öffnet neue?
  • Ist die Übertragung von 4 (evtl. 6) Werten/Variablen über Wlan mit entsprechender Verarbeitung einigermaßen in "Echtzeit" möglich?
  • Wie müsste ich die Sache aufbauen? Welcher Wemos ist "Server" wer ist "Client"?

Oder denke ich generell zu kompliziert und es geht ganz anders viel einfacher?

borg-cube:

  • Kann ich überhaupt irgendwie mit einem Wemos 3 andere steuern (wichtig: muss nicht gleichzeitig sein, nacheinander reicht). Vielleicht: Auswählen öffnent Verbindung, neue Auswahl schließt alte Verbindung und öffnet neue?
  • Ist die Übertragung von 4 (evtl. 6) Werten/Variablen über Wlan mit entsprechender Verarbeitung einigermaßen in "Echtzeit" möglich?
  • Wie müsste ich die Sache aufbauen? Welcher Wemos ist "Server" wer ist "Client"?
  • ja
  • "Echtzeit" nicht, aber je nachdem was du wählst, immer noch "sehr schnell" ohne dass du davon was merkst, UDP oder TCP (oder gar http fals dir der Overhead egal ist)
  • [edit nach Bild anschauen]: genau, z.B. drei "Server" wo die Daten hin sollen und ein "Client" der den jeweils passenden Server ansteuert

Server ist immer der, der wartet, dass jemand etwas von ihm will. Hier sind es also 3 Server, die die Motoren steuern. Der Wemos, der die Anweisungen gibt, ist der Client.

Willst Du pro Wemos 1 oder 2 Motoren steuern? Der 2. Motor spielt bisher in der Beschreibung Deiner Steuerung noch nicht so die Rolle oder habe ich das nur falsch verstanden?

Also Auswahl Server, dann Auswahl welcher Motor an diesem Server und dann die Bewegungsdaten. Das sollte funktionieren.
Beachte bei der Komponentenauswahl, dass der Wemos mit 3,3V an den EIN-/Ausgängen arbeitet.

Gruß Tommy

Ich habe das mal "lokal" zusammengehackt" und weil ich den da hatte einen Nano verwendet. Daran angeschlossen habe ich den Joystick und eine L298N-Motorsteuerung. Ich gebe da quasi das Signal vom Joystick direkt an die Steuerung weiter und die bewegt dann die Motoren entsprechend. Das funktioniert ganz gut, ist aber noch keine "Fernsteuerung".

Jetzt will ich das trennen und einmal Joystick und Auswahlknöpfe an einen Wemos hängen, das wäre dann also der Server.

An jedem Standort habe ich einen Wemos mit Motorsteuerung angeschlossen (fungiert als Server) und gibt die übertragenen Steuerungsanweisungen an die Motorsteuerung weiter.

Das, wo der Joystick dran hängt, ist der Client. Das wo die Motoren dran hängen ist der Server. Die warten auf Anweisungen.
Das ist wie im Web. Dein Browser ist der Client. Der will was vom Webserver und der Webserver wartet, dass jemand was von ihm will.
Das ist etwas vereinfacht dargestellt (z.B. Websockets nicht betrachtet) zeigt aber das Prinzip.

Gruß Tommy

z.B. Websockets nicht betrachtet

Websocket-Kommunikation geht auch nach dem Server-Client Prinzip.

Generell alternativ zu Server-Client gibt es Master-Slave Protokolle, wobei ein Master die Kontrolle hat und (mehrere) Slaves abfragt oder ihnen Befehle gibt. Slaves antworten da nur auf Anforderung. (Auch wieder etwas vereinfacht)

"Das Web" (TCP/IP) ist Client-Server
I²C (z.B.) ist Master-Slave

Bei websockets verwischt das Server/Client-Prinzip nach Einrichtung der Socketverbindung etwas, da dann auch der "Server" von sich aus den "Client" kontaktieren kann, also Beide eigentlich dann beide Rollen ausüben. Deshalb hatte ich den erst mal raus gelassen.

Gruß Tommy

Tommy56:
Beachte bei der Komponentenauswahl, dass der Wemos mit 3,3V an den EIN-/Ausgängen arbeitet.

Die Kommunikation klappt nun einwandfrei. Allerdings funktioniert die Geschwindigkeitssteuerung nicht mehr wirklich. Kann das daran liegen, dass der Wemos D1 mini eben nur die 3,3V ausgibt und damit PWM bei dem L298N nicht mehr erwartungsgemäß funktioniert?

Ich habe das vorher mit einem Arduino Nano ausprobiert, da hat das funktioniert. Der hat dann wahrscheinlich 5V am Pin, oder?

Kann ich das irgendwie "fixen" oder muss ich mich entweder von der Geschwindigkeitsregelung verabschieden oder ein anderes Board verwenden?

Also mein Robi mit nodemcu fährt auch... was du falsch machst sehen wir nicht...

Wenn ich den Sketch auf einem Nano ausführe, erreiche ich bei einem Wert von 255 die maximale geschwindigkeit des Motors.

Lade ich den Sketch auf einen Wemos D1 mini hoch fängt der Motor erst bei 300 an sich langsam zu bewegen und erreicht bei ca. 2000 sein maximum.

Das kommt mir ein wenig komisch vor, oder? Oder habe ich was anderes nicht bedacht?

schau mal die Spezifikation an, was der max. Wert ist für PWM beim Arduino UNO und bei Prozessoren wie den ESPs ...
es darf selbst gesucht werden :wink:

edit: ich wollts wissen ... und das ist bei mir der ERSTE Googlelink

Wie peinlich. Die Seite hatte ich sogar noch in einem Tab offen. Irgendwie wollte die Information dann aber nicht in meinen Kopf vordringen. Vielleicht die Hitze...