Dernièrement, j’ai réalisé avec mes élèves un robot « marcheur ». La présentation est disponible sur le site académique de Limoges. Comme j’ai bien aimé le concept, je me suis lancé dans la réalisation d’une « mini-fourmi » avec une carte électronique en CMS et un PIC plus puissant pour avoir plus de possibilités. Je présente dans les lignes ci-dessous la réalisation de ce robot… Imprimer cet article
Photographies du robot
Pour débuter je vous donne un aperçu du robot final, cela aiguillera peut-être votre curiosité…
Assemblage mécanique du robot
Le châssis du robot a été dessiné par Y. Mergy (Voir le site d’Électronique Pratique). J’ai numérisé en DXF les fichiers TIFF. Ceux-ci ont ensuite été importé dans Proteus Ares pour être retouché et enfin exporté, toujours depuis Ares, en fichier HPGL pour la machine à commande numérique. Un facteur d’échelle a été appliqué sur le châssis d’origine, la taille actuelle du robot sans les pattes est de 108mm x 55mm. Les fichiers Proteus Ares 7.4 du châssis et des pattes ainsi que les fichiers HPGL sont disponibles en fichier joint à la fin de l’article. Je réalise donc une à une les pièces du robot à l’aide d’une machine GravoGraph IS400.
- Tout d’abord les pattes avant et arrière :
- Le châssis supérieur du robot :
- Le châssis inférieur du robot :
- Les pattes centrales du robot :
- L’assemblage du chassis supérieur et inférieur s’effectue en quatre points à l’aide d’entretoises filetées de 20mm et de vis de 3mm :
- La rotation des pattes avant et arrière est assurée en soudant des entretoises en laiton sur la partie haute de la patte, une vis de 3mm réalise l’axe de rotation :
- La motorisation des pattes est assurée par trois servomoteurs de petite taille. Ceux-ci ont été acheté sur E-Bay au prix de 15 euros les 8 :
L’assemblage du châssis se fait en suivant les étapes suivantes:
- Mettez en place les servomoteurs dans les châssis supérieur et inférieur, agrandissez si besoin à la lime puis repérez les trous de fixation de chacun des servos. Percez (dans mon cas à 2mm), faites un essai d’assemblage des servos avec écrous et vis. Retirez les servos.
- Assemblez le châssis supérieur avec le châssis inférieur à l’aide des quatre entretoises et de huit vis. A partir de ce moment le châssis est rigide.
- Découpez quatre morceaux d’époxy double face de taille identique (sur ce robot : xx mm x xx mm) et percer en leur centre un trou de diamètre 3,2mm. Ensuite il faut souder ces rectangles sur le châssis. Ils vont servir de support à l’axe des pattes centrales (se reportez à l’image ci-dessous).
- Il faut ensuite souder un écrou laiton sur chacune des pattes centrales en face du trou (se reportez à l’image ci-dessous).
- Soudez les entretoises laiton sur les pattes avant et arrière (se reportez à l’image ci-dessous).
- Assemblez le tout sur le châssis du robot avec des vis de 3mm.
Carte électronique de commande
Le cahier des charges que je me suis fixé est le suivant :
- Micro-contrôleur PIC 18F avec une mémoire flash importante,
- Commande de 4 servomoteurs (3 pour les pattes et 1 supplémentaire),
- Trois entrées analogiques et/ou numériques pour des capteurs,
- Communication sans fil avec un PC pour la supervision du robot,
- Programmation à distance du robot avec cette même communication sans fil,
- Deux DELs pour les yeux, deux pour la communication sans fil et une pour un usage général,
- Une photorésistance pour détecter la luminosité,
- Deux interrupteurs pour détecter des obstacles,
- Sonoriser le robot (paroles et/ou bruitages),
- Alimentation par accus,
- La platine doit correspondre aux dimensions du robot.
J’ai donc choisis les solutions technologiques suivantes :
- Le micro-contrôleur choisi sera un PIC18F46K20 en boitier CMS pour limiter la place occupée sur la plaque finale. Il possède 64Ko de mémoire flash ce qui permettra de stocker non seulement le programme mais aussi les sons. L’oscillateur interne réglable évite l’emploi d’un quartz externe. Il est programmable in-situ et est compatible avec le bootloader TinyBootLoader. Il fonctionne en 3,3V ce qui permet d’avoir une alimentation et des niveaux logiques compatibles avec le module XBee pour réaliser une voie série sans fil. Enfin il génèrera les signaux des servomoteurs, la numérisation des capteurs (photorésistance, surveillance tension des accus, capteurs tout ou rien,etc…) et la restitution des sons. Dans un premier temps, le compilateur C utilisé sera celui de CCS mais j’espère par la suite faire une version du firmware avec le compilateur C C18 de MicroChip que vous pouvez obtenir gratuitement.
- La liaison sans fil sera réalisée avec deux modules XBee série 2. L’un sera le coordinateur branché coté PC interfacé avec un FTDI FT232RL pour être connecté sur un port USB, l’autre un « end-device » coté robot. Cette liaison sans fil permettra le pilotage du robot en ouvrant un « port série virtuel » du coté PC grâce au FT232RL mais aussi à la programmation en implantant le bootloader TinyBootLoader dans le PIC. Pour fiabiliser cette liaison sans fil, une vitesse relativement basse de transfert a été choisi : 9600bauds/s.
- L’alimentation sera assuré durant le temps de développement par un accu rechargeable de 9V puis ensuite par un accu LiPo de petite dimension pouvant être mis dans le châssis du robot.
- La sonorisation du robot n’engendre pas de surcout car elle n’utilise pas de circuit spécialisé, tout sera réalisé par le PIC18. Seul un amplificateur audio sera utilisé pour pouvoir connecter un haut-parleur de 8 Ohms. Celui-ci sera en boitier CMS SOIC et sera un LM386. La technique employé pour la restitution sonore est celle décrite sur le site de Roman Black et utilise juste une voire deux résistances et un condensateur.
- Les signaux de commandes des servomoteurs suivront l’exemple du Fribotte.
- Enfin l’encombrement de la plaque est de 39mm de large sur 102mm de long pour être monté sur le robot.
Le schéma électrique réalisé sous Proteus Isis 7.4 est disponible en cliquant sur l’image ci-dessous. Le fichier natif et un fichier PDF sont disponibles en fin d’article.
Quelques précisions sur le schéma :
- Autour du micro-contrôleur: R1 est une résistance de rappel au +Vcc pour que le niveau sur la broche MCLR (Master Clear = Reset du PIC active à l’état bas) reste au niveau haut. Dans cette application j’ai choisi de garder la broche MCLR en tant que Reset mais on peut aussi la configurer en tant qu’entrée. Le condensateur C4 doit être placé au plus prés du PIC pour filtrer les parasites.
- Autour du module XBee vous trouvez deux diodes électroluminescentes avec leur résistance de limitation de courant (R5 et R6 de 100 ohms). La diode L1 en clignotant 2 fois par seconde indique que la pile ZigBee a été correctement initialisé et qu’un coordinateur a été trouvé. La diode L2 s’allumera à chaque caractère reçu et son intensité dépendra du niveau de réception.
- Le connecteur J10 reçoit la tension issu de l’accu puis U2 régule la tension de sortie à 3,3V. Les condensateurs C1,C2 et C3 sont des condensateurs de filtrage.
- Les connecteurs J1, J2, J3 et J11 sont destinés à recevoir des servomoteurs. La broche 1 est la masse. La broche 2 est la tension d’alimentation du servomoteur directement relié à l’accumulateur donc au 4,8V. La broche 3 reçoit le signal de commande issu du PIC. Le connecteur J11 n’est pas utilisé pour l’instant mais pourrait l’être si un quatrième servomoteur était utilisé (pour piloter une camera miniature par exemple).
- Les connecteurs J7, J8 et J9 servent à connecter des capteurs supplémentaires ou des organes de commande supplémentaires (par exemple d’autres servomoteurs si vous en avez besoin). Les capteurs peuvent être analogiques ou numériques en fonctions des besoins. Il suffit de configurer le PIC pour mettre ces entrées en mode analogique ou numérique. Par exemple vous pouvez mettre un capteur de température analogique ou un capteur de distance à ultrasons. La broche 1 est la masse. La broche 2 est relié au 3,3V. La broche 3 est relié au PIC. Si vous utilisez un capteur, celui doit pouvoir fonctionner en 3,3V.
- Les connecteurs J5 et J6 ont un double rôle. Ils servent à connecter une del à travers les résistances de limitation R2 et R3 pour faire les « yeux » du robot (broche 1 du connecteur et la masse broche 3). Ils servent aussi à relier des interrupteurs normalement ouvert afin de réaliser des détecteurs de chocs. Il n’y a pas de résistances de rappel au +Vcc sur ces interrupteurs car on utilisera les résistances internes du PIC sur le port B. De plus ces interrupteurs étant reliés au port B, il sera possible de détecter un choc « sous interruption » (changement d’état sur une broche du port B).
- La del L3 est un témoin lumineux. Dans l’application elle servira à indiquer un niveau de tension trop bas au niveau des accus. Si elle est allumée, la tension des accus est trop faible, il faut les recharger.
- Le bouton poussoir K3 et sa résistance de rappel R9 peuvent être utilisé pour des tests. Lorsque K3 est relâché, le PIC voit un niveau logique 1, lorsque K3 est enfoncé il voit un niveau logique 0.
- La luminosité est capté par une photorésistance (LDR1). Celle-ci est monté dans un pont diviseur de tension. Plus la luminosité est forte, plus la résistance de la LDR est faible. On conclut que si la luminosité est faible (forte résistance de la LDR), alors la tension sur l’entrée analogique du PIC sera proche de 3V. Au contraire, quand la luminosité est forte, la résistance de la LDR est faible donc la tension sera proche de 0V.
- La tension des accumulateurs est surveillée par l’intermédiaire du pont diviseur R7/R8. La tension Vcapt_batt vaut (R8/R7+R8)*Vbatt. On numérise cette tension par l’entrée AN1 du PIC. On peut donc retrouver la tension Vbatt et informer l’utilisateur si cette tension devient trop faible (par exemple en faisant clignoter la del L3).
- Le connecteur J4 est le connecteur de programmation in-situ du PIC. Son brochage est compatible avec les programmateurs les plus courants: PicKit2 et PicKit3, ICD de Microchip ou de CCS. Ce connecteur sera utilisé une fois lors de la programmation du bootloader TinyBootLoader. Les autres programmations se feront par le logiciel TinyBootLoader par la voie série sans fil.
- Les résistances R10 et R12 et le condensateur C7 servent à la reconstruction de l’onde sonore suivant le principe décrit sur le site de Roman Black. Ces trois composants sont montés sur des picots pour pouvoir être interchangeable afin de trouver le meilleur compromis qualité sonore / occupation mémoire en fonction de la méthode de compression utilisée.
- R13, C8 et R14,C9 forment deux filtres passe-bas du premier ordre. La mise en série de ces deux filtres permet d’obtenir un filtre passif du second ordre (-40dB par décade). La fréquence de coupure de ce filtre est donné par fc=1/(2*PI*R*C) soit dans notre cas fc=1/(2*PI*10K*10nF)=1600 Hz. Cela permet d’éliminer le « sifflement » généré lors de la reconstruction du son. Notez que du coup on atténue aussi beaucoup les aigus.
- L’amplificateur audio est un LM386. Dans cette configuration il amplifie d’un facteur 20. C5 est un condensateur de liaison, il élimine la composante continue du signal issu du PIC. P1 permet de régler le niveau sonore. C10 est un condensateur de liaison positionné juste avant le haut-parleur de 8 Ohms. Le haut parleur a été récupéré dans un ordinateur portable et fixé sous le robot (se reporter aux photos en début d’article).
Réalisation de la carte
Le schéma électrique étant prêt, il faut passer au routage de cette carte. Au moment de la réalisation de cette carte, je ne disposais que de plaque simple face. J’ai donc choisi de faire quelques straps et des pistes TRÈS fines (15th) pour obtenir une carte qui remplisse les contraintes d’encombrements. Le résultat de ce routage est visible en cliquant sur l’image ci-dessous. Pour obtenir le typon à l’échelle 1 ainsi que l’implantation et la liste du matériel, je vous conseille de télécharger les fichiers originaux pour Proteus Isis et Ares 7.4 ou d’imprimer le fichier PDF disponibles en fin d’article. Ci-dessous vous avez une plaque pour ce robot sans composant. J’ai du juste passé quelques coups de cutter sur un coté de la plaque pour bien séparer quelques pistes, le reste est sorti tout à fait correctement.
Ensuite j’ai soudé les composants CMS et les straps. On obtient alors la plaque suivante :
Enfin la plaque finale est la suivante:
« Dongle » USB pour XBee
Pour pouvoir dialoguer avec le module XBee du robot, j’ai réalisé un « dongle » à brancher sur un port USB d’un PC. L’interface entre le bus USB et le module XBee est réalisé avec un FTDI FT232RL. Le schéma électrique et le typon sont présentés ci-dessous :
Ce qui donne la réalisation suivante:
Reportez-vous à cet article pour plus de précisions.
Programmation
Pour tester la carte, je compile tout d’abord le bootloader TinyBootLoader pour un PIC18F4620 (le 46K20 n’existe pas mais ils ont tous les deux la même quantité de mémoire flash) pour un oscillateur interne à 16MHz et une vitesse de 9600 bauds/s. Pour avoir plus de renseignements sur TinyBootLoader, merci de lire cet article sur le site de l’académie de Limoges et cet article sur ce site. Le fichier HEX est disponible en fin d’article. La programmation s’effectue avec un PicKit2 (Voir cet article). Pour tester la connexion sans fil les deux modules XBee sont configurés avec le logiciel X-CTU comme indiqué dans cet article.
Bonjour Olivier,
Félicitations pour le partage de ton savoir et la façon professionnelle de le faire. Je suis intéressé par l’électronique mais à un niveau de base tel que je ne peux que te demander combien coûte ce robot en kit complet à assembler (je peux bricoler, souder et tester certains composants, mais pas programmer ou graver des plaques). Merci.
Bonjour,
je vous ai répondu sur votre mail privé.
Cordialement
salut olivier,
est-ce que c’est possible d’imiter ton projet !!?
car je suis passionner par se genre d’invention électronique.
Bonjour,
je vous ai répondu sur votre mail privé. Mais il n’y aucun problème à copier, améliorer, imiter ce robot…
je suis tres content de voir ce gern de robot , ca fait plus que 10 ans que j ai rin fait , je suis de l allmagne j ai etudie ca , mais ca fait longtemps , c est tres gentil de faire partager tes experiences
combien coute touts les composants . parce que ja des robot qui sont pres dans le marché tu penses que c est bien l acheté de les changé ou bien le faires ????
merci