Objectif
La robotique est accessible à tous et de plus elle est simple à piloter. Néanmoins il convient de porter une attention particulière à certains aspects techniques. Et plus particulièrement à la manipulation des servomoteurs.
Le projet utilise des composants faciles à procurer. Une fois les composants assemblés ils seront coordonnées par un programme micropython avec l’application Thonny.
Une version précédente de ce projet était pilotée par arduino-IDE. La nouvelle génération de microcontrôleurs donne une nouvelle orientation aux montages et à la programmation. Le language micropython me paraît plus simple à utiliser et en particulier l’interface Thonny. Des trois projets d’automatisation d’un bras articulé publiés c’est le plus abouti.
Le robot est un bras articulé qui se déplace sur trois axes et est piloté par 6 servomoteurs.
La particularité du programme est de pouvoir mémoriser les positions successives du bras.
On pourra ensuite demander au programme de placer le robot successivement dans les positions enregistrées comme visible sur la vidéo. Pour la vidéo uniquement 7 positions ont été mémorisées.
Le programme se charge de fluidifier le mouvement.
Les positions resteront mémorisées lorsque le courant est coupé.
Le tout se pilote à l’aide d’un smartphone utilisant une app Bluetooth.
Le matériel
Kit bras articulé
Le kit complet du bras articulé peut se trouver à moins de 50$. Malheureusement si les parties mécaniques sont de bonne qualité, les servomoteurs (MG996) ne le sont pas. Lors des essais deux servos ont grillés. Ils ont été remplacés par des servos DS3225MG plus chers mais robustes. Le montage du bras ne pose pas de problèmes particuliers. Ayant constaté que des vis se dévissaient sous l’effet des vibrations je conseille d’ajouter des rondelles autobloquantes.
Raspberry pico
Un contrôleur de dernière génération de la famille Raspberry.
Bluetooth HC05
Module facile à programmer.
Alimentation électrique
L’alimentation électrique doit être performante et autoriser des pics de courant pouvant atteindre 2,5 ampères. L’affichage de la consommation de courant permet de contrôler les dérives. Par exemple en cas de blocage d’un servomoteur le courant va fortement augmenter et la tension peut diminuer sous 4V, ce qui pourra entrainer un mouvement erratique des servomoteurs. Un contrôle visuel de l’alimentation devient indispensable.
Android App
Pour piloter le bras on utilisera un smartphone ou une tablette avec l’application « Bluetooth Remote ». Cette application gratuite est simple à configurer. Elle est basée sur la création de boutons programmables. Pour chaque bouton on définit une séquence de caractères à envoyer en Bluetooth. L’Arduino équipé du module HC05 recevra les informations pour les transformer en actions.
Mémoire Eeprom
La mémoire du bras est constituée d’un module contenant une Eeprom AT24C256 ou AT24CXX. Cette mémoire sert à conserver les informations après l’extinction de la maquette. Ces informations sont disponibles après redémarrage. Ce module est connecté en I2C.
Schéma du montage
Le circuit électronique est simple à réaliser.
Application smartphone
L’app “Bluetooth Remote” est utilisée pour transmettre des ordres de mouvement.
Cette application gratuite est simple à configurer. Elle est basée sur la création de boutons programmables. Pour chaque bouton on définit une séquence de caractères à envoyer en Bluetooth. Le module HC05 recevra les informations pour les transformer en actions.
Pour commencer nous allons programmer les touches nécessaires aux fonctions de base à savoir le mouvement des 6 servos. La programmation se fait suivant le modèle ci-contre.
Programmation
La mise en œuvre du logiciel Thonny n’est pas traitée ici. De nombreux articles sont disponibles sur le web.
Le programme se compose de deux fichiers : un programme principal (main.py) et un fichier contenant des fonctions (functions.py).
Le programme principal “main.py” (ci-contre) est simple et fait référence à des fonctions du fichier “functions.py”. L’utilisation de fonctions évite la répétition de code et facilite la lisibilité du programme.
Afin de faciliter la compréhension les explications se feront par la suite avec l’aide de dessins.
Dans le montage certains servos ne peuvent pas tourner sur toute la plage des 180°. Ils seront bloqués mécaniquement par les supports et se mettrons à chauffer. Il convient donc de les protéger en limitant leur course.
Le dessin suivant donne les étapes pour la calibration des servos.
La table « table_home » (functions.py) contient la position du bras à la mise sous tension. Il est recommandé avant la mise sous tension de ramener manuellement le bras dans cette position initiale. Si le bras est dans une autre position un mouvement brutal s’effectuera à la mise sous tension !
Toutes ces valeurs sont à mettre à jour si vous réaliser ce projet !
Les fonctions
Toutes les fonctions se trouvent dans le fichier “functions.py”. L’ensemble des sources est téléchargeable ici <==.
(A) le pilotage physique des servos se fait par la largeur d’impulsions. Dans notre cas la largeur des impulsions varie entre 1700 à 8200. Le programme travaille avec l’angle de rotation (0 à 180°). On utilise des fonctions pour convertir de l’un à l’autre.
(B) Configuration de la mémoire Eeprom. On utilise le terme “sequence” pour définir la position des 6 servos du robot à un moment donné. Chaque servos utilise 4 octets de mémoire.
On utilise deux pointeurs pour se déplacer dans la mémoire (courant et max).
(C), (D) Les fonctions de déplacement du robot.
Finalisation de la programmation de l’app
Après les explications sur les fonctions on peut passer à la finalisation de la programmation de l’application Bluetooth Remote.
Touche “POS” liste à la console l’etat actuel des paramètres en appelant la fonction “infos()”.
Touche “seq+1, seq-1, max+1, max-1” incrémentent ou décrémentent les pointeurs en début de mémoire (pointeur en cours et max).
Touche “write seq” écrit en mémoire la position actuelle du robot à la position indiquée (fonction “eeprom_write_robot_pos()”).
Touche “home” utilise la fonction “servo_home_pos()” pour déplacer le robot dans sa position de repos.
Touche “play seq” utilise la fonction “robot_move_seq()” pour déplacer le robot dans la position indiquée par le pointeur en cours.
Animation du robot
A l’aide des outils décrit plus haut il est maintenant possible de créer une animation du robot en le positionnant successivement dans diverses positions Deux fonctions supplémentaires permettent de créer une animation.
La fonction “robot_move()” permet de déplacer le robot de la position actuelle vers une position de destination. Cette fonction va actionner alternativement les 6 servos afin de rendre le mouvement du robot fluide.
Touche “play scenario” utilise la fonction “scenario() qui appelle “robot_move()” afin de placer le robot successivement dans diverses positions à partir de la sequence 1 à la sequence indiquée par le pointeur max. La vidéo montrant le déplacement d’objet n’a été réalisée qu’avec 7 positions du robot.
Le scenario démarre après 10s (temps qui peut être modifié au début de la fonction).
Conclusion
Ce projet démontre la possibilité de créer simplement une animation d’un robot en mémorisant quelques positions du robot.
Vous pouvez maintenant donner libre cours à votre imagination pour le maquettage de vos robots. Enjoy it !
Laisser un commentaire