Arduino IDE en ligne de commande

De MicElectroLinGenMet.

Sommaire

Description de l'utilisation de ino

Le programme ino est disponible sur https://github.com/amperka/ino

Ino is a command line toolkit for working with Arduino hardware


Installation de ino

Sur un PC Debian ainsi que sur Rasberry-Pi (après quelques modifications dans l'IDE Arduino)


Pré-requis

  1. Python 2.6+
  2. Arduino IDE
  3. picocom (Pour la communication série avec la carte Arduino)
  4. Autres packages nécessaires sou Debian
# apt-get install python-setuptools python-jinja2 python-serial python-configobj python-argparse
# easy_install ordereddict	(Module python nécessaire depuis la maj de ino, module inexistant sous Debian)


Téléchargement de ino

$ git clone https://github.com/amperka/ino.git
$ cd ino/
# make install

ou

# easy_install ino                 => Pas testé


$ ino --help
usage: ino [-h] {build,clean,init,list-models,preproc,serial,upload} ...

Ino is a command-line toolkit for working with Arduino hardware.

It is intended to replace Arduino IDE UI for those who prefer to work in
terminal or want to integrate Arduino development in a 3rd party IDE.

Ino can build sketches, libraries, upload firmwares, establish
serial-communication. For this it is split in a bunch of subcommands, like git
or mercurial do. The full list is provided below. You may run any of them with
--help to get further help. E.g.:

    ino build --help

positional arguments:
  {build,clean,init,list-models,preproc,serial,upload}
    build               Build firmware from the current directory project
    clean               Remove intermediate compilation files completely
    init                Setup a new project in the current directory
    list-models         List supported Arduino board models
    preproc             Transform a sketch file into valid C++ source
    serial              Open a serial monitor
    upload              Upload built firmware to the device

optional arguments:
  -h, --help            show this help message and exit


Installation des utilitaires AVR

# apt-get install avrdude avr-libc


Installation de l'IDE Arduino

# cd /usr/local/share				=> répertoire de recherche de 'ino'
# wget http://arduino.googlecode.com/files/arduino-1.0.3-linux32.tgz	
       (Voir http://arduino.cc/en/Main/Software pour la dernière version)
# tar xvzf arduino-1.0.3-linux32.tgz
# ln -s arduino-1.0.3 arduino


Modifications dans l'IDE Arduino pour le Raspberry-Pi

Pour l'archecture ARM, il est nécessaire de remplacer les binaires x86 de l'IDE nécessaires à 'ino':

# mv /usr/local/share/arduino/hardware/tools/avr/bin /usr/local/share/arduino/hardware/tools/avr/bin.disabled		
# mv /usr/local/share/arduino/hardware/tools/avrdude /usr/local/share/arduino/hardware/tools/avrdude.x86
# mv /usr/local/share/arduino/hardware/tools/avrdude.conf /usr/local/share/arduino/hardware/tools/avrdude.conf.x86
# ln -s /usr/bin/avrdude /usr/local/share/arduino/hardware/tools/avrdude
# ln -s /etc/avrdude.conf /usr/local/share/arduino/hardware/tools/avrdude.conf

Testé avec la 2012-10-28-wheezy-raspbian.


Utilisation de ino

Projet exemple

$ mkdir ~/arduino/ino
$ cd ~/arduino/ino
$ mkdir test						=> Création d'un répétoire pour le projet 'test'
$ cd test
$ ino init						=> Création du squelette
$ ls -l
  drwxr-x--- 2 dan dan 4,0K 12 mars  13:50 lib/		=> Doit contenir les 'librairie' externes à l'IDE, nécessaires au projet.
  drwxr-x--- 2 dan dan 4,0K 12 mars  13:50 src/
$ ls -l src
  -rw-r----- 1 dan dan 35 12 mars  11:13 sketch.ino	=> Fichier source du projet (peut être renommé)
$ ino list-models					=> Affiche les modèle de cartes supportés.
        uno: [DEFAULT] Arduino Uno
  atmega328: Arduino Duemilanove w/ ATmega328
  diecimila: Arduino Diecimila or Duemilanove w/ ATmega168
    nano328: Arduino Nano w/ ATmega328
       nano: Arduino Nano w/ ATmega168
   mega2560: Arduino Mega 2560 or Mega ADK
       mega: Arduino Mega (ATmega1280)
   leonardo: Arduino Leonardo
    esplora: Arduino Esplora
      micro: Arduino Micro
    mini328: Arduino Mini w/ ATmega328
       mini: Arduino Mini w/ ATmega168
   ethernet: Arduino Ethernet
        fio: Arduino Fio
      bt328: Arduino BT w/ ATmega328
         bt: Arduino BT w/ ATmega168
 LilyPadUSB: LilyPad Arduino USB
 lilypad328: LilyPad Arduino w/ ATmega328
    lilypad: LilyPad Arduino w/ ATmega168
   pro5v328: Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
      pro5v: Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168
     pro328: Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328
        pro: Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168
  atmega168: Arduino NG or older w/ ATmega168
    atmega8: Arduino NG or older w/ ATmega8


Compilation du projet

$ ino clean						=> Efface la compilation précédente (répertoire .build)
$ ino build -m atmega328				=> Compile le source (Fichiers résultats dans .build/atmega328/)
  Searching for Board description file (boards.txt) ... /usr/local/share/arduino/hardware/arduino/boards.txt
  Searching for Arduino lib version file (version.txt) ... /usr/local/share/arduino/lib/version.txt
  Detecting Arduino software version ...  1.0 (1.0.4)
  Searching for Arduino core library ... /usr/local/share/arduino/hardware/arduino/cores/arduino
  Searching for Arduino standard libraries ... /usr/local/share/arduino/libraries
  Searching for Arduino variants directory ... /usr/local/share/arduino/hardware/arduino/variants
  Searching for avr-gcc ... /usr/local/share/arduino/hardware/tools/avr/bin/avr-gcc
  Searching for avr-g++ ... /usr/local/share/arduino/hardware/tools/avr/bin/avr-g++
  Searching for avr-ar ... /usr/local/share/arduino/hardware/tools/avr/bin/avr-ar
  Searching for avr-objcopy ... /usr/local/share/arduino/hardware/tools/avr/bin/avr-objcopy
  src/sketch.ino
  Searching for Arduino lib version file (version.txt) ... /usr/local/share/arduino/lib/version.txt
  Detecting Arduino software version ...  1.0 (1.0.4)
  Scanning dependencies of src
  Scanning dependencies of arduino
  src/sketch.cpp
  arduino/wiring.c
  arduino/wiring_digital.c
  arduino/WInterrupts.c
  arduino/wiring_shift.c
  arduino/malloc.c
  arduino/wiring_analog.c
  arduino/wiring_pulse.c
  arduino/main.cpp
  arduino/USBCore.cpp
  arduino/CDC.cpp
  arduino/new.cpp
  arduino/HID.cpp
  arduino/IPAddress.cpp
  arduino/HardwareSerial.cpp
  arduino/WString.cpp
  arduino/Print.cpp
  arduino/Tone.cpp
  arduino/WMath.cpp
  arduino/Stream.cpp
  Linking libarduino.a
  Linking firmware.elf
  Converting to firmware.hex


Fichiers résultats

$ ls -l .build/
  drwxr-x--- 2 dan dan 4,0K 12 mars  14:02 arduino/
  -rwxr-x--- 1 dan dan  29K 12 mars  14:02 firmware.elf*
  -rw-r----- 1 dan dan 3,1K 12 mars  14:02 firmware.hex
  -rw-r----- 1 dan dan  14K 12 mars  14:02 Makefile
  -rw-r----- 1 dan dan  27K 12 mars  14:02 Makefile.deps
  -rw-r----- 1 dan dan  204 12 mars  14:02 Makefile.sketch
  drwxr-x--- 2 dan dan 4,0K 12 mars  14:02 src/



La modification du fichier source entraine une compilation plus rapide contrairement à l'IDE Java

$ ino build -m atmega328
  src/sketch.ino
  Scanning dependencies of src
  src/sketch.cpp
  Linking firmware.elf
  Converting to firmware.hex


Attention: Il semble que ino ne gère pas plusieurs fichiers sources pour un même projet, à confirmer/tester.


Programmation de l'Arduino

$ ino upload -m atmega328 -p /dev/arduino

  Searching for stty ... /bin/stty
  Searching for avrdude ... /usr/local/share/arduino/hardware/tools/avrdude
  Searching for avrdude.conf ... /usr/local/share/arduino/hardware/tools/avrdude.conf
  
  avrdude: AVR device initialized and ready to accept instructions
  
  Reading | ################################################## | 100% 0.00s
  
  avrdude: Device signature = 0x1e950f
  avrdude: reading input file ".build/atmega328/firmware.hex"
  avrdude: writing flash (12534 bytes):
  
  Writing | ################################################## | 100% 3.43s
  
  avrdude: 12534 bytes of flash written
  avrdude: verifying flash memory against .build/atmega328/firmware.hex:
  avrdude: load data flash data from input file .build/atmega328/firmware.hex:
  avrdude: input file .build/atmega328/firmware.hex contains 12534 bytes
  avrdude: reading on-chip flash data:
  
  Reading | ################################################## | 100% 2.59s
  
  avrdude: verifying ...
  avrdude: 12534 bytes of flash verified
  
  avrdude: safemode: Fuses OK
  
  avrdude done.  Thank you.



Connexion sur le port série de l'Arduino directement avec ino

$ ino serial -b 19200

  Searching for Serial monitor (picocom) ... /usr/bin/picocom
  Guessing serial port ... /dev/ttyUSB1
  picocom v1.7
  
  port is        : /dev/ttyUSB1
  flowcontrol    : none
  baudrate is    : 19200
  parity is      : none
  databits are   : 8
  escape is      : C-a
  local echo is  : no
  noinit is      : no
  noreset is     : no
  nolock is      : yes
  send_cmd is    : sz -vv
  receive_cmd is : rz -vv
  imap is        :
  omap is        :
  emap is        : crcrlf,delbs,
  
  Terminal ready
Setup Arduino ...                             => Affichage par le programme Arduino ...




12/03/2013