Monik's bot¶
- Contenu
- Monik's bot
Introduction¶
Objectifs du projet¶
Ce projet est réalisé avec Thierry Bombardier et avec l'aide de Monique Nguyen.
L'objectif est de créer un robot (de type véhicule) qui permet de sensibiliser des enfants de cinq à six ans à la programmation.
Le principe de programmation sera un système de gommettes représentant des bits logique (4 bits et une horloge). Les gommettes seront collées sur une feuille de papier et selon leur position seront traduites vers une instruction (avancer, reculer, tourner...).
Outre le fait que la programmation de ce robot ne nécessite pas d'ordinateurs ou de tablette pour le programmer. Cette méthodes renoue avec les premières heures de l'informatique qui utilisait des cartes perforées.
Elle permet de limiter significativement le temps passé devant les écrans.
Robot Gommette
Présentation des différentes parties¶
1. Base motorisée : supporte la batterie la batterie, la carte microcontrôleur, les contrôleurs pour les moteurs pas à pas, une pompe à eau pour des scénarios tel que pompier, jardinier ...
2. Lecteur de gommettes : fait défiler la "feuille programme" et lit les instructions à l'aide d'une barre de capteurs infrarouges.
3. Feuille programme : facilement intégrable, le codage s'inspire des codes visuels qu'emploie certains professionnels (Marshallers, grutiers ...)
Le codage des instructions¶
- Intuitif, le codage des instructions s'inspire des codes visuels qu'emploient certains professionnels.
Construction - Paramétrage¶
La construction de la base motorisée ainsi que le mise au point du programme ont été validés au cours de trois ateliers de découverte de la robotique avec de jeunes (makers).
Fabrication du robot¶
L'objectif est de pouvoir fournir des enseignants d'écoles primaires avec des robots à environ 30 euros. Il faudra en produire une certaine quantité et les stagiaires de seconde pourraient travailler sur la fabrication.
Cahier des charges¶
On résume ici les objectifs à atteindre sur le robot.
Lecteur de gommettes | Détecte la couleur noire, 4 bits (16 instructions différentes), doit s’arrêter à la fin des instructions |
Autonomie | Doit pouvoir tenir plusieurs heures |
Instructions | Avancer, reculer, 90° gauche, 90° droite, arroser, demi tour droite, demi tour gauche |
Prix | environ 30€ l'unité |
Conception¶
Mécanique¶
La partie mécanique du robot a été conçue par Thierry, après une première version un peu petite et mal équilibrée au niveau des masses, le modèle actuel est le suivant :
Nom de la pièce | Description | Fichier FreeCAD | Image |
Plaque inférieure | Partie inférieure du "châssis" du véhicule | attachment:V2_Plaque_Inf.FCStd | |
Flancs moteurs | Côtés du véhicule qui vont maintenir les moteurs du robot (pas de distinction entre la gauche et la droite) | attachment:V2_Flanc_Moteur.FCStd | |
Plaque supérieure | Partie supérieure du véhicule, c'est sur cette plaque que l'on pourra fixer les cartes électroniques notamment. | attachment:V_Beta_Plaque_Sup.FCStd | |
Jantes | Ce sont les roues que l'on fixe directement en sortie des moteurs, le "pneu" est un joint torique en caoutchouc. | attachment:2xJante_40.stl (version avec 3 pneus pour plus d'adhérence) |
Les différentes pièces du châssis s'assemblent avec de la colle assez simplement. Les pièces sont dessinées de sorte à ce qu'on ne se trompe pas dans le sens d'assemblage.
Les moteurs sont vissés sur les flancs et on utilisera des entretoises pour fixer les cartes.
Le lecteur de gommettes est au dessus de la carte ESP32 et fixé sur des entretoises.
La liste du matériel et le prix est disponible sur le tableur suivant : attachment:prix fabrication_v2.ods (attention le fichier n'est peut etre pas à jour) disponible dans le dossier du projet (attachment:moniksbot.zip).
Sur la page d' Inès_Fualdes se trouve son travail concernant le support de la pompe à eau. EDIT : Thierry a finalement repris ce travail pour modéliser un nouveau support, voir avec lui pour récupérer le bon fichier.
Électronique¶
Le véhicule sera alimenté par une batterie de type 18650 au lithium. Elle délivre une tension de 7.5V ce qui est parfait pour les moteurs mais trop élevé pour le contrôleur. Ce dernier est un ESP32 qui sera programmé en C++ et connecté aux deux moteurs de mouvement, au moteur du lecteur de gommettes ainsi qu'au lecteur de gommettes. Le lecteur de gommettes est un ensemble de 5 émetteurs/récepteurs d'infrarouges et qui renvoie 5 bits (1 s'il y a réflexion, 0 sinon). La dernière partie est l'arrosoir qui est une pompe à courant continu et un réservoir d'eau.
Programmation¶
Lecteur de gommettes¶
Comme vu précédemment, il y a 5 bits sur le lecteur de gommettes. Le premier sera tout le temps noir (0) pour faire office d'horloge et indiquer au robot quand est ce qu'il doit lire les autres bits. Les 4 autres bits servent à contrôler le robot. Les codes utilisés ont été pensés pour être visuels et refléter des gestes que l’enseignant(e) peut faire avec les mains pour indiquer les instructions. La table de traduction est disponible ci-après :
Code | Description |
0110 | Avancer |
1001 | Reculer |
0011 | 45° à gauche |
1100 | 45° à droite |
1010 | 90° à droite |
0101 | 90° à gauche |
1101 | Arroser |
0000 | Fin du programme |
Lorsque le premier bit passe de 1 à 0, le moteur avance pour arriver à environ la moitié de la gommette, puis on lit les autres bits, et selon le code obtenu on appelle les fonctions correspondante.
Dans le détail, le code fonctionne avec des drapeaux indiquant l'état des commandes et des variables globales :Nom du drapeau | Type de variable | Commentaire |
Reader.init | Booléen | Drapeau permettant d'indiquer si le lecteur de gommettes a été initialisé en appuyant sur le bouton poussoir. Lorsqu'il est initialisé, le lecteur lit les gommettes et exécute les taches. Lorsqu'il ne l'est pas, le robot attend l'initialisation. |
command.running | Booléen | Drapeau permettant de savoir si le robot est entrain d'effectuer une tache ou s'il est en attente d'une nouvelle ligne de gommettes. |
command.name | Chaine de caractères | Ensemble des 4 bits du dernier code lu par le lecteur. Permet d'exécuter l'instruction voulue. |
command.counter | Nombre entier | Compteur pour savoir combien d'itérations le robot doit encore exécuter l'instruction "command.name". |
reader.counter | Nombre entier | Compteur permettant d'ajuster la position de la feuille pour avoir le capteur en face du centre de la gommette. |
D'autres variables sont évidemment présentes dans le code, mais celles ci sont les plus importantes et permettent de comprendre le fonctionnement du code.
A chaque itération le robot vérifie l'initialisation du lecteur, mesure le temps pour faire clignoter la LED, vérifie si une action est en cours ou s'il faut lire la ligne suivante. Tout cela est dans la fonction paper_loop() du fichier paper_control.ino. Lorsqu'il effectue une action (avancer par exemple) il fait tourner les moteurs d'un pas à chaque itération et utilise le compteur pour savoir quand s’arrêter.
Commande à distance¶
Une autre fonctionnalité du robot est la commande par WiFi. Pour le contrôle à distance, le robot utilise également un système de drapeaux et un serveur web asynchrone qui écoute les requêtes GET qu'il reçoit. Un interrupteur permet de changer le mode (gommettes ou wifi) AVANT la mise sous tension du robot. Le détail du fonctionnement de la partie commande sans fil peut être retrouvée sur la page de l'atelier vacances de l'été 2024.
Fusion des programmes¶
L'objectif est que le robot puisse fonctionner soit avec les gommettes, soit avec la commande sans fil. Lors de la mise sous tension du robot, l'état de l'entrée switchMode est lu et on appelle ainsi la fonction d'initialisation correspondante. Puis dans la fonction loop(), selon le mode choisi on utilisera donc différentes fonctions pour lire et exécuter les commandes.Le programme regroupe toutes les fonctions ensemble et est un peu complexe à lire. Des commentaires sont placés régulièrement pour aider la compréhension du programme. Le programme est disponible dans le fichier commande_gommettes.zip
Les librairies suivantes seront nécessaires :
- esp32 (librairie de cartes édité par Espressif Systems et en version 2.0.17)
- AsyncTCP (par dvarell)
- ESPAsyncTCP (par dvarell)
- ESPAsyncWebServer (par lacamera)
Le dossier complet est téléchargeable ici : attachment:moniksbot.zip
Guide de fabrication¶
On va maintenant décrire comment fabriquer ce robot. Vous pouvez télécharger le dossier complet avec tous les fichiers ici : attachment:moniksbot.zip
La liste des pièces est présentée dans le tableau suivant :
AJOUTER TABLEAU AVEC TOUS LES ELEMENTS
Fabrication des pièces¶
Châssis¶
Pour commencer, on découpe les plaques de bois pour fabriquer le chassis, dans le dossier vous pouvez choisir la version pour le contre-plaqué (5mm d'épaisseur) ou la version MDF (3mm).Vous pouvez sinon télécharger ces fichiers ici :
- Contre plaqué 5mm : CP5_Flanc_Moteur.svg (à découper en double) , CP5_Plaque_Bas.svg et CP5_Plaque_Dessus.svg.
- MDF 3mm : V5_Flanc.svg (à découper en double), Plaq_Dessous.svg et V5_Plaq_Dessus.svg.
Une fois découpées, vous pouvez les peindre ou les vernir. Nous verrons plus tard les étapes d'assemblage.
Jantes¶
Dans le dossier, vous trouverez le fichier Jante_40-BodyChamfer.stl qui est le meme quelque soit la version (CP ou MDF). La jante est à importer dans un slicer pour pouvoir l'imprimer en deux fois. Vous pouvez également trouver dans le dossier le fichier FreeCAD pour pouvoir modifier la forme de la jante.
Une fois les 2 jantes imprimées, on peut insérer un insert fileté pour des vis de 3mm.
AJOUTER PHOTO
Lecteur de gommettes¶
Pliage des tiges de ferraille¶
Des tiges métalliques sont utilisées sur le lecteur de gommettes pour surélever la feuille de papier par rapport au capteur infrarouges. Pour plier ces tiges correctement, il faut découper au laser les fichiers suivants :Assemblage¶
Une fois l'ensemble des pièces fabriquées comme indiquées précédemment, nous allons passer à l'assemblage du robot gommette.
En ce qui concerne l'assemblage du robot gommette, il se résume en 7 étapes :
1 - Montage du châssis du robot
2 - Montage des moteurs gauche et droite sur le châssis du robot
3 - Fixation des composants électroniques sur le châssis du robot
4 - Câblage électrique
5 - Importation programme
6 - Montage du lecteur gommette
7 - Soudure des éléments électrique (Interrupteur On/OFF et Wifi/Gommette, Bouton poussoir lancement cycle programme)
8 - Montage support batterie
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Étape 1 : Montage du châssis du robot
Pour cette étape, vous aurez besoin :
- 1 plaque inférieur
- 2 flancs moteur
- 1 plaque supérieur
- Pour commencer l'assemblage du robot, il faut tout d'abord assembler le châssis.
Pour cela, il faut utiliser les pièces détachées du châssis qui ont été réalisées lors de la phase de fabrication du châssis.
*Pour cela, veuillez vous rendre dans la partie de la fabrication du châssis.
- Une fois l'ensemble des plaques découpées en votre possession, vous pouvez maintenant les assemblées les unes avec les autres de la manière suivante:
*Pour assembler le châssis, il sera nécessaire d'utiliser de la colle à bois afin de coller les différentes pièces du châssis
Voici les différentes étapes pour assembler le châssis du robot :
1) Assemblage de la plaque inférieure avec les flancs moteurs.
Pour cette étape, il faut assembler la plaque inférieur avec les flancs moteurs, comme ci-dessous
2) Assemblage du sous-ensemble du 1) avec la plaque supérieure.
Une fois l'assemblage du châssis terminé, voici ce que vous devais obtenir :
Vous pouvez maintenant continuer l'assemblage du robot avec le montage des moteurs.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Étape 2 : Montage des moteurs gauche et droite sur le châssis du robot
Pour cette étape, vous aurez besoin :
- 2 moteurs pas à pas
- 2 jantes
- 2 grands élastiques
- 4 vis
- 4 écrous
- Cette étape consiste à monter les moteurs à pas à pas sur les côtés du châssis.
Pour vous aider avec le montage des deux moteurs, voici une photo d'exemple :
2) Assembler les élastiques et les jantes :
Veuillez monter les deux élastiques sur les jantes, comme ci-dessous.
3) Insérer les roues dans les moteurs
- Une fois les moteurs correctement montés au châssis, il faut ensuite monter une jante sur chaque monteur.
Une fois le montage des roues sur les moteurs, vous pouvez maintenant fixer les composants électroniques.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Étape 3 : Fixation des composants électroniques sur le châssis du robot
Pour cette étape, vous aurez besoin :
- 2 pilotes moteurs pas à pas
- 1 carte de développement
- 12 petites entretoises
- 12 écrous
Composants nécessaires
1) Fixez les entretoises sur le châssis avec les écrous :
Pour cette étape, nous allons monter les entretoises qui vont servir de support aux différents composants électroniques.
Entretoises montées
- Une fois les entretoises montées sur le châssis, il suffit juste de venir visser chaque composants sur les entretoises, comme sur la photo ci-après :
!!!Ne pas monter l'esp32 et les grandes entretoises pour l'instant!!!
Vous pouvez maintenant passer au câblage électrique de ces composants.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Pour cette étape, vous aurez besoin :
- Câbles électriques
- 1 pilote moteur pas à pas
- 1 moteur pas à pas
- Afin de réaliser le câblage électrique, nous utiliserons un schéma à retrouver ci-dessous.
Ce schéma vous permettra de ne pas faire d'erreur lors du câblage du robot.
Une fois le câblage réalisé, il devrait rester 3 câbles rouges, 2 câbles violets, 1 câble jaune, 1 câble vert, qui ne sont branchés qu’à une seule extrémité, nous les souderons plus tard aux interrupteurs et à la batterie.
Une fois le câblage correctement réalisé, vous pouvez maintenant passer au montage du support lecteur gommette.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Cette étape consiste à importer les programme du robot au sein de la carte ESP32.
Carte ESP32
L'importation du programme se réalise en 4 étapes :
- Ouvrir le fichier Arduino : "commande_gommette"
- Branchement carte ESP32 à l'ordinateur
- Sélectionner dans l'interface Arduino le type de carte, dans notre cas "ESP32-WROOM-DA Module".
- !!! Vérifier la version de la carte ESP32 : 2.0.17 !!!
- Cliquer sur la flèche en haut à gauche sur le bouton "Téléverser" pour téléverser le programme sur la carte
- Placez l'ESP32 sur la carte de développement
Une fois le programme importer dans la carte ESP32, vous pouvez maintenant l'assembler sur la carte de développement.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Étape 6 : Montage du support lecteur gommette
Pour cette étape, vous aurez besoin de :
- 4 grandes entretoises
- 4 petites entretoises
- 16 vis
- 6 écrous
- 4 petites tiges métalliques
- 1 grande tige métallique
- 2 arceaux métalliques
- 1 lecteur infrarouge
- 2 parties de l'axe inférieur roulement
- 2 parties de l'axe supérieur roulement
- 2 entretoises axe supérieur roulement
- 2 petits élastiques
- 1 corps lecteur gommette
- 2 joues lecteur
- 2 ressorts
- 2 roulements à billes
Les tiges petites et grandes ainsi que les arceaux métallique sont a découpées au préalable de l'assemblage.
1) Fixez les grandes entretoises sur le châssis.
Nous allons tout d'abord fixer les grandes entretoises sur le châssis qui vont servir de support au corps lecteur gommette.
2) Vissez le corps du lecteur gommette sur les grandes entretoises.
Nous allons ensuite visser sur les grandes entretoises le corps du lecteur gommette.
3) Vissez le lecteur infrarouge sur le corps du lecteur gommette.
Ensuite, il faut visser le lecteur infrarouge sur le corps du lecteur gommette.
4) Fixer la joue droite sur le corps du lecteur.
Ensuite, il faut visser cette joue droite sur corps du lecteur.
5) Vissez le moteur pas à pas et le pilote moteur sur la joue droite.
!!! Ne pas oublier sur fixer un ressort sur cette joue !!!
6) Montage axes supérieur et inférieur.
Pour cela, il faut tout d'abord assembler les axes séparément avant de les monter sur les corps lecteur du robot.
=> Assemblage de l'axe inférieur roulement :
Pour cet assemblage, vous aurez besoin de deux éléments tels que :
- Axe inférieur roulement
- 4 petits élastiques
=> Assemblage de l'axe supérieur roulement
Pour cet assemblage, vous aurez besoin de différents éléments, tels que :
- Axe supérieur roulement
- Entretoise axe supérieure roulement
- Roulement à bille (2 unités)
- Grande tige métallique
7) Fixer l’axe inférieur dans le moteur pas à pas
8) Insérer les petites tiges en métal
Pour cette étape, vous aurez besoin de 4 petites tiges métalliques.
9) Montage joue gauche et de l'axe supérieur lecteur
Tout d'abord, il suffit d'insérer l'embout de l'axe supérieur dans la joue droite, comme ci-dessous.
!!! Ne pas oublier de visser le ressort comme sur la photo ci-après !!!
10) Fixer les 2 arceaux métalliques.
Pour cette étape, vous aurez besoin de deux arceaux métalliques.
Une fois l'ensemble de ces étapes réalisées, vous pouvez maintenant passer à l'étape suivante.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Etape 7 : Soudure des éléments électrique
Cette étape consiste à souder les différents câbles électriques aux interrupteurs et bouton poussoir.
Si vous n'avez jamais soudé, il faut respecter à chaque fois les mêmes étapes pour souder 2 câbles entre eux :
- Dénuder le câble avec une pince à dénuder
- Mettre de l'étain sur le bout de câble dénudé
- Entortiller les 2 bouts de câbles entre eux
- Mettre de l'étain sur les 2 câbles pour les sceller l'un avec l'autre
- Positionner une gaine thermo sur la soudure
- Chauffer la gaine avec le souffleur d'air chaud
1) Soudure de l'interrupteur ON/OFF.
Pour cette étape, nous allons souder les différents câbles qui vont servir à alimenter le système en électricité.
Une fois le câblage réalisé, nous obtenons 3 fils rouges et le câble d'alimentation (qui sera branché à la plaque de développement).
Pour vous aider à la soudure de ces câbles, veuillez trouver ci-après une photo avec les différents câbles à souder et une autre les 4 câbles soudés (les 3 du système électrique et 1 qui est le câble d'alimentation positif).
Il faut aussi souder le câble négatif du câble d'alimentation à l'adaptateur de la batterie.
Une fois les 4 câbles soudés, il faut venir les souder sur l'interrupteur ON/OFF, plus précisément sur la patte du milieu de l'interrupteur.
Ensuite, il faut souder ce même interrupteur à la batterie.
Pour cela, il faut souder un câble à la patte du haut de l'interrupteur à l'adaptateur de la batterie côté positif.
!!! Attention, ne pas brancher la batterie avec les câbles tant que le robot n'a pas été vérifié par un encadrant. !!!
2) Soudure bouton poussoir départ cycle
!!! Avant cette étape, en fonction du diamètre du bouton poussoir, il faut adapter le trou du châssis à ce diamètre en le perçant avec un foret à bois . !!!
Pour cette étape, il faut souder les 2 câbles violet sur les 2 pattes du bouton poussoir (sans oublier la gaine thermo).
3) Soudure interrupteur wifi/gommettes
Pour cette étape, il faut souder les 2 câbles jaune et vert sur cet interrupteur.
Il faut souder le fil jaune sur la patte de bas et le fil vert sur la patte du milieu.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Etape 8 : Montage support batterie
Ensuite, il suffit de visser le support de la batterie dans le robot comme sur la photo ci-après.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Etape 9 : collage roulette robot
Pour l'assemblage du robot, il suffit de coller la roulette sous le robot, comme sur l'exemple ci-après.
Identifications et résolutions problèmes rencontrés lors de la mise en fonctionnement des robots :¶
I - Identifications problèmes :
Lors de la création de 4 robots, nous avons rencontrés plusieurs problèmes qui sont :
- Le débranchement des câbles
- Mauvaise dimension du trou sur le châssis prévu pour le bouton poussoir
- Importation programme dans la carte ESP32
- Test fonctionnalité des robots
II - Résolutions des problèmes rencontrés :
1) Débranchement des câbles
Rebranchement à l'aide du schéma de câblage
2) Mauvaise dimension du trou sur le châssis prévu pour le bouton poussoir
Perçage du trou au bon diamètre
3) Importation programme dans la carte ESP32
Lors de l'importation du programme arduino dans la carte ESP32, nous avons rencontrés certains problèmes tels que :
- Compilation du programme
Solution : Vérification de la version de la bibliothèque liée à la carte ESP32
- Téléversement du programme
Lorsque nous voulons téléverser le programme sur une première carte le logiciel Arduino , nous indique une erreur "ne reconnait pas la carte".
Afin de résoudre ce problème, nous avons eu l'aide de Gautier, qui nous aider à régler notre problème d'importation du programme.
!!! Lors de l'importation de programme, veuillez à bien vérifier que le driveur de votre ordinateur soit bien compatible avec votre carte ESP32 !!!
Si jamais ce n'est le cas, voici quelques étapes à suivre afin d'obtenir ce driveur :
a) Ouvrir le menu Windows de votre ordinateur
b) Cliquer sur "Outils administration Windows"
c) Faites un clic droit sur "Gestion de l'ordinateur", puis sur "Plus"
d) Cliquer sur "Exécuter en tant qu'administrateur"
e) Entrer le mot de passe administrateur
A demander à un encadrant
f) Sélectionner le bon driveur compatible avec la carte ESP32
4) Test fonctionnalité des robots
- Utilisation d'une carte ESP32 déjà programmée
- Installation de cette carte sur chaque robots
- Observation du fonctionnement des robots
Après avoir testé nos robots, en ayant correctement suivi le tutoriel, nous avons pu observer que les robots fonctionnent correctement.