SCS0009-Servo-Debugging und Kalibrierung
Die SCS0009-Version hat zwei Debugging-Bereiche:
- TTL-Montage und Mittelstellungs-Debugging: Verkabelung, Servo-ID setzen, Servohorn befestigen, Mittelstellung feinjustieren, Testprogramm ausführen.
- SCS0009-Debugging-Werkzeug: Python + PySide6 GUI, Bus scannen, alle Register lesen/schreiben, Positionssteuerung, Baudrate/Werkseinstellungen, xdat-EEPROM-Backup.
Details zu den Protokollregistern siehe SCS0009-Protokollspeichertabelle.
Arduino/Erweiterungsverkabelung siehe Arduino Nano.
1. TTL-Debugging: Montage, ID und Mittelstellung
Lade zuerst das Archiv "灵巧手调试.zip" herunter; nach dem Entpacken kannst du anhand des Dokuments „使用arduio程序调试灵巧手过程(TTL舵机)" Servo-IDs setzen, kalibrieren, die Mittelstellung justieren und das Demo-Programm ausführen, oder die offiziellen Open-Source-Codes verwenden.
Bei unmontiertem Fertigprodukt (Servo-IDs, Kalibrierung und Mittelstellung sind ab Werk eingestellt) kannst du direkt zu Punkt 6: „02-Demoprogramm" ausführen und zum Handtracking springen.

1. Verkabelungsart beim Debugging der Dexterhand
Eine Möglichkeit ist, am PC Python und andere PC-Software zu verwenden, z. B. die Feetech-Servo-PC-Software oder Python-Code.
Eine andere ist, einen Mikrocontroller wie MEGA328P oder ein selbst gekauftes Entwicklungsboard bzw. eine Steuerung zu verwenden.
Die Verkabelung ist wie folgt:
(1) Verkabelung beim Debugging per Python (nur Servo-Treiberplatine anschließen):

(2) Verkabelung beim Debugging mit dem MEGA328P-Entwicklungsboard (Servo-Treiberplatine + 328P-Board):
Auf die Pinpositionen des MEGA328P-Entwicklungsboards achten!




Im Folgenden wird der Debugging-Ablauf mit dem Mikrocontroller beschrieben; der Mikrocontroller führt das Demo-Programm fortlaufend in einer Schleife aus, zum Stoppen einfach das Datenkabel abziehen.
2. Servo-IDs setzen
Eine einzelne Dexterhand verwendet insgesamt 8 Servos; die IDs der rechten Hand müssen auf 1-8, die der linken Hand auf 11-18 gesetzt werden.
Mittelstellungskalibrierung, Werksstandard: rechte Hand [451,571,451,571,451,571,451,571] linke Hand [571,451,571,451,571,451,571,451]
- Verkabeln: einen einzelnen Servo nacheinander mit der Servo-Treiberplatine verbinden.

- Mit der vom Servohersteller bereitgestellten PC-Software FD1.9.8.2 einstellen
FD.rar



3. Servohorn befestigen
- Das Codeprogramm „安装白色伺服喇叭时使用" (bei der Montage des weißen Servohorns verwenden) auf das Entwicklungsboard hochladen
Dieses Programm bewirkt: Die Getriebeposition des Servos wird in eine ungefähr mittige Position gebracht; die späteren Bewegungswinkel basieren auf dieser mittleren Position.
(1) Arduino-Software selbst installieren, je nach System die Installationsanleitung befolgen; zum Kompilieren und Herunterladen des Arduino-Programms zuerst in der Bibliotheksverwaltung die Bibliotheken FTServo und SCServo installieren

(2) Board-Typ wählen: „Arduino Nano"

- Servo 1, 2 debuggen
(1) Bearbeiten: je nach zu debuggendem Servo-ID die folgende Position ändern. Für den Zeigefinger z. B. die IDs auf 1, 2 setzen

(2) Programm auf das Entwicklungsboard hochladen
(3) Verkabeln: Entwicklungsboard mit Servo-Treiberplatine und den Servos 1, 2 verbinden; man hört, wie das Servogetriebe um einen bestimmten Winkel dreht und dann stoppt.

(4) Servohorn auf das Getriebe montieren, möglichst parallel ausrichten

- Servo 3, 4 debuggen
(1) Die Verbindung zwischen 328P-Entwicklungsboard und Servo-Treiberplatine trennen (sonst ist das Hochladen nicht möglich)
(2) Bearbeiten: IDs auf 3, 4 setzen

(3) Programm auf das Entwicklungsboard hochladen
(4) Verkabeln: Entwicklungsboard mit Servo-Treiberplatine und den Servos 3, 4 verbinden; man hört, wie das Servogetriebe um einen bestimmten Winkel dreht und dann stoppt.
(5) Servohorn auf das Getriebe montieren, möglichst parallel ausrichten
- Servo 5, 6 debuggen
Ablauf wie oben
- Servo 7, 8 debuggen
Ablauf wie oben
4. Mittelwert feinjustieren
Das Codeprogramm „01 微调MiddlePos值时使用" (bei der Feinjustierung des MiddlePos-Werts verwenden) auf das Entwicklungsboard hochladen
Wenn sich die Finger in der geschlossenen Position befinden, das Programm sofort stoppen (Datenkabel abziehen) und prüfen, ob die Servohörner korrekt ausgerichtet sind (siehe Bild unten). Wenn nicht, die Werte MiddlePos_1, MiddlePos_2 im Programm anpassen, bis sie ausgerichtet sind. Den Wert notieren (8 Servos entsprechen 8 Werten); er wird im letzten Programm benötigt.


5. Testprogramm ausführen
- Die oben gespeicherten Werte MiddlePos_1, MiddlePos_2 in das folgende Array eintragen und das Programm herunterladen.

6. „02-Demoprogramm" ausführen
(1) Arduino-Software selbst installieren, je nach System die Installationsanleitung befolgen
(2) Im Verzeichnis 灵巧手调试\00 TTL串口舵机\arduino程序(MEGA328P开发板)\02 演示程序 je nach linker oder rechter Hand die entsprechende .ino-Datei öffnen

(3) Zum Kompilieren und Hochladen des Arduino-Programms auf das Entwicklungsboard zuerst in der Bibliotheksverwaltung die Bibliotheken FTServo und SCServo installieren

(4) Board-Typ wählen: „Arduino Nano"

(5) Kompilieren und hochladen
Achtung: Der PC ist jetzt nur mit dem Entwicklungsboard verbunden, das Board noch nicht mit der Servo-Treiberplatine (also nicht mit der Dexterhand).
Nach erfolgreichem Hochladen das Entwicklungsboard über drei Jumperkabel mit der Servo-Treiberplatine verbinden, die Servos an die Servo-Treiberplatine, siehe Verkabelung beim Debugging mit dem MEGA328P-Entwicklungsboard.
Die Dexterhand führt das „02-Demoprogramm" fortlaufend in einer Schleife aus.
Ergebnis:

2. SCS0009-Debugging-Werkzeug
Geeignet für Windows 10 / 11; Unterschiede unter Linux und macOS siehe Abschnitt 8. Dieses Tutorial deckt jeden Schritt von der Umgebungsinstallation bis zum vollständigen Debugging ab.
⚠️ Kompatibilitätshinweis: Dieses Werkzeug unterstützt derzeit nur Feetech SCS0009-Servos (SCS-Serie, Potentiometer-Positionsrückmeldung, 10-Bit-Auflösung 0–1023). Registertabelle und xdat-Parameterformat sind für den Feetech SCS0009 ausgelegt; andere Marken/Modelle sind nicht garantiert kompatibel.
1. Umgebungsanforderungen
| Abhängigkeit | Version | Beschreibung |
|---|---|---|
| Python | >= 3.8 | empfohlen 3.10+, von python.org herunterladen |
| PySide6 | >= 6.0 | GUI-Framework |
| pyserial | >= 3.5 | serielle Kommunikation |
| System | Win10 / Win11 | beliebige Version |
2. Python installieren
- https://www.python.org/downloads/ besuchen
- Python-3.10+-Installer herunterladen
- Bei der Installation unbedingt "Add Python to PATH" ankreuzen (sonst findet die Kommandozeile python nicht)
Installation prüfen:
python --version3. Abhängigkeiten installieren
Empfohlen in einer virtuellen Umgebung, um das System-Python nicht zu verschmutzen:
# in das Projektverzeichnis wechseln
cd SCS0009_ServoController
# virtuelle Umgebung erstellen
python -m venv .venv
# virtuelle Umgebung aktivieren (Windows)
.venv\Scripts\activate
# Abhängigkeiten installieren
pip install -r requirements.txt⚠️ Die virtuelle Umgebung muss nur einmal erstellt werden. Erneutes Ausführen überschreibt die Umgebung (löscht installierte Abhängigkeiten). Danach genügt jedes Mal
activate.
Hinweis: Nach dem Aktivieren erscheint der Präfix
(.venv)in der Kommandozeile.
4. Umgebung prüfen
python setup.pyWenn du [OK] 环境检查通过,可以运行项目 siehst, ist die Umgebung korrekt.
5. Hardware anschließen
- USB-Seriell-Adapter (z. B. CH340 / CP2102) in den PC stecken
- Servo-Controller (Roboterarm-Steuerplatine) anschließen
- Servos mit Strom versorgen (empfohlen DC 5 V 5 A, Pro-Version DC 12 V 5 A)
Geräte-Manager öffnen (Win+X → Geräte-Manager) und COM-Nummer bestätigen:
Anschlüsse (COM und LPT)
└─ USB-SERIAL CH340 (COM3) ← dein Servo-SeriellportCOM-Nummer notieren, beim Start des Programms auswählen.
6. GUI starten
python -m src.gui.factory_calibration_toolOder Port manuell angeben (wenn der serielle Port belegt ist):
python -m src.gui.factory_calibration_tool --port COM3Verfügbare Ports anzeigen:
python -m src.gui.factory_calibration_tool --list-ports7. Ablauf der Oberflächenbedienung
Die Oberfläche ist ein einziges Panel; bei zu geringer Fensterhöhe erscheint automatisch eine Bildlaufleiste, maximiert passt sie sich an.
7.1 Serielle Verbindung
- Port und Baudrate wählen (Standard 1M), auf Verbinden klicken
- Status zeigt
🟢 Verbunden
7.2 Servos scannen
- Auf Servos scannen klicken, IDs 1-254 online erkennen
- Scanergebnis wird in der Servoliste in Echtzeit angezeigt (mit Modell)
- Auf eine Zeile der Servoliste klicken → automatisch ins Servo-Dropdown übernehmen
7.3 Parameter lesen/schreiben
- Parameter lesen: alle 44 Register (EEPROM + SRAM) lesen, Log zeigt das Ergebnis in Echtzeit
- Parametertabelle: 5 Spalten (Adresse/Register/Wert/Speicherbereich/Lesen-Schreiben), EPROM/SRAM/DEFAULT farblich unterschieden
- Auswahl-Kopplung: auf eine Zeile der Parametertabelle klicken → „Schreibadresse", „Länge", „Wert" automatisch ausfüllen
- Schreiben: nach Änderung des Werts auf Schreiben klicken, das Programm entsperrt/schreibt/sperrt automatisch
- Ergebnisdialog: Erfolg grüner Hinweis „✅ Erfolgreich geschrieben", Fehler roter Hinweis „❌ Schreiben fehlgeschlagen" (mit Grund)
7.4 Servo-ID ändern
- Nur den einen Servo, dessen ID geändert werden soll, am Bus anschließen, um Konflikte mit vorhandenen IDs zu vermeiden.
- In der Parametertabelle die Zeile „Servo-ID" (Adresse
0x05) suchen und auswählen. - „Wert" auf die Ziel-ID ändern, auf ✏️ Schreiben klicken; das Programm entsperrt → schreibt → sperrt wieder.
- Nach der Änderung den Bus neu scannen. Rechte Hand 1–8, linke Hand 11–18.
7.5 Positionssteuerung
- Schieberegler ziehen oder Zielposition direkt eingeben (0–1023), Zahlenfeld und Schieberegler sind synchron.
- Auf ▶ Bewegen klicken, Statusleiste zeigt „Wird bewegt …".
- Nach Erreichen: „Bewegung abgeschlossen, bitte Drehmoment ausschalten", auf ⏹ Drehmoment aus klicken.
7.6 Baudrate/Werkseinstellungen
- Baudrate ändern: neue Baudrate wählen (38400–1000000 bps) und schreiben; das Programm wechselt die serielle Baudrate und verifiziert per Ping, bei Fehler automatischer Rollback.
- Werkseinstellungen: auf Werkseinstellung zurücksetzen (ID=1, Baudrate 1M), danach neu scannen.
7.7 xdat-Parameter (nur EEPROM speichern)
💾 Aktuellen Servo speichern: EEPROM-Parameter des aktuellen ID-Servos in xdat-Datei speichern (Backup)📂 xdat öffnen: Backup-Datei laden📤 Parameter auf Servo zurückschreiben: Backup auf den Servo zurückschreiben
8. Unterschiede Linux und macOS
Linux
- Schriftarten:
sudo apt install fonts-noto-cjk fonts-noto-color-emoji, sonst kann die chinesische Oberfläche leer sein und Emoji als Kästchen erscheinen. - Serielle Berechtigungen:
sudo usermod -a -G dialout $USER, nach Ab- und Anmelden wirksam;groupssolltedialoutenthalten. Temporärsudo chmod 666 /dev/ttyUSB0. - Gerätenamen:
/dev/ttyUSB*(CH340 / CP2102 / PL2303) oder/dev/ttyACM*(Onboard-USB-Seriell); Hersteller mitlsusb,dmesg | grep -i ttyprüfen. - Fester Gerätename (optional): in
/etc/udev/rules.d/99-servo.rulesSUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyServo"eintragen, danach/dev/ttyServoverwenden. - Start:
python -m src.gui.factory_calibration_tool --port /dev/ttyUSB0. - Häufige Probleme: bei
pip-Meldung externally-managed-environment venv verwenden oder--break-system-packagesergänzen.
macOS
- Python: empfohlen per Homebrew
brew install python, nicht die mitgelieferte alte Systemversion. - Seriellnamen:
/dev/cu.*verwenden, nicht/dev/tty.*(letzteres kann blockieren); mitls /dev/cu.*anzeigen. - USB-Treiber: CH340 / CP2102 / FTDI meist treiberfrei; ältere CH340-Chargen benötigen den WCH-Treiber, mit
system_profiler SPUSBDataTypeprüfen. - Start:
python -m src.gui.factory_calibration_tool --port /dev/cu.usbserial-0001. - Apple Silicon: natives Python 3.10+ verwenden, kein altes Python unter Rosetta; beim ersten Start bei „Entwickler kann nicht verifiziert werden" unter „Datenschutz & Sicherheit" zulassen.
- Energiesparen: macOS-Ruhezustand kann die serielle Schnittstelle trennen, während der Bedienung wach halten.
9. Hinweise
- Schreiben ist persistent: Nach dem Schreiben in EEPROM wird der alte Wert überschrieben und kann nicht rückgängig gemacht werden; vor Änderungen mit xdat sichern.
- Stabile Stromversorgung: unzureichende Versorgung führt zu Schrittverlust, Kommunikationsfehlern oder Servo-Ausfall; Versorgung gemäß SCS0009-Verkabelung und Stromversorgung.
- Exklusiver Seriellport: derselbe Port kann nicht von zwei Programmen gleichzeitig geöffnet werden; vor der Nutzung Seriellmonitor, PC-Software und andere belegende Programme schließen.
- Risiko der ID-Änderung: nur einen Servo, dessen ID geändert werden soll, am Bus anschließen; bei Verbindungsverlust nach der Änderung „Werkseinstellungen" versuchen (ID zurück auf 1).
- Übertemperatur/Überspannung: Das Werkzeug überwacht Spannung und Temperatur (Warnung bei Temperatur > 60 °C); bei anhaltend hoher Temperatur abschalten und kühlen.
- Hot-Plug: Nach Abziehen des USB versucht das Programm die Wiederverbindung; nach erneutem Anstecken den Port aktualisieren.
- Windows-Konsole Zeichensalat: Bei Emoji-Zeichensalat in Kommandozeilenwerkzeugen
PYTHONIOENCODING=utf-8setzen und erneut ausführen.
10. Häufige Probleme
| Problem | Lösung |
|---|---|
| Serieller Port nicht gefunden | im Geräte-Manager Treiber prüfen; USB-Port wechseln; CH340-Treiber installieren |
| Serieller Port belegt | Seriellmonitor und andere Programme schließen; Werkzeug neu starten |
| Chinesische Schrift leer | Systemstandard Microsoft YaHei; bei Problemen chinesische Schrift installieren |
| Servo wird nicht gefunden | Stromversorgung/Verkabelung prüfen; Baudrate 1M bestätigen |
| Schreiben fehlgeschlagen | Servo-Stromversorgung und Verbindung prüfen; bestätigen, dass das Zielregister beschreibbar ist |
| PermissionError beim Öffnen des Ports | sicherstellen, dass kein anderer Prozess den COM-Port belegt |
Linux: Permission denied: /dev/ttyUSB0 | nicht in der Gruppe dialout; siehe Linux-Abschnitt oben |
macOS: hängt bei Seriellname mit tty. | entsprechendes /dev/cu.*-Gerät verwenden |
11. Kommandozeile (optional)
# verfügbare serielle Ports auflisten
python -m src.gui.factory_calibration_tool --list-ports
# mit angegebenem Port starten
python -m src.gui.factory_calibration_tool --port COM3
