l'interface (IDE)

le terme IDE signifie Integrated Development Environment ou environnement de développement en français j'utiliserai souvent ce terme sur ce site pour différencier une carte arduino (par ex arduino UNO, arduino MEGA) du soft “arduino” qui est l'interface de développement arduino.
en clair:
l'IDE arduino pour parler de l'interface de développement
l'arduino pour parler de la carte arduino…

l'IDE arduino

l'IDE officiel. Toujours à jours et en plus il est multiplateforme la page de téléchargement: http://arduino.cc/en/Main/Software

paramétrer Arduino (IDE)

pour programmer une carte Arduino avec IDE arduino il faut paramétrer plusieurs choses:

  • choisir la carte que l'on utiliser (par ex arduino uno). aller dans menu outils > board et choisir la carte utilisée. (donc si on change de carte ne pas oublier de changer cette sélection…)
  • choisir le type de port série: menu outils > port série et choisir le port. (pour que la sélection soit valide il faut bien que ce soit coché devant le port choisi et pas juste en gras)

paramétrer le carnet de croquis(sketchbook)

lorsque l'on enregistre un nouveau projet l'interface d'arduino crée un dossier et un fichier “monprogramme.ino”. le dossier et le fichier sont crée dans le dossier des carnet de croquis (par défaut ce dossier s'appelle “sketchbook”) il faut le voir comme un dossier de travail.
pour résumé si vous créez un projet monservo vous aurez: …/sketchbook/monservo/monservo.ino

vous pouvez changer le dossier de travail. pour ce faire aller dans menu fichier>préférences et modifier le dossier de carnet de croquis.
par ex si vous mettez elec/mesprog_arduino votre projet monservo se trouvera à :
/home/user/elec/mesprog_arduino/monservo/monservo.ino

il vous suffira d'aller dans menu fichier>carnet de croquis et vous y trouverez directement tous vos projets

pour regrouper plusieurs projet dans un un sous-repertoire il vous suffit de créer un sous-dossier dans votre dossier de travail à l'aide de votre gestionnaire de fichier préféré. il faut redémarrer l'interface d'arduino pour que ce changement soit pris en charge.
vous pouvez par ex créer un dossier “servos” pour contenir tous vos projets sur les servo moteur.
il se retrouverons donc à:…/mesprog_arduino/servos/monservo/monservo.ino cette méthode permet de s'y retrouver plus facilement.

vérifier et transférer le programme sur l'arduino

Ces opérations sont très simples à réaliser et tant mieux car ces actions vont se répéter de nombreuses fois…
je ne vais pas entrer dans les détails car c'est typiquement les infos que l'on va apprendre si on suit un tutoriel pour débuter avec l'arduino. faire la manip une fois suffit pour comprendre la méthode. voici un lien vers un tutoriel sur le site français d'arduino programme minimum. très bien pour faire ses premiers pas avec l'arduino

vérifier le code (compilation)

cette action va permettre de ne lancer que la compilation du code. cette action retournera soit:

  • “compilation terminée” si il n'y a aucune erreur, ainsi que la taille du code et la place utilisée sur l'arduino.
  • soit les erreurs rencontrées si la compilation a échoué, ainsi que quelques informations sur les erreurs rencontrées, le numéro de ligne où l'erreur a été détectée, ce qui est très utile pour trouver rapidement d'où vient le problème…

téléverser le programme sur l'arduino

cette action réalise en fait 2 oprérations:

  • une compilation (idem que le fait d'appuyer sur l'icône vérifier)
  • le chargement de programme dans le microcontroleur.

Dans le menu fichier vous trouver aussi l'entrée “Téléverser avec un programmateur”. ceci permet de programmer votre carte arduino à l'aide d'un programmateur externe (cf l'arduino sans arduino).

recharger le bootloader

mais qu'est ce que le bootloader??? revenons un peu à la base et pour cela nous allons revenir la méthode classique de programmation des microcontroleur avr. habituellement la programmation du microncontroleur avr ce fait en plusieurs étapes:

  • écriture du code du programme (en C)
  • on compile le code
  • on génère le fichier hex
  • on charge le programme à l'aide d'un programmateur ISP.

ISP veut dire programmation in situ. cette méthode permet de programmer le microcontroleur sans l'enlever de la carte sur laquelle il se trouve. ça peut faire sourire mais avant on devait souvent prendre le microcontroleur, le programmer et le remettre sur la carte. un peu fastidieux pour une phase de développement…
l'arduino posséde aussi un connecteur ISP, c'est le connecteur à 6 broches que l'on trouve par ex sur le bord de l'arduino uno.

donc pour résumer avec la méthode classique, on écrit le code, on le compile, on génère un fichier HEX, on “téléverse” le programme sur le microcontroleur via le connecteur ISP à l'aide d'un programmateur ISP.

il existe cependant une autre méthode: le BOOTLOADER… avec cette méthode on charge dans le microcontroleur un petit programme appelé bootloader. (pour le charger il faut utiliser un programmateur ISP) par contre une fois que le bootloader et chargé on pourra écrire de nouveaux programmes et les transférer simplement avec une liaison série. c'est le cas de l'arduino…
quand vous achetez un arduino, vous acheter un microcontroleur sur lequel a déjà été chargé un bootloader. c'est ce qui vous permet de transférer vos programmes sur l'arduino juste avec un cable usb sans avoir recours à un programmateur ISP. pour plus de détails voici un lien sur le site d'arduino: arduino-bootloader

quand l'arduino plante ou qu'il est grillé...

Que faire quand votre arduino adoré est planté ou grillé suite à une mauvaise opération ou pour une raison incompréhensible…
dans ce cas, un programmateur ISP réglera votre problème ;)

avant de rentrer dans les explications je voudrai juste soulever un point. pourquoi votre arduino a t'il planté. en clair faut-il le changer, ou peut-on juste le reprogrammer?
évidemment cela dépend de la cause du plantage mais on peut tout de même faire des prédictions…

  • si l'arduino a planté suite à une erreur électrique. par exemple en mettant 9v directement sur la broche AVREF(j'ai testé pour vous). il y a beaucoup de chance qu'il soit grillé. il vous faudra acheter un nouveau microcontroleur avant de le reprogrammer.
  • si l'arduino a planté suite à des manipulations ou des tests en rapport aux liaisons séries, il y a beaucoup de chance que vous puissiez le reprogrammer sans changer le microcontroleur.

Choisir un programmateur ISP

donc pour transférer le bootloader il va falloir se munir d'un programmateur ISP. il en existe plusieurs, je vais mettre ceux que je connais mais comme ce site est un wiki chacun est libre de rajouter le sien…
un petit mot avant de présenter ces programmateurs. il ne faut pas réduire le programmateur à un appareil juste bon à charger un bootloader, en fait c'est un outils bien plus complet qui vous permet de charger vos programmes sur vos microcontroleur AVR. il va plus loin que l'arduino d'une part parce qu'il peut gérer toute la gamme des AVR (et non juste les références utilisées sur les arduino) mais aussi de gérer des options non pris en charge par l'arduino (utiliser l'oscillateur interne, les processus d'économie d'énergie,etc… cf les fusibles dans la partie “arduino>arduino sans arduino”). je ne vais pas entrer dans les détails ici car ce sera fait dans la partie “arduino>arduino sans arduino”.

l' ATAVRISP MKII d'atmel

c'est le programmateur officiel d'atmel.
c'est celui que j'utilise il marche bien et est supporté sous linux.il côute ~ 30€
voici un petit lien pour le trouver par ex sur radiospares:ATAVRISP MKII chez radiospares.

le Pocket AVR Programmer

distribué par sparkfun. (c'est peut-être même eux qui le fabriquent). il est petit, pas cher ~15€ et il marche certainement tout aussi bien que celui d'atmel mais je ne l'ai pas testé.
voici un petit lien pour le trouver: pocket AVR programmer chez sparkfun

transférer le bootloader avec IDE

il existe une solution clef en main dans l'IDE arduino.
j'utilise ici le terme IDE (Integrated development environment) pour différencier la carte arduino de l'IDE arduino (c'est à dire le programme “arduino” qui est l'interface qui nous sert à programmer la carte…
donc dans IDE arduino vous trouverez dans le menu “outils” une entrée “graver la séquence d'initialisation” (en anglais cette entrée s'appelle “Burn Bootloader”, je trouve que c'est presque plus clair en anglais…).

on va voir ici tout ça par la pratique en quelques étapes. pour aller plus loin sur le sujet ainsi que sur les différentes options offertes par la programmation des fusibles du microncontroleur je vais écrire une partie sur le transfert des programmes générés par l'arduino directement avec avrdude. ça s'adresse par ex aux personnes qui voudrait créer leurs propres cartes. cette partie sera dans arduino>arduino sans arduino.\\

étape 0: changer le microncontroleur si besoin est

pour cette étape tout est le titre.
personnellement j'utilise pour cette étape une petite pince qui me facilite la vie pour extraire le microcontroleur de la carte mais un tournevis plat et un peu de délicatesse feront l'affaire…
j'utilise aussi un autre outils pour resserrer toutes les pattes d'un coup mais un petite pince et un peu de patience feront aussi l'affaire…

étapes 1: brancher le programmateur sur la carte arduino

dans un 1er temps il faut brancher le programmateur sur la carte arduino (!Avant de connecter le programmateur sur l'ordi).
quelques photos seront mieux qu'un long discours.(ici j'utilise le programmateur ATAVRISP MKII d'atmel)
ci-dessous le connecteur ISP sur lequel on va brancher le programmateur.pour plus de détails sur ce connecteur ce sera aussi dans la partie arduino>arduino sans arduino.

et une autre photo où l'on voit le programmateur connecté sur l'arduino.

puis une autre en gros plan pour être sûr…

étape 2: brancher programmateur sur le port usb

bref pour cette étape tout est le titre, mais penser à faire cette opération après avoir connecté le programmateur sur l'arduino.

étape 3: mettre l'arduino sous tension

il vous faut maintenant alimenter l'arduino à partir du port DC (pas par le port usb).

étape 4: lancer l'IDE arduino

attention pour linux (en tous cas avec ubuntu) pour une raison de droits d’accès il vous faudra lancer arduino en tant que root. (pour pouvoir utiliser votre programmateur en tant que simple utilisateur cf: problèmes de droit :Operation not permitted…) aller dans le répertoire où se trouve arduino et taper dans le terminal: sudo ./arduino
si vous ne le faites pas le programme retournera une erreur.
Si vous voulez transférer le bootloader en tant que simple utilisateur rdv ci-dessous dans la partie “problèmes de droit: Operation not permitted…”

étape 5: transférer le bootloader

enfin l'opération tant attendue…
aller dans le menu “outils” pui cliquer sur “graver la séquence d'initialisation” (“burn bootloader” sur les versions en anglais)
patienter quelques secondes comme cela vous l'est gentiment proposé et c'est prêt…

vous voilà propriétaire d'une carte arduino toute neuve…

problèmes de droit: Operation not permitted...

si vous lancer la gravure en tant que simple utilisateur (sous ubuntu par ex) vous risquez fort d'obtenir un message qui ressemble à ça:

avrdude: usb_open(): cannot read serial number "error sending control message: Operation not permitted"
avrdude: usb_open(): cannot read product name "error sending control message: Operation not permitted"
avrdude: usbdev_open(): error setting configuration 1: could not set config 1: Operation not permitted
avrdude: usbdev_open(): did not find any USB device "usb"

pour arriver à utiliser votre programmateur préféré sans avoir à le faire en tant que root il vous faudra faire quelques manips.

prérequis:

il faut que votre utilisateur appartienne au dialout. pour le savoir il vous suffit de taper dans une console:

groups

cette instruction retourne tous les groupes auxquels votre utilisateur appartient, vous devez donc y trouver dialout
Si ce n'est pas la cas il faudra l'ajouter. Pour ajouter utilisateur au groupe il suffit de taper (remplacer <myuser> par le nom de votre utilisateur…):

 sudo usermod -aG dialout <myuser> 

redémarrer puis réutiliser l’instruction “groups” pour savoir si ça a marché…

ensuite quelques étapes pour parvenir à transférer votre bootloader en tant que simple utilisateur:

  • créer un fichier (en tant que root) /etc/udev/avrisp.rules par exemple en tapant dans une console :
    sudo touch /etc/udev/avrisp.rules

    l'instruction touch vous permet de créer un fichier vide.

  • éditer ce fichier:
    sudo gedit /etc/udev/avrisp.rules
  • y copier les lignes suivantes:
SUBSYSTEM!="usb", ACTION!="add", GOTO="avrisp_end"

# Atmel Corp. JTAG ICE mkII
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2103", MODE="660", GROUP="dialout"
# Atmel Corp. AVRISP mkII
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="dialout"
# Atmel Corp. Dragon
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", MODE="660", GROUP="dialout"

LABEL="avrisp_end">/file>
  * faire un nouveau raccourci dans /etc/udev/rules vers votre fichier /avrisp.rules: <file>cd /etc/udev/rules.d
sudo ln ../avrisp.rules 60-avrisp.rules

il ne vous reste plus soit à redémarrer votre machine soit à relancer udev :

sudo restart udev

et voilà vous pouvez accéder à votre programmateur en tant que simple utilisateur…


arduino/ide.txt · Dernière modification: 2016/04/03 16:19 (modification externe)