Construire un robot Arduino basé sur le châssis DFRobot Turtle 2WD

Medium bzzm5bhy5nlrxwupwqlv

Difficulté:

Comment monter votre propre rover d’exploration, vous allez voir c’est passionnant !


J’ai choisi un robot deux roues motrices : simple à programmer, extrêmement réactif dans les virages et également moins coûteux pour un coup d’essai. Le projet que j’ai réalisé est un petit robot autonome qui évite les murs et pousses des bruits de R2-D2 lorsqu’on l’embête.


Vous devez tout d’abord savoir que faire des recherches, nombreuses, approfondies, vous évitera de passer des commandes successives comme cela a pu m’arriver et d’économiser de manière non négligeable sur les frais de ports. Un colis de 1,4 kg en provenance de Chine coûte 30€ en FDP + 16€ en douane à l’arrivée : groupez vos commandes. N’hésitez pas à tout lire avant d’agir.


Je tiens notamment à vous mettre en garde sur la nature des produits Arduino. Les lettres DIY signifient Do It Yourself, vous trouverez ainsi très souvent sur des sites des produits vendus en pièces détachées à souder intégralement vous même, sans être signalés. Il faut lire attentivement.

Matériel

Medium wprecqn7bbd8d4avb7nz

Budget:

140 €

Pour réaliser un robot avec une carte Arduino Uno, nul besoin d’être grand bricoleur. Il existe des tas de kits à assembler spécialement conçus pour fixer votre Arduino dessus.

Le DFRobot Turtle – 2WD Mobile Platform est livré avec deux moteurs 6V, deux roues, un troisième point d’équilibre qui est une bille en métal montée sur roulement, un magasin de capacité 5 piles (7,5V), un interrupteur et un tas de supports pour votre carte Arduino et des capteurs.

Contrôler des moteurs n’est pas chose facile, j’ai lu que cela se faisait sur breadboard à l’aide d’un « pont en H ». Malgré mon bac STI Életrotech, je dois avouer que j’ai un peu décroché. Alors je me suis tourné vers quelque chose de plus accessible : un Shield.

Le Rotoshield (de Snootlab) est une carte d’extension Arduino qui permet de contrôler jusqu’à quatre moteurs à courant continu ou 2 moteurs pas-à-pas, il propose des borniers pour câbler les moteurs et une alimentation externe. La bibliothèque fournie est incroyablement simple : Motor.setSpeed(255);.

En l’absence d’alimentation externe, le Rotoshield va puiser son énergie dans l’alimentation de l’Arduino. Le problème c’est que les moteurs ont tendance à faire de brèves chutes de tensions à l’allumage, cela aurait pour effet de redémarrer l’Arduino de manière intempestive. Même si le Rotoshield propose des composants de « pull down » et antiparasites, il faut ajouter un autre magasin de piles (avec connecteur Jack DC).

Bien ! Comme votre robot peut maintenant avancer, il lui faut des yeux pour se diriger. Il existe trois types de capteurs télémètres :

– le DFRobot Adjustable Infrared Sensor Switch, gamme de 3 à 80cm digital (de type « On/Off »), réglable à l’aide d’une petite vis.

Avantages : 7€, destiné à être monté dans les fixations fournies avec le kit du robot, réglage par défaut parfait.
Inconvénients : capteur à déclenchement fixe et sensible aux parasites créés par des moteurs (bloque sur ON).

– le Sharp GP2Y0A21, gamme de 10 à 80cm analogique, fournissant une tension variable continue selon la distance.

Avantage : Information précise de la distance en temps réel.
Inconvénients : ~2x plus cher (12€ à 16€), une fixation à acheter pour chaque capteur (4,5€).

– le sonar est très nettement plus cher (50€), moche et difficile à monter à cause du circuit électronique fourni sans support.

J’ai eu quelques problèmes avec mes capteurs DFRobot numériques : ils se déclenchaient en permanence alors qu’il n’y avait aucun obstacle. Après avoir longuement cherché la cause, il semble que ces capteurs aient besoin d’un voltage minimum pour fonctionner, mes accus étaient en effet déchargés. Ce problème semble épargner les capteurs analogiques.

Je préfère orienter votre choix sur deux Sharp, malgré le budget. Les deux types de capteurs IR sont indifféremment très simples à prendre en main. Je vous incite également à ajouter un pack de fils-électriques avec connecteurs qui vous évitera des soudures.

Et enfin, pour pimenter un peu mon projet, j’ai eu l’idée de le sonoriser. Quand un robot roule, vous n’avez plus aucune information, pas de console, pas d’écran. Pour ajouter l’utile à l’agréable, cela vous permettra de le faire parler ou d’émettre des bips comme R2-D2.

J’ai donc mis la main sur un Wave shield Adafruit qui propose une sortie Jack 3.5mm, un potentiomètre de réglage du volume et un port pour carte SD. Vous pourrez utiliser votre carte SD Haute Capacité indépendamment pour ce que vous souhaiterez. Ce Shield lit les .WAV car non compressés.

Faites très attention aux conflits en achetant plus d’un Shield, étudiez les schémas électroniques, renseignez vous sur les forums des constructeurs pour savoir s’ils n’utilisent pas matériellement les mêmes pins. Téléchargez les bibliothèques, aurez vous assez d’entrées/sorties ?

Exemple :
Le Rotoshield et le WaveShield ont le pin Digital 11 matériellement commun (non déplaçable dans les deux). Cela a pour conséquence de rendre le bornier N°2 du Rotoshield inutilisable (un moteur sur quatre). Mais ils ont aussi deux autres conflits logiciels et là se pose l’autre problème, la consommation du nombre de pins peut être importante, vous pourriez ne plus en avoir assez de libres ! Reportez vous à la partie 7 pour appliquer la solution.

Et ce n’est pas tout ! Le Rotoshield, très épais, doit obligatoirement être au sommet de votre sandwich. Sachez enfin que :
– Les pins numériques 0 et 1 (respectivement RX et TX) ont une fonction de Réception / Transmission Série qui est prioritaire sur l’USB. Résultat, si un sketch compilé n’est pas présent sur l’Arduino pour les initialiser en tant qu’I/O, connecter quoi que ce soit dessus empêchera tout nouveau transfert par USB. Pour les utiliser, transférez d’abord votre programme, puis reconnectez les (utilisez-les pour déplacer des pins dans les bibliothèques).
– Vous pouvez utiliser les pins analogiques en tant que pins numériques, ils s’utilisent exactement de la même manière. a0, a1, a2, a3, a4 et a5 sont respectivement les pins numériques 14, 15, 16, 17, 18 et 19.

Etape 1 : Outillage supplémentaire

Vous allez avoir besoin d’outils, mais ne courrez pas au magasin dépenser vos économies : demandez à vos parents, grands parents, oncles et amis.

En premier lieu, je vous conseille de glaner un minimum d’outillage :
– des tournevis cruciformes et plats de toutes tailles,
– un fer à souder, un support métallique stable et de l’étain,
– un chiffon et une éponge pour nettoyer vos ratés,
– un cutter ou une pince à dénuder des fils électriques,
– des bouts de fils électrique de petit diamètre (0,6 à 0,8mm),
– du scotch transparent très adhésif pour protéger et isoler vos soudures,
– quelques pinces (plates et à crans si possible).

En outillage optionnel mais vraiment ultra pratique :
– une troisième main (6,50€), presque vital pour souder, comme moyen de fortune alternatif vous pouvez tenir vos fils entre des masses de marteaux,
– un kit à dessouder, ça vous servira dans votre vie,
– un pack de tubes réfractaires à protéger et isoler les soudures,
– un voltmètre.

Maintenant que vous avez votre équipement, passons à la suite. Voici un guide pour apprendre à souder : http://influence-pc.fr/envois/Souder_c_est_facile_-_Voici_comment_faire_-_Version_longue.pdf

Je vous conseille de faire quelques essais !

Etape 2 : Câblage des moteurs

Vous venez de déballer tous vos colis, vous avez imprimé le guide montage qui est entre vos mains, vous savez donc par où nous allons commencer.

– Vous avez un long double câble dans le kit DFRobot : pliez-le en deux et coupez-le à la moitié. La suite s’applique pour chaque moitié.
– Dénudez le cuivre des fils à chaque extrémité sur 5mm et torsadez-les. Vous pouvez séparer un peu les gaines sur 1 ou 2 cm.
– À l’une des extrémités, placez une goutte de soudure sur chaque fil pour unifier les brins. Cette extrémité sera placée dans le bornier du Rotoshield.
– À l’autre extrémité, pliez les brins de cuivre dénudés à 90°, bien au milieu des 5mm qui dépassent de la gaine.
– Glissez un premier fil à angle droit dans l’un des trous du moteur et repliez-le bien pour qu’il tienne dans l’encoche.
– Appliquez un généreux point de soudure dessus (relire le guide !).

Il vaut mieux glisser les brins pliés à angle droit toujours par le dessous des trous, cela facilite les opérations. La couleur des fils n’a pas d’importance, ceci dit par convention, si vous regardez vos deux moteurs dans le même sens, les couleurs doivent être dans le même sens. Cela permet d’avoir une alternance « Rouge-Noir-Rouge-Noir » en arrivant au bornier du Shield (moi je me suis planté).

Pour installer un moteur, insérez le dans l’encoche du châssis puis fixez les longues vis : tenez l’ écrou dans une pince plate et vissez avec l’autre main. Le montage de la roue va être votre premier calvaire : le trou est souvent très juste, il faut appuyer bien fort tout en étant précautionneux.

Vous pouvez maintenant fixer la bille d’acier à son emplacement.

Etape 3 : Assemblage de l’étage

Medium raeerqpfnawkh9ktvuuc


Pour cette étape décrite en page 6, ne montez pas tout de suite le magasin de piles sur le châssis, il va falloir le bricoler avec celui que vous avez acheté pour qu’ils fonctionnent tous les deux sur ordre de l’interrupteur.

On va commencer par assembler les éléments de l’étage, comme ça on pourra définir à quelle longueur couper/souder les câbles, en fonction de la position de vos cartes électroniques, de l’interrupteur, etc. La seule position où trois trous concordent avec les perçages de l’Arduino est sur la photo d’illustration.

Si vous tenez la plaque face à vous, les trois grands rectangles vides vers le haut avec à leur droite deux trous manifestement plus larges que la moyenne : votre carte Arduino se fixe au dessous des rectangles, dans le sens horizontal, connecteur USB à gauche.

Vous trouverez dans les sachets du kit quatre supports dorés : il ne reste plus qu’à les fixer avec des écrous. Avec le bout d’une pince à crans, tenez fermement l’écrou vissé à la main sous la plaque et serrez le support doré avec une pince plate. N’hésitez pas à élargir doucement les perçages avec un tourne vis, la peinture les a légèrement rétréci.

La difficulté majeure nous est offerte par la Team Arduino. Ils ont bien pensé à normaliser le format des perçages, mais que met-on dans les trous ?! Des vis oui et toutes les vis ont… des têtes, qui ne passent pas le long des connecteurs qui arrivent juste au bord du trou proche de l’USB.

Alors deux solutions :

– Prendre un des supports dorés, le passer à l’envers dans le trous près du Jack DC et serrer l’écrou dessus. Le support de carte mère fera un appui acceptable sous la carte. C’est une solution temporaire proposée par DFRobot qui ne s’était pas rendu compte de cette modif sur l’Arduino Rev3.
– Limer la tête de vis jusqu’au plus près du filetage, soit à la lime (il faut être très patient), soit avec un appareil tel qu’une meule. C’est ultra dangereux car une vis est minuscule. Je l’ai fait parce que j’avais le matériel : des lunettes anti-éclat de chantier, des gants et une pince pour tenir la vis. Avec cette solution vous allez en plus abîmer le filetage lorsque la vis bougera, je déconseille très très fortement, ne risquez pas un œil pour une vis.

Le point d’appuis ne touchera pas le sol d’une fraction de millimètre. Il fera cependant parfaitement soutient si vous exercez une pression sur votre carte en fixant vos Shields. N’essayez pas non plus de visser contre le connecteur en forçant, cela endommagerait l’ensemble des connecteurs. DFRobot affirme que la conception de l’étage sera revue pour ajouter le 4ème trou, affaire à suivre.

La pose des capteurs à l’étage est la dernière chose à faire pour cette étape : fixez-les dans les deux fentes les plus proches de la fente du milieu et glissez-les vers elle, le plus possible vers le milieu du robot (mes photos n’illustrent pas ce dernier réglage).

Etape 4 : Câblage des magasins de piles

Le bloc fourni avec le kit DFRobot n’a pas de connecteur, nous allons nous en servir pour le bornier d’alimentation externe du Rotoshield. Quant à l’autre bloc que vous avez acheté avec un embout Jack DC, il sera fixé à l’étage et alimentera votre Arduino. Ainsi, lorsque votre Arduino sera connecté en USB tout fonctionnera (capteurs, musique) sauf les moteurs. Vous n’aurez qu’à basculer l’interrupteur pour les faire fonctionner.

Vous allez me dire que c’est idiot, le bloc du bas a moins de piles pour les moteurs que celui du haut :
– Il vaut mieux que les moteurs s’arrêtent les premiers, un Arduino en dessous de 5V est instable.
– Ce n’est pas le nombre de piles qui compte mais leur capacité en courant. En revanche cela porte le bloc à 9V.
– Arduino supporte de 6V à 20V (7V à 12V recommandé) et le Rotoshield de 5V à 18V.

Cette étape est un peu délicate, vous devez tout d’abord repérer les pôles négatifs des magasins. Pour celui du kit c’est simple, le pôle positif est le fil rouge. Pour l’autre, observez attentivement sur quelles piles arrivent les fils, vous finirez par le trouver. Vous n’avez pas encore vissé vos blocs mais vous pouvez déjà les positionner, ça vous aidera à visualiser où vont les fils, de même que l’interrupteur.

– Sectionnez le fil négatif du magasin supplémentaire que vous avez acheté, au niveau de l’interrupteur.
– Dénudez les fils ainsi que ceux du magasin du kit DFRobot.
– Torsadez les fils des pôles négatifs (seulement eux) et pliez-les à 90°.
– Passez-les dans le pin du milieu de l’interrupteur et posez une grosse goutte de soudure.
– Soudez maintenant de la même manière un fil électrique entre l’un des pins restants et le connecteur Jack (sans torsader les brins cette fois, faites correspondre les deux fils pour obtenir une soudure bien droite).
– Vous devez également rallonger le fil du pôle positif du magasin d’origine, car d’en bas il n’atteindrait jamais le bornier M+ du Rotoshield. Respectez si possible la convention du fil rouge, n’oubliez pas de dénuder/torsader son extrémité et d’y poser une goutte de soudure.
– Enfin, protégez vos soudures (avec du scotch par exemple) pour éviter les étincelles !

Pour finir cette étape, vous pouvez visser vos magasins sur le châssis ce qui fournira un très bon équilibrage.

Etape 5 : Installation des composants

Medium mjmdsfnt3gyt0mqilwco


Cette étape est la plus simple, gardez à l’esprit que rien ne peut être empilé au dessus du Rotoshield. Dans l’ordre vous devez avoir Arduino + un éventuel Shield + le Rotoshield. J’ai fait passer tous les fils dans le grand rectangle (ou ce qu’il en reste après la pose du magasin supplémentaire).

Si vous avez un Waveshield, vous savez que le bornier M2 est interdit pour cause de conflit matériel. Vous pouvez connecter vos moteurs dans M1, M3 et M4 (ne placez rien dans les borniers GND si vous n’utilisez que les moteurs DC du kit) puis connectez le fil que vous avez rallongé dans M+.

Le schéma de montage du capteur DFRobot illustre cette partie (mais très classique pour n’importe quel capteur).

Le connecteur du capteur reçoit en réalité rouge (+5V), noir (GND) et jaune (le signal). Voici comment vous devez les connecter :
– Vous devez souder deux petits fils en « Y » (idéalement ceux du pack de 65 fils connecteurs, prenez-en des rouges) de sorte que chaque capteur soit relié à l’unique pin « 5V » de votre carte : coupez-en un en deux et dénudez l’autre, soudez les trois en un seul point, vous obtiendrez trois embouts.
– Connectez ensuite la couleur noire de chaque capteur par un petit fil blanc à l’un des pins GND de votre carte (il y en a trois).
– Enfin, après avoir étudié les pins qu’utilisent vos Shields, connectez un petit fil jaune pour chaque capteur dans un des pins I/O numériques (ou analogiques émulés en numériques) de votre choix.

Vous n’avez plus qu’à écrire un petit programme à l’aide de l’exemple fourni par le wiki DFRobot pour faire reculer votre robot dès qu’un capteur est activé, cela vous permettra de connaître leur distance de déclenchement.
Doc : http://www.dfrobot.com/wiki/index.php?title=Adjustable_Infrared_Sensor_Switch_%28SKU:SEN0019%29#Sample_Code

Les robots ont la même problématique que les humains pour se déplacer : ils doivent utiliser au choix l’un des cinq sens connus, mais de préférence le plus pertinent ! Le type et le nombre de capteurs va leur donner un certain comportement.

Par exemple, ce robot a deux capteurs télémètres infrarouges, c’est à dire deux rayons lumineux afin de mesurer les reflets sur les obstacles qu’il rencontre. La position des capteurs en « V » l’empêche de voir ce qui se situe juste en face de lui, un algorithme pourrait alors palier ce problème en slalomant doucement afin que chaque capteur croise la trajectoire empruntée. D’autres robots n’ont qu’un seul capteur et le montent sur une tête qu’ils orientent tour à tour de droite à gauche. D’autres encore ont trois capteurs.

Etape 6 : Faire parler le robot

Medium ct2gyxcddgsdmoh79ozo


Les robots n’ont pas besoin de nous comprendre ou de penser pour avoir l’air intelligents, il leur suffit de réagir à notre présence. C’est ce que font tous les robots actuels, même professionnels. C’est ce que j’ai voulu expérimenter en donnant la parole et un comportement basique à Discovery (oui, le mien a un nom !) : il salue en s’allumant, puis attend que quelqu’un choisisse le capteur droit (rester sur place) ou le capteur gauche (rouler) et s’exclame lorsqu’un choix est fait. Puis il se déplace en lançant des petites phrases de temps à autre, mais se plaint vigoureusement si quelque chose lui barre la route.

Voyez plutôt : http://influence-pc.fr/envois/Discovery%20version%20finale.webm

Pour y parvenir, j’ai placé sur la carte SD du Waveshield des dossiers contenant des profils de sons qui sont joués à des moments-clés du programme. Lorsqu’une action a lieu, un son est choisi au hasard dans le dossier correspondant. Le son précédemment joué est alors retiré du random, et l’opération recommence de manière aléatoire dans le temps (sous dix secondes).

Le son est produit par un vieux casque audio cassé, dont les oreillettes sont tournées vers l’extérieur. Avec le volume au maximum, les bruits stridents de R2-D2 sont audibles.

Etape 7 : Résoudre l’incompatibilité entre le WaveShield Adafruit et le Rotoshield snootlab

Vous aimez ce tutoriel ?


Vincent

07 juil. 2016 à 10:24

Merci beaucoup ! Eh oui quand je me lance je met le max de détails, parce que finalement celui qui réalisera un projet similaire peut en avoir besoin. C'est pas très digeste pour une première lecture par contre 🙂

Ipxav

07 juil. 2016 à 10:24

Super la vidéo embarquée ! Merci pour le partage.

la.couenne

07 juil. 2016 à 10:28

Génial j'adore tes sons 😀 Surtout le robot de Portal 😉

Je suis en train de développer le mien, en ce moment je m'inspire de tes détecteurs infrarouges DFRobot qui semblent avoir une bonne portée 🙂

Merci pour ton tuto détaillé!

Vincent

07 juil. 2016 à 10:29

Salut ! Oh oui les sons m'ont beaucoup motivé, ceci dit selon la puissance du casque utilisé pour émettre les bruitages, ceux de Portals s'entendent assez peu comparé à R2D2.


En ce qui concerne les capteurs, s'il n'est pas trop tard j'aurais préféré des analogiques type Sharp GP2Y0A21 (renvoyant la distance) plutôt que les numériques (binaires, type “pas de mur / dans le mur”).


S'inscrire:


  • Vues: 1399
  • J'aime: 6