MINIBOT
Construire un robot évolutif pour moins de 200 euros et quelques heures de travail
(pour une introduction progressive a la robotique avec le Propeller voir ICI)
les photos :
Le minibot fait 15 * 18 * 14 centimétres,pése environ 650 grammes et se déplace a 4 a 5 métres minute sur un sol plat et lisse .
Ensuite si vous voulez booster le MINIBOT : voir MinibotPlus
Nous avons choisi un ensemble simple , réalisable rapidement, sans soudure, avec des éléments réutilisables pour vos prochains robots et qui permettent de progresser constamment.
On peut construire des robots pour moins cher: mais c'est plus long, ils sera difficile de réutiliser les piéces pour les robots suivants, , on apprendra beaucoup moins et on aura pas une communauté de passionnés toujours prêts a nous aider sur des forums.
Bon ça côute environ le prix d'une console Nintendo DS.
Avant d'acheter le Propeller education kit de Parallax qui va servir de base a nos essais je vous conseille d'aller sur le site Parallax.com.. Jetez un coup d'oeil sur le Forum du Propeller (Aie! en anglais ) . Voyez surtout dans le cadre bleu les sujets sur Propeller programming tutorial et Propeller Education Kit Labs on y trouve des tas de conseils pour débuter , des montages et une grand nombre de petits programmes commentés que vous pourrez ensuite modifier comme vous voudrez.
Il faut avoir un PC sous Windows pour utiliser les outils , trés pratiques, de programmation du robot.
Pour construire ce robot il faut acheter essentiellement :
- la boite Propeller Education kit de Parallax (109 euros TTC chez Sélectronic, place dela Nation a Paris) il fournit une plaque d'essais a trous (breadboard) et toute l'électronique qu'il vous faut y compris un microcontoleur : le Propeller.
- 2 servomoteurs a rotation continue : HSR 1422CR ( 27 euros chaque chez Lextronic ,a ma connaissance l'un des seuls continus vendus en France) ou des GWS chez robotshop (Canada) ou des chez Parallax (USA) un Futaba modifié continu. On peut trouver facilement des servos standard , mais pour les transformer en rotation continue c'est un bricolage un peu délicat (voir la description dans le site Fribotte.free.fr).
- une boite en plastique ou on puisse loger l'ensemble (avec en plus des piles, il faut environ 15 * 18 cm ) et qu'on puisse facilement percer et découper pour fixer les servomoteurs (éviter les plastiques qui se fendent au découpage). Si vous n'en avez pas chez vous on en trouve dans les monoprix et magasins de bricolage pour 2 à 3 euros.
- total : 165 euros (prix fin 2007)
Il faudra prévoir aussi :
(mais vous avez déja la plus part de ces outils chez vous)
- une lame de scie a métaux et un cutter pour découper la boite en plastique qui sert de carcasse et une perceuse électrique (mais on peut faire sans).
- un rouleau de fil électrique de liaison (il a ce genre de fil ,sans brins , dans la boite du PE kit mais vous pouvez avoir besoin de plus longs fils)
- acheter chez Gotronic des barrettes sécables de petits connecteurs (il y en a déja quelques unes dans le PE kit ) elles ont des picots qui dépassent au dessous pour enficher dans le trous du breadboard et et au dessus pour enficher par exemple les fiches 3 trous de cables de servomoteurs et quelques connecteurs Molex males et femmelles avec 3 fiches (ces piéces ne sont pas indispensables mais elles sont peu coûteuses et fixent proprement les connections)
- 1 batterie de 9 volts
- 4 batteries de 1,3 volts rechargeables et le chargeur
- un support pour placer les 4 batteries rechargeables de 1,3 volts et obtenir 5 volts environ en sortie
- un peu de velcro ou de ruban adhésif double face épais , pour fixer (par exemple les batteries).
- quelques boulons et écrous pour fixer les servo moteurs sur la carcasse
- un patin nylon (pour pieds de chaise) dans une surface de bricolage : on le fixera grace a sa pastille adhésive à l'arriére du robot pour servir de troisiéme point d'appui (avec les deux roues ).
- pour faire les roues on peut commencer avec des disques de carton rigide qu'on fixera sur les servomoteurs on peut aussi acheter 2 roues a pneus mousse dans une boutique de modélisme.
- pour finir décorez le robot selon votre gout
Etape 1: monter la plaque d'essai du PE kit
- monter la plaque d'essais a trous (le breadboard) du PE kit et y placer les composants comme indiqué sur le document de montage : c'est une plaque un peu encombrante mais réutilisable indéfiniment
- attention avant de toucher au microcontroleur, toucher un tuyau d'alimentation d'eau pour décharger l'électricité statique de votre corps (pour éviter d'abimer ce controleur) , bien vérifier que le controleur est dans le bon sens (l' étiquette auto collante fournie dans le PE kit simplifie le repérage) et que les pattes sont dans l'axe des trous du support avant de l'enficher.
- en principe les fils reliés au + sont rouges , ceux reliés au - (masse) sont noirs, ceux reliés pour les commandes aux pattes (pins) du microcontroleur : blancs (attention entre la patte du microcontroleur et le cable blanc on intercale en série une résistance de protection d'environ 4,7 kOhm.Choisissez d'autres couleurs si vous y tenez mais n'en changez jamais , c'est une source d'erreurs.
- vérifier que toute les connections sont correctes et les cables enfichés dans les bons trous du breadboard (si vous avez un multimétre vérifiez qu'il y a du 3,3 volts pour de propeller et du 5 volts pour les moteurs, et pas de courant ou il ne doit pas y en avoir)
- revérifier avant de mettre sous tension . Si , Si !
- n'oubliez jamais que le Propeller fonctionne sous 3,3 volts (fourni par 2 régulateurs montés en cascade sur la plaque du PE kit) un voltage supérieur le tue rapidement !
- Photo du montage PE kit (avec quelques branchements supplémentaires !)
Etape 2: tester le montage avec des programmes simples
On verra plus tard que pour avoir des durées indépendantes de la vitesse de l'horloge du processeur, qu'on peut faire varier de 5 a 80 Mhz ,on remplace les chiffres des durées par des multiples d'une " constante" interne appelé clkfreq et qui donne toujours un temps de 1 seconde et < Waitcnt(clkfreq/10 +cnt) > fait attendre un dixiéme de seconde. (cnt est un compteur interne du Propeller qui donne l'heure en monbre de cycles du Propeller)
Noter: une patte du Propeller ne peut pas fournir beaucoup de courant : au maximum 30 milliAmpéres ; c'est suffissant pour allumer une LED mais pas pour faire marcher un moteur.
Etape 3: faire connaissance avec la programmation paralléle facile et les objets réutilisables
- Cela fonctionne car le Propeller fait marcher en paralléle 8 coeurs différents appelés " cogs" . La fonction "Cognew( programme x( paramétres), espace mémoire réservé au cog) " permet de lancer un programme dans l'un des cog libres. Il est important de comprendre dés le départ que les variables globales de tous ces programmes sont stockées dans un espace commun , Donc, si un détecteur géré par un programme du cog1 change une variable de vitesse des moteurs , le programme de commande des moteurs qui tourne indépendamment sur le cog2 verra aussitot cette variable commune modifiée . Avec le Propeller on fait cela sans gérer d'interruptions, ça facilite beaucoup la programmation.
- on apprendra aussi a créer des objets réutilisables (on en trouve des tas déja prêts dans la zone "Propeller object Exchange" du site de Parallax)
Etape 4 : apprendre a faire tourner un servo moteur dans un sens puis dans l'autre
- attention ces servomoteurs fonctionnent généralement sous 4 a 5 volts : si vous avez un doute vérifiez la datasheet (fiche technique sur le site du fournisseur)
- un servomoteur a généralement trois fils de couleurs différentes:
- rouge et noir (ou brun) pour le + et le -
- blanc (ou orange) pour l'envoi de commandes a partir du Propeller
- on intercalle une résistance d'environ 4,7 kilo ohm sur la liaison de la patte du propeller vers le servo
- je vous conseille d'utiliser un pack de 4 batteries rechargeables de 1,3 volts pour alimenter les moteurs séparément : pour éviter les erreurs et les perturbations de tension dues au démarrage des moteurs . Attention il faut un cable pour relier les terres (le pole -) des deux alimentations (moteurs et propeller), mais ne jamais relier le propeller a du 5 volts ou pire du 9 volts : ça le grille.
- Attention ce n'est plus la patte du Propeller qui fournit le courant qui fait tourner le moteur (il en faut beaucoup plus que pour une LED) : le Propeller se contente de jouer le role d'interrupteur. En fait grace a un transistor placé dans le boitier du servomoteur.
- Noter que , sur le cable blanc d'envoi des commandes, il faut intercaler une résistance de 4,7 kilo Ohm en série entre la patte du propeller et les servos.
- on sait que pour faire tourner un servo il faut lui envoyer des impulsions toutes les 20 millisecondes
- si ces implusions durent 1,5 milliseconde le servo reste au repos
- pour un durée de 1,3 millisec environ (valeur mini) il tourne a fond dans le sens des aiguilles d'un montre et pour 1,7 millisec (valeur maxi) il tourne a fond en sens inverse.
- pour régler la durée des impulsions on utilise une fonction d'attente : <waitcnt (durée d'attente + cnt) > ou cnt est la valeur d'un compteur d'horloge interne du propeller et on utilise la "constante" clkfreq : pour attendre une seconde il suffit de prendre une durée d'attente égale a clkfreq , clkfreq/50 donnera 20 millisec et (clkfreq/ 1 000 000) donnera une microseconde donc waitcnt( (clkfreq/1 000 000 ) * 1500 +cnt) donnera une attente de 1,5 milliseconde.
- on utilise donc un programme qui envoie ces implusions et on met une pastille blanche sur une roue ou sur une corne fixée sur l'axe du moteur pour mieux voir comment il tourne.
- exemple de programme pour un servo sur le pin 15:
PUB pulseleft (duree )
!outa[15] 'si la patte 15 recevait des données on écrirait ina[15]
waitcnt(((clkfreq/1_000_000) * duree) +cnt) 'clkfreq= 1seconde
!outa[15]
waitcnt ( Time+= clkfreq/50 ) ' 20 millisecondes
("duree" variera environ de 1300 à 1700 avec une position arret roues a 1500 microsec)
avant d'appeler cette fonction on ouvrira le pin 15 en émission :
dira[15]~~ 'le signe~~ est équivalent <:=1>
Noter: le signe ! devant outa veut dire <inverser > donc comme au départ une patte est mise au niveau bas , le premier !outa la fait passer au niveau haut et le suivant la refait passer au niveau bas.
- on recherche ensuite par essais successifs la durée exacte pour laquelle le moteur ne tourne pas ( c'est rarement juste 1,5 millisec) .Même chose pour maxi et mini : c'est rarement 1,3 et 1,7 milliseconde (toutefois ne pas aller trop loin , on risque d'abimer le servo, vérifier en le prenant dans la main qu'il ne vibre pas)
- refaire la même chose avec le second moteur
- on notera qu'il faut éviter de changer brutalement le sens de rotation d'un servo : pour ménager la mécanique attendre environ un tiers de seconde entre la marche avant et la marche arriére (avec un waitcnt) . Ou bien on peut faire varier la durée des impulsions par petites variations successives (les anglais appellent cela du "ramping").
- pour faire des roues découper des disques d'environ 6 cm de diamétre dans du carton rigide et les fixer aux axes des servos (ceux ci portent souvent des disques ou des bras ou cornes qui facilitent le travail) ne pas forcer sur les axes des servos : fragile. On peut aussi acheter 2 roues en caoutchouc mousse dans une boutique de modéles réduits.
Etape 5 : apprendre a faire avancer le robot
- Fixer les 2 moteurs en faisant des trous dans les 2 cotés opposés de la boite en plastique
- avant repérer ou placer les éléments du robot et sur un papier calque dessiner l'endroit ou faire les trous
- faire les trous avec une petite scie a métaux ou mieux avec un cutter si le plastique n'est pas trop épais ; faites de trous plutôt trop petits au départ (on peut toujours les agrandir ensuite)
- les moteurs étant montés dos a dos, il faudra les faire tourner en sens inverse pour avancer: on appelle en général pulseleft et pulseright les impulsions envoyées respectivement aux moteurs gauche et droit . Ici on utilisera pulseleft au maxi et pulseright au mini.
- on verra alors que les deux moteurs ne sont pas tout a fait identiques et que des tatonnements sont nécessaires pour aller bien droit
- pour pouvoir démarrer et arreter le robot facilement et vite , fixez dans 2 trous percés a travers la carcasse 2 petits interrupteurs intercalés sur les fils plus (coté alim du propeller kit et coté moteurs) ça simplifie la vie.
Etape 6 : apprendre a reculer, tourner a droite, tourner a gauche
- pour reculer on met pulseleft au mini et pulseright maxi
- pour tourner a droite on met les 2 au maxi
- pour tourner a gauche les 2 au mini
Etape 7 : faire suivre au robot une séquence de déplacements
- si on décide que lorsque le programme reçoit comme commande les lettres A R G ou D cela déclenche un déplacement : en Avant, en Reculant, a Gauche ou a Droite. Il suffira de stocker une suite de lettres et lorsque le programme relira cette suite il exécutera le parcours correspondant.
- note : c'est en envoyant par radio des codes de ce genre qu'on pilote un robot a distance
Etape 8: commander votre robot a distance avec la télécommande de votre téléviseur
- le détecteur Infra rouge qui est dans la boite du PEKIT est le même qui est dans votre téléviseur pour recevoir les commandes a distance , alors utilisons le boitier de commande du téléviseur pour piloter le minibot !
- la seule difficulté est d'écrire un programme pour le robot , qui lise les codes envoyés par la télécommande . Heureusement vous trouverez sur le site de Parallax un programme écrit par Tom Doyle qui fait cela trés bien pour les télécommandes SONY ,alors profitons en. On copie ce programme appelé ir_remote.spin et un autre programme de calcul qui est fourni avec simple_numbers.spin Puis on appelle les fonctions de décodage dans un petit programme écrit en spin (voir plus loin ou le trouver).
- La télécommande de télé envoie une trentaine de codes différents , nous avons donc une trentaine de commandes pour faire faire au minibot des choses différentes : avancer, reculer, tourner, faire de la musique, fait clignoter ses LEDs ,déclencher un tir, ouvrir ou fermer une pince . On peut aussi utiliser certains codes pour faire exécuter des programmes différents.
- Si vous n'avez pas de télécommande SONY achetez pour 20 euros une télécommande universelle (j'utilise sans probléme la SRU 5110 , achetée a la FNAC, le plus simple pour la régler sur SONY est de se mettre devant un téléviseur de cette marque pour avoir un calage quasiment automatique sur le protocole de transmission SONY)
- Vous trouverez un programme complet de commande du robot ici
Etapes suivantes: selon vos idées et en puisant dans la banque de fonctions téléchargeables
- recevoir les signaux de détecteurs d'obstacles : photorésistances (du PE Kit), détecteurs IR ou ultrason
- recevoir des commandes par radio et envoyer des données du robot vers le PC qui les traitera
- émettre des sons (le plus simple est d'utiliser un buzzer)
- installer une mini caméra video et une liaison wifi..
- installer une carte de PC embarquée sur le robot
-
vous pouvez avoir une idée de ce qu'on peut faire dans la page : MINIBOT PLUS
Enfin pour les programmeurs confirmés : vous pourrez aussi
- utiliser le langage assembleur disponible sur le propeller pour des réponses ultrarapides
- essayer le nouveau compilateur C de chez Imagecraft si vous préférez le C au Spin