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 :
- utilise les fichiers de configuration de l’IDE d’Arduino, donc les matériels supportés sont les mêmes
- pas besoin d’installer Java
- très bon support des bibliothèques personnelles
- détection automatique du port sur lequel l’Arduino est branché
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 .zshrc
2 :
# 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 :
scons
compile le programmescons upload
l’envoie sur l’arduino (en le compilant avant si nécessaire, par exemple s’il a changé depuis la dernière compilation)
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 ?
- ↑ Pour moi, ça sera un Arduino Uno, mais évidemment, si vous utilisez un LilyPad, changez la ligne correspondante.
- ↑ Je suppose que vous utilisez ZSH ici. Sinon, adaptez :
.bashrc
pour BASH par exemple. - ↑ il semblerait que les syntaxes
#include <MaBibliotheque.h>
et#include "MaBibliotheque.h"
fonctionnent aussi bien l’une que l’autre.