Versionsdaten
Ziel der Version
Version 3.3 erweiterte die bisherige Tastatursteuerung um einen ESP32 als zweite, unabhängige Steuerquelle. Der ESP32 wurde über eine eigene serielle COM-Verbindung angeschlossen.
Zentrales Architekturprinzip: Weder der Tastaturthread noch der ESP32-Thread greifen auf die Dobot-API zu. Beide schreiben ausschließlich in dieselbe Steuerbefehls-Queue. Nur die Hauptschleife steuert den Roboter.
Dateien und Aufgabenverteilung
| Datei | Aufgabe |
|---|---|
befehlskette_v3_3.py | Queue-Aufbau, Dobot-Ausführung, Saugerbefehle und Verarbeitung aller Steuerbefehle. |
befehlskette_beispiel_v3.3.py | Konfiguration der beiden COM-Ports, Programmstart, Versionskontrolle und Aufräumen. |
esp32_seriell_v1_0.py | Öffnet die ESP32-COM-Schnittstelle, empfängt Textzeilen und legt gültige Befehle in die gemeinsame Queue. |
| ESP32-Programm | Sendet Tasterereignisse wie PAUSE, WEITER, HALT und STATUS. |
Änderungen im Befehlskettenmodul
- Die Steuerbefehls-Queue akzeptiert nun Einträge mit Befehl und Quellenbezeichnung, beispielsweise
('p', 'Tastatur')oder('h', 'ESP32'). - Kurze und lange Schreibweisen werden normalisiert:
p/PAUSE,w/WEITER,h/HALTund?/STATUS. - Bei der Verarbeitung wird die Quelle des Befehls angezeigt.
- Ältere Queue-Einträge ohne Quellenangabe werden aus Gründen der Abwärtskompatibilität weiterhin akzeptiert.
- Bewegungs-, Sauger- und Statusbefehle aus Version 3.2 bleiben erhalten.
- Tastatur und ESP32 können gleichzeitig aktiv sein.
Serielle ESP32-Kommunikation
- Das Zusatzmodul verwendet
pySerialund kann verfügbare COM-Ports mit Beschreibung und Hardware-ID auflisten. - Der Empfang läuft in einem eigenen Daemon-Thread.
- Nachrichten werden zeilenweise als UTF-8 gelesen.
- Der ESP32 kann sich mit
ESP32_BEREITmelden; der PC antwortet mitPC_BEREIT. PINGwird mitPONGbeantwortet.- Gültige Steuerbefehle werden mit
EMPFANGEN ...bestätigt. - Bei Verbindungsfehlern kann der Thread in festgelegten Abständen erneut versuchen, den COM-Port zu öffnen.
- Die Tastatur bleibt nutzbar, auch wenn der ESP32 beim Programmstart noch nicht verbunden ist.
Konfiguration
DOBOT_PORT = "COM10"
DOBOT_BAUDRATE = 115200
ESP32_AKTIV = True
ESP32_PORT = "COM11"
ESP32_BAUDRATE = 115200
ESP32_VERBINDUNGS_TIMEOUT = 5.0
Das Beispielprogramm prüft, dass Dobot und ESP32 nicht denselben COM-Port verwenden.
Bekannte Probleme und Grenzen
- Das Paket
pyserialmuss im tatsächlich verwendeten Python-Interpreter installiert sein. - COM-Port-Nummern können sich nach einem Gerätewechsel ändern und müssen kontrolliert werden.
- Für einen Simulator über virtuelle COM-Ports waren zusätzliche Treiber nötig. Unter Windows führte die Treibersignaturprüfung bei com0com später zu Code 52; deshalb wurde in späteren 3.3.x-Ständen auf einen TCP-Simulator umgestellt.
- Version 3.3 verarbeitet nur die vier Steuerbefehle. Beliebige Ereignismeldungen und dauerhaft gespeicherte Sensorwerte kamen erst später.
- Der ESP32 erhält nur Empfangsbestätigungen und einfache Handshake-Antworten; detaillierte Programmzustände werden noch nicht zurückgemeldet.
- Eine WLAN-Verbindung gehört nicht zu Version 3.3. Sie wurde als getrennte Erweiterung in einem Beispielstand 3.4 vorbereitet.
- Mehrere gleichnamige Moduldateien in unterschiedlichen Projektordnern können in Thonny zu Shadowing-Warnungen führen. Spätere Versionen verwendeten deshalb konsequent eindeutige Dateinamen.
Bedeutung für die weitere Entwicklung
Version 3.3 war der Übergang von einer lokalen Robotersteuerung zu einem verteilten System. Das gemeinsame Queue-Prinzip erlaubte später COM, TCP-Simulator, WLAN, Ereignismeldungen und Sensorwerte, ohne dass mehrere Threads gleichzeitig den Dobot steuerten.