Messa a punto e calibrazione dei servo SCS0009
La versione SCS0009 prevede due tipi di messa a punto:
- Assemblaggio e messa a punto della posizione centrale TTL: cablaggio, impostazione dell'ID del servo, fissaggio del braccio, regolazione fine della posizione centrale, esecuzione dei test.
- Strumento di debug SCS0009: GUI Python + PySide6, scansione del bus, lettura/scrittura di tutti i registri, controllo di posizione, baudrate/ripristino di fabbrica, backup xdat della EEPROM.
Per i dettagli dei registri del protocollo vedi Tabella di memoria del protocollo SCS0009.
Per il cablaggio Arduino/estensione vedi Arduino Nano.
1. Messa a punto TTL: assemblaggio, ID e posizione centrale
Per prima cosa scarica l'archivio 灵巧手调试.zip; dopo l'estrazione puoi seguire il documento «Processo di debug della mano robotica con il programma Arduino (servo TTL)» per impostare l'ID dei servo, calibrare, regolare la posizione centrale ed eseguire il programma dimostrativo, oppure fare riferimento al codice open source ufficiale.
Nel caso di prodotto finito e non smontato (ID dei servo, calibrazione e posizione centrale sono già regolati in fabbrica) puoi passare direttamente al punto 6 Esecuzione del «programma dimostrativo 02» e al tracciamento delle mani.

1. Cablaggio per la messa a punto della mano robotica
Un modo è usare un PC con software host come Python, ad esempio l'applicazione host dei servo Feetech oppure codice Python.
L'altro è usare un microcontrollore come il MEGA328P, oppure una scheda di sviluppo o un controllore acquistato separatamente.
Il cablaggio è il seguente:
(1) Cablaggio per la messa a punto via Python (si collega solo la scheda driver servo):

(2) Cablaggio per la messa a punto con la scheda di sviluppo MEGA328P (scheda driver servo + scheda 328P):
Controlla bene la posizione dei pin della scheda di sviluppo MEGA328P!




Di seguito viene descritto il processo di messa a punto con il microcontrollore; il microcontrollore esegue continuamente in loop il programma dimostrativo, per fermarlo basta scollegare il cavo dati.
2. Impostazione dell'ID del servo
Una singola mano robotica utilizza 8 servo: l'ID della mano destra va impostato da 1 a 8, quello della mano sinistra da 11 a 18.
Calibrazione della posizione centrale, valori predefiniti di fabbrica: mano destra [451,571,451,571,451,571,451,571] mano sinistra [571,451,571,451,571,451,571,451]
- Collegamento: collega in sequenza un singolo servo e la scheda driver servo.

- Usa il software host FD1.9.8.2 fornito dal produttore dei servo per l'impostazione
FD.rar



3. Fissaggio del corno del servo
- Carica sulla scheda di sviluppo il programma
安装白色伺服喇叭时使用(da usare per installare il corno bianco del servo)
Il ruolo del programma: porta gli ingranaggi del servo in una posizione approssimativamente centrale; i successivi angoli di movimento si basano su questa posizione intermedia.
(1) Installa il software Arduino, facendo riferimento al tutorial di installazione per il tuo sistema; per compilare e scaricare il programma Arduino è prima necessario installare le librerie FTServo e SCServo nel Gestore librerie

(2) Tipo di scheda di sviluppo: seleziona "Arduino Nano"

- Messa a punto dei servo 1 e 2
(1) Modifica: in base all'ID del servo da mettere a punto, modifica la posizione seguente. Ad esempio, per mettere a punto l'indice, imposta i valori ID 1 e 2

(2) Carica il programma sulla scheda di sviluppo
(3) Collegamento: collega la scheda di sviluppo alla scheda driver servo e ai servo 1 e 2; si sentirà l'ingranaggio del servo ruotare di un certo angolo e poi fermarsi.

(4) Installa il corno del servo sull'ingranaggio, mantenendolo il più possibile parallelo

- Messa a punto dei servo 3 e 4
(1) Scollega il collegamento tra la scheda di sviluppo 328P e la scheda driver servo (altrimenti non è possibile caricare)
(2) Modifica: imposta i valori ID 3 e 4

(3) Carica il programma sulla scheda di sviluppo
(4) Collegamento: collega la scheda di sviluppo alla scheda driver servo e ai servo 3 e 4; si sentirà l'ingranaggio del servo ruotare di un certo angolo e poi fermarsi.
(5) Installa il corno del servo sull'ingranaggio, mantenendolo il più possibile parallelo
- Messa a punto dei servo 5 e 6
Passaggi come sopra
- Messa a punto dei servo 7 e 8
Passaggi come sopra
4. Regolazione fine del valore intermedio
Carica sulla scheda di sviluppo il programma
01 微调MiddlePos值时使用(da usare per la regolazione fine dei valori MiddlePos)Quando le dita sono in posizione chiusa, interrompi immediatamente il programma (basta scollegare il cavo dati) e controlla se i corni dei servo sono allineati correttamente (come in figura). Se non sono allineati, regola i valori MiddlePos_1 e MiddlePos_2 nel programma finché non risultano allineati. Annota i valori (8 valori per gli 8 servo), serviranno nel programma finale.


5. Esecuzione del programma di test
- Inserisci i valori MiddlePos_1 e MiddlePos_2 salvati sopra nell'array seguente e scarica il programma.

6. Esecuzione del «programma dimostrativo 02»
(1) Installa il software Arduino, facendo riferimento al tutorial di installazione per il tuo sistema
(2) Nella directory 灵巧手调试\00 TTL串口舵机\arduino程序(MEGA328P开发板)\02 演示程序, apri il file .ino corrispondente alla mano destra o sinistra

(3) Per compilare e caricare il programma Arduino sulla scheda di sviluppo, installa prima le librerie FTServo e SCServo nel Gestore librerie

(4) Tipo di scheda di sviluppo: seleziona "Arduino Nano"

(5) Compila e carica
Nota: in questo momento il PC è collegato solo alla scheda di sviluppo, che non è ancora collegata alla scheda driver servo (cioè non è collegata alla mano robotica)
Dopo il caricamento riuscito, collega la scheda di sviluppo alla scheda driver servo tramite tre jumper, collega i servo alla scheda driver servo, come descritto in Modalità di cablaggio per la messa a punto con la scheda di sviluppo MEGA328P.
La mano robotica eseguirà continuamente in loop il «programma dimostrativo 02»
Il risultato dell'esecuzione è il seguente:

2. Strumento di debug SCS0009
Compatibile con Windows 10 / 11; per le differenze su Linux e macOS vedi sezione 8. Questo tutorial copre ogni passaggio, dall'installazione dell'ambiente alla messa a punto completa.
⚠️ Nota di compatibilità: questo strumento supporta attualmente solo i servo Feetech SCS0009 (serie SCS, retroazione di posizione a potenziometro, risoluzione a 10 bit 0–1023). La tabella dei registri e il formato dei parametri xdat sono progettati per lo Feetech SCS0009; altri marchi/modelli non sono garantiti compatibili.
1. Requisiti dell'ambiente
| Dipendenza | Versione | Descrizione |
|---|---|---|
| Python | >= 3.8 | Si consiglia 3.10+, scaricalo da python.org |
| PySide6 | >= 6.0 | Framework della GUI |
| pyserial | >= 3.5 | Comunicazione seriale |
| Sistema | Win10 / Win11 | Qualsiasi versione |
2. Installazione di Python
- Vai su https://www.python.org/downloads/
- Scarica il pacchetto di installazione Python 3.10+
- Durante l'installazione assicurati di selezionare "Add Python to PATH" (altrimenti la riga di comando non trova python)
Verifica dell'installazione:
python --version3. Installazione delle dipendenze
Si consiglia di installare in un ambiente virtuale per non inquinare il Python di sistema:
# entra nella directory del progetto
cd SCS0009_ServoController
# crea l'ambiente virtuale
python -m venv .venv
# attiva l'ambiente virtuale (Windows)
.venv\Scripts\activate
# installa le dipendenze
pip install -r requirements.txt⚠️ L'ambiente virtuale va creato una sola volta. Eseguirlo di nuovo sovrascrive l'ambiente originale (cancellando le dipendenze installate). In seguito basta solo
activate.
Suggerimento: dopo l'attivazione il prefisso della riga di comando mostra
(.venv).
4. Verifica dell'ambiente
python setup.pySe compare [OK] 环境检查通过,可以运行项目 l'ambiente è corretto.
5. Collegamento dell'hardware
- Inserisci l'adattatore USB-seriale (ad es. CH340 / CP2102) nel PC
- Collega il controller del servo (scheda di controllo del braccio robotico)
- Alimenta i servo (si consiglia DC 5V 5A, versione Pro DC 12V 5A)
Apri Gestione dispositivi (Win+X → Gestione dispositivi) e verifica il numero di porta:
端口 (COM 和 LPT)
└─ USB-SERIAL CH340 (COM3) ← 你的舵机串口Annota il numero COM, da selezionare all'avvio del programma.
6. Avvio della GUI
python -m src.gui.factory_calibration_toolOppure specifica manualmente la porta (quando la seriale è occupata):
python -m src.gui.factory_calibration_tool --port COM3Visualizza le porte disponibili:
python -m src.gui.factory_calibration_tool --list-ports7. Flusso operativo dell'interfaccia
L'interfaccia ha un layout a pannello singolo; quando l'altezza della finestra non è sufficiente compare automaticamente una barra di scorrimento, e a schermo massimizzato si adatta in modo elastico.
7.1 Connessione seriale
- Seleziona porta e baudrate (predefinito 1M), fai clic su Connetti
- Lo stato mostra
🟢 已连接
7.2 Scansione dei servo
- Fai clic su Scansiona servo, rileva i servo online con ID 1-254
- I risultati della scansione vengono mostrati in tempo reale nell'elenco dei servo (con il modello)
- Fai clic su una riga dell'elenco dei servo → viene compilato automaticamente nel menu a tendina dei servo
7.3 Lettura/scrittura dei parametri
- Leggi parametri: legge tutti i 44 registri (EEPROM + SRAM), il log mostra i risultati in tempo reale
- Tabella dei parametri: visualizzazione a 5 colonne (indirizzo/registro/valore/area di memoria/lettura-scrittura), con colori distinti per EEPROM/SRAM/DEFAULT
- Selezione collegata: fai clic su una riga della tabella → compila automaticamente "indirizzo di scrittura", "lunghezza", "valore"
- Scrittura: dopo aver modificato il valore fai clic su scrivi; il programma sblocca/scrive/blocca automaticamente
- Finestra del risultato di scrittura: in caso di successo compare un avviso verde "✅ 已成功写入", in caso di errore un avviso rosso "❌ 写入失败" (con la causa)
7.4 Modifica dell'ID del servo
- Collega al bus solo il servo di cui vuoi cambiare l'ID, per evitare conflitti con ID già esistenti.
- Nella tabella dei parametri individua e seleziona la riga «ID servo» (indirizzo
0x05). - Cambia il "valore" nell'ID target e fai clic su ✏️ Scrivi; il programma sblocca → scrive → riblocca automaticamente.
- Dopo la modifica riesegui la scansione del bus per confermare. Mano destra 1–8, mano sinistra 11–18.
7.5 Controllo di posizione
- Trascina lo slider o inserisci direttamente la posizione target (0–1023); il campo numerico è sincronizzato con lo slider.
- Fai clic su ▶ Muovi, la barra di stato mostra «in movimento…».
- Al raggiungimento della posizione compare «movimento completato, chiudi la coppia»; fai clic su ⏹ Coppia off.
7.6 Baudrate/ripristino di fabbrica
- Modifica del baudrate: seleziona il nuovo baudrate (38400–1000000 bps) e scrivi; il programma cambia il baudrate della seriale e verifica con un ping, in caso di errore ripristina automaticamente.
- Ripristino di fabbrica: ripristina i valori predefiniti di fabbrica (ID=1, baudrate 1M); dopo è necessario rieseguire la scansione.
7.7 Parametri xdat (salva solo la EEPROM)
💾 Salva servo corrente: salva i parametri EEPROM del servo con ID corrente in un file xdat (backup)📂 Apri xdat: carica il file di backup📤 Ripristina parametri sul servo: riscrive il backup sul servo
8. Differenze Linux e macOS
Linux
- Font:
sudo apt install fonts-noto-cjk fonts-noto-color-emoji, altrimenti l'interfaccia in cinese può risultare vuota e le emoji appaiono come quadrati. - Permessi della seriale:
sudo usermod -a -G dialout $USER, disconnetti e riconnetti per rendere effettivo;groupsdeve conteneredialout. Temporaneamente puoi usaresudo chmod 666 /dev/ttyUSB0. - Nome del dispositivo:
/dev/ttyUSB*(CH340 / CP2102 / PL2303) oppure/dev/ttyACM*(seriale USB a bordo); usalsusb,dmesg | grep -i ttyper trovare il produttore. - Nome dispositivo fisso (opzionale): in
/etc/udev/rules.d/99-servo.rulesscriviSUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyServo", poi usa/dev/ttyServo. - Avvio:
python -m src.gui.factory_calibration_tool --port /dev/ttyUSB0. - Problemi comuni: se
pipsegnala externally-managed-environment usa un venv oppure aggiungi--break-system-packages.
macOS
- Python: si consiglia di installare con Homebrew
brew install python, non usare la vecchia versione di sistema. - Denominazione delle porte seriali: usa
/dev/cu.*, non/dev/tty.*(quest'ultimo può bloccarsi);ls /dev/cu.*per vedere. - Driver USB: CH340 / CP2102 / FTDI sono per lo più senza driver; i lotti vecchi di CH340 richiedono il driver WCH, usa
system_profiler SPUSBDataTypeper diagnosticare. - Avvio:
python -m src.gui.factory_calibration_tool --port /dev/cu.usbserial-0001. - Apple Silicon: usa Python 3.10+ nativo, evita il vecchio Python sotto Rosetta; alla prima esecuzione, se compare "impossibile verificare lo sviluppatore", consenti in "Privacy e sicurezza".
- Risparmio energetico: la sospensione di macOS può disconnettere la seriale; mantieni il sistema sveglio durante le operazioni.
9. Note
- La scrittura è permanente: dopo aver scritto i parametri nella EEPROM i valori originali vengono sovrascritti e non è possibile annullare; prima di modificare esegui un backup con xdat.
- Alimentazione stabile: alimentazione insufficiente causa perdita di passi, errori di comunicazione o perdita di connessione dei servo; alimenta secondo i requisiti di Cablaggio e alimentazione SCS0009.
- Seriale esclusiva: la stessa porta non può essere aperta contemporaneamente da due programmi; prima dell'uso chiudi il monitor seriale, l'applicazione host e altri programmi che la occupano.
- Rischio nella modifica dell'ID: collega al bus un solo servo di cui modificare l'ID; se dopo la modifica perde la connessione, prova «ripristino di fabbrica» (l'ID torna a 1).
- Sovratemperatura/sovratensione: lo strumento monitora tensione e temperatura (allarme se temperatura > 60 °C); in caso di temperatura elevata persistente ferma il sistema per raffreddarlo.
- Hot plug: dopo aver scollegato l'USB il programma tenta di riconnettersi; dopo averlo ricollegato fai clic su aggiorna porta.
- Caratteri errati nella console Windows: se lo strumento da riga di comando mostra emoji corrotte, imposta
PYTHONIOENCODING=utf-8e riesegui.
10. Domande frequenti
| Problema | Soluzione |
|---|---|
| Porta seriale non trovata | Controlla il driver in Gestione dispositivi; cambia porta USB; installa il driver CH340 |
| Porta seriale occupata | Chiudi programmi come il monitor seriale; riavvia lo strumento |
| Caratteri cinesi visualizzati come vuoti | Il sistema usa Microsoft YaHei come predefinito; se anomalo installa i font cinesi |
| I servo non vengono trovati | Controlla alimentazione/cablaggio; verifica il baudrate 1M |
| Scrittura fallita | Controlla alimentazione e connessione dei servo; verifica che il registro target sia scrivibile |
| PermissionError all'apertura della seriale | Assicurati che nessun altro processo occupi quella porta COM |
Linux: Permission denied: /dev/ttyUSB0 | Non sei nel gruppo dialout; vedi la sezione Linux sopra |
macOS: blocco con nome seriale contenente tty. | Usa il dispositivo corrispondente /dev/cu.* |
11. Riga di comando (opzionale)
# elenca le porte seriali disponibili
python -m src.gui.factory_calibration_tool --list-ports
# avvia con una porta specifica
python -m src.gui.factory_calibration_tool --port COM3
