Logiciels de programmation graphique pour le collège : Scratch pour Arduino (S4A) vs Ardublock

Mise à jour du 22 février 2016

Cet article date d’il y a près 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 d’avril 2015 : considérer qu’aujourd’hui Ardublock peut avantageusement être remplacé par Blockly Arduino !

Scratch et Ardublock sont deux logiciels libres, multiplate-formes, conçus pour l’apprentissage des bases de la programmation sous forme graphique. Tous deux utilisent une syntaxe très semblable (avec des blocs qu’on assemblent) développée par le MIT sous le nom d’Openblocks (Ardublock utilise la version Java).
Lien vers le site officiel de Scratch pour Arduino.
Lien vers un article que j’ai écrit sur Arduino + Ardublock.
Lien vers un article que j’ai écrit pour utiliser Arduino + Ardublock avec une clé USB Linux (donc très utile pour travailler sur nos PC sur lesquels on ne peut rien installer).

 

Interfaces de programmation : Ardublock permet des programmes plus lisibles

Scratch est plutôt destiné aux enfants, dès 8 ans, et vise d’abord des fonctions multimédia très ludiques. Ardublock est plus généraliste dans les fonctions visées mais son interface reste très simple et dépouillée (quelques boutons sans aucun menu), adaptée à des enfants. L’interface graphique de Scratch est plus complexe mais reste adaptée à des enfants. Les deux sont traduits en français (la traduction est parfois incomplète pour Ardublock, suivant les versions). Ce sont tous les deux des logiciels assez récents qui souffrent encore de défauts de jeunesse, d’autant qu’ils ne sont pas développés par des sociétés marchandes.

Pour la saisie d’un programme, Scratch propose beaucoup de blocs spécifiques au multimédia alors qu’Ardublock propose plus de blocs génériques. Scratch limite les broches utilisables pour les entrées/sorties et ne permet pas de donner un nom aux entrées/sorties (Analog 2 n’est pas très parlant par exemple). Scratch ne permet pas de structurer un programme avec des sous-programmes (bien utile pour masquer certaines parties d’un programme). Ardublock permet donc de présenter les programmes de manière un peu plus parlante, ou simplifier des programmes dont on ne veut analyser qu’une partie.

Interface d'Ardublock avec un exemple de programme (Source : Collège Jean Macé)

Interface d’Ardublock avec un exemple de programme (Source : Collège Jean Macé)

Une partie de l'interface de Scratch pour Arduino avec un exemple de programme (Source : Collège Jean Macé)

Une partie de l’interface de Scratch pour Arduino avec un exemple de programme (Source : Collège Jean Macé)

Scratch pour Arduino : la carte électronique est gérée comme un périphérique d’E/S et ne peut pas fonctionner de manière autonome

A la base, Scratch permet seulement de saisir graphiquement un programme et de l’exécuter sur un ordinateur (PC, Mac, …). Une version de Scratch, appelée S4A (Scratch for Arduino), permet de concevoir un programme qui va aussi gérer des entrées / sorties d’une carte électronique programmable de type Arduino. Pour cela, Scratch communique avec une carte Arduino par une liaison série (via un câble USB) de manière à ce que l’ordinateur qui exécute Scratch puisse lire des entrées ou écrire sur des sorties d’une carte Arduino. Il faut pour cela que la carte Arduino exécute un programme spécifique, le firmware de S4A, qui gère cette communication en permanence (toutes les 75 ms) avec l’ordinateur. La carte Arduino est gérée comme un simple périphérique d’entrée/sortie.
Avec Scratch pour Arduino (S4A), le programme conçu par l’élève n’est pas compilé : aucune ligne de codes ne peut être montrée aux élèves. Il n’est pas transféré vers la carte Arduino qui ne l’exécute pas car elle gère seulement la communication avec l’ordinateur. C’est l’ordinateur qui assure seul le traitement des informations selon le programme conçu par l’élève. Aucun fonctionnement autonome de la carte électronique n’est prévu : sans l’ordinateur, le système ne fonctionne pas !

 

Arduino + Ardublock : un outil simple de développement pour cartes Arduino

Ardublock fonctionne selon un principe tout à fait différent. Pour que l’élève puisse tester son programme, il doit le compiler, c’est à dire générer un programme exécutable par la carte Arduino choisie, puis le téléverser (uploader) dans la mémoire de la carte Arduino. Ces tâches sont réalisées en une seule étape en cliquant simplement sur l’icône « téléverser ». C’est essentiellement le logiciel Arduino qui gère ces fonctions. Ardublock n’est qu’un plugin qui gère l’interface graphique de programmation. Le programme conçu par l’élève est alors réellement exécuté par le processeur de la carte Arduino. Le câble USB ne sert plus qu’à alimenter la carte Arduino et éventuellement à communiquer des données pour afficher par exemple la valeur d’un capteur sur l’écran de l’ordinateur. On peut alimenter la carte Arduino par une batterie et obtenir un fonctionnement complètement autonome.

 

La place de la programmation dans le programme actuel de la Technologie au collège

Le programme actuel de la technologie au collège précise assez peu de choses sur la programmation. Dans le programme de 4e, on peut voir uniquement deux compétences :
– Identifier les étapes d’un programme de commande représenté sous forme graphique. Niveau 1.
– Modifier la représentation du programme de commande d’un système pour répondre à un besoin particulier et valider le résultat obtenu. Niveau 2.
Le B.O. précise aussi ceci :
 » La programmation  d’un support automatique ne demande pas l’écriture de lignes de code. Elle doit être graphique si le support présente une interface qui le permet. Le système automatique doit être simple. L’objectif est de comprendre de manière globale l’impact de la modification sur le fonctionnement du système. »
Lien vers un article que j’ai écrit sur la place de la programmation dans le programme de la Technologie au collège.

 

La place de la programmation dans le projet de programme de la Technologie au collège pour la rentrée 2016

Le projet de programme pour la technologie au collège, pour la rentrée 2016, précise un petit peu plus la place de l’algorithmique et de la programmation en Technologie, de la 5è à la 3è.
Dans le socle commun apparaît cet objectif pour le domaine 2 :
« Produire, implanter un programme simple pour répondre à un besoin, à un problème technique » avec un niveau taxonomique 2 en 5e et un niveau 3 en 4e et en 3e.
Il précise aussi quelques uns des savoirs faire.
Dans le domaine de la conception est évoquée la « chaîne numérique de conception« .
Dans le domaine de « l’algorithmique et de la programmation » :
– Analyser un programme informatique en identifiant la nature des instructions, leur rôle dans la chaîne d’information et leurs effets sur le comportement du système technique commandé.
– Concevoir et représenter un algorithme en vue de programmer le comportement d’un système technique.
– Utiliser un environnement de programmation graphique pour réaliser un programme commandant un système technique simple
– Corriger/déboguer un programme en fonction des résultats obtenus.

 

Conclusion quant à l’utilisation des logiciels de programmation avec des élèves en Technologie au collège

Que ce soit par rapport au programme actuel de la Technologie au collège ou par rapport au projet pour 2016, j’ai choisi de n’utiliser qu’Ardublock (associé au logiciel Arduino) car il me parait plus cohérent avec les objectifs pédagogiques.

Avec Scratch pour Arduino, l’élève peut travailler sur la plupart des compétences visées mais il ne verra pas complètement la chaîne numérique de conception puisqu’il ne générera pas de programme exécutable et ne l’implantera pas dans le système qu’il doit commander. Il ne pourra pas non plus analyser complètement le rôle de la carte Arduino qu’il utilisera comme un simple périphérique d’entrée/sortie qui communique via une liaison USB, avec des capteurs, des actionneurs, … car c’est l’ordinateur qui gère tout avec Scratch.

Avec Ardublock on peut montrer plus clairement le principe d’un système automatique programmable. On peut montrer le rôle de la carte Arduino qui traite vraiment les informations à partir du programme qu’il aura généré et téléversé dans sa mémoire. Le rôle de l’ordinateur apparaît plus clairement comme un simple outil de développement, éventuellement comme une interface de dialogue. Avec Ardublock l’élève peut concevoir et réaliser un objet technique programmable, dont le fonctionnement pourra être autonome et représentatif de solutions techniques réelles, par exemple dans le cadre d’un Enseignement Pédagogique Interdisciplinaire. Avec Scratch, ce n’est tout simplement pas possible, et l’utilisation d’une liaison sans fil ne change pas grand chose au problème.

D’un point de vue pédagogique, Ardublock me parait donc nettement plus adapté que Scratch, et il n’est pas plus compliqué à utiliser, au contraire.
Scratch peut être intéressant quand on veut gérer des images ou du son avec un ordinateur, sans carte électronique Arduino. Mais avec Ardublock on peut gérer du son en utilisant une carte Arduino et un module audio, sans être connecté à un ordinateur.

Pour ne pas multiplier les logiciels, je pense qu’Arduino + Ardublock suffit pour travailler au collège sur les notions de systèmes automatiques programmables, y compris avec les nouveaux programmes de la technologie au collège.
Scratch peut être un bon outil au cycle 3 (jusqu’en 6 ème), mais Ardublock me semble préférable dès la cinquième.