🧪 De nouveaux tutoriels arrivent — du bras robotique au capteur
Aller au contenu

Débogage et calibration des servos SCS0009 ​

La version SCS0009 comporte deux volets de débogage :

  1. 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.
  2. 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.

Outils et câblage nécessaires au débogage TTL

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) :

1. Câblage pour le débogage de la main dextre – 1

(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 !

1. Câblage pour le débogage de la main dextre – 2

1. Câblage pour le débogage de la main dextre – 3

1. Câblage pour le débogage de la main dextre – 4

1. Câblage pour le débogage de la main dextre – 5

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]

  1. Câblage : connectez successivement un seul servo à la carte de commande de servos.

2. Définition des ID de servo – 1

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

FD.rar

2. Définition des ID de servo – 2

2. Définition des ID de servo – 3

2. Définition des ID de servo – 4

3. Fixer les palonniers de servo ​

  1. 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.

3. Fixation des palonniers de servo – 1

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

3. Fixation des palonniers de servo – 2

  1. 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.

3. Fixation des palonniers de servo – 3

(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.

3. Fixation des palonniers de servo – 4

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

3. Fixation des palonniers de servo – 5

  1. 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. Fixation des palonniers de servo – 6

(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.

  1. Déboguer les servos 5 et 6

Étapes identiques.

  1. Déboguer les servos 7 et 8

Étapes identiques.

4. Ajuster la valeur médiane ​

  1. Téléversez le programme « 01 à utiliser pour ajuster MiddlePos » sur la carte de développement.

  2. 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.

4. Ajustement de la valeur médiane – 1

4. Ajustement de la valeur médiane – 2

5. Exécuter le programme de test ​

  1. Reportez les valeurs MiddlePos_1, MiddlePos_2 enregistrées ci-dessus dans le tableau ci-dessous, puis téléchargez le programme.

5. Exécution du programme de test – 1

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

6. Exécution du « programme de démonstration 02 » – 1

(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

6. Exécution du « programme de démonstration 02 » – 2

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

6. Exécution du « programme de démonstration 02 » – 3

(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 :

6. Exécution du « programme de démonstration 02 » – 4


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épendanceVersionDescription
Python>= 3.83.10+ recommandé, téléchargement sur python.org
PySide6>= 6.0framework GUI
pyserial>= 3.5communication série
SystèmeWin10 / Win11toute version

2. Installer Python ​

  1. Rendez-vous sur https://www.python.org/downloads/
  2. Téléchargez l'installateur Python 3.10+
  3. 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 :

bash
python --version

3. Installer les dépendances ​

Il est recommandé d'installer dans un environnement virtuel pour ne pas polluer le Python système :

bash
# 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 ​

bash
python setup.py

L'affichage de [OK] 环境检查通过,可以运行项目 indique que l'environnement est correct.

5. Connecter le matériel ​

  1. Branchez l'adaptateur USB-série (par ex. CH340 / CP2102) sur l'ordinateur
  2. Connectez le contrôleur de servos (carte de commande du bras)
  3. 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 servos

Notez le numéro COM, à sélectionner au lancement du programme.

6. Lancer la GUI ​

bash
python -m src.gui.factory_calibration_tool

Ou spécifiez le port manuellement (si le port série est occupé) :

bash
python -m src.gui.factory_calibration_tool --port COM3

Voir les ports disponibles :

bash
python -m src.gui.factory_calibration_tool --list-ports

7. 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 ​

  1. Ne connectez sur le bus que le servo dont l'ID doit être modifié, pour éviter les conflits avec des ID existants.
  2. Dans la table des paramètres, trouvez la ligne « ID de servo » (adresse 0x05) et sélectionnez-la.
  3. Remplacez « valeur » par l'ID cible et cliquez sur ✏️ Écrire ; le programme déverrouille → écrit → reverrouille automatiquement.
  4. Rescannez le bus pour confirmer. Main droite 1–8, main gauche 11–18.

7.5 Contrôle de position ​

  1. Faites glisser le curseur ou saisissez directement la position cible (0–1023) ; le champ numérique et le curseur sont synchronisés.
  2. Cliquez sur ▶ Déplacer ; la barre d'état affiche « déplacement… ».
  3. 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) ​

  1. 💾 Sauvegarder le servo actuel : enregistre les paramètres EEPROM du servo d'ID courant dans un fichier xdat (sauvegarde)
  2. 📂 Ouvrir xdat : charge le fichier de sauvegarde
  3. 📤 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 ; groups doit contenir dialout. 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é) ; utilisez lsusb, dmesg | grep -i tty pour identifier le fabricant.
  • Nom de périphérique fixe (facultatif) : dans /etc/udev/rules.d/99-servo.rules, écrivez SUBSYSTEM=="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 pip signale 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 ​

  1. L'écriture est persistante : une fois écrites dans l'EEPROM, les anciennes valeurs sont écrasées et irréversibles ; sauvegardez d'abord en xdat.
  2. 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.
  3. 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.
  4. 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).
  5. 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.
  6. Branchement à chaud : après débranchement USB, le programme tente de se reconnecter ; rebranchez puis cliquez sur rafraîchir le port.
  7. Caractères illisibles dans la console Windows : si des emoji s'affichent mal dans les outils en ligne de commande, définissez PYTHONIOENCODING=utf-8 avant de lancer.

10. Questions fréquentes ​

ProblèmeSolution
Port série introuvableVé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 videsPolice par défaut Microsoft YaHei ; si anormal, installez une police chinoise
Servos non détectésVérifiez l'alimentation/le câblage ; confirmez le débit 1M
Échec d'écritureVérifiez l'alimentation et la connexion du servo ; confirmez que le registre cible est inscriptible
PermissionError à l'ouverture du portAssurez-vous qu'aucun autre processus n'occupe le port COM
Linux : Permission denied: /dev/ttyUSB0Utilisateur 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) ​

bash
# 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

Pages associées ​