Servo Controller - ST3215
Bibliothèque Rust pour contrôler les servomoteurs ST3215 via communication série.
Ce projet a été écrit en Rust pour bénéficier de :
- Performance : Compilation native et optimisations
- Sécurité : Gestion mémoire sûre et système de types robuste
- Concurrence : Support natif du multithreading sécurisé
- Fiabilité : Détection des erreurs à la compilation
Installation
Ajoutez cette dépendance dans votre Cargo.toml :
[]
= { = "." }
Ou clonez le dépôt :
Utilisation
Exemple basique
use ST3215;
Compilation et exécution
# Compiler le projet
# Exécuter l'exemple principal
# Exécuter l'exemple basique
API Principale
Création et connexion
// Windows
let servo = ST3215new?;
// Linux
let servo = ST3215new?;
let servo = ST3215new?;
// MacOS
let servo = ST3215new?;
let servo = ST3215new?;
Détection des servos
// Scanner tous les servos
let ids = servo.list_servos;
// Vérifier un servo spécifique
let exists = servo.ping_servo;
Contrôle de position
// Déplacer vers une position
servo.move_to;
// Lire la position actuelle
if let Some = servo.read_position
Contrôle de vitesse
// Rotation continue
servo.rotate?; // Rotation clockwise
servo.rotate?; // Rotation counter-clockwise
// Configurer la vitesse
servo.set_speed;
Lecture des capteurs
// Tension
if let Some = servo.read_voltage
// Température
if let Some = servo.read_temperature
// Courant
if let Some = servo.read_current
// Charge
if let Some = servo.read_load
Configuration
// Changer l'ID
servo.change_id?;
// Configurer le mode (0=Position, 1=Vitesse, 2=PWM, 3=Pas à pas)
servo.set_mode?;
// Configurer l'accélération
servo.set_acceleration;
// Correction de position
servo.correct_position?;
Étalonnage
// Étalonner un servo (trouver min/max)
let = servo.tare_servo;
println!;
Dépendances
serialport(4.3) - Communication sériethiserror(1.0) - Gestion des erreurs
Registres ST3215
EEPROM (lecture seule)
STS_MODEL_L/H(3-4) : Numéro de modèle
EEPROM (lecture/écriture)
STS_ID(5) : ID du servoSTS_BAUD_RATE(6) : Vitesse de communicationSTS_MODE(33) : Mode opérationnel
SRAM (lecture/écriture)
STS_TORQUE_ENABLE(40) : Activation du coupleSTS_ACC(41) : AccélérationSTS_GOAL_POSITION_L/H(42-43) : Position cibleSTS_GOAL_SPEED_L/H(46-47) : Vitesse cible
SRAM (lecture seule)
STS_PRESENT_POSITION_L/H(56-57) : Position actuelleSTS_PRESENT_SPEED_L/H(58-59) : Vitesse actuelleSTS_PRESENT_VOLTAGE(62) : Tension actuelleSTS_PRESENT_TEMPERATURE(63) : Température actuelleSTS_MOVING(66) : Statut de mouvementSTS_PRESENT_CURRENT_L/H(69-70) : Courant actuel
Modes opérationnels
- Mode 0 : Position - Contrôle de position précis
- Mode 1 : Vitesse constante - Rotation continue
- Mode 2 : PWM - Contrôle direct du PWM
- Mode 3 : Pas à pas - Contrôle en mode stepper
Notes importantes
- Le port série doit être accessible (droits appropriés sous Linux/macOS)
- La vitesse de communication par défaut est 1 000 000 bauds
- Les positions valides vont de 0 à 4095
- La fonction
tare_servo()ne doit être utilisée que sur des servos avec positions bloquantes
Débogage
Pour activer les logs de débogage :
RUST_LOG=debug
Licence
MIT
Auteurs
NotPunchnox