Simple Arduino

J'ai un Arduino... Je viens de m'y mettre. Le but de cette session est de comprendre les principes de base du jouet. Pour faire simple, un Arduino est un kit d'entrée/sorties électroniques basé sur un microcontrôleur Atmel (un ATMega328P). Arduino est le concept ouvert de ce kit d'entrée sortie. Les plans sont en licence CC, le software en GPL. Il est de plus intégré dans Debian.

Concrètement, comment ça marche ?

Le microcontrolleur joue le rôle d'une sorte de micro-ordinateur à lui tout seul. Il est équipé d'un peu de mémoire, d'un peu de flash, d'un CPU et d'une palanquée d'entrée/sorties analogiques et numériques (6 entrées analogiques, . Pour faire fonctionner l'ensemble, il faut d'abord une source d'énergie. Le 5V de l'USB fait bien l'affaire mais on peut brancher également un adaptateur jack 2.1mm amenant entre 9 et 12V. Celui de mon disque dur externe fera bien l'affaire.

Le premier branchement...

C'est l'angoisse ! On hésite toujours un peu avant de brancher la bête sur le port USB. Mais, dans mon cas, ça s'est bien passé: après quelques clignotements, le programme de base s'est lancé: il éteint et allume une LED interne. Un point important puisque vous êtes sous GNU/Linux (quoi , ce n'est pas encore le cas ? Courrez vous inscrire à la plus proche Install Party): vous n'avez aucun pilote à installer, contrairement aux autres plateformes (MS Windows/Mac OSX). En effet, pour communiquer avec l'Arduino, la liaison se fait par l'USB et la puce qui gère le signal côté Arduino est une FTDI (une puce spécialisée dans le traitement du bus USB avec le reste). Pour communiquer avec cette puce, il faut un pilote. Ce pilote étant "libre", il est intégré au noyau Linux ! Peut-être que GNU/Linux n'est pas prêt pour le Desktop mais au moins, il est prêt pour le hardware hacking !!!

Comment développer ?

Facile, il suffit d'installer les bons paquets ! Il existe un ensemble de paquets dédiés à cette tâche. Lorsque j'ai regardé ce que le site Arduino proposait, j'ai halluciné: toutes la chaîne de création , de l'IDE jusqu'au programme pour envoyer le binaire semblait être en Java ! Après enquête, il s'avère qu'il existe un paquet qui fait tout ça mais avec les bons outils: il s'agit de arduino-core. Il impose d'installer le minimum et permet de tout gérer en ligne de commande. C'est quand même plus léger et plus pratique, et ce, même si on débute. Si vous utilisez couramment vim ou emacs, vous n'aurez pas à vous retrouver dans un IDE que vous ne connaissez pas.

Compiler et envoyer le binaire sur l'Arduino:

Il vous faut faire un fichier Makefile de base pour indiquer quoi compiler, sur quelle "machine" (Microcontrôleur). En voici un exemple:

Ce Makefile est trivial: il indique quelques répertoires de bibliothèques et quelques paramètres pour le programme qui va envoyer les informations sur l'Arduino. Une fois ce fichier réalisé, prenez un bout de code dans les exemples. Genre le hello-world de l'Arduino: Blink.pde (fichier présent dans les exemples). Voici le code source:

Pour compiler, il suffit de faire make TARGET=Blink. En effet, le code source se nomme Blink.pde.

La compilation se lance et place le résultat dans le répertoire build_cli.

Pour charger le programme sur l'Arduino, branchez-le et faîtes un make upload. Cela lancera une série de commandes sur votre machine (ordinateur) qui, dans un premier temps, "rebootera" l'Arduino et, par la suite, lui enverra le binaire. Lorsque l'Arduino est rebooté, il copie sur sa Flash tout code valide qui lui arrive sur l'entrée dédiée et le lance. C'est bien pratique...

Voilà, votre programme est dans la boîte et votre LED doit s'allumer et s'éteindre régulièrement.

Conclusion:

Maintenant, vous avez tout ce qu'il faut pour coder sur Arduino: les principes, les bonnes commandes, un tutoriel vraiment basique.

PS: Pour info, j'ai acquis mon Arduino chez Hackable Devices pour une somme très modique. Préférez le "snail mail" à UPS: ça arrive directement dans votre boîte aux lettres et vous n'êtes pas obligé de prendre rendez-vous avec un livreur. C'est la poste quoi ! la vraie qui marche sans se prendre la tête.