Débogage et calibration des servos SCS0009
La version SCS0009 comporte deux volets de débogage :
- Assemblage TTL et réglage de la position médiane : câblage, définition des ID de servo, fixation des palonniers, réglage fin de la position médiane, exécution des tests.
- Outil de débogage SCS0009 : GUI Python + PySide6, scan du bus, lecture/écriture de tous les registres, contrôle de position, débit/restauration usine, sauvegarde EEPROM xdat.
Détails des registres du protocole : Table mémoire du protocole SCS0009.
Câblage Arduino/extension : Arduino Nano.
I. Débogage TTL : assemblage, ID et position médiane
Tout d'abord, téléchargez l'archive « Débogage de la main dextre.zip », décompressez-la, puis suivez le document « Procédure de débogage de la main dextre avec un programme Arduino (servos TTL) » pour définir les ID de servo, calibrer, ajuster la position médiane et exécuter le programme de démonstration, ou consultez le code open source officiel.
Dans le cas d'un produit fini non démonté (ID de servo, calibration et position médiane réglés en usine), vous pouvez passer directement au point 6, exécuter le « programme de démonstration 02 » et au suivi de main.

1. Câblage pour le débogage de la main dextre
Une première méthode consiste à utiliser un PC avec un logiciel hôte comme Python, par exemple le logiciel hôte Feetech ou du code Python.
Une autre consiste à utiliser un microcontrôleur comme le MEGA328P, ou une carte de développement ou un contrôleur acheté séparément.
Le câblage est le suivant :
(1) Câblage pour le débogage via Python (carte de commande de servos uniquement) :

(2) Câblage pour le débogage avec la carte MEGA328P (carte de commande de servos + carte 328P) :
Repérez bien l'emplacement des broches de la carte MEGA328P !




Ce qui suit décrit la procédure de débogage avec le microcontrôleur ; le microcontrôleur exécute en boucle le programme de démonstration, il suffit de débrancher le câble de données pour l'arrêter.
2. Définir les ID de servo
Une main dextre utilise 8 servos ; les ID de la main droite doivent être réglés de 1 à 8, ceux de la main gauche de 11 à 18.
Calibration de la position médiane, valeurs d'usine : main droite [451,571,451,571,451,571,451,571] main gauche [571,451,571,451,571,451,571,451]
- Câblage : connectez successivement un seul servo à la carte de commande de servos.

- Utilisez le logiciel hôte FD1.9.8.2 fourni par le fabricant des servos pour le réglage.
FD.rar



3. Fixer les palonniers de servo
- Téléversez le programme « à utiliser lors de l'installation du palonnier blanc » sur la carte de développement.
Rôle de ce programme : placer la position des engrenages du servo dans une position approximativement centrée ; les angles de mouvement ultérieurs reposent sur cette position intermédiaire.
(1) Installez vous-même le logiciel Arduino ; selon votre système, consultez le tutoriel d'installation. Pour compiler et téléverser un programme Arduino, installez d'abord les bibliothèques FTServo et SCServo dans le gestionnaire de bibliothèques.

(2) Type de carte : choisissez « Arduino Nano ».

- Déboguer les servos 1 et 2
(1) Édition : selon l'ID du servo à déboguer, modifiez la position ci-dessous. Par exemple, pour déboguer l'index, réglez les ID à 1, 2.

(2) Téléversez le programme sur la carte de développement.
(3) Câblage : connectez la carte de développement à la carte de commande de servos et aux servos 1, 2 ; on entend l'engrenage du servo tourner d'un certain angle puis s'arrêter.

(4) Montez le palonnier sur l'engrenage, en le gardant autant que possible parallèle.

- Déboguer les servos 3 et 4
(1) Débranchez la liaison entre la carte 328P et la carte de commande de servos (sinon le téléversement est impossible)
(2) Édition : réglez les ID à 3, 4

(3) Téléversez le programme sur la carte de développement.
(4) Câblage : connectez la carte de développement à la carte de commande de servos et aux servos 3, 4 ; on entend l'engrenage du servo tourner d'un certain angle puis s'arrêter.
(5) Montez le palonnier sur l'engrenage, en le gardant autant que possible parallèle.
- Déboguer les servos 5 et 6
Étapes identiques.
- Déboguer les servos 7 et 8
Étapes identiques.
4. Ajuster la valeur médiane
Téléversez le programme « 01 à utiliser pour ajuster MiddlePos » sur la carte de développement.
Lorsque les doigts sont en position fermée, arrêtez immédiatement le programme (débranchez le câble de données) et vérifiez si les palonniers sont correctement alignés (voir figure ci-dessous). S'ils ne le sont pas, ajustez les valeurs MiddlePos_1, MiddlePos_2 du programme jusqu'à alignement. Notez ces valeurs (8 valeurs pour 8 servos), elles seront utilisées dans le programme final.


5. Exécuter le programme de test
- Reportez les valeurs MiddlePos_1, MiddlePos_2 enregistrées ci-dessus dans le tableau ci-dessous, puis téléchargez le programme.

6. Exécuter le programme de démonstration 02
(1) Installez vous-même le logiciel Arduino ; selon votre système, consultez le tutoriel d'installation
(2) Dans le répertoire 灵巧手调试\00 TTL串口舵机\arduino程序(MEGA328P开发板)\02 演示程序, ouvrez le fichier .ino correspondant à la main gauche ou droite

(3) Pour compiler et téléverser un programme Arduino, installez d'abord les bibliothèques FTServo et SCServo dans le gestionnaire de bibliothèques

(4) Type de carte : choisissez « Arduino Nano »

(5) Compilez et téléversez
Attention : à ce stade, l'ordinateur est connecté uniquement à la carte de développement, et la carte de développement ne doit pas encore être reliée à la carte de commande de servos (c'est-à-dire pas reliée à la main dextre).
Après un téléversement réussi, reliez la carte de développement à la carte de commande de servos par trois câbles de liaison, connectez les servos à la carte de commande, en suivant le câblage de débogage avec la carte MEGA328P.
La main dextre exécute alors en boucle le « programme de démonstration 02 »
Résultat d'exécution :

II. Outil de débogage SCS0009
Compatible Windows 10 / 11 ; les différences sous Linux et macOS sont traitées à la section 8. Ce tutoriel couvre chaque étape, de l'installation de l'environnement au débogage complet.
⚠️ Compatibilité : cet outil ne prend en charge que les servos Feetech SCS0009 (série SCS, retour de position par potentiomètre, résolution 10 bits 0–1023). La table des registres et le format des paramètres xdat sont conçus pour le Feetech SCS0009 ; les autres marques/modèles ne sont pas garantis.
1. Prérequis
| Dépendance | Version | Description |
|---|---|---|
| Python | >= 3.8 | 3.10+ recommandé, téléchargement sur python.org |
| PySide6 | >= 6.0 | framework GUI |
| pyserial | >= 3.5 | communication série |
| Système | Win10 / Win11 | toute version |
2. Installer Python
- Rendez-vous sur https://www.python.org/downloads/
- Téléchargez l'installateur Python 3.10+
- Lors de l'installation, cochez impérativement « Add Python to PATH » (sinon la ligne de commande ne trouve pas python)
Vérification de l'installation :
python --version3. Installer les dépendances
Il est recommandé d'installer dans un environnement virtuel pour ne pas polluer le Python système :
# se placer dans le répertoire du projet
cd SCS0009_ServoController
# créer l'environnement virtuel
python -m venv .venv
# activer l'environnement virtuel (Windows)
.venv\Scripts\activate
# installer les dépendances
pip install -r requirements.txt⚠️ L'environnement virtuel ne se crée qu'une fois. Une exécution répétée écrase l'environnement existant (efface les dépendances installées). Ensuite, il suffit d'activer avec
activate.
Astuce : après activation, le préfixe
(.venv)apparaît dans la ligne de commande.
4. Vérifier l'environnement
python setup.pyL'affichage de [OK] 环境检查通过,可以运行项目 indique que l'environnement est correct.
5. Connecter le matériel
- Branchez l'adaptateur USB-série (par ex. CH340 / CP2102) sur l'ordinateur
- Connectez le contrôleur de servos (carte de commande du bras)
- Alimentez les servos (DC 5V 5A recommandé, version Pro DC 12V 5A)
Ouvrez le gestionnaire de périphériques (Win+X → Gestionnaire de périphériques) pour confirmer le numéro de port :
端口 (COM 和 LPT)
└─ USB-SERIAL CH340 (COM3) ← votre port série de servosNotez le numéro COM, à sélectionner au lancement du programme.
6. Lancer la GUI
python -m src.gui.factory_calibration_toolOu spécifiez le port manuellement (si le port série est occupé) :
python -m src.gui.factory_calibration_tool --port COM3Voir les ports disponibles :
python -m src.gui.factory_calibration_tool --list-ports7. Flux d'utilisation de l'interface
L'interface est à panneau unique ; une barre de défilement apparaît automatiquement si la hauteur de fenêtre est insuffisante, et l'affichage s'adapte en plein écran.
7.1 Connexion série
- Choisissez le port et le débit (1M par défaut), cliquez sur Connecter
- L'état affiche
🟢 已连接
7.2 Scanner les servos
- Cliquez sur Scanner les servos ; détecte les servos en ligne d'ID 1-254
- Les résultats s'affichent en temps réel dans la liste des servos (avec le modèle)
- Cliquez sur une ligne de la liste → remplissage automatique dans la liste déroulante des servos
7.3 Lecture/écriture des paramètres
- Lire les paramètres : lit les 44 registres (EEPROM + SRAM), le journal affiche les résultats en temps réel
- Table des paramètres : 5 colonnes (adresse/registre/valeur/zone de stockage/lecture-écriture), couleurs distinctes EPROM/SRAM/DEFAULT
- Sélection liée : cliquez sur une ligne de la table → remplit automatiquement « adresse d'écriture », « longueur », « valeur »
- Écriture : après modification de la valeur, cliquez sur écrire ; le programme déverrouille/écrit/verrouille automatiquement
- Fenêtre de résultat d'écriture : succès → invite verte « ✅ 已成功写入 », échec → invite rouge « ❌ 写入失败 » (avec la cause)
7.4 Modifier l'ID de servo
- Ne connectez sur le bus que le servo dont l'ID doit être modifié, pour éviter les conflits avec des ID existants.
- Dans la table des paramètres, trouvez la ligne « ID de servo » (adresse
0x05) et sélectionnez-la. - Remplacez « valeur » par l'ID cible et cliquez sur ✏️ Écrire ; le programme déverrouille → écrit → reverrouille automatiquement.
- Rescannez le bus pour confirmer. Main droite 1–8, main gauche 11–18.
7.5 Contrôle de position
- Faites glisser le curseur ou saisissez directement la position cible (0–1023) ; le champ numérique et le curseur sont synchronisés.
- Cliquez sur ▶ Déplacer ; la barre d'état affiche « déplacement… ».
- Une fois en position, l'invite « déplacement terminé, veuillez couper le couple » s'affiche ; cliquez sur ⏹ Couper le couple.
7.6 Débit / restauration usine
- Modifier le débit : choisissez le nouveau débit (38400–1000000 bps) puis écrivez ; le programme bascule le débit du port série et vérifie par ping, avec retour arrière automatique en cas d'échec.
- Restauration usine : revient aux valeurs d'usine (ID=1, débit 1M) ; un nouveau scan est ensuite nécessaire.
7.7 Paramètres xdat (sauvegarde EEPROM uniquement)
💾 Sauvegarder le servo actuel: enregistre les paramètres EEPROM du servo d'ID courant dans un fichier xdat (sauvegarde)📂 Ouvrir xdat: charge le fichier de sauvegarde📤 Restaurer les paramètres vers le servo: réécrit la sauvegarde dans le servo
8. Différences sous Linux et macOS
Linux
- Polices :
sudo apt install fonts-noto-cjk fonts-noto-color-emoji, sinon l'interface chinoise peut être vide et les emoji s'afficher en carrés. - Permissions du port série :
sudo usermod -a -G dialout $USER, effectif après déconnexion/reconnexion ;groupsdoit contenirdialout. En temporaire :sudo chmod 666 /dev/ttyUSB0. - Noms de périphériques :
/dev/ttyUSB*(CH340 / CP2102 / PL2303) ou/dev/ttyACM*(port série USB embarqué) ; utilisezlsusb,dmesg | grep -i ttypour identifier le fabricant. - Nom de périphérique fixe (facultatif) : dans
/etc/udev/rules.d/99-servo.rules, écrivezSUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyServo", puis utilisez/dev/ttyServo. - Lancement :
python -m src.gui.factory_calibration_tool --port /dev/ttyUSB0. - Questions fréquentes : si
pipsignale externally-managed-environment, utilisez un venv ou ajoutez--break-system-packages.
macOS
- Python : installation recommandée via Homebrew
brew install python; n'utilisez pas l'ancienne version fournie par le système. - Nommage des ports série : utilisez
/dev/cu.*, pas/dev/tty.*(ce dernier peut bloquer) ;ls /dev/cu.*pour les voir. - Pilote USB : CH340 / CP2102 / FTDI sont généralement sans pilote ; les anciens lots de CH340 nécessitent le pilote WCH ; diagnostiquez avec
system_profiler SPUSBDataType. - Lancement :
python -m src.gui.factory_calibration_tool --port /dev/cu.usbserial-0001. - Apple Silicon : utilisez un Python 3.10+ natif, évitez l'ancien Python sous Rosetta ; au premier lancement, si « impossible de vérifier le développeur » s'affiche, autorisez dans « Confidentialité et sécurité ».
- Économie d'énergie : la veille macOS peut déconnecter le port série ; maintenez l'éveil pendant l'utilisation.
9. Remarques
- L'écriture est persistante : une fois écrites dans l'EEPROM, les anciennes valeurs sont écrasées et irréversibles ; sauvegardez d'abord en xdat.
- Alimentation stable : une alimentation insuffisante provoque pertes de pas, échecs de communication ou perte de servos ; alimentez selon les exigences de Câblage et alimentation SCS0009.
- Port série exclusif : un même port ne peut pas être ouvert par deux programmes ; fermez le moniteur série, le logiciel hôte et autres programmes occupants.
- Risque lors du changement d'ID : ne connectez qu'un seul servo à modifier sur le bus ; s'il est perdu après modification, essayez « restauration usine » (ID revenu à 1).
- Surchauffe/surtension : l'outil surveille tension et température (alerte si température > 60 °C) ; en cas de température élevée persistante, arrêtez et laissez refroidir.
- Branchement à chaud : après débranchement USB, le programme tente de se reconnecter ; rebranchez puis cliquez sur rafraîchir le port.
- Caractères illisibles dans la console Windows : si des emoji s'affichent mal dans les outils en ligne de commande, définissez
PYTHONIOENCODING=utf-8avant de lancer.
10. Questions fréquentes
| Problème | Solution |
|---|---|
| Port série introuvable | Vérifiez le pilote dans le gestionnaire de périphériques ; changez de port USB ; installez le pilote CH340 |
| Port série occupé | Fermez le moniteur série et autres programmes ; redémarrez l'outil |
| Polices chinoises vides | Police par défaut Microsoft YaHei ; si anormal, installez une police chinoise |
| Servos non détectés | Vérifiez l'alimentation/le câblage ; confirmez le débit 1M |
| Échec d'écriture | Vérifiez l'alimentation et la connexion du servo ; confirmez que le registre cible est inscriptible |
| PermissionError à l'ouverture du port | Assurez-vous qu'aucun autre processus n'occupe le port COM |
Linux : Permission denied: /dev/ttyUSB0 | Utilisateur non ajouté au groupe dialout ; voir la section Linux ci-dessus |
macOS : blocage avec un port tty. | Utilisez le périphérique /dev/cu.* correspondant |
11. Ligne de commande (facultatif)
# lister les ports disponibles
python -m src.gui.factory_calibration_tool --list-ports
# lancer sur un port spécifié
python -m src.gui.factory_calibration_tool --port COM3
