samedi 16 février 2019

Bras robotique Tinkerkit Braccio


J'ai eu l'occasion de faire l'essai du bras robotique Braccio, qui est spécialement conçu pour être utilisé avec une carte Arduino.

La boîte contient tout ce qui est nécessaire pour assembler un bras fonctionnel...sauf la carte Arduino, qui doit être achetée séparément (un modèle fonctionnement à un niveau logique de 5 V, comme par exemple le Uno, est nécessaire).

Assemblage

Le Braccio arrive en pièces détachées: une vingtaine de pièces de plastiques qui doivent être assemblées au moyen d'une soixantaine de vis (un tournevis cruciforme tout à fait conventionnel est fourni dans le kit, ce qui m'a semblé un peu discutable), 6 servomoteurs, une alimentation (5 V, 4 A) et le shield Braccio.


Les instructions d'assemblage fournies dans la boîte ressemblent à celles qui accompagnent un kit Lego: des illustrations, raisonnablement claires, et pas le moindre texte. En cas d'incertitude, des vidéos d'assemblage sont disponibles sur YouTube (celui-ci me semble très bien).

On commence par assembler la partie du bras se situant entre l'épaule et le coude (servomoteurs M2 et M3).





Le servomoteur M1 est fixé à la base.


L'épaule est reliée à la base rotative.


Assemblage de l'avant-bras (servomoteur M4).




On ajoute le poignet (servomoteur M5).




Assemblage de la pince (servomoteur M6)



Le shield Braccio V4

Le shield Braccio comporte 6 connecteurs de couleur orange auxquels vous branchez les servomoteurs (vous les insérez dans l'ordre, M1 étant situé du côté du jack d'alimentation).

Les connecteurs blancs permettent de brancher des capteurs analogiques (ils sont reliés aux entrées A0 à A5 de l'Arduino). Le connecteur jaune est pour la communication série, et le vert ("TWI") pour un capteur I2C.


Le bloc d'alimentation (5 V, 4 A) doit être branché au shield Braccio. Il supporte une tension d'entrée allant de 100 à 240 V, 50 ou 60 Hz.


Le shield Braccio doit être superposé à une carte Arduino qui fonctionne à un niveau logique de 5 V (Uno, par exemple).

La bibliothèque Braccio

Une bibliothèque spécialement conçue pour le contrôle du Braccio est disponible ici.

Une fois la bibliothèque installée, le premier exemple à essayer est testBraccio90, qui place le Braccio en position verticale, pour vérifier si tous les servomoteurs sont correctement alignés. Vous pouvez ensuite essayer les exemples simpleMovements et takethesponge.



Programmation

Mise à part la commande d'initialisation du Braccio ("Braccio.begin()" qui doit doit être placée dans "setup()"), tous les mouvements du Braccio sont contrôlés par une même commande:

Braccio.ServoMovement((step delay  M1 , M2 , M3 , M4 , M5 , M6);

  • Le premier paramètre (step delay) est le nombre de millisecondes de pause entre le mouvement de chaque servo. Les valeurs admises vont de 10 à 30.
  • M1 est l'angle de la base rotative, en degrés. Les valeurs admises vont de 0 à 180.
  • M2 est l'angle de l'épaule, en degrés. Les valeurs admises vont de 15 à 165.
  • M3 est l'angle du coude, en degrés. Les valeurs admises vont de 0 à 180.
  • M4 est l'articulation du poignet. Les valeurs admises vont de 0 à 180.
  • M5 contrôle la rotation de la pince. Les valeurs admises vont de 0 à 180.
  • M6 permet d'ouvrir ou fermer la pince. Les valeurs admises vont de 10° (complètement ouverte) à 73° (complètement fermée).
C'est une bonne idée, dans un premier temps, de faire bouger chaque servomoteur un par un, afin de bien visualiser ce que contrôle chaque paramètre, et pour vérifier que le mouvement peut bel et bien s'effectuer sur toute la plage des valeurs admissibles.

Résultats

Pour finir, une courte vidéo du Braccio qui s'amuse avec une éponge.




Yves Pelletier   (TwitterFacebook)

vendredi 15 février 2019

Et pendant ce temps, dans un blog près de chez vous...(1)

J'ai publié beaucoup de nouveaux articles au cours des dernières semaines, mais je ne suis pas le seul! Voici une sélection de billets publiés dans d'autres blogs en français depuis le début de l'année 2019:
Voilà qui devrait contribuer à assouvir votre soif d'informations pour un certain temps.  N'hésitez pas à me faire part de blogs en français qui mériteraient d'être mentionnés dans une éventuelle prochaine livraison de cette chronique. J'ai volontairement omis les chaînes YouTube, car je n'ai pas la patience de regarder des vidéos: je préfère de loin lire du texte et regarder des schémas.

Yves Pelletier   (TwitterFacebook)

mercredi 13 février 2019

Écran Nokia 5110 et MSP430 Launchpad

Dans ce billet, nous faisons fonctionner un petit écran monochrome de type "Nokia 5110" branché à un MSP430 Launchpad que nous programmons avec Energia.


 (N'hésitez pas à consulter mes précédents billets si vous souhaitez plutôt brancher cet écran à un Arduino ou à un Raspberry Pi).

Installation de la bibliothèque LCD_5110

Comme c'est trop souvent le cas avec le Launchpad, le lien officiel vers la bibliothèque LCD_5110 mise au point en 2012 par Rei Vilo n'est plus valide, ce qui a quelque peu compliqué mes recherches.  Je vous propose ce fichier zip, gracieuseté du blog de Joe Freeman. En plus des 4 fichiers qui constituent la bibliothèque LCD_5110 (LCD_5110.h, LCD_5110.cpp, Terminal6.h et Terminal12.h), l'archive inclut également un petit programme qui affiche la température sur l'écran Nokia (LCD_5110_430.ino) et une deuxième bibliothèque permettant de lire la température du msp430 (Thermometer_430.h et Thermometer_430.cpp). Si par hasard le lien devenait invalide, vous pouvez aussi trouver les fichier nécessaires sur le dépôt github de cyoung.

Notez que, puisque cette bibliothèque a été conçue pour les versions bas de gamme du Launchpad (qui ont une mémoire limitée), elle permet uniquement d'afficher du texte à l'écran. Vous ne pouvez pas l'utiliser pour dessiner des formes géométriques, afficher des images bitmap, etc (si c'est ce qui vous intéresse, et à la condition de disposer d'un Launchpad suffisamment puissant, cette autre bibliothèque, que je n'ai pas testée, pourrait vous intéresser).

Modification de la bibliothèque

Les modèles de Launchpad n'étaient pas très nombreux en 2012, et l'auteur de la bibliothèque n'a donc prévu que trois options possibles:  MSP430G2452, MSP430G2553 et MSP430G2231. Si vous désirez utiliser la bibliothèque avec un modèle plus récent, une petite modification au fichier "LCD_5110.h" s'avère nécessaire.

À la ligne #20, le fichier Energia.h est inclus à la condition que vous compiliez le programme pour un des trois microcontrôleurs pré-cités:


J'ai réglé le problème en retirant la condition "#elif defined(__MSP430G2452__) || defined(__MSP430G2553__) || defined(__MSP430G2231__)" afin que l'instruction #include "Energia.h" soit toujours exécutée, peu importe le modèle de Launchpad.

J'ai testé avec succès cette version modifiée de la bibliothèque avec trois modèles de Launchpad: le classique MSP-EXP430G2 (comportant le MSP430G2553), le MSP430FR2433, et le Stellaris (lm4f120).

Connexions

Vous pouvez utiliser les broches que vous voulez, elles seront déclarées dans le sketch. Voici celles que j'ai utilisées:
  • Broche 1. VCC du module Nokia 5110 --- VCC (3,3 V) du Launchpad
  • Broche 2. GND du module Nokia 5110 --- GND du Launchpad
  • Broche 3. SCE (chip select) du module Nokia 5110 --- P1.4 du Launchpad
  • Broche 4. RST du module Nokia 5110 --- P1.5 du Launchpad
  • Broche 5. D/C du module Nokia 5110 --- P2.0 du Launchpad
  • Broche 6. DN (MOSI) du module Nokia 5110 --- P2.1 du Launchpad
  • Broche 7. SCLK du module Nokia 5110 --- P2.4 du Launchpad
  • Broche 8. LED du module Nokia 5110 (rétroéclairage) --- je ne l'ai pas branchée

Sketch

Les principales méthodes de la classe "LCD_5110" sont:
  • begin() : initialisation de l'écran
  • clear() : efface le contenu entier de l'écran
  • setFont(int taille): règle la taille de la police de caractère (0 pour taille normale, 1 ou 2 pour plus gros).
  • text(int x, int y, "texte à afficher"): écriture d'une chaîne de caractères à la position x, y

Voici un sketch qui affiche un nombre entier qui augmente d'une unité à chaque seconde. Les parties statiques (en haut et en bas de l'écran) sont écrites au démarrage du programme (dans setup()) alors que le nombre est mis à jour à l'intérieur du loop().

Un aspect intéressant de cette bibliothèque, c'est qu'il n'est pas nécessaire d'effacer le nombre précédent avant d'écrire le nouveau nombre: ce que vous écrivez remplace simplement ce qui était précédemment écrit à la même position.

Pour me compliquer un peu la vie, j'ai choisi de centrer le nombre horizontalement, ce qui m'oblige à déterminer le nombre de chiffres à afficher avant de décider de l'endroit, sur l'écran, où j'écris le nombre.


Yves Pelletier   (TwitterFacebook)
Related Posts Plugin for WordPress, Blogger...