View on GitHub

MQTT-Fernbedienung-Gabelstapler

Calliope kann über MQTT den fischertechnik TXT 4.0 Controller fernsteuern. Mit Gesten und I²C Joystick Omniwheels mit Gabelstapler fahren. Optional LCD Display für AT Response.

Calliope WLAN Fernbedienung MQTT Kommandos für Gabelstapler

MQTT Kommandos für Gabelstapler

MQTT erfordert eine WLAN Verbindung mit IP Adressen zwischen Sender und Empfänger. Der TXT 4.0 Controller auf dem Modell ist WLAN Access Point und mit Python wird im Linux eine eigene mosquitto Instanz an Port 1884 gestartet. Mit diesem MQTT Broker verbindet sich lokal das ROBO Pro Coding Projekt als MQTT Subscriber. Als Daten existiert nur ein einziger String, der in der dauerhaft Schleife ständig abgefragt wird. Der TXT 4.0 Controller auf dem Modell ist nur Subscriber und sendet keine Daten.

Fernbedienung Sender

Als MQTT Publisher ist ein zweiter TXT 4.0 Controller geeignet:

Calliope kann mit Cytron WLAN Modul ebenfalls als MQTT Publisher den Daten String an den TXT 4.0 Controller senden.

Für die Steuerung von Omniwheels in alle Richtungen bietet sich der auf dem Calliope integrierte Gestensensor an. Nur durch Neigen des Calliope kann das Modell ferngesteuert werden. Allerdings ist Kurven fahren schwierig, wenn alle Motoren mit der gleichen Geschwindigkeit synchronisiert sind (und sich nur in verschiedene Richtungen oder gar nicht drehen).

Ein I²C Joystick lässt sich auch einfach an Calliope stecken. Zum Fahren und Lenken ohne Servo bietet sich die Raupensteuerung an. Dazu werden die Räder vorn und hinten synchronisiert (wie bei einer Kette). Bei der Joystick Steuerung werden zwei Geschwindigkeiten für links und rechts übertragen.

MQTT Protokoll

Calliope sendet an das WLAN Modul seriell (RX/TX) AT Kommandos wie bei einem Modem.
Die MQTT AT Kommandos existieren nur auf dem Cytron Modul.

AT+MQTTPUB=0,"topic","3;j;128;128",1,0

Der Daten-String "3;j;128;128" ist mit Semikolon CSV kodiert.
Beispiele: 1;stop 2;q;128 3;r;1 4;m;-512;512 5;j;0;255 6;bt_fw;512

Der MQTT Subscriber (TXT 4.0 Python Code Blöcke) teilt den Daten-String in eine Liste von Strings.
['3', 'j', '128', '128'] Das erste Element ist eine laufende Nummer. Jede Nummer wird nur einmal verarbeitet. Nur bei Änderung des Zähles wird eine Aktion bei den Motoren (und Relais) ausgelöst.

Folgende Daten-Strings werden vom Modell MQTT Gabelstapler verstanden: