Et que malgré ça, j'ai transpiré un peu pour me servir des Feetech. J'ai donc deux possibilités, vous présenter rapidement ce qui m'a posé soucis et ma solution ou repartir de zéro et faire une présentation en profondeur des Feetech. J'opte pour la seconde solution. Attendez-vous alors a certaines re-dites par rapport aux articles cités plus haut.
Note: Tous les essais réalisés lors de la rédaction de ces posts on été fait avec un Feetech STS3032, un TTLinker et un Raspberry Pi Pico.
Introduction
Les servomoteurs de modélisme
Les servomoteurs de modélisme sont des actionneurs assez intéressants car ils sont simples et sont commandés en position. Contrairement à un moteur à courant continu, où le moteur tourne dès que vous appliquez une tension, un servomoteur de modélisme va "attendre", en plus de l'alimentation, une consigne de position. C'est le servomoteur, qui en fonction de sa position et de la consigne envoyée, va commander son moteur pour atteindre la position demandée.
Pour les mettre en œuvre, le schéma est assez simple. Sur les trois broches, deux servent à l'alimentation et la troisième est directement reliée au signal du microcontrôleur. Contrairement à un moteur à courant continu, vous n'avez pas besoin de pont en H pour les piloter. Tout est intégré dans le servomoteur.
Les servomoteurs de modélisme présentent quelques limitations :
- Leur course est généralement limitée à 180°
- Il faut une broche de microcontrôleur par servomoteur. C'est peut-être un détail, mais ça peut empêcher de réutiliser une carte électronique d'une année sur l'autre.
- Difficile de piloter finement la vitesse du servomoteur
- Et surtout, le servomoteur ne renvoie pas d'information sur son état
Les servomoteurs Feetech
Les servomoteurs Feetech reprennent la base du servomoteur de modélisme, en comblant une grande partie de ses défauts.
- Leur course est réglable, et illimitée dans certains mode d'utilisation
- Ils sont chaînables, sur un port vous pouvez brancher tous vos servomoteurs
- Leur vitesse et leur accélération sont paramétrables
- Ils renvoient des informations détaillées sur leur état, position, vitesse, effort...
Ces servomoteurs existent en 2 gammes. L'une communique avec un protocole RS485, ce qui est certainement un inconvénient pour un petit projet. En effet, vous aurez besoin d'une carte d'adaptation car vous ne trouver pas (ou très difficilement) de microcontrôleurs qui intègrent le protocole RS485. L'avantage est que ce protocole, utilisant un signal différentiel, est résistant aux perturbations.
L'autre gamme utilise un signal TLL, en half duplex. Cela signifie que l'émission et la réception des données se fait sur la même broche. Si pour ce protocole, une grosse bidouille logicielle semble possible, le plus simple sera d'utiliser une carte de conversion.
Le fabriquant vend une carte de conversion UART <-> RS485 ou UART <-> TTL Half Duplex pour simplifier l'intégration de servomoteur de vos projets que vous trouverez chez Robot Maker. Nous utiliserons celle-ci :
https://www.robot-ma...er-mini-69.html
mais vous pouvez utiliser celle-là si vous souhaitez utiliser un ordinateur pour communiquer avec vos servomoteur : https://www.robot-ma...-urt-1-460.html
Première étape - S'installer
Câblage
Vous devez connecter sur la carte d'adaptation :
- L'alimentation de puissance (5V)
- L'alimentation logique (3,3V)
- Les signaux UART (RX/TX) sans les croiser
On va supposer que vous avez un IDE d'installé, que ce soit celui d'Arduino, VSCode + PlatformIO, ou autre.
Récupération de la bibliothèque
Robot Maker fourni une bibliothèque servomoteurs feetech qui offre les principales fonctions. Nous en aurons besoin dès le début car la bibliothèque permet de construire les trames.
Adaptation de la liaison série
Même avec Arduino, la configuration de la liaison série peut demander un peu de travail. En général, Serial.begin() démarre le port série qui communique avec votre ordinateur en USB. Serial1.begin() va ouvrir un autre port série de votre microcontrôleur. Savoir lequel est parfois compliqué :
- Pour les cartes officielles, la documentation est ici : https://docs.arduino...ication/serial/
- Sur un ESP32, vous devez également préciser les broches à utiliser : Serial1.begin(1000000, SERIAL_8N1, RX, TX); RX et TX étant les numéros des broches. Ce sont parfois des constantes définies par le fichier décrivant votre carte.
- Sur un RP2040 (Raspberry Pi Pico), PlatformIO ne laisse pas le choix, TX sera la broche 0, RX la broche 1.
Ping du servomoteur
Voici un programme qui teste la présence d'un servomoteur qui aurait l'adresse 1 (notez que c'est l'adresse par défaut).
Si ça marche, vous être prêt à passer à la suite !
#include <Arduino.h> #include "SCServo.h" SMS_STS sms_sts; void setup() { // Configure la led en sortie pinMode(LED_BUILTIN, OUTPUT); // On ouvre 2 liaisons séries, 1 pour communiquer avec le PC, 1 pour les Feetech Serial.begin(115200); Serial1.begin(1000000); sms_sts.pSerial = &Serial1; } // the loop routine runs over and over again forever: void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) test_ping(); digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW test_ping(); } void test_ping() { int ID = sms_sts.Ping(1); if(ID!=-1){ Serial.print("Servo ID:"); Serial.println(ID); delay(100); }else{ Serial.print("Ping servo ID error!\n"); delay(2000); } }Alors, ce n'est que l'intro, dans les épisodes à venir, nous pourrions avoir :
- Le détail du protocole
- Les différents mode de gestions des Feetech (Servo, roue, multitours)