L'idée est de créer un robot éducatif destiné aux enfants de maternelle et élémentaire 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)
Au fil des évolutions du projet, l'OoRoBoT apporte tout un lot de fonctionnalités complémentaires :
- Présence d'un écran LCD de 2 lignes de 16 caractères permettant à l'enfant de visualiser le programme qu'il écrit. Cet écran associé au clavier permet aussi de régler le robot très précisement
- Ajout d'une interface Bluetooth permettant de piloter le robot à distance et ainsi permettre de lui donner des ordres complexes (boucles, tracé d'arc de cercle ...)
- Ajout d'un servomoteur afin de baisser/lever un crayon
Actuellement le robot peut être utilisé de deux façons différentes (comme indiqué dans sur ce poster) :
- Pour les enfants de 4 à 7 ans : programmer des parcours sur des plateaux (voir les plateaux disponibles dans le répertoire /doc/exercices)
- Pour les enfants de 7 à 12 ans : réaliser des tracés avec un langage de programmation par blocs via une tablette Android (programme disponible ici ). Vous pouvez vous entrainer à faire des tracés sur cette page Web (reproduction de l'interface disponible dans l'application Android)
Pour suivre l'évolution du robot vous pouvez suivre le mot dièse #OoRoBoT sur Twitter
Le FabLab de Lannion propose des kits au prix de 40€ contenant :
- Tout le matériel électronique nécessaire (voir plus bas dans la page)
- La dernière version du châssis en MDF réalisé à la découpeuse laser
La notice de montage est disponible ici.
Si vous voulez une version du robot en impression 3D avec la possibilité de baisser/lever un crayon je vous invite à voir cette version du projet réalisé par Delphine Thibault.
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 projet profitant des imprimantes 3D disponibles au travail, de mes compétences en Arduino et du temps donné par mon employeur pour réaliser des side-project. L'idée était aussi de pouvoir utiliser ce robot comme traceur (comme la mythique tortue "Jeulin" des années 80).
Au final, le robot revient à moins de 30€ (si vous le fabriquer vous-même) et ne demande aucune soudure. Le châssis peut être imprimé sur une imprimante 3D possédant un plateau de 20cm sur 20cm ou en utilisant une découpeuse laser.
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 à angle droit
- tourner à gauche à angle droit
- faire une pause
- effacer la dernière commande
- lever ou baisser le crayon au centre du robot
- À 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 faisant 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)
- Le nombre de pas que les moteurs doivent faire pour avancer de 10cm
Pour changer de ligne il faut appuyer sur les touches "avancer" ou "reculer", pour changer les valeurs il faut appuyer sur les touches "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"
Le robot peut aussi être programmé à distance (Bluetooth) via une application Android (disponible ici).
- 1 arduino nano : 2.40€ (3.50€ avec le cable USB)
- 1 sensor shield : 1€
- 2 moteurs pas à pas : 4.50€
- 1 clavier 3x4 boutons : 2,00€
- 1 écran LCD 2x16 caractères sur interface I2C : 1,70€
- 1 conteneur de piles LR6 : 1,10€
- 1 servomoteur pour lever/baisser un crayon: 1.20€
- 2 roues "billes" : 2,50€
- 1 lot de cables "dupont" de 20cm femelle-femelle : 0,85€
- des vis M2x5mm : 0,70€
- des vis M3x5mm : 1€ : il y en a besoin de 8 en tout par robot, vous pouvez récupérer des vis utilisées pour tenir les disques durs ou les cartes mères
Pour le Bluetooth :
- 1 module Bluetooth HC-06 : 2.60€
- 1 bouton on/off (choisir le moins cher): 1€
1 convertisseur de niveau : 0.50€: ce composant est optionel, en effet bien que la documentation du module Bluetooth HC-06 indique que le niveau de tension pour la communication doit être à 3.3V, le module fonctionne bien avec la tension native de l'Arduino (5V)
Soit un total d'environ 21€ (ou 25€ avec le Bluetooth) et surtout aucune soudure n'est nécessaire ! De plus les moteurs pas-à-pas, bien que lents, sont très silencieux.
- 2 grands élastiques pour les pneus.
- des petits élastiques pour le système permettant de baisser/lever un crayon
- Un tube de colle liquide (forte, à bois ...) qui est utile pour coller certaines parties ou au cas où les trous de vis soient 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 5V pour téléphone portable de ce style à 7€ à brancher directement sur la prise micro-USB de l'Arduino.
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 des roues pour pouvoir insérer un crayon
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 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)
A la vue des demandes qui commencent à affluer pour avoir un robot, j'ai conçu un modèle à fabriquer avec une découpeuse laser comme celle disponible au FabLab de Lannion. Cette version en découpe laser permet maintenant de lever/baisser un crayon.
Ajout d'un système pour pouvoir lever et baisser un crayon.
Les fichiers pour la découpe laser (oorobot.svg pour modifier le modèle avec Inkscape et oorobot.dxf à charger dans le logiciel de votre découpeuse laser) se trouve dans le répertoire 2d. Il ne faut garder que les pièces en blanc :
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 réglage du pas qui a été enlevé dans la version actuelle (utilisation du clavier)
Vous trouverez 2 programmes dans le répertoire arduino de ce dépôt :
- init-bluetooth: ce programme permet d'initialiser le module Bluetooth (lui donner un nom au format "OoRoBoT-XXXX" et affecter le code d'appairage 0000). Ce programme n'est à charger qu'une seule fois.
- oorobot: le programme principal du robot
Brancher l'Arduino Nano sur le "sensor shield".
Branchement du clavier sur le port A0 (détacher un groupe de 3 fils):
- Brancher un fil entre la broche VCC du clavier et la broche V de l'Arduino
- Brancher un fil entre la broche GND du clavier et la broche G de l'Arduino
- Brancher un fil entre la broche Out du clavier et la broche S de l'Arduino
Branchement de l'écran LCD sur une des ligne I2C (détacher un groupe de 4 fils):
- Brancher un fil entre la broche GND de l'écran et la broche GND la ligne I2C choisie
- Brancher un fil entre la broche VCC de l'écran et la broche 5V la ligne I2C choisie
- Brancher un fil entre la broche SDA de l'écran et la broche SDA la ligne I2C choisie
- Brancher un fil entre la broche SCL de l'écran et la broche *SCL la ligne I2C choisie
Branchement des cartes de contrôle des moteurs pas-à-pas :
- Moteur roue droite sur les ports 4, 5, 6 et 7 de l'Arduino (détacher un groupe de 4 fils pour les broches IN et un groupe de 2 fils pour les broches - et +):
- Brancher un fil entre la broche IN1 du contrôleur et la broche S du port 4 de l'Arduino
- Brancher un fil entre la broche IN2 du contrôleur et la broche S du port 5 de l'Arduino
- Brancher un fil entre la broche IN3 du contrôleur et la broche S du port 6 de l'Arduino
- Brancher un fil entre la broche IN4 du contrôleur et la broche S du port 7 de l'Arduino
- Brancher un fil entre la broche - du contrôleur et la broche G du port 7 de l'Arduino
- Brancher un fil entre la broche + du contrôleur et la broche V du port 7 de l'Arduino
- Moteur roue gauche sur les ports 8, 9, 10 et 11 de l'Arduino (détacher un groupe de 4 fils pour les broches IN et un groupe de 2 fils pour les broches - et +):
- Brancher un fil entre la broche IN1 du contrôleur et la broche S du port 8 de l'Arduino
- Brancher un fil entre la broche IN2 du contrôleur et la broche S du port 9 de l'Arduino
- Brancher un fil entre la broche IN3 du contrôleur et la broche S du port 10 de l'Arduino
- Brancher un fil entre la broche IN4 du contrôleur et la broche S du port 11 de l'Arduino
- Brancher un fil entre la broche - du contrôleur et la broche G du port 10 de l'Arduino
- Brancher un fil entre la broche + du contrôleur et la broche V du port 11 de l'Arduino
Brancher les moteurs pas-à-pas sur les contrôleurs. Marquer les moteurs droite et gauche afin de les différencier facilement lors du montage final.
Branchement du servomoteur sur le port 3 : brancher le câble de �que le fil marron soit sur la broche G du port 3, le fil rouge sur la broche V et le fil orange sur la broche S
Attention pour les personnes ayant commandé ce modèle de shield il faut inverser les fils rouge et marron du servomoteur! Pour cela utiliser un petit tournevis plat et soulever légèrement le petit ergot au bout d'un des fils (rouge ou marron) puis tirer légèrement sur ce dernier, il devrait venir facilement. Faire de même avec le deuxième fil. Rebrancher les fils en les inversant par rapport à leur position initiale. Vous pourrez maintenant faire en sorte de respecter la consigne pour que "le fil marron soit sur la broche G du port 3, le fil rouge sur la broche V et le fil orange sur la broche S"
Branchement du module Bluetooth :
- Brancher le cable de l'interrupteur (détacher un groupe de 2 fils):
- Brancher un fil entre la broche G du port 12 de l'Arduino en face du fil noir de l'interrupteur
- Brancher un fil entre la broche V du port 12 de l'Arduino en face du fil rouge de l'interrupteur
- Brancher l'autre extrémité de l'interrupteur de manière à ce que le fil noir soit en face de la broche GND du module Bluetooth et le fil rouge en face de la broche +5V
- Brancher le module à l'Arduino (détacher un groupe de 2 fils) :
- Brancher un fil entre la broche RX du module Bluetooth et la broche S du port 13 de l'Arduino
- Brancher un fil entre la broche TX du module Bluetooth et la broche S du port 12 de l'Arduino
Découper les modèles de touches (disponibles ici) et les insérer dans le clavier, pour cela il faut sortir les touches (ça vient facilement en tirant dessus) puis enlever la partie transparente (vous pouvez utiliser une paire de ciseaux pour faire levier), placer les découpes et remettre en place les touches comme ci-dessous (pour bien placer le clavier, il faut que les fils sortent sur la droite) :
Télécharger et installer le programme Arduino IDE sur votre PC. Brancher l'Arduino avec un cable USB sur votre PC. Vous devriez voir apparaître dans le menu "Outils/Port" une nouvelle entrée (/dev/ttyUSBx sous Linux, COMx sous Windows). Sélectionner dans "Outils/Type de carte" le modèle "Arduino Nano"
Il faut installer les dépendances suivantes en allant dans le menu "Croquis/Inclure une bibliothèque/Gérer les bibliothèques" puis en cherchant les bibliothèques à installer :
- AccelStepper v1.57.1 by Mike McCauley
- LiquidCrystal I2C v1.1.2 by Frank de Brabander
Si vous voulez changer le nom du module Bluetooth (sinon votre robot sera visible sous le nom "HC-06" ou "HC-05") il faut faire la manipulation suivante :
- Brancher votre Arduino sur votre PC. La LED du module Bluetooth doit clignoter rapidement
- Débrancher le cable arrivant sur la broche VCC du module Bluetooth.
- Faire un pont sur l'entrée EN comme sur le schéma ci-dessus
- Rebrancher le cable arrivant sur la broche VCC du module Bluetooth. La LED du module Bluetooth devrait clignoter moins rapidement
Télécharger le programme init-bluetooth, décompresser le et l'ouvrir avec Arduino IDE. Téléverser le programme (2ème bouton en haut à gauche de l'interface) sur l'Arduino. Ce programme va configurer le module Bluetooth pour :
- Donner un nom au format "OoRoBoT-XXXX"
- Configurer le code PIN à 0000
- Configurer la vitesse de communication à 9600 bauds
Vous pouvez utiliser le "moniteur série" (Menu "Options/Moniteur série") du programme Arduino IDE pour voir où en est la configuration du Bluetooth.
Le nom de votre robot sera affiché sur l'écran LCD. Si ce n'est pas le cas vérifier le contraste de votre écran (en tournant le petit potentiomètre derrière l'écran avec un tournevis cruciforme jusqu'à avoir un bon contraste entre l'affichage des caractères et le fond de l'écran). Si c'est bon vous pouvez enlever le pont sur l'entrée EN du module Bluetooth. Débranchez et rebranchez le cable arrivant sur la broche VCC du module Bluetooth. Votre module Bluetooth devrait clignoter rapidement, il est prêt à être appairé. Vérifiez que vous voyez bien le robot dans la liste des périphériques Bluetooth depuis votre téléphone/tablette.
Télécharger le programme oorobot, le décompresser et l'ouvrir avec le programme Arduino IDE.
Téléverser ensuite le programme oorobot sur l'Arduino. Ce programme va piloter tout le robot. Après le téléchargement il est temps de vérifier que le câblage est bien réalisé :
- Vérifier le branchement du clavier, un appui sur un bouton doit afficher des caractères sur l'écran LCD
- Vérifier le contraste de l'écran : ce dernier doit s'allumer au démarrage, par contre si vous ne voyez rien, pas de panique c'est peut-être tout simplement parce que le contraste est mal réglé. Pour changer ce paramètre il suffit de tourner le petit potentiomètre derrière l'écran avec un tournevis cruciforme jusqu'à avoir un bon contraste entre l'affichage des caractères et le fond de l'écran
- Marquer le dessus du servomoteur : l'axe du moteur doit être sur la gauche du composant quand la partie mobile est devant vous. Vérifier que ce dernier bouge bien si vous appuyer sur les boutons lever/baisser le crayon
- Vérifier que les moteurs fonctionnent bien : lancer une commande "avance" pour vérifier que les moteurs tournent dans le bon sens, faire de même avec une commande "tourne à droite".
- Vérifier le sens de l'interrupteur : jouer avec le bouton de l'interrupteur pour voir dans quelle position il allume ou éteint le module Bluetooth. Veillez à noter ces états afin de bien positionner plus tard l'interrupteur sur le châssis.
- Vérifier que le module Bluetooth fonctionne : activer le Bluetooth sur votre téléphone/tablette et vérifier que vous pouvez bien vous appairez avec le robot (code PIN 0000). Si vous le pouvez vérifier ensuite que vous pouvez piloter le robot avec l'application Android fournie (voir plus bas)
Tout est OK? Vous pouvez passer au montage des composants sur le châssis.
Ordre de montage des composants sur le châssis 2D :
Vous trouverez la documentation en ligne ici et au format PDF ici.
Ordre de montage des composants sur le châssis 3D :
- Débrancher les moteurs pas-à-pas des contrôleurs
- Fixer les roues en force sur les moteurs pas-à-pas
- Faire passer les contrôleurs des moteurs dans les trous placés derrière le support de l'Arduino
- Visser l'Arduino sur son support
- Visser les controleurs sur leurs support (garder la cohérence contrôleur moteur droit fixer à droite du robot)
- Visser le clavier sur son support en passant les cables entre le châssis et le clavier
- Plier les broches de l'écrans pour les mettre à la verticale. Visser ensuite l'écran sur le châssis
- Entrer en force les moteurs pas-à-pas dans leur emplacement. Faire passer leurs fils jusqu'à leur contrôleur respectif. Visser ensuite les vis M3 pour maintenir les moteurs au châssis
- Placer le bloc de pile devant l'Arduino
Le robot est maintenant pilotable via une application pour mobile/tablette (Android pour le moment) conçue par un collègue (merci Julien) avec Ionic (voir répertoire OoRobotIonicApp) et utilisant Blockly :
Vous pouvez télécharger l'APK ici
Afin d'envoyer les programmes sur l'Arduino on a définit un pseudo langage simple sous la forme :
[<lettre>;<chiffre>*]*
Combinaisons possibles
- U (up). Les chiffres correspondent aux nombres de mm à faire.
- D (down). Les chiffres correspondent aux nombres de mm à faire.
- R (right). Les chiffres correspondent à l'angle à faire.
- L (left). Les chiffres correspondent à l'angle à faire.
- B (begin loop). Les chiffres correspondent au nombre de répétitions des commandes suivantes (jusqu'à trouver la lettre E)
- E (end loop). Pas de chiffre attendu
- P (pause). Faire une attente de x ms
- W (waiting). Les chiffres correspondent au temps d'attente (en ms) entre 2 mouvements.
- ! baisser le crayon
- | lever le crayon
- c pour préparer un arc de cercle, les chiffres correspondent au diamètre de l'arc
- a lance le début du traçage de l'arc en prenant comme angle les chiffres qui suivent
Pour dessiner un héxagone :
!U50R60U50R60U50R60U50R60U50R60U50R60|
ou
!B6U50R60E|
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)
- scott : un projet assez proche de l'OoRoBoT dans l'esprit et le matériel utilisé. La différence principale se situe dans le fait que l'OoRoBoT peut fonctionner de façon autonome avec son clavier et son écran.