Table des matières

Choix du matériel et options

Dans cette partie, nous étudierons une liste de matériel, pièces, et alternatives possibles. Ce n'est pas le robot ultime, ni un cylon, mais un petit robot sympa, sur lequel on peut se faire la main, et prévu pour pouvoir beaucoup évoluer. Notez bien qu'ici je vais vous présenter une longue liste de matériel, mais que je retiendrai une configuration pour la suite. Si vous choisissez d'autres solutions, il y aura nécessairement un peu d'adaptation à faire, mais rien d'extrêmement compliqué. Pour un robot simple, il faut:

  1. un système de propulsion;
  2. De quoi transformer la rotation des moteurs en mouvement horizontal;
  3. un circuit de commande;
  4. un système fournissant l'alimentation électrique;
  5. éventuellement des capteurs.

Voyons donc ce qu'il faut en faisant “pas cher” (sachant que tout sera réutilisable).

Le système de propulsion : motorisation

On part sur un robot à conduite différentielle, c'est à dire disposant de deux moteurs. Pour avancer, les deux moteurs tournent dans le sens A, pour reculer ils tournent dans le sens B, et pour tourner on fait les deux tourner en sens inverse. On peut ainsi avancer, reculer, tourner à droite, et tourner à gauche. En bref, il faut donc deux moteurs, ou tout autre système capable de tourner dans un sens ou dans l'autre. On a donc plusieurs solutions :

La solution de la récup est intéressante, le problème est donc de pouvoir fixer des roues dessus. Dans mon cas, j'ai trouvé un bout de plastique sur lequel je pouvais visser les roues de mes servos (dont j'avais grillé un des deux, et du coup avec un seul servo on ne peut pas trop avancer ^^). En revanche, comme c'est de la récup, rien n'interdit de coller un vieux CD sur l'axe de rotation pour faire la roue… Et on peut ajouter un élastique sur le contour du CD pour faire un pneu et avoir un peu d'adhérence.

La solution des moteurs DC est ma préférée, car elle est économique, et pour le prix d'un servo, on a 3 moteurs DC, ce qui permet d'en avoir un de rechange par exemple, mais on peut facilement décider d'en prendre 4 ou 6 pour faire un véhicule à 4 ou 6 roues motrices. De plus, pour ces moteurs, il existe une très grande variété de roues et chenilles adaptées, et le système fait qu'on peut facilement changer les roues. Ces moteurs intègrent une boite de vitesse réductrice avec un rapport X:1, ce qui signifie que quand le moteur fait X tours, l'axe de la roue en fait 1. C'est très important, car sans cela, le couple serait trop faible,et le robot n'avancerait pas. Plus le rapport réducteur est important, moins les roues tourneront vite (et donc plus le robot sera lent), mais plus il aura de couple, et sera capable d'emporter une charge importante/de continuer à avancer malgré des obstacles. Il existe des moteurs avec boite de vitesse métallique, mais c'est plus cher, au moins 15$ pour les plus petits (par contre, ils sont fatalement plus solides). Je conseille des pololu plastic gearmotors. On en trouve principalement en 120:1 et 180:1. Prenez ceux qui ont le “3mm D-Shaft”, il s'agit de l'axe du rotor, qui fait 3mm de diamètre, en forme de D. Prenez ceux qui ont l'axe en métal, ce sera plus solide. L'intérêt c'est qu'on a besoin de rien d'autre pour fixer les roues, et qu'en plus les roues s'enfoncent sur cet axe sans outil, et restent solidement en place. Et en plus il existe une très grande variété de roues adaptées à ces modèles. Je n'ai pas regardé pour les axes de 2mm, ni ceux en plastique. Et en plus, si plus tard vous décidez d'upgrader avec des “micro metal gearmotors”, les roues seront compatibles. Pour moi l'idée c'est d'essayer de faire que tous mes robots puissent partager des éléments, ça rend la logistique plus facile!

Notez que sur pololu, il y a également le moteur 180:1 avec corps "droit".

Pour le choix du site, pololu a pas mal de bidules “robotique”. En revanche, ils n'ont pas beaucoup d'autres catégories. Sur pololu, j'ai commandé uniquement mes moteurs et roues. Toutefois, Alpha-Crucis a les moteurs de pololu, leurs roues, mais également tout plein d'autres items. De plus, c'est un site français, qui vous expédie par colissimo, pour 5€ de FDP, et gratuitement au delà de 250€. Bien sur, pour les DOM, ça n'a rien à voir, mais ça reste modéré, avec 30€ de FDP pour une commande d'environ 250€, et je crois bien qu'ils m'ont décompté la TVA, ce qui revient au même (en Guadeloupe on est pas censés payer la TVA “normale”, mais la douane peut prélever une taxe à l'arrivée. Toutefois, par colissimo et sur des montants de cet ordre, il ne le font presque jamais. En plus pour des composants électroniques, ça fait une facture avec des dizaines de références à petit coût, le douanier n'aura pas envie de lire tout ça pour calculer les taxes). Bref, j'ai commandé chez eux hier, et ils m'ont l'air vraiment bien, ça risque d'être mon second site après Adafruit. Seul défaut, les fiches ne sont pas toujours complètes, mais le catalogue est énorme (ils ont AUSSI des trucs d'Adafruit!). Au passage, Snootlab va bientôt distribuer les produits pololu, donc encore une bonne source d'approvisionnement!

Enfin bref, ça fait 3.77€ par moteur sur Alpha-Crucis, ou 5.49 sur pololu. Prenez en bien deux ayant le même rapport réducteur. Le “droit” ou “coudé”, c'est à vous de voir. Le droit est plus long, mais moins large, le coudé c'est le contraire. Dans tous les cas, ça ne change pas grand chose, juste peut être l'organisation de l'espace. Moi j'en ai pris de chaque, mais j'aime bien les droits, parce qu’on peut facilement les coller sur le bord du châssis du robot sans avoir a découper le dit châssis. Mais on peut aussi fixer les coudés sous le châssis, sans faire de découpe… Bref, c'est un choix à faire.

Transformer la rotation des moteurs en mouvement du robot : transmettre la puissance au sol

Maintenant que nous avons des moteurs, il faut transmettre la puissance à la “route”, pour faire bouger le robot. On a deux solutions simples :

Pourquoi choisir l'un ou l'autre? Les roues ont l'avantage d'être disponibles en de multiples dimensions, de 2-3cm de diamètre à presque 10. On en trouve des larges, des étroites, avec divers designs. Plus la roue sera grande, plus le robot ira vite. En revanche, le couple disponible sera moins important, puisque la distance à l'axe sera supérieure (le couple est exprimé en g-cm. Si votre moteur à un couple de 1kg-cm, il pourra faire tourner une charge de 1kg à 1cm, 500g à 2cm, etc.) Pour ma part, j'ai pris des roues de 4,6 et 9cm. Plus la roue est petite, plus le bas du robot sera proche du sol, et donc plus les obstacles pourront le bloquer. L'avantage de la roue est donc de pouvoir l'adapter au terrain visé, et pouvoir ainsi ajuster la vitesse/le couple du robot. L’inconvénient, c'est qu'il faut un troisième point de contact, le “ball caster”. Et le ball caster franchit bien moins facilement les obstacles que les roues. Cependant, plus le Ball caster est gros, plus ça sera facile. En face, les chenilles sont disponibles souvent en diverses longueurs, mais pas tellement pour des diamètres de roues différents. En revanche, la chenille est “tout terrain”, et il ne faut rien d'autre que le kit de chenilles. Donc sur une surface irrégulière, et même avec des obstacles, la chenille pourra mieux se débrouiller. Elle devrait passer sans problème par dessus un gros câble d'alimentation de PC au sol, la ou la bille du ball caster pourrait rester bloquée. Et s'il s'agit d'aller sur du bitume, de la terre, ou autre, le Ball caster ne passera tout simplement pas. En revanche, la chenille sera sans doute plus lente, du fait du faible diamètre des roues d'entrainement de la chenille. De plus le système de chenille provoque une résistance, et réduit le couple disponible/augmente la puissance consommée pour un couple donné. Par contre la stabilité devrait être impeccable, et il n'y a presque aucun risque de se retrouver coincé. Notez toutefois qu'avec 4 roues motrices, on évite la nécessite du Ball caster et on peut aller un peu partout, et franchir beaucoup d'obstacles avec de grandes roues. On peut également avoir 4 roues, dont deux motrices. Idéalement il faudrait que les roues non motrices puissent tourner, mais ça peut parfaitement fonctionner même si elles sont fixes.

En bref : en appartement, sur des surfaces relativement régulières, les roues et le ball caster seront plus efficaces, iront plus vite, et gaspilleront moins d'énergie que les chenilles. En revanche, celles ci sont plus adaptées au terrains difficiles, et peuvent franchir des obstacles divers facilement. De plus , si on a le kit de chenilles, il n'est pas nécessaire d'acheter autre chose, et on a une surface de contact importante avec le sol pour transmettre la puissance, mais également une grande stabilité de ce fait. On risque peu de patiner, glisser, déraper… Sans compter le look “cool” des chenilles.

Donc, au choix :

Les chenilles

Sachant qu'un seul kit est nécessaire, et contient les deux chenilles avec tout l'équipement qui va avec (les “roues” de 35mm d'entrainement et libres, les axes, etc), cela fait environ 9 ou 10€ selon la longueur souhaitée. Pour ma part, je pense qu'il faudrait idéalement que la chenille soit aussi longue ou un peu plus longue que le robot. Ainsi, la partie avant de la chenille peut entrer en contact avec l'obstacle, levant le robot, et permettant le franchissement. Si le bord du robot est devant la chenille, le bord pourra se coincer contre l'obstacle, et le robot ne pourra pas avancer.

Les roues

Cela fait donc 7 à 10 pour le ball caster, soit 10 a 17$ pour une configuration complète de roues sur pololu.

Vérifiez qu'il y a le trou en “D” pour l'axe du moteur, de 3mm. ça revient donc de 7 à 13.5€ pour les roues et la roulette. Les roues sont également vendues par paire. Pour le choix de la couleur, une couleur claire peut servir à réfléchir un faisceau, ce qui pourra servir à faire un détecteur permettant de mesurer la rotation de la roue. Toutefois on peut aussi utiliser un faisceau de part et d'autre qui sera interrompu par les montants de la roue s'il y en a… En pratique, on peut sans doute adapter n'importe quoi à n'importe quel système. La couleur des roues peut également servir à reconnaître les robots, ou si on a des roues de couleur différentes, à déterminer de quel coté on voit le robot (dans une optique “computer vision”, ou un algo analyserait avec openCV le flux d'une webcam, et pourrait identifier le sens dans lequel le robot se trouve par ex. Mais on peut aussi mettre un autocollant différent de chaque coté, ou n'importe quoi d'autre.)

Si vous optez pour les servomoteurs à rotation continue, il faudra donc également prendre une roulette (n'importe laquelle ira), ou alors des roues libres.

Le circuit de commande, et des puces additionnelles facultatives

Nous avons des moteurs, des roues/chenilles adaptées, maintenant il faut commander tout cela. Pour appliquer l'algorithme de conduite différentielle, il faut un circuit capable de faire tourner les moteurs dans un sens ou dans l'autre à volonté. Nous allons utiliser pour cela des circuits implémentant des ponts en H. On utilisera donc deux puces L293D pour commander nos moteurs. Pourquoi deux? chaque puce L293D est donnée pour 600mA par canal. Les moteurs que nous avons sélectionné consomment jusqu'à 800mA s'ils sont bloqués. En mettant les deux L293D en parallèle, on double la puissance disponible, avec du coup 1200mA par canal. On peut aussi prendre un seul L293D, et espérer qu'il tienne le coup en cas de blocage des moteurs. ça devrait marcher, mais ce n'est pas un comportement garanti. Notez qu'en refroidissant les puces (un petit rad sur la puce) on peut augmenter la puissance disponible, donc on peut également se contenter d'une puce mieux refroidie. Pour ma part, j'ai pris 2 puces pour avoir plus de puissance disponible, et les puces étant peu chères, j'ai trouvé plus simple d'en prendre 2.

Il y a déjà un tutoriel sur l'utilisation de la puce L293D pour commander un ou deux moteurs avec le Raspberry Pi sur NextInpact (je le porterai sur ce wiki plus tard). La seule différence est qu'ici nous mettrons les deux puces en parallèle. En pratique, le câblage sera le même, sauf qu'on ajoutera une seconde puce en connectant les pattes correspondantes des deux puces entre elles. Mais on verra cet aspect plus tard.

Si vous avez choisi les servomoteurs, ces puces ne sont pas nécessaires. Il existe aussi les puces SN754410 pour 3$ sur pololu, qui sont compatibles broche à broche avec les LM293D (on peut donc utiliser exactement le même câblage d'après pololu). Dans la doc, je lis 1A de courant en sortie. Cependant, je ne parviens toujours pas à comprendre si c'est 1A au total, ou 1A par canal. Si c’est 1A par canal, alors cette puce permet de remplacer les deux L293D dans notre montage, si c'est 1A au total, elle n'a aucun intérêt par rapport aux L293D. J'en ai pris 3, mais je ne les ai pas encore testées. Vous pouvez tenter, si vous comprenez mieux la doc que moi, faites moi signe. j'écrirai à Pololu pour leur demander. Sinon dans le doute, les L293D, je peux vous confirmer qu'elles fonctionneront pour le circuit, pour les avoir testées sur 3 prototypes de robots. Mais si vous commandez chez pololu, seule la SN754410 est disponible, et du coup je vous conseille d'en prendre au moins 2 pour être sur (deux en parallèle, et pourquoi pas une troisième au cas ou, en stock). Dans tous les cas, le schéma de câblage sera le même.

Ajouter des GPIO au Raspberry Pi (optionnel, mais pratique, facile, et peu coûteux)

Sur le schéma que je vous fournirai dans un premier temps il y aura également une puce MCP23017, qui permet d'ajouter 16GPIO (je ferai un second schéma simplifié sans cette puce). Il est possible de se passer de cette puce, le souci c'est que les puces de contrôle des moteurs utilisent 5 à 6 GPIO sur les 17 du Pi. Avec le MCP23017, on utilise 2GPIO spécifiques, qui restent de plus utilisables par d'autres puces, et on ajoute ainsi 16GPIO protégés, pouvant qui plus est fournir plus de courant que les GPIO normaux. Cette puce ne coûte pas très cher, puisque le MCP23017 est à environ 3$ sur Adafruit. Si cette puce est trop grosse, mais que vous voulez quand même utiliser ce principe (ajouter des GPIO protégés), il est possible d'utiliser un MCP23008, qui coute 1.95$ sur Adafruit et ajoute 8GPIO et moins de pattes.

Ajouter un circuit convertisseur analogique-numérique pour lire des capteurs analogiques (optionnel, mais très pratique, simple et économique)

De même, sur le schéma d'un robot de base, je vais utiliser une puce MCP3008, qui permet d'ajouter 8 entrées analogiques au Raspberry Pi. Cette puce n'est pas nécessaire, et on peut faire un robot télécommandé/contrôlé à distance/utilisant une webcam pour se déplacer, de sorte que le robot n'aura pas de capteurs analogiques à lire. Toutefois, je recommande fortement cette puce, car le MCP3008 est à 3.75$ sur Adafruit, et pourrait permettre d'ajouter une grande variété de systèmes extrêmement utiles. Par exemple, un capteur de distance pour détecter automatiquement les obstacles, mais aussi un capteur infrarouge orienté vers le sol devant le robot, qui permettrait de détecter les trous pour éviter de tomber dedans, ce qui peut être utile même en contrôle manuel. On peut imaginer toutes sortes de capteurs qui permettraient au robot de s'adapter automatiquement à diverses situations, ou même tout simplement un capteur de courant pour que le robot puisse mesurer sa consommation, on peut utiliser la puce pour mesurer la tension des batteries et estimer l'autonomie restante, ou encore utiliser des capteurs divers pour mesurer le nombre de rotations des roues, un accéléromètre, gyroscope ou autres pour avoir des infos sur le déplacement du robot… Bref, une puce très utile, rajoutant donc 8 entrées analogiques, en échange de 4GPIO. Nous avons des tutoriels sur le sujet :

L'alimentation électrique de l'ensemble

Maintenant, il faut alimenter le Raspberry Pi, mais également les moteurs. Pour cela, il faudra une source électrique de 5V, stable, pour le Raspberry Pi, et une source de 5 ou 6V non régulée pour les moteurs. On aura besoin d'une puissance de 700mA au minimum pour le Pi, et 800mA au maximum par moteur, soit 1600mA au maximum pour les moteurs. Il nous faut donc une source capable de débiter 2300mA ou plus. Avec des piles AA rechargeables, il nous en faudrait 5 de 2300mAh ou plus. avec des piles non rechargeables, 4 suffiront. Si on alimente tout avec des piles rechargeables, il faudra un régulateur de tension pour le Raspberry Pi. La meilleure option que j'ai pu trouver jusqu'ici, c'est le régulateur S7V7F5 de chez pololu, qui vaut 4.95$ (disponible en France chez Snootlab 1) ), et est une petite merveille. Il peut fournir du 5V à partir de tensions allant de 2.7 à 11.8V. Si il fournit une tension supérieure à la tension d'entrée, il peut fournir 500mA (voire un peu plus). Si il baisse la tension, il fournit 1000mA. Il est réellement minuscule, et ne consomme rien (0.1mA) quand il ne fait rien. Son efficacité énergétique est de 90%, ce qui veut dire qu'il ne gaspille que 10% de l’énergie fournie pour la conversion.

Une autre solution, très économique, mais peu efficace, est d'utiliser un simple régulateur linéaire, comme le 7805, très simple a utiliser, mais nécessitant une tension d'entrée plus importante (7V au moins) et gaspillant une partie plus importante de l'énergie, puisque la différence de tension entre l'entrée et la sortie est consommée avec le même courant que ce celui qui est consommé en sortie. Donc à 1A, pour une entrée de 7V, on consomme 2W pour la régulation, et cette énergie est gaspillée en chaleur. La puissance utile disponible est donc de 5W, ce qui fait qu'on gaspille 40% de l'énergie.

On peut également utiliser une source 5V et se passer des régulateurs, comme nous le verrons plus bas. Il faudra alors un endroit ou mettre les batteries, par exemple:

Il existe une dernière solution, c'est d'avoir une batterie régulée 5V. Toujours en utilisant ce type de batterie, il est également possible d'ajouter une trappe de 4 Batteries AA pour l'alimentation des moteurs (non régulée), et d'alimenter le Pi avec la batterie 5V régulée. Dans les deux cas, on se passe du régulateur de tension. L'utilisation d'un pack de 4 Batteries AA permet de séparer les deux sources d'alimentations, et c'est en théorie mieux. L'intérêt de la batterie régulée, c'est qu'elle utilise des batteries au lithium qui sont plus légères à capacité égale. On gagne donc sur la masse du robot, et on peut sans doute démonter la batterie pour enlever le panneau solaire, et la coque pour réduire la taille si on veut. Attention toutefois au batteries, celles au Lithium étant fragiles et dangereuses quand on les malmène.

Il y a un post décrivant un montage utilisant des batteries AA et un régulateur de tension pour alimenter un Raspberry Pi autonome, ainsi que des tests d'autonomie (lien externe).

Les capteurs

On peut se passer de capteurs, et télécommander le robot. On peut également utiliser une webcam pour analyser les images et se déplacer ainsi (plus complexe, il faut maîtriser openCV ou autres librairies de vision informatique) Il est cependant possible d'ajouter des capteurs simples, tels que des capteurs de distance en infrarouge, ou à ultrasons, pour détecter les obstacles Le coût sera de 10 ou 20€. On peut également utiliser des boutons poussoirs pour faire des capteurs de contact. n'importe quel bouton poussoir fera l'affaire, mais certains sont plus adaptés, tels que ceux ci : Microswitch avec levier long, pour environ 1.25€ Microswitch avec levier à roulette, pour 1.6€. Avec deux de ces switches, on peut détecter de quel coté se trouve l'obstacle, et ainsi éviter les obstacles. Pour ces switches, on a pas besoin d'utiliser le convertisseur analogique, uniquement des entrées numériques. On peut ensuite ajouter de nombreux autres capteurs, par exemple pour détecter les trous, avec un capteur infrarouge à faible portée, un accéléromètre, un gyroscope pour le guidage inertiel, etc…

On peut également trouver des capteurs purement numériques, dont certains utilisent par exemple le protocole I2C pour communiquer. Dans ce cas, on utilisera pas le MCP3008. Voici au passage un petit récapitulatif sur les divers capteurs les plus courants, et un tutoriel sur la lecture de boutons (pour les microswitches) : Utilisation d'un GPIO en entrée (lecture)

Conclusions

En fin de compte, voici des “packs” mis a jour, récapitulant le matériel nécessaire. Il nous faut bien sur un Raspberry Pi, des jumper wire, une breadboard, une carte SD avec Raspbian (ou autre) dessus, et le câble d'alimentation. Je ne reviendrai pas la dessus, si vous en êtes à faire un robot, c'est que vous avez déjà probablement ces composants et sans doute déjà essayé divers montages. Passons donc maintenant aux éléments spécifiques au robot.

Robot de base, avec moteurs DC et chenilles

Il nous faudra donc :

Ces composants sont les composants minimaux pour faire ce robot à chenille. En l'état, il n'aura pas de capteurs, et ne pourra donc être que télécommandé. On a donc un total de 44€ au maximum si l'on compte les batteries AA. Une autre solution est de remplacer le circuit d'alimentation, la boite à batteries et les piles rechargeables par une batterie portable USB, ce qui revient à 22€, soit un total d'exactement 44€.

Robot de base, avec moteurs DC et roues+roulette

On conserve le même matériel que pour le précédent, sauf qu'on remplace les chenilles par des roues et une roulette :

Du coup on passe a 42€. On peut utiliser de plus grandes roues :

Pour cette variante, le prix reste à 44€.

Options

Voyons maintenant quelques options intéressantes, qui seront utilisées pour le prochain tutoriel :

Ces deux puces extrêmement utiles augmenteront la facture de 6.1€, ce qui nous fait un total de 50€. On peut enfin ajouter des capteurs :

On ajoute donc 22.5€ ou 12.5€ pour un grand total de 72.5€ au maximum (62.5€ en infrarouge, 52.5€ avec juste les capteurs de contact).

A partir de là, vous avez tout le matériel nécessaire à la construction d'un robot (plus ou moins autonome selon les capteurs), et pour chaque élément utilisé, il y a un tutoriel dans (ce fil de discussion (lien externe)). Je vais toutefois faire d'autres tutoriels, spécifiques, reprenant dans les grandes lignes ce qu'il faut faire pour monter ce robot, le programmer, et l'améliorer.

La suite à la prochaine partie : Schéma de principe et montage électronique du robot..