{"id":3392,"date":"2017-06-26T06:18:30","date_gmt":"2017-06-26T05:18:30","guid":{"rendered":"http:\/\/telefab.fr\/?p=3392"},"modified":"2026-04-30T17:33:59","modified_gmt":"2026-04-30T15:33:59","slug":"developpement-dun-robot-pour-apprendre-a-programmer","status":"publish","type":"projet","link":"https:\/\/hub.imt-atlantique.fr\/fablab\/projet\/developpement-dun-robot-pour-apprendre-a-programmer\/","title":{"rendered":"D\u00e9veloppement d&rsquo;un robot pour apprendre \u00e0 programmer"},"content":{"rendered":"<p>Par Alexandre GRANGIER, Maxime Mazouffre, Pierre Hamoir et Ahmed Kamoun<\/p>\n<p><strong>Contexte<\/strong><\/p>\n<p>Dans le cadre de la r\u00e9forme des programmes d\u2019enseignement en France, l\u2019initiation \u00e0 la programmation a pris plus d\u2019importance et l\u2019appr\u00e9hension de la pens\u00e9e scientifique et devenue un objectif de l\u2019\u00e9cole. Ceci n\u00e9cessite un certain mat\u00e9riel d\u00e9di\u00e9.<\/p>\n<p>En grande distribution, on trouve diff\u00e9rents mod\u00e8les de robots destin\u00e9s \u00e0 apprendre la pens\u00e9e algorithmique aux enfants de diff\u00e9rents niveaux tels que le Bee-Bot [1] le Cubetto [2] ou le Thymio [3].<\/p>\n<p>Aussi sympathiques qu\u2019ils soient, ces robots restent \u00e0 co\u00fbt \u00e9lev\u00e9 ce qui ne permet pas leur utilisation en classe. L\u2019objectif du projet est donc de cr\u00e9er un prototype de robot \u00e9volutif en utilisant le mat\u00e9riel du Fablab de l\u2019\u00e9cole qui soit \u00e0 co\u00fbt raisonnable et qui permet ensuite la fabrication de plusieurs robots qui seront utilis\u00e9s \u00e0 diff\u00e9rents niveaux de l\u2019enseignement.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Mat\u00e9riel utilis\u00e9 <\/strong><\/p>\n<p>En plus du m\u00e9dium 3mm qui nous a servi \u00e0 d\u00e9couper la structure du robot, nous avons utilis\u00e9 le mat\u00e9riel suivant :<\/p>\n<p>\u2022 1 carte Arduino UNO<br \/>\n\u2022 1 ARDUINO MOTOR SHIELD R3<br \/>\n\u2022 2 moteurs<br \/>\n\u2022 2 roues<br \/>\n\u2022 6 boutons<br \/>\n\u2022 1 bille \u00e0 roulement libre<br \/>\n\u2022 1 batterie rechargeable<br \/>\n\u2022 2 LEDs<br \/>\n\u2022 Des fils de connexion<\/p>\n<p><strong>Conception du robot<\/strong><\/p>\n<p>Nous pr\u00e9sentons dans cette partie la mani\u00e8re dont nous avons construit notre robot, et c\u2019est ce qui sera transmis aux \u00e9coles souhaitant le construire elles-m\u00eames sous forme de mode d\u2019emploi d\u00e9taill\u00e9 transmis sur une cl\u00e9 USB contenant par ailleurs les pi\u00e8ces \u00e0 d\u00e9couper n\u00e9cessaires au format .dxf pour pouvoir les concevoir \u00e0 la d\u00e9coupeuse laser.<\/p>\n<p>Une fois les pi\u00e8ces imprim\u00e9es, l\u2019assemblage du squelette est assez simple et intuitif. Dans un souci de clart\u00e9, nous avons donn\u00e9 un nom sp\u00e9cifique \u00e0 chaque pi\u00e8ce, cela facilitant grandement la compr\u00e9hension du mode d\u2019emploi (voir figure 11).<\/p>\n<figure id=\"attachment_3394\" aria-describedby=\"caption-attachment-3394\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-3394\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/1-300x208.jpg\" alt=\"\" width=\"300\" height=\"208\" \/><\/a><figcaption id=\"caption-attachment-3394\" class=\"wp-caption-text\"><em>Figure 11<\/em><\/figcaption><\/figure>\n<p>Nous avons commenc\u00e9 par ins\u00e9rer les arches 1 et les arches 2 dans les fentes de la plateforme 2 pr\u00e9vues \u00e0 cet effet, en faisant bien attention \u00e0 alterner les arches 1 et les arches 2, et en commen\u00e7ant par mettre une arche 1 dans la fente la plus proche du trou rectangulaire qui accueillera plus tard la batterie (figure 12).<\/p>\n<p>Nous avons ensuite pass\u00e9 le cercle central dans les fentes des arches en le passant par le dessus (figure 12).<\/p>\n<figure id=\"attachment_3395\" aria-describedby=\"caption-attachment-3395\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-3395\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/2-300x217.jpg\" alt=\"\" width=\"300\" height=\"217\" \/><\/a><figcaption id=\"caption-attachment-3395\" class=\"wp-caption-text\"><em>Figures 12 et 13<\/em><\/figcaption><\/figure>\n<p>Nous avons finalement ajout\u00e9 la plateforme 3 pour verrouiller le tout (figure 13). Avant de coller le squelette \u00e0 la plateforme 1, nous y avons ajout\u00e9 les composants. Nous avons commenc\u00e9 par les roues pour lesquelles il suffisait d\u2019utiliser les fentes de la plateforme 1 (figure15), puis la bille stabilisatrice donc la hauteur peut \u00eatre ajust\u00e9e (figure 16), et enfin la carte arduino et le shield que nous avons viss\u00e9s (figure 17).<\/p>\n<figure id=\"attachment_3396\" aria-describedby=\"caption-attachment-3396\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-3396\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/3-300x103.jpg\" alt=\"\" width=\"300\" height=\"103\" \/><\/a><figcaption id=\"caption-attachment-3396\" class=\"wp-caption-text\"><em>Figures 15, 16 et 17<\/em><\/figcaption><\/figure>\n<p>Pour terminer, nous avons fix\u00e9 la batterie en la glissant dans le trou qui lui est destin\u00e9 sur la plateforme 2, et nous avons fix\u00e9 les boutons sur la plateforme 3 et les soudant directement aux fils les reliant \u00e0 la carte arduino (figure 18). Nous avons finalement associ\u00e9 les deux parties que sont la plateforme principale (plateforme 1) et le squelette (plateformes 2 et 3 et arches) en les collant avec de la colle \u00e0 bois (figure 19).<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/4.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-3397\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/4-300x185.jpg\" alt=\"\" width=\"300\" height=\"185\" \/><\/a><\/p>\n<p><em>Figures 18 et 19<\/em><\/p>\n<p><strong>Modes de fonctionnement du robot<\/strong><\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/5-e1498424613468.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3398\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/5-e1498424613468.jpg\" alt=\"\" width=\"1169\" height=\"574\" \/><\/a><\/p>\n<p><strong>a)Transmission de commande <\/strong><\/p>\n<p>Dans un premier temps, le robot peut \u00eatre utilis\u00e9 avec des boutons. Pour cela, il a \u00e9t\u00e9 n\u00e9cessaire d\u2019utiliser six diff\u00e9rentes actions \u00e9l\u00e9mentaires pour pouvoir permettre une totale mobilit\u00e9 :<\/p>\n<p>&#8211; Avant<br \/>\n&#8211; Arri\u00e8re<br \/>\n&#8211; Rotation Droite<br \/>\n&#8211; Rotation Gauche<br \/>\n&#8211; Annuler<br \/>\n&#8211; D\u00e9marrer<\/p>\n<p>Le SHIELD Arduino utilis\u00e9, le DK Electronics v1.0 (Figure 1), bloquant l\u2019acc\u00e8s aux diff\u00e9rents pins de la carte, il a fallu utiliser les ports analogiques (A0-A5) en mode tout ou rien pour pouvoir r\u00e9aliser le montage.<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/6.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3399\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/6.jpg\" alt=\"\" width=\"799\" height=\"545\" \/><\/a><\/p>\n<p>Cependant, n\u2019utilisant que deux moteurs, nous avons pu enlever du syst\u00e8me un microcontr\u00f4leur (\u00e0 droite sur la Figure 1) pour pouvoir lib\u00e9rer certains pins de commande afin d\u2019ajouter des fonctionnalit\u00e9s au robot.<\/p>\n<p>L\u2019utilisation de l\u2019utilisation d\u2019un encodage pour la commande \u00e0 effectuer posant probl\u00e8mes nous avons opt\u00e9 pour une liste de longueur fixe, en effet une limitation de 10 mouvements \u00e9tait impos\u00e9e par le format (long) des entiers en Arduino. Nous avons choisi de laisser jusqu\u2019\u00e0 30 mouvements pour \u00e9viter d\u2019utiliser trop de m\u00e9moire et de trop utiliser la batterie<\/p>\n<p>Lorsque que le robot est construit, il faut effectuer des tests pour savoir quelles valeurs rentrer. Lors du projet Dec, nous avons utilis\u00e9 le m\u00eame mat\u00e9riel et nous avons constat\u00e9 que dans la pratique, nous devions ajuster la fonction pour chaque voiture. Par exemple, si le moteur droite subit plus de frottements que le gauche, il faut augmente la vitesse de celui-ci.<\/p>\n<p><strong>b)Application <\/strong><\/p>\n<p>En plus de la possibilit\u00e9 de pilotage du robot gr\u00e2ce aux boutons, les enfants pourront aussi le piloter utilisant une application Android pr\u00e9vue pour cet usage (Figure 2). L\u2019application pr\u00e9sente les six boutons pr\u00e9sents sur le robot et permet les m\u00eames fonctionnalit\u00e9s. Figure 2 : interface de l\u2019application<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/7.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3401\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/7-272x300.jpg\" alt=\"\" width=\"272\" height=\"300\" \/><\/a><\/p>\n<p>L\u2019application enregistre le choix de mouvements de l\u2019utilisateur dans leur succession. L\u2019envoi de l\u2019information par Bluetooth ne se fait qu\u2019au moment o\u00f9 l\u2019utilisateur appuie sur le bouton Start. Le dernier bouton Reset est con\u00e7u pour r\u00e9initialiser le robot.<\/p>\n<p><strong>c)Ardublock <\/strong><\/p>\n<p>Afin de permettre \u00e0 des classes plus \u00e9lev\u00e9 d\u2019utiliser le robot, nous laissons la possibilit\u00e9 de brancher un c\u00e2ble USB directement sur la carte Arduino.<br \/>\nAinsi ces \u00e9l\u00e8ves pourront coder directement le comportement qu\u2019ils veulent que le robot adopte juste en programmant directement le comportement des moteurs, donnant une plus grande flexibilit\u00e9 aux mouvements possible du robot, et permettant l\u2019int\u00e9gration dans l\u2019algorithme des boucles ou des tests<\/p>\n<p>Un capteur infrarouge suiveur de ligne ou un capteur ultrason pourront \u00eatre ajout\u00e9s dans le robot \u00e0 la demande du client offrant de nouvelles fonctionnalit\u00e9s, pour aller plus loin dans l\u2019apprentissage de la programmation.<\/p>\n<p>La programmation \u00e9tant assez compliqu\u00e9 pour des \u00e9l\u00e8ves de primaire, elle est faite au moyen d\u2019Ardublock (Figure 3), une interface simplifi\u00e9 de programmation Arduino.<\/p>\n<p><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/8.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3402\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2017\/06\/8-300x271.jpg\" alt=\"\" width=\"300\" height=\"271\" \/><\/a><\/p>\n<p>Un algorithme reprenant le code initial du fonctionnement du robot sera mis a disposition \u00e0 titre d\u2019exemple, pour introduire les \u00e9l\u00e8ves au fonctionnement d\u2019Ardublock (les limitations du logiciel ne permettant pas de capture d\u2019\u00e9cran correcte, il n \u2018appara\u00eet pas dans cet article).<\/p>\n","protected":false},"author":1,"featured_media":3397,"parent":0,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"categories":[15,20],"type_projet":[],"class_list":["post-3392","projet","type-projet","status-publish","has-post-thumbnail","hentry","category-formation","category-projets"],"acf":{"objectifs":"","categorie":"formation","fichiers_associes":""},"_links":{"self":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/3392","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet"}],"about":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/types\/projet"}],"author":[{"embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":2,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/3392\/revisions"}],"predecessor-version":[{"id":10704,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/3392\/revisions\/10704"}],"wp:attachment":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/media?parent=3392"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/categories?post=3392"},{"taxonomy":"type_projet","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/type_projet?post=3392"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}