Robotique pédagogique basée sur Arduino/C
Jean-Daniel Nicoud
Introduction
Dans tous les pays, l'informatique a eu de la peine à trouver sa voie dans les collèges et lycées. L'introduction de l'informatique en Terminale S [1] est un progrès significatif et la documentation pour les maîtres a été bien préparée [2].
Notre préoccupation ici est uniquement la compréhension des principes de base des processeurs, de leurs composants et de leurs interfaces, décrits dans la section robotique [3]. Arduino apporte des solutions nouvelles faciles à mettre en oeuvre.
L'article de Hervé Haudiquet [4] détaille une pédagogie de projets dont le succès est confirmé. Mais ce qui réussit dans une école technique ne s'applique pas sans autre à un enseignant de collège ou lycée, enthousiaste mais isolé et disposant de peu de moyens et de peu d'heures de contact.
L'aspect robotique pratique dans le programme de terminale S [3] se base sur Lego NXT, un environnement utilisé en Suisse dans les petites classes, facile à mettre en oeuvre et bien documenté.
Cet article met en évidence le potentiel d'Arduino et Pinguino, un fouilli de modules bon marché avec un potentiel pédagogique certain, qui de plus ouvre la porte pour les étudiants les plus intéressés vers une activité de loisir riche et formative.
Arduino [5] a été développé en Italie dans l'esprit du logiciel libre. Il est multiplate-forme et son énorme succès, aux USA en particulier, signifie des prix bas, un choix de modules considérable et une documentation abondante, hélas trop orientée bricolage pour débutants jeunes et adultes. Arduino utilise des processeurs AVR et un environnement de programmation C. Arduino propose un environnement convivial et des fonctions qui cachent le processeur, ce qui a fait son succès : le processeur est une boîte noire entourée de pins numérotées, et on agit sur ces pins sans avoir besoin de comprendre la logique interne du processeur.
Pinguino [6] suit cette approche avec des processeurs PIC, et a ses afficionados (Intel et Motorola, vous vous souvenez ?). Pinguino, développé à Aix, est venu 8 ans après Arduino, et peine à se faire connaître malgré ses points positifs.
Arduino et Pinguino appellent un compilateur C, comme toutes les applications industrielles faites pour des microprocesseurs embarqués. C est proche du processeur, ce qui est intéressant dans un cours présentant l'architecture des systèmes informatiques.
Le but ici n'est pas de présenter Arduino, mais de montrer ce que l'on peut faire avec le matériel existant, qui permet d'explorer plus de notions que l'horaire scolaire peut le permettre. Il faut donc choisir, ce que l'enseignant saura faire en fonction de ses intérêts, des connaissances préalables de ses élèves et de ses rêves pédagogiques.
Compréhension des composants électroniques
L'étude du C sur écran commence par l'affichage d'un « Hello world ». Avec Arduino on programme un « blink » qui clignote une Led. C'est déjà d'une grande richesse qui n'est pas mise en évidence dans les innombrables pages internet qui expliquent Arduino :
Côté logiciel : contraintes syntaxiques du C, nécessité de déclarer les pins et leur fonctionnalité, états logique haut et bas, opération de compilation et de téléchargement dans le microcontrôleur cible.
Côté matériel : une Led et une résistance en série posent de nombreuses questions : valeurs minimales et maximales de la résistance, effet diode, chute de tension, options de câblage.
Côté physiologie : comment vérifier la persistance rétinienne, la sensibilité de l'oeil à des impulsions lumineuses de 1 milliseconde et moins, d'intensité variable.
Coté technologie : quelle puissance peut absorber la Led (en continu, en pulsé), la chute de tension dépend-elle de la couleur, comment câbler une Led tricolore et générer toutes les couleurs de l'arc-en-ciel ?
On voit la richesse pluridisciplinaire d'une carte à 20 euros connectée par USB à un PC ou Mac. Surveiller des entrées, mesurer des temps et des tensions est facile. Pourquoi ne pas utiliser Arduino dans d'autres cours ?
Les vendeurs d'Arduino et compatibles proposent des cartes avec bloc d'expérimentation (proto-board), jeu de résistances, Leds, capteurs, etc. La documentation existe aussi en français.
On peut se concentrer sur les composants électroniques et les capteurs ou favoriser l'aspect programmation en programmant un chenillard, une mélodie, un ascenseur. L'écran peut afficher des valeurs analogiques lues sur un capteur, voire dessiner un graphique, mettre en évidence les contraintes de l'électronique temps réel et la richesse des solutions informatiques.
|
|
|
Câblage d'un dé électronique sur bloc d'expérimentation |
Lecture d'un poussoir et génération de sons |
Test d'un capteur de distance à ultrason
(mesure du temps de vol) |
Représentation des nombres, instructions et structures
Tous les microcontrôleurs ont une structure interne basée sur des mots de 8 bits. L'arithmétique est délicate à bien expliquer (nombres négatifs, virgule flottante), mais les opérations logiques sont essentielles pour lire des capteurs ou modifier des pixels sur un écran. Arduino et les shields ou kidules facilitent les exercices pratiques.
Le C permet d'ignorer les facilités d'Arduino et de gérer les « ports » (groupes de 8 lignes autour du processeur). Les notions de bits, byte, binaire, hexadécimal, opérations arithmétiques et logiques sont alors faciles à expliquer et démontrer au niveau de l'architecture du processeur.
|
|
|
Kidule Dé pour avoir un module fiable et ne pas perdre de temps à câbler |
Microdules pour affichage en binaire et hexadécimal d'un port 8 bits |
Câblage d'un écran alphanumérique sur Arduino |
À noter que le logiciel gratuit Dauphin [7] est très complémentaire. Les accès au bus, l'exécution en pas-à-pas, l'action sur l'affichage 7 segments et l'écran graphique sont très bien expliqués.
Systèmes robotiques, capteurs, projets
Le terme robotique couvre des aspects multiples, avec l'avantage certain qu'il attire les jeunes qui naturellement rêvent de l'impossible à leur niveau. Il faut exploiter cet intérêt pour la robotique, qui a l'avantage d'être pluridisciplinaire, et amène des aspects constructifs, mécaniques, électronique, moteurs, capteurs, réglage, qui touchent beaucoup d'aspects formatifs.
Construire un robot est naturellement l'activité souhaitée par les jeunes. Dans une école technique, c'est relativement facile. Dans un lycée, il faut limiter son ambition. Lego est attractif, mais pour un lycéen c'est « bébé », pour l'enseignant c'est assez cher et on ne peut faire que ce qui a été prévu par le fabricant. Commander du Lego NXT par Arduino ou Pinguino, pour bénéficier des avantages des deux n'est pas facile : tension de 6V sur NXT alors qu'USB est 5V, signaux encodés astucieusement.
Le BoeBot Arduino serait une bonne solution s'il n'avait pas des moteurs non standard qui ne permettent pas d'étudier le PWM.
Ajouter un « shield moteur » sur une plateforme commerciale ou bricolée est une solution qui prend du temps, mais permet de mieux s'adapter à la fonctionnalité recherchée.
Didel a développé le robot Ddr2 [8] en interaction avec des enseignants suisses. Les moteurs sont 5V, faible courant, les capteurs d'obstacles et de distance sont faciles à utiliser et documentés en français.
|
|
|
BoeBot Arduino de Parallax |
Minishield pour commander deux moteurs |
Didel Ddr2 |
Le grand intérêt de la robotique est de mettre les élèves en face de « défis » qui les motivent. Si on dispose d'assez de temps, un défi spectaculaire est d'avoir des robots qui se suivent à la queue leu leu. Une étape précédente est le robot pompier (photovore), qui se dirige vers une lumière bien contrastée. Les capteurs de lumière forcent une bonne méthodologie de test, car les capteurs sont linéaires et notre oeil logarithmique ne nous aide pas à « sentir » leur données.
Conclusion
Arduino et Pinguino ont un succès qui encourage à surfer sur cette vague. Les années 90 ont vu le succès du Basic Stamp, Arduino a pris la relève.
Pour avoir de jolies applications, robotiques et autres, on achète des cartes et on charge les librairies associées, ce qui est commercialement excellent, mais ne satisfait pas le pédagogue qui veut expliquer les technologies de capteurs et actionneurs et les ressources prévues dans les processeurs pour les gérer.
Un effort pédagogique considérable reste donc à faire. Arduino est devenu un produit commercial qui cherche à épater le client, vise la facilité d'emploi, offre des cartes processeurs à des prix ébouriffants. La qualité pédagogique est délaissée, car elle concerne un trop petit marché.
En Suisse romande, des enseignants sont très actifs pour valoriser, en plus du NXT utilisé depuis longtemps, le BeeBot dans les petites classes, le Thymio (un robot Creative Common développé à l'EPFL) et le robot Ddr2 de Didel. La référence [9] donne accès à une vision assez complète de ces activités. Voir en page 10 « Quelques pistes pour commencer avec la robotique en classe ». Il y a d'autres informations utiles sur le site edurobot.ch.
Jean-Daniel Nicoud
http://www.didel.com/
J.-D. Nicoud a enseigné les mini-ordinateurs puis les microprocesseurs et interfaces à l'École Polytechnique Fédérale de Lausanne (EPFL) de 1968 à 2000.
Il a développé les Logidules pour faciliter la compréhension de la logique et des interfaces, développé la famille d'ordinateurs individuels Smaky (1976-1990), et suscité de nombreux projets et thèses en robotique mobile miniature.
La société Didel SA, créé en 2001, offre des composants spécialisés aux chercheurs du monde entier et développe des cartes imprimées pour que la compréhension des microcontrôleurs et de l'informatique temps réel soit pédagogiquement plus efficace.
Références
[1] Programme informatique pour terminale S :
http://www.education.gouv.fr/pid25535/bulletin_officiel.html?cid_bo=57572
[2] Eduscol, « Ressources pour l'enseignement de l'informatique en terminale S » :
http://eduscol.education.fr/cid60671/ressources-isn.html
[3] Eduscol, « Initiation à la robotique » :
http://cache.media.eduscol.education.fr/file/ISN_Tle_S/24/5/lyceeGT _ressource_ISN_20_06_Tle_S_32_Initiation_Robotique_218245.pdf
[4] Hervé Haudiquet, « Utilisation de la robotique pédagogique à Rouen »
http://www.aix-mrs.iufm.fr/recherche/publ/skhole/pdf/08.14.57-63.pdf
[5] Arduino : http://arduino.cc/fr/
[6] Pinguino : http://jmandon.free.fr/ ; http://www.ecole-art-aix.fr/auteur221.html
[7] Simulateur de Dauphin : http://www.epsitec.ch/dauphin
[8] Robot pédagogique Ddr2 : http://www.didel.com/diduino/Ddr2.pdf
[9] Résonances n° 7, avril 2012, Robotique en classes de Suisse romande : http://www.edurobot.ch/?p=488
|