Programmation graphique avec Arduino et Ardublock

Mise à jour du 22 février 2016

Cet article date d’il y a plus d’un an, une éternité dans le monde de l’informatique. Je constate aujourd’hui que de plus en plus d’enseignants s’intéressent à Ardublock, mais il faut avoir conscience que ce logiciel est en fin de vie. Il n’est plus maintenu depuis longtemps et presque plus personne ne développe de nouvelles fonctionnalités d’Ardublock.

Depuis maintenant deux ans environ, de nouveaux logiciels de programmation ont été développés, la plupart à partir de Blockly conçu spécialement par Google pour faciliter justement le développement de ce type de logiciels pédagogiques. On trouve aujourd’hui des logiciels capables de remplacer avantageusement Ardublock. J’ai choisi d’utiliser Blockly Arduino qui a entre autre l’avantage de pouvoir facilement s’adapter à mes besoins pédagogiques. J’ai rédigé un article qui vous expliquera plus précisément les avantages de Blockly Arduino par rapport à Ardublock, ainsi que les points à améliorer prochainement.

 

La suite de cet article date de janvier 2015 et est obsolète !

En octobre 2013 je m’étais interrogé sur la place des ” solutions techniques programmées dans l’enseignement de la Technologie au collège “.

En novembre 2013 je m’étais interrogé sur la place d'” Arduino au collège ” en présentant la “succes story” que représente Arduino aujourd’hui, mais aussi en analysant ce qu’on pouvait en faire comparé à d’autres solutions concurrentes. A l’époque je cherchais des outils pour programmer graphiquement en Technologie au collège et je venais de découvrir Ardubock qui me semblait très prometteur. J’ai rapidement testé Arduino + Ardublock avec mes élèves au collège mais aussi au lycée, en Sciences de l’Ingénieur (1ère et Term SI). J’ai commencé par utiliser une carte Arduino Leonardo avec une plaque d’essai et des fils “volants”. J’ai essayé de consacrer un peu de temps assez régulièrement pour mieux exploiter les possibilités de ce couple Arduino + Ardublock avec le matériel disponible sur le marché. J’ai essayé aussi de développer des solutions plus adaptées à mes besoins pédagogiques.

Aujourd’hui le temps me manque toujours et je n’ai pas encore abouti, mais j’avance. Une réunion avec des collègues de Technologie collège m’a incité à prendre le temps d’écrire cet article pour essayer de faire le point, mais aussi pour partager mon expérience avec d’autres collègues, ici dans la Vienne, ou plus largement sur Internet. N’hésitez pas à laisser un commentaire pour me faire part de votre expérience.

Arduino et Ardublock au collège

Arduino est à la fois un type de cartes électroniques programmables et un logiciel qui permet de travailler avec ces cartes. En plus d’être libre et gratuit, ce logiciel a le gros avantage d’être devenu un standard mondial sur lequel une communauté très large développe rapidement de nouvelles applications, de nouveaux matériels et logiciels, notamment des “shields” qui sont des cartes d’extension que l’on connecte directement sur une carte Arduino, … le tout sous licences open hardware et open software (matériel et logiciels libres). Le matériel compatible Arduino est fabriqué aujourd’hui en grande série et distribué à des prix de plus en plus bas par de nombreux fournisseurs. Même la société A4 technologie, qui continue à développer son système Picaxe, essaie de “prendre le train en marche” en s’ouvrant un petit peu au monde d’Arduino (notamment avec son nouveau boîtier Autoprog-Uno), mais en conservant son modèle commercial basé sur des solutions fermées, incompatible avec la philosophie du libre.

Le logiciel Arduino a cependant le gros inconvénient de nécessiter une programmation en langage C. Son usage est donc hors programme, aussi bien au collège qu’au lycée. Le logiciel Ardublock est un logiciel libre et gratuit qui permet d’ajouter une interface de programmation graphique au logiciel Arduino. C’est un plugin Java qui convertit un programme graphique en langage C puis qui utilise Arduino pour la compilation (traduction en langage machine), la programmation USB, les interfaces de communication, … La syntaxe des programmes utilise des blocs qui s’emboîtent intuitivement comme des pièces d’un puzzle (syntaxe appelée “openblocs” utilisée également par Google dans le logiciel AppInventor qui permet le développement d’applications Androïd, même au collège). C’est très simple et ça limite fortement les sources d’erreurs. Ardublock est suffisamment simple et performant pour être utilisé aussi bien au collège qu’au lycée. Il est en développement constant depuis quelques années par une communauté très active à l’échelle mondiale mais reste encore assez peu utilisé, notamment dans l’éducation nationale. Je pense personnellement que Picaxe n’a pas beaucoup d’avenir comparé à Arduino + Ardublock qui pourrait devenir un bon remplaçant, à moindre frais.

Interface graphique d’Ardublock

L’interface graphique d’Ardublock ne possède que 6 boutons (et non pas 6 menus !) situés sur un bandeau en haut de l’interface : difficile de faire plus simple !

Le bouton “Téléverser vers l’Arduino” lance la compilation et upload le programme dans la mémoire de programme de la carte Arduino.

Le bouton “Moniteur série” permet d’échanger des données entre la carte Arduino et une fenêtre de l’écran, par exemple pour voir l’évolution d’un capteur ou d’une commande, pendant l’exécution du programme. Les données transitent par le câble USB (de manière bidirectionnelle). Cela remplace avantageusement l’écran LCD qu’on trouve habituellement sur les cartes de développement.

L'interface graphique d'Ardublock ne possède que 6 boutons (et non pas 6 menus) : difficile de faire plus simple (Source : Collège Jean Macé)

L’interface graphique d’Ardublock ne possède que 6 boutons (et non pas 6 menus) : difficile de faire plus simple (Source : Collège Jean Macé)

Une liste de librairies situées à gauche avec des boutons colorés permettent d’accéder à des blocs que l’on sélectionne et dépose sur l’espace de travail (cliquer / déposer) situé à droite, pour écrire le programme. Les librairies de la partie inférieure (en-dessous de blocs de code) correspondent à des blocs conçus pour des modules spécifiques, ceux d’un fabricant donnés par exemple. J’ai rarement vu un intérêt à ces dernières librairies.

On peut sélectionner le bloc correspondant à la structure de contrôle souhaitée : Boucle faire ..., Si ... alors ..., Tant que ... (Source : Collège Jean Macé)

On peut sélectionner le bloc correspondant à la structure de contrôle souhaitée : Boucle faire …, Si … alors …, Tant que … La qualité de la traduction varie en fonction des versions. Des sous-programmes peuvent être réalisés (blocs non visibles sur cette image). (Source : Collège Jean Macé)

Des librairies contiennent des blocs prédéfinis à sélectionner, comme ici les opérateurs mathématiques (Source : Collège Jean Macé)

Ici les opérateurs mathématiques. On ajoutera les blocs correspondant aux opérandes. (Source : Collège Jean Macé)

Interface graphique d’Ardublock, avec un programme pour faire clignoter une LED sur la broche 13. Des commentaires ont été ajoutés, ici en jaune pâle (ils peuvent être masqués éventuellement). Cliquer sur l’image pour zoomer. (Source : Collège Jean Macé)

Les blocs s’emboitent comme des pièces de puzzle de manière à empêcher la plupart des erreurs de syntaxe. Le programme ressemble alors plus à un algorithme qu’à un algorigramme. Cette écriture a l’avantage d’être simple : plus de traits dans tous les sens. L’écriture reste assez compacte. Déplacer ou copier des blocs se fait très simplement. Pour supprimer des blocs, on les glisse en dehors de l’espace de travail, tout simplement. De nombreux blocs sont éditables. On peut facilement changer un opérateur sans changer de bloc par exemple.

LDR + Led +BP EF V2

Autre exemple de programme écrit avec Ardublock : commande de la sortie 10 (lampe par exemple) à partir d’un capteur de lumière (entrée 5 mémorisée dans la variable Lum) avec deux seuils (< 500 ou > 600) et/ou de l’entrée 12 (bouton poussoir par exemple). Cliquer sur l’image pour zoomer. (Source : collège Jean Macé)

 

Le matériel de base pour utiliser Arduino au collège

La carte Arduino de base disponible actuellement s’appelle l’Arduino Leonardo (optimisée par rapport aux précédentes cartes Arduino Uno). Elle est amplement suffisante pour gérer la plupart des projets que nous menons au collège : 20 E/S dont 6 analogiques et 7 PWM, 32 Ko de mémoire Flash, … Elle coûte environ 20 € TTC. Un câble micro USB standard (celui de votre smartphone par exemple) suffit pour l’alimenter, la programmer, communiquer avec le PC, … Une alimentation 7 à 12 V est également possible par une entrée coaxiale (utile pour alimenter des cartes d’extension de plus forte puissance).

Carte Arduino Leonardo (Source : arduino.cc)

Cette carte Arduino Leonardo est disponible chez plusieurs fournisseurs (publicité involontaire) :

Présentation de la carte Arduino Leonardo sur le site officiel d’Arduino.
Chez Gotronic (21,50 € TTC le 18/01/15)
Chez Lextronic (19,74 € TTC le 18/01/15)
Chez Semageek (20,95 € TTC le 18/01/15)

Il existe des variantes de cette carte Arduino Leonardo. J’apprécie celle développée par DF Robot qui utilise des connecteurs de couleurs et qui a ajouté un connecteur qui permet d’ajouter notamment un module Bluetooth, tout en étant moins cher que la version de base (18 € TTC chez Gotronic le 18/1/15) :

Carte Arduino Leonardo DFRobot DFR0221 (Source : dfrobot.com)

Carte Arduino Leonardo DFRobot DFR0221.
Elle est disponible chez plusieurs fournisseurs (publicité involontaire) :
Chez Gotronic.fr (18 € TTC le 18/01/15)
Chez Zartronic (19 € TTC le 18/01/15)
Chez RobotShop (18,49 € TTC le 18/01/15)

Comment s’adapter à l’aspect minimaliste de la carte Arduino Leonardo

Cette carte Arduino Leonardo a deux inconvénients essentiellement pour moi.

– La connectique pour les entrées/sorties se limite à des barrettes femelles au pas de 2,54mm. On peut ainsi connecter directement des cartes d’extension (shields) : cette modularité est une des raisons du succès des cartes Arduino. On peut notamment ajouter une carte d’extension pour avoir une connectique plus fournie. Personnellement j’ai retenue cette carte d’interface d’entrée/sortie qui se connecte directement sur la carte Arduino Leonardo  :
. Carte d’extension (shield) d’entrée/sortie DFRobot DFR0625 V7

La carte d’extension (shield) d’entrée/sortie DFRobot DFR0625 V7 (Source : dfrobot.com)

Broche de la carte d’extension d’entrées/sorties DFRobot DFR0625 V7 (Source : dfrobot.com)

Présentation de la carte d’extension (shield) d’entrée/sortie DFRobot DFR0625 V7 sur le site officiel
Attention : bien choisir la version 7 dont le câblage est différent des précédentes versions.
Disponible chez plusieurs fournisseurs à partir de 14 € TTC (pub !) :
Chez Gotronic (17,40 € TTC le 18/01/15)
Chez Zartronic (14 € TTC le 18/01/15)
Chez l’Impulsion (14,2 € TTC le 18/01/15)

– La carte Arduino Leonardo a été conçu pour ne contenir que le minimum nécessaire pour programmer un microcontrôleur. C’est là encore une des clés du succès de ces cartes conçues pour des étudiants ou des bricoleurs peu fortunés, mais en tant qu’enseignant, j’aurais bien aimé une carte “tout en un” qui contient quelques fonctions supplémentaires de base pour faire de petites activités pédagogiques avec cette carte : 1 ou 2 boutons poussoirs, 1 ou 2 LEDs (il y en a une reliée à la broche 13 sur les cartes Arduino), au moins un petit capteur analogique (une photorésistance, un capteur de température, …), au moins une petite interface de puissance pour piloter directement un actionneur, … Je suis en train de développer une carte d’extension qui répondrait à ce besoin, mais ce projet n’avance pas au rythme ou je le souhaiterais. En attendant je me contente de la carte d’extension DFR0625 V7 de DFRobot ou j’utilise d’autres cartes comme celles-présentées ci-dessous.

Autres cartes Arduino et autres cartes d’extension pour piloter des moteurs

– La carte Arduino Romeo DFR0225 V2
Cette carte Arduino est basée sur la carte Arduino Leonardo. Elle coûte à peu près 2 fois plus cher que la carte Arduino Leonardo de DFRobot mais elle intègre la connectique pour les entrées/sorties ainsi qu’une interface pour deux moteurs (mais avec le circuit L298 qui est un peu dépassé). Elle se suffit donc à elle même.

Carte Arduino Romeo DFR0225 V2 : basée sur la carte Arduino Leonardo elle intègre des connecteurs d’entrées/sorties, une interface de puissance pour 2 moteurs, … (Source : dfrobot.com)

Brochage de la carte Arduino Romeo DFR0225 V2 (source : dfrobot.com)

Présentation de la carte Romeo sur le site DFRobot.
Carte Arduino Romeo chez Gotronic (36,50 € TTC le 18/01/15)
Carte Arduino Romeo chez Zartronic (35,00 € TTC le 18/01/15)

– Carte d’extension Pololu DRV8835 pour piloter 2 moteurs
Cette carte est très utile pour faire un petit robot pas cher. Cette petite carte d’extension (shield) se connecte directement sur une carte Arduino comme la Leonardo par exemple. On peut directement brancher chaque moteur sur les borniers à vis. Elle est performante (2V à 11V, 1.2A DC, transistors MOS, PWM à 250 kHz, …), très simple d’emploi, bien documentée, et très peu cher (6€ TTC chez exp-tech.de) mais encore peu diffusée. Elle peut aussi être utilisée avec la carte Arduino Leonardo associée à la carte d’extension (shield) d’entrée/sortie DFRobot DFR0625 V7 présentée plus haut.

Carte d’extension Pololu DRV8835 (verte) montée sur une carte Arduino Uno (bleue)  (Source : exp-tech.de)

Présentation de la carte d’extension Pololu DRV8835 chez exp-tech.de (6 € TTC le 18/01/15)
Version miniature sans bornier à vis chez exp-tech.de (4,20 € TTC le 18/01/15)

 

Installation d’Arduino

La dernière version d’Arduino est disponible ici (version 1.6.1 au 18/03/15).

Installation des drivers Arduino

Il suffit de brancher en USB une carte Arduino sur le PC qui installera les drivers (3).

“Installation” d’Ardublock

Ardublock n’est qu’un plugin Java d’Arduino. C’est une application Java qui ne nécessite aucune installation. On peut donc l’utiliser sans Arduino, sans les droits administrateur, pour développer un programme de manière graphique. Mais si on veut compiler le programme et le téléverser (uploader) vers une carte Arduino (pour l’exécuter), il faut intégrer Ardublock au logiciel Arduino installé au préalable sur un PC (ou un MAC, …). La solution que j’utilise est la suivante :
Après avoir installé Arduino, créer dans le dossier Program Files (x86) / Arduino / Tools, l’arborescence “ArduBlockTool / tool” puis coller dans “tool” l’application java d’Ardublock (fichier avec l’extension .jar).

Sur le blog officiel d’Ardublock (que je trouve assez peu intéressant pour ma part), les nouvelles versions ne sont pas diffusées car elles sont considérées comme des versions béta depuis le 12/07/2013 ! Je conseille donc de choisir une version béta récente d’Ardublock sur le site du projet en cours de développement :
http://sourceforge.net/projects/ardublock/files/

Personnellement j’aime bien la version du 04/07/2014 (notamment parce qu’elle permet une programmation multitâche avec les blocs Scoops). Je la préfère un peu à la version du 28/08/15 au niveau des librairies. J’ai intégrée la version du 04/07/2014 dans le fichier ci-dessous que vous pouvez directement décompresser et coller dans le dossier “Program Files (x86) / Arduino / Tools”. Rien d’autre à faire !

ArduBlockTool.zip (à décompresser et à coller dans “Program Files (x86) / Arduino / Tools”).

Arborescence Arduino

Arborescence Arduino pour l’installation du plugin Ardublock (Source : Collège Jean Macé)

 

Mise en œuvre d’une carte Arduino avec le logiciel Arduino (+ Ardublock)

1. Connecter la carte Arduino à l’ordinateur avec un câble USB / mico USB.
2. Ouvrir le programme Arduino (raccourci sur le bureau).
3. Dans le menu “Outils” sélectionner : Type de carte / Arduino Leonardo.
4. Dans le menu “Outils”, sélectionner le Port série correspondant à la carte Arduino. C’est normalement le dernier avec la chiffre le plus élevé (il est possible de le vérifier dans le gestionnaire de périphériques).
5. Dans le menu “Outils” sélectionner Ardublock.

Test et modifications de quelques programmes fournis

1. Copier le répertoire contenant les programmes à tester ou à modifier, dans le répertoire de travail de votre choix.
Quelques exemples de programmes sont disponibles dans le dossier ci-dessous (à décompresser) :
Prog Ardublock 18_01_15.zip
D’autres exemples de programmes seront fournis prochainement.
2. Dans Ardublock, cliquer sur “Ouvrir” puis sélectionner le premier programme à tester, Prog 1, dans votre répertoire de travail.
3. Cliquer sur “Téléverser vers l’Arduino” pour générer le programme (compilation) et l’envoyer dans la mémoire du processeur de la carte électronique programmable.
Remarque l’avancement de la compilation et du téléversement ne sont visibles que dans la fenêtre d’Arduino qui peut être regardée à cette occasion.
L’exécution se lance ensuite automatiquement. Le PC peut éventuellement être déconnecté, à condition de conserver une alimentation (USB ou coaxiale).
4. Observer le fonctionnement obtenu et comparer avec le fonctionnement souhaité.
5. Modifier le programme de manière à obtenir le fonctionnement souhaité.
Dans le programme n°1 fournis, modifier les durées lorsque la Led est allumée ou éteinte : cliquer sur la valeur à modifier, la modifier puis taper sur Entrer. Enregistrer éventuellement (bouton Enregistrer).
6. Tester à nouveau le programme en cliquant sur “Téléverser vers l’Arduino”. Modifier  à nouveau le programme si nécessaire.

Interface graphique d’Ardublock, avec le programme n°1 qui permet de faire clignoter une LED sur la broche 13. Des commentaires ont été ajoutés, ici en jaune pâle (ils peuvent être masqués éventuellement (Source : Collège Jean Macé)

Programme n°2 qui permet de piloter un servomoteur à rotation continue en fonction du niveau d’un capteur infra-rouge (représentatif d’un capteur de vide d’un aspirateur robot). (Source : Collège Jean Macé)

 Autre exemple de programme utilisé au lycée.

A suivre !