Rogdham

Envoyer ses programmes sur l’Arduino avec ArSCons

Marre d’utiliser l’IDE officielle ? Grâce à ArSCons, compilez et envoyez vos programmes sur l’Arduino avec SCons.

Présentation

SCons est un moteur de production (comme Make), et ArSCons un fichier de configuration pour Scons qui va permettre de compiler et d’envoyer les programmes sur l’Arduino facilement. Voyez plutôt : scons compile le programme, et scons upload l’envoie sur l’Arduino.

Fonctionnalités intéressantes :

Le tout est multi-plateformes, mais dans la suite de l’article, je supposerai que vous êtes sous une distribution GNU/Linux, parce que c’est ce que j’ai sous la main.

Installation

Tout d’abord, installez python, python-pyserial, scons, avr-binutils, avr-gcc, avrdude.

Si vous n’avez pas déjà installée l’IDE officielle, téléchargez-la (choisissez la version « source »). Il est inutile de l’installer, mais décompressez l’archive, vous en aurez besoin par la suite.

Téléchargez également le fichier SConstruct d’ArSCons.

Configuration

Présentation de l’arborescence

Je vous propose de tout placer dans un seul dossier, par exemple ~/arduino. Au final, vous obtiendrez l’arborescence suivante :

~/arduino ├── arduino-1.0.1 │ └── […] ├── Blink │ ├── Blink.elf │ ├── Blink.hex │ ├── Blink.ino │ ├── build │ │ └── […] │ └── SConstruct -> ../SConstruct ├── libs │ └── […] └── SConstruct

Configuration initiale

Commencez donc par placer le fichier SConstruct et le dossier de l’IDE dans ~/arduino (si elle n’était pas déjà installée sur votre système).

Ensuite, on va spécifier à ArSCons d’utiliser automatiquement ces répertoires. On va également lui dire quel matériel utiliser1. Pour cela, ajoutez les lignes suivantes à votre .zshrc2 :

# scons / arscons export SKETCHBOOK_HOME="$HOME/arduino" export ARDUINO_HOME="$SKETCHBOOK_HOME/arduino-1.0.1" export EXTRA_LIB="$SKETCHBOOK_HOME/libs" export ARDUINO_BOARD="uno"

Bien sûr, faite correspondre le numéro de version de l’IDE à celui que vous avez installé.

Si vous aviez déjà l’IDE installée sur votre système, vous n’avez pas besoin de la ligne d’affectation de ARDUINO_HOME.

Création d’un nouveau projet

Pour créer un projet, il suffit de créer un dossier dans ~/arduino, et de placer dedans votre programme en utilisant le même nom que celui du dossier. Ensuite, créez un lien symbolique dans ce dossier pointant vers SConstruct, et commencez à programmer !

Par exemple, si votre projet se nomme monProjet :

mkdir ~/arduino/monProjet cd ~/arduino/monProjet ln -s ../SConstruct SConstruct vim monProjet.ino

Utilisation

Usage courant

Vous savez déjà tout :

Enfin, si vous utilisez vim, n’oubliez pas que vous pouvez lancer des commandes directement depuis l’éditeur : tapez simplement :!scons upload par exemple !

Spécification du port à utiliser

La détection automatique du port sur lequel est branché l’arduino marche bien quand il y a un seul choix possible. Cependant, pour peu que vous ayez branché également un convertisseur USB-série par exemple, la détection peut se tromper.

Sur mon système, l’arduino est toujours associé à /dev/ttyACM0. Il me suffit donc d’ajouter la ligne suivante à ~/.zshrc pour ne plus avoir à y penser :

# do not detect the arduino port, choose /dev/ttyACM0 export ARDUINO_PORT="/dev/ttyACM0"

Toutes ces configurations peuvent être évitées en ajoutant un paramètre à la l’appel de scons. Par exemple, si je branche un second arduino, je peux utiliser scons ARDUINO_PORT=/dev/ttyACM1 pour lui envoyer mes programmes.

Bibliothèques personnelles

Si vous développez vos propres bibliothèques, ou voulez utiliser des bibliothèques d’un tiers, rien de plus simple : placez-les dans ~/arduino/libs.

Elles seront automatiquement utilisées dans les projets où vous les incluez3, recompilées lorsque vous les changez.

En bref : une fois configuré, ça marche et vous pouvez vous concentrer sur votre projet. Que demander de plus ?

  1. Pour moi, ça sera un Arduino Uno, mais évidemment, si vous utilisez un LilyPad, changez la ligne correspondante.
  2. Je suppose que vous utilisez ZSH ici. Sinon, adaptez : .bashrc pour BASH par exemple.
  3. il semblerait que les syntaxes #include <MaBibliotheque.h> et #include "MaBibliotheque.h" fonctionnent aussi bien l’une que l’autre.

Cet article est sous licence CC BY-SA.

Adresse courte de l’article : https://r.rogdham.net/13.