Mise à jour le 17/02/2016. Cet article étant publié avant la publication de la librairie, certaines informations devaient être corrigées.
La dernière version de la librairie est disponible ici et sur la page Téléchargements.
Comme annoncé précédemment (ici) je suis en train d’écrire une librairie Arduino permettant de configurer et piloter les servomoteurs HerkuleX DRS-0101 et DRS-0201.
Je lui ai donné le doux nom de HerkuleXLib.
Je souhaite proposer une librairie à la fois flexible et robuste afin de permettre, à terme, d’être la plus complète possible (pour une utilisation standard) et d’envisager facilement l’ajout de fonctions spécifiques (pour les cas moins conventionnels).
J’ai essayé de schématiser l’organisation de mes classes (oui bon c’est pas un joli diagramme UML, mais ça devrait faire le boulot pour le moment).
1 Lo po compris l’schéma
HkxCommunication est la classe qui parle la langue du servomoteur. En dessous, HkxPrint permet de gérer l’envoie des messages d’information, alertes et erreurs. HkxStatus permet de rendre plus facilement compréhensible pour le programmeur le statu du servomoteur.
Ensuite trois blocs sont dessinés en parallèles :
- Le bloc jaune a pour objet de configurer les servos.
- Le bloc permet de contrôler les servos en position.
- Le bloc bleu permet de contrôler les servos en rotation continue.
C’est trois blocs n’ont pas pour but de fonctionner en même temps dans un même programme. Je pense que le code visant à configurer les servomoteurs (action à appliquer à priori une seule fois) est différent de celui visant à utiliser ces servos. Aussi j’ai séparé deux modes d’utilisation (contrôle de la position et rotation continue). En effet, j’ai du mal à imaginer une utilisation mixant ces deux modes pour un même servomoteur. Si tel devait être le cas, l’écriture d’une classe spécifique se justifierait.
Le fichier .ino est celui que l’utilisateur de la librairie écrit.
2 Détail des classes
2.1 HkxCommunication
C’est la classe qui parle à l’oreille des servos. En gros, on lui donne les données à envoyer, elle se charge de les mettre dans le bonne ordre, ajoute les en-têtes, fait les vérifications adéquats et enfin s’assure que la communication c’est bien passée. Ne vous faites pas trop de soucis, cette classe vous aurez juste à la créer.
2.2 HkxPrint
En fonction des cartes Arduino, il sera possible ou non de renvoyer des messages (informations, alertes ou erreurs) par un port série. Il s’agira en général du port Serial
qui communique au travers du port USB, les messages s’affichant alors sur la console série de l’ordinateur connecté. La carte Aduino UNO n’aillant qu’un port série, il ne sera pas possible de renvoyer de messages.
2.3 HkxStatus
Le statu du servo peut être vérifié (voir le Manuel HerkuleX v1.1) pour savoir par exemple si un problème est apparu. Cette classe permet l’utilisation de ces données de manière (je l’espère) plus digeste pour l’utilisateur de la librairie.
2.4 HkxSetup
Cette classe vous permettra de paramétrer tout ce qu’il est possible de paramétrer dans ces servos (ex: PID, alarmes, seuil de couple). Voir tout de même quelques limitations à la fin de l’article. Consultez le Manuel HerkuleX v1.1 pour plus de détails sur les paramètres configurables.
2.5 HkxPosControl
C’est ici que vous pourrez piloter un (seul) servo en position. Vous pouvez aussi lire les informations sur la position, la vitesse, etc.
2.6 HkxGroupPosControl
La même chose que HkxPosControl pour plusieurs servos en même temps. Cela permet par exemple de synchroniser leurs déplacements.
2.7 HkxContRotation
Sinon pour d’autres applications vous pouvez souhaiter piloter le servo (1 seul à la fois) en rotation continue. Comme pour HkxPosControl il est possible de lire les informations tel que vitesse, couple, etc.
2.8 HkxGroupConRotation
Là encore il est intéressant de pouvoir piloter plusieurs servos de manière synchronisée ou non.
3 Limitations
Bien que l’objectif de la librairie est d’arriver à s’en passer au maximum, il est recommandé de lire le Manuel HerkuleX v1.1.
La librairie est comptable avec Arduino IDE v1.X
Elle peut être utilisée (je ne l’ai pas testée avec toutes les cartes):
- Sur le port Serial (Rx/Tx) avec la carte Arduino UNO. Attention toutes fois, il n’est alors pas possible de faire de debug via le terminal série.
- Sur le port Serial1 (Rx1/Tx1) avec les cartes Arduino Micro et Arduino Leonardo.
- Sur les ports Serial1 (Rx1/Tx1), Serial2 (Rx2/Tx2) ou Serial3 (Rx3/Tx3) avec les cartes Arduino MEGA et Arduino DUE.
Mon expérience n’a pas été concluante avec un baudrate de 57600, je vous déconseille donc vivement d’utiliser cette vitesse de transfert pour les ports serie !
La classe HkxCommunication est écrite uniquement pour le cas où l’ACK POLICY est réglée sur 1 (voir Manuel HerkuleX v1.1 pour plus de détails).