L'idée est de créer un robot destiné aux enfants de maternelle (MS/GS) sur le principe de la BeeBot, tout en suivant les contraintes suivantes :
- Mettre le projet en OpenSource : page github avec le code, la liste de matériel et les plans nécessaires
- Utiliser du matériel électronique standard (Arduino) et peu onéreux
- Éviter les opérations "complexes" (soudure, usinage)
J'ai eu cette idée en discutant avec une professeure des écoles (Maître Formatrice) qui utilisait des BeeBot dans son école. Actuellement on trouve de nombreux de robots sur le marché mais ils sont souvent trop "compliqués" pour faire des activités simples. Dans l'exemple que j'ai observé, les BeeBot étaient utilisées pour apprendre le déplacement relatif et la suite de commandes à des enfants de grande section. J'ai cherché un équivalent moins cher et/ou OpenSource je n'ai rien trouver de probant.
Je me suis donc lancé dans ce _side-project profitant des imprimantes 3D disponibles au travail, de mes compétences en Arduino et en cherchant les composants sur AliExpress (merci à Gaël Breard pour m'avoir formé sur ces 2 derniers sujets).
Au final, le robot revient à 14€ de composants (et environ 3€ de frais de port) et ne demande aucune soudure. Le châssis peut être imprimé sur une imprimante 3D possédant un plateau de 20cm sur 20cm
Le nom du projet OoRoBoT pour Orange Open ROBOT.
- On allume le robot
- L'enfant peut lui donner les ordres suivants :
- avancer
- reculer
- tourner à droite
- tourner à gauche
- faire une pause
- effacer la dernière commande
- A chaque appui sur un bouton d'ordre ce dernier s'affiche sur l'écran LCD. NB : L'écran LCD ne peut afficher que 32 ordres (l'Arduino quant à lui peut en gérer plus)
- En cas d'erreur l'enfant peut effacer le dernier ordre ou tout son programme par un appui long sur le bouton "effacer"
- Quand l'enfant le veut il peut lancer son programme avec le bouton "Lancer"
- Le robot éxecute alors chaque ordre en faisant une courte pause entre chacun d'entre eux.
- Quand le programme est terminé, la liste des ordres se réaffiche et l'enfant peut faire d'éventuels ajustements.
- On peut accéder au réglage des paramètres en fasant un appui long sur un bouton dédié. Les paramètres sont :
- La distance parcourue pour les déplacements "avancer" et "reculer".
- Le nombre de pas que les moteurs doivent faire pour effectuer un tour complet (qui peut varier selon la surface sur laquelle doit évoluer le robot)
Pour changer de ligne il faut appuyer sur les touches "avancer" ou "reculer", pour changer les valeurs il faut appuyer sur les touche "tourner à droite" et "tourner à gauche". Un appui long sur ces touches permet d'augmenter la valeur d'incrément.
Pour annuler les changements des paramètres il faut appuyer sur le bouton "effacer". Pour quitter les paramètres en les sauvegardant il faut apppuyer sur la touche "lancer" ou "paramètre"
- 1 arduino nano : 2.20€
- 1 sensor shield : 2.60€
- 2 moteurs pas à pas : 3,60€
- 1 clavier 3x4 boutons : 2,10€
- 1 écran LCD 2x16 caractères sur interface I2C : 1,70€
- 1 conteneur de piles LR6 : 0,80€
- 1 lot de cables "dupont" de 20cm : 0,70€
- des vis M2x5mm ou celles-ci : 0,70€
Soit un total d'environ 17€ (14€ de matériel et 3€ de frais de port) et surtout aucune soudure n'est nécessaire ! De plus les moteurs pas-à-pas, bien que lents, sont très silencieux.
- 4 vis M3 pour fixer les moteurs pas-à-pas (vis utilisées pour tenir les disques durs ou les cartes mères), des vis/écrous peuvent également faire l'affaire ou en dernier recours de la colle forte
- 2 grands élastiques pour les pneus
- 2 billes en verre standard (diamètre 16mm) pour la roue arrière.
Avoir un tube de colle forte peut-être utile si les trous de vis sont un peu trop grands. C'est aussi pratique pour coller les elastiques sur les roues ou pour éviter que la prise du conteneur de piles ne se dévisse.
- Dans la liste de matériel j'ai indiqué de prendre un conteneur de 6 piles LR6 (soit 9V). Ces piles sont à brancher sur l'entrée régulée du shield. Cette solution permet d'assurer la stabilité de l'alimentation du robot même quand les piles commencent à faiblir. L'inconvénient c'est que ça oblige à avoir 6 piles pour chaque robot
- On peut utiliser un contenur de 4 piles, mais ce dernier doit être branché directement sur l'alimentation 5V derrière le régulateur (celui-ci est prévu pour des tensions de 7V à 12v). Le problème de cette solution est qu'elle surcharge un peu les composants au début de vie des piles et peut entrainer des instabilités de fonctionnement en fin de vie des piles.
- On peut utiliser une batterie :
- Soit on utilise une batterie 5V pour téléphone portable de ce style ou celui là à 8€ (non testées). La deuxième batterie se branche directement sur la prise micro-USB de l'Arduino.
- Soit on prend une batterie plus rustique : Batterie 3000mAh à 13,50€. Pour le branchement il faut prendre une fiche femelle dans lequel on vient visser les fils d'un cable coupé. On branche alors l'autre côté du câble sur n'importe quelle broche +5V et Ground du shield.
Les batteries ont l'avantage d'être bien régulées (et peuvent donc être directement branchées sur l'Arduino). L'autre avantage est qu'elles disposent, la plupart du temps, d'un bouton marche/arrêt.
Sans optimisation, lors des premiers essais réalisés on mesure que lors des déplacements le montage consomme 0,36A, puis quand l'afficheur LCD est allumé il consomme 0,05A et quand il ne fait rien 0,03A.
- Il doit être solide
- Les roues doivent être assez grandes pour que le robot avance assez rapidement
- Il faut garder un trou dans l'axe du moyeu des roues pour pouvoir insérer un crayon
- Il faut ajouter un système pour gérer le frottement sur le sol du chassis (idée : utiliser une bille encastrée dans un support)
Les parties conçues (voir répertoire 3D) :
- Deux roues rapides à imprimer de diamètre 9cm avec les encoches pour insérer en force les moteurs pas-à-pas et des rebords pour retenir les élastiques
- Un support pour insérer les billes pour stabiliser le robot
- Un châssis contenant les supports nécessaires pour fixer les composants. Utilisation des contrôleurs des moteurs pas-à-pas pour faire des "yeux".
L'impression de la version actuelle des pièces a pris 5h20 et consommé 98g de matière (PLA) avec les réglages suivant (sur une imprimante Volumic Stream20Pro):
- qualité normale (200 microns)
- densité de remplissage : 20%
- épaisseur des bords : 0.8 mm (au lieu de 1.2mm par défaut sur les profils Cura de l'imprimante)
Déplacement des roues au centre du châssis. Centre de gravité descendu au maximum.
Premier "vrai" modèle. Présence d'une roue encodeuse pour le reglage du pas qui a été enlevé dans la version actuelle (utilisation du clavier)
Rien de bien compliqué :
- Il faut écrire dans l'EEPROM de l'Arduino la distance réglée avec la roue encodeuse afin de relire la valeur au redémarrage.
- Il faut gérer le clavier analogique (valeurs non stables et mal réparties sur la plage analogique de l'Arduino)
- Il faut configurer le nombre de "pas" à faire pour avancer d'1 cm et tourner à 90° (selon la taille et l'entraxe des roues)
- On ajoute un "capot".
- On ajoute une interface bluetooth.
- On ajoute un servomoteur pour soulever/baisser le crayon.
- On ajoute des capteurs (suivi de ligne, distance) et on fait un Mbot like.
- Il sera possible également d'essayer d'autres moteurs pas-à-pas plus rapides.
Liste de matériel :
- 1 level converter : 2€
- 1 module bluetooth : 2.80€
- ou (pour remplacer les 2 liens au-dessus) 1 module+clé 2.4Ghz : 2,80€
- 2 servomoteurs : 2,40 €
- 1 capteur ultrason : 0,80€
Les premiers essais avec un module Bluetooth HC-06 sont concluants, je peux piloter mon robot avec mon téléphone portable (via l'application "Bluetooth Serial Controler") ou mon PC (via minicom) (voir répertoire android).
La prochaine étape est de piloter le robot via mblock et de faire une application Android pour contrôler le robot.
Le code est sous GPL2, les modèles 3D et la documentation sont sous CC-BY-SA.
- escornabot : un projet espagnol vraiment dans le même esprit mais qui demande un peu connaissance technique pour la partie clavier (soudure)