Objectifs du projet

Ce projet a été développé à des fins pédagogiques.

Voici une autre manière de programmer un bras articulé.

J’explique dans ce projet simplement comment :

    • Appairer et faire dialoguer deux modules Bluetooth.
    • Lire et écrire sur un module mémoire Eeprom.
    • Piloter plusieurs servomoteurs.
    • Utiliser un gyroscope.
    • Piloter à distance un robot.

Quelques programmes (différents du premier projet) décrivent le fonctionnement des divers modules.

Le projet utilise un bras articulé disponible sur le marché. Une fois les composants assemblés ils seront coordonnées par des programmes Arduino IDE. Ces programmes sont le centre d’intérêt du projet.

Le développement est fait autour de deux platines pilotées par un contrôleur Arduino UNO (platine Slave connectée au robot) et un contrôleur Arduino NANO (platine Master connectée au gyroscope). Ces deux platines communiquent en Bluetooth.

L’inclinaison du gyroscope déplacera le bras dans diverses directions.

Il est également possible de mémoriser les mouvements du bras afin de pouvoir rejouer la séquence enregistrée.

L’ensemble des fichiers est disponible au téléchargement ici.

Le matériel (platine Slave)

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 et plus robuste. 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.

Le contrôleur PWM PCA9685 permet la connexion de 16 servomoteurs. Le bras utilisera 6 servos. Il est relié à l’Arduino UNO en I2C.

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.

Un module Bluetooth HC05 est utilisé pour communiquer avec la platine Master

Le matériel (platine Master)

Pour piloter le bras on utilisera un module gyroscope gy521 connecté sur un contrôleur Arduino NANO.

La communication avec la platine Slave s’effectue par le module  Bluetooth HC05.

La mémoire du bras est constituée d’un module contenant une Eeprom AT24C256. Cette mémoire sert à conserver les informations après l’extinction de l’Arduino. Ces informations sont disponibles après redémarrage de l’Arduino. On peut mémoriser le mouvement du bras et rejouer ce mouvement par après. Le module est connecté à l’Arduino en I2C.

Un circuit Dip switch permet de contrôler certaines fonctions (enregistrement et lecture sur Eeprom, remise en position repos du robot)

Schémas de câblages

Appairage des modules Bluetooth HC05

Un simple programme permet de configurer sans peine les deux modules HC05.

Lignes 3 à 17 : Déclaratives et constantes à utiliser.

Lignes 19 à 22 : La partie « setup » démarre les équipements. La pin 7 est mise à 1 pour mettre le module HC05 en mode configuration et accepter les commandes AT.

Lignes 47 à 54 : Fonction qui envoie une commande AT au module HC05. En paramètre on passe une variable qui contient la commande (lignes 6 à 17).

Lignes 25 à 43 : Le programme principal se compose de 3 parties. La première et la troisième sont identiques. Elles affichent des paramètres lus dans le module. La deuxième partie (lorsque décommentée) modifie des valeurs enregistrées dans le module.

Pour commencer la programmation des modules il faut les étiqueter avec les lettres S et M afin de les différentier.
Le module S est branché et on lance le programme. Puis on remplace les informations (affichées sur le moniteur série) dans les lignes 14 et 16. Le codage de la ligne 16 est particulier et doit être respecté car le format lu peut différer. Il faut placer les chiffres autour des virgules comme indiqué ligne 16.

Ensuite on remplace le module S par le module M. On décommente la ligne 35 et on relance le programme. L’affichage sur le moniteur série montre l’état avant et après la configuration.

Pour tester l’appairage on alimente les deux modules. A la mise sous tension et après quelques secondes les deux modules vont clignotés toutes les cinq secondes

Programme Master

Fonction gyroscope

Fonction Eeprom

Programme Master

Le principe des échanges entre les deux platines repose sur la transmission d’un seul caractère par commande du robot. Ceci facilite grandement la programmation.

La partie « setup » initialise le dialogue avec les modules.

La partie « loop » lit la position du gyroscope et la transmet à la platine « Slave » via le Bluetooth.

Dans cette partie on lit également la position des interrupteurs. Ainsi on pourra lire ou mémoriser les informations de la mémoire Eeprom ou encore envoyer à la platine « Slave » le caractère « O » qui sera alors interprétée comme une demande de repositionnement du bras.

La fonction gy521read retourne un caractère qui indique la position du gyroscope. On utilise 8 positions. 4 positions pour les inclinaisons gauche-droite et avant-arrière et 4 positions pour l’inclinaison des angles. On dispose ainsi de 8 commandes pour manipuler le bras.

Les fonctions writeI2CByte et readI2CByte permettent les échanges avec la mémoire Eeprom. Dans notre contexte l’échange se fait sur un caractère. Mais il est possible pour d’autres applications d’échanger un grand nombre de caractères à la fois. Ces fonctions le permettent moyennant une légère adaptation.

Programme Slave

Programme Slave

Grâce à l’utilisation de fonctions le programme reste simple.

Ligne 8 à 24 : Partie des déclarations et définitions. Pour les détails concernant la partie servomoteurs se référer à mon autre projet.

Lignes 28 à 40 : Démarrage des modules

Lignes 43 à 60 : Programme « loop » qui s’occupe de récupérer les entrées Bluetooth et de les transformer en commandes servomoteurs. La table « tabserpos » contient la position en cours des servos. Le déplacement des servos se fait en pas de 1 sauf pour le servo 3 ou le déplacement sera plus important. Les lignes 51 et 52 déplacent 2 servos à la fois. Cette astuce permet un mouvement cohérent et assure la verticalité de la pince.

On constatera que le servo 5 (rotation de la pince) n’est pas utilisé dans ce projet.

La fonction «servowrite» déplace effectivement un servo donné. Afin de déplacer le bras sans heurts le déplacement du servo se fait par paliers de 5. Ceci est utile lors de l’utilisation des fonctions «servohome et servomove» qui est appelée pour remettre le bras dans sa position de repos.

Mouvements du gyroscope et actions sur le bras articulé

Le module GY521 donne en permanence les inclinaisons de la platine Master. Une lettre est attribuée à des intervalles d’inclinaisons. Le programme utilise ces lettres qui simplifient les actions à mener par le bras articulé.

« F » pour descendre l’avant-bras et le poignet.

« B » pour monter l’avant-bras et le poignet.

« L » pour tourner le robot vers la gauche.

« R » pour tourner le robot vers la droite.

« 1 » pour fermer la pince.

« 2 » pour ouvrir la pince.

« 3 » pour descendre le bras.

« 4 » pour monter le bras.

Conclusion

Ce projet a été développé à des fins pédagogiques et pourra servir de base de développement d’autres projets. On y trouve en particulier quelques exemples et astuces

Vous pouvez maintenant donner libre cours à votre imagination pour le maquettage de vos projets. Enjoy it !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.