Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Arduino
  3. Projet 9
Extrait - Arduino S'exercer au prototypage électronique (10 projets créatifs à réaliser soi-même)
Extraits du livre
Arduino S'exercer au prototypage électronique (10 projets créatifs à réaliser soi-même)
1 avis
Revenir à la page d'achat du livre

Projet 9 - Robot autonome hexapode

Présentation

Pour visualiser les vidéos du projet :

https://youtu.be/fFWegl9_7yQ et https://youtu.be/ubfcxebwEFo

Images/11AR01.png

Ce projet consiste à réaliser une machine autonome : un robot à six pattes (hexapode) animé par des servomoteurs, capable de se déplacer librement et d’éviter les obstacles. Un minimum de composants dans leur format le plus petit seront utilisés pour le rendre compact : en effet, il est nécessaire de limiter le poids du robot pour éviter d’avoir à lui fournir trop d’énergie pour se déplacer. L’hexapode sera aussi l’occasion de découvrir comment développer un comportement autonome à partir de données provenant de capteurs reliés à des actionneurs, en l’occurrence des servomoteurs.

Le mécanisme de marche, intéressant de par son économie de moyens, permettra de se familiariser avec la programmation de séquences plus ou moins complexes. Le capteur de proximité infrarouge détectera les obstacles présents devant le robot de manière optique.

1. Notions

Les notions abordées dans le projet sont les suivantes : mettre en œuvre une bibliothèque, lire une entrée numérique, créer et utiliser une fonction, utiliser un capteur de proximité, piloter des servomoteurs.

Matériel et outillage

Le matériel nécessaire représente un budget d’environ 60 euros.

1. Matériel

  • Trois microservomoteurs de type MG90S ou équivalent.

  • Un boîtier de piles 9 V avec interrupteur.

  • Une pile 9 V.

  • Une Arduino Nano (ce modèle est choisi pour sa compacité).

  • Un capteur de proximité infrarouge GP2Y0D805Z0F (ou équivalent, sensible à 50 mm environ).

  • Une plaque de prototypage (petit modèle 46x35 mm).

  • Du fil de connexion.

  • Des colliers autoserrants (petits modèles).

  • Du scotch double face.

  • Du fil de fer 1,3 mm ou de la corde à piano.

Images/11AR17.png

Arduino NANO

Images/11AR16.png

Microservomoteur MG90S

Images/11AR18.png

Capteur de proximité infrarouge : http://www.gotronic.fr/art-capteur-de-distance-5cm-gp2y0d805z0f-21731.htm

Images/10AR03.png

Boîtier de piles 9 V

2. Outillage

Pour réaliser ce projet, il sera nécessaire d’utiliser un ordinateur pour programmer l’Arduino, une pince coupante pour couper du fil, une pince plate pour le façonner, un pistolet à colle afin de fixer quelques éléments et un fer à souder avec de l’étain pour réaliser quelques soudures.

Construction

Ce projet est un peu plus élaboré mécaniquement que les autres. Aussi, il demande un peu plus de soin dans l’assemblage des composants afin que le mécanisme puisse bouger correctement.

Le robot est construit autour du boîtier de piles, qui sert de châssis.

1. Assemblage des servomoteurs

À l’aide de la pince coupante, coupez la fixation d’un des servomoteurs.

Images/11AR02.png

Assemblez les trois servomoteurs ensemble à l’aide de colliers autoserrants, en prenant bien soin de respecter le sens indiqué sur la photo.

Images/11AR03.png

Fixez l’ensemble à l’arrière du châssis à l’aide de colliers autoserrants. Il peut être utile de combiner ce mode de fixation avec du scotch double face, de manière à pouvoir enlever les colliers lors du changement de pile sans que les servomoteurs se détachent.

2. Fixation de l’Arduino

La plaque de prototypage est livrée avec du scotch double face en dessous. Utilisez celui-ci pour fixer la plaque transversalement à l’avant du châssis, à au moins 15 mm des servomoteurs (il peut y avoir du porte-à-faux à l’avant). L’Arduino prend place sur la plaque au milieu de celle-ci.

Images/11AR04.png

3. Câblage

ATTENTION ! Prenez garde à mettre le boîtier d’alimentation sur OFF lors du câblage.

Le capteur est livré avec deux connecteurs différents.

Soudez la version coudée du connecteur de manière à pouvoir fixer le capteur verticalement sur la plaque de prototypage.

Images/11AR05.png

Pour le câblage, il suffit de suivre le schéma suivant.

Images/11AR06.png

Schéma du circuit du robot hexapode

Les connexions importantes sont :

  • +9 V sur VIN.

  • Commande...

Programmation

La programmation de l’insecte passe par trois étapes : lui apprendre à marcher, puis à se diriger et enfin intégrer les données du capteur de manière à lui éviter les obstacles.

Chacune de ces étapes permet de graduellement valider le bon fonctionnement de la machine et de corriger les éventuels défauts de construction.

1. Marche lente

Tous les animaux ont une ou plusieurs démarches. Par exemple, l’humain peut marcher, courir ou sauter, le cheval peut aller au pas, au trot ou au galop. Il s’agit ici de mettre en œuvre la démarche de ce robot, qui est celle du "trépied", en usant de ses trois membres : la paire de pattes droites, la paire de pattes gauches, la paire de pattes transversales (parfois appelées hanches). Le robot avance alternativement chaque paire de pattes en les soulevant à l’aide des hanches. Ainsi, le corps repose en permanence sur trois points que constituent deux pattes d’un côté et la patte transversale opposée.

Le code permettant ces mouvements est une extension de celui que vous avez écrit précédemment, si ce n’est dans la partie déclaration de variables, l’ajout de variables correspondant à des réglages précis spécifiques à chaque construction :


int neutreD = 89;  
int neutreG = 85;  
int neutreT = 97;  
int dD=25;  
int dG=25;  
int dT=20; 
 

Cette série de variables permet d’intégrer les valeurs précises déterminées dans la section précédente, et qui sont spécifiques à chaque robot. neutreD, neutreG et neutreT sont les angles correspondant aux positions neutres de chaque patte.

dD, dG et dT correspondent aux valeurs maximums de débattement de chaque axe, déterminées expérimentalement, pour éviter que le robot ne s’autodétruise en bougeant.

Dans le setup(), les instructions suivantes sont ajoutées :


  patesDroites.write(neutreD); 
  patesGauches.write(neutreG); 
  hanches.write(neutreT);  
  delay(5000); 
 

Cette séquence, bien que relativement simple d’un point de vue technique, est importante d’un point de vue pratique, car elle amène les pattes au neutre...

Pour aller plus loin

1. Améliorations possibles

Ce robot fonctionne déjà bien, mais vous povuez améliorer et/ou diversifier son comportement.

Introduire de l’aléa

Le comportement actuel est un peu monotone. Introduisez de l’aléatoire à l’aide de la fonction random(), afin de provoquer des choix de direction différents lors de la rencontre d’un obstacle. 

Avoir une meilleure réactivité

Dans le code actuel, le temps que le robot fasse son pas en avant, il ne teste pas l’activité du capteur. Ce n’est qu’à la fin de chaque pas qu’il fait cette vérification. L’utilisation de la fonction interrupt() liée à l’entrée du capteur permet de réagir immédiatement à chaque activation du capteur.

Ajouter un capteur

Afin de choisir la direction d’échappement face à un obstacle, il est intéressant d’avoir deux capteurs au lieu d’un, orientés à 90 degrés l’un par rapport à l’autre.

Apporter des améliorations esthétiques

Cette version du robot, avec une plaque de prototypage et des fils de connexion, n’est pas des plus compactes. Il a même fallu enrouler les fils trop longs. Une fois le montage validé, il est intéressant de se passer de la plaque de prototypage, de raccourcir...