Vous êtes sur la page 1sur 38

Les systmes Embarqus (SE)

4- Arduino
1

Introduction
Vous souhaitez crer votre premier robot moindre cot ? De
nombreux kits base dune carte Arduino sont disponibles sur le Net!

Ce petit robot roulant vocation pdagogique possde deux roues


indpendantes motorises et peut tre quip de multiples capteurs
pour dtecter des obstacles, suivre une ligne au sol, etc.

Introduction
ARDUINO: carte microcontrleur + outil de dveloppement +
communaut active.
Le logiciel et le matriel sont open-source.

Introduction
Une quipe de dveloppeurs compose de Massimo Banzi, David
Cuartielles, Tom Igoe, Gianluca Martino, David Mellis et Nicholas
Zambetti a imagin un projet rpondant au doux nom de Arduino et
mettant en uvre une petite carte lectronique programmable et un
logiciel multiplateforme, qui puisse tre accessible tout un chacun
dans le but de crer facilement des systmes lectroniques. tant donn
quil y a des dbutants parmi nous, commenons par voir un peu le
vocabulaire commun propre au domaine de llectronique et de
linformatique.
Une carte lectronique est un support plan, flexible ou rigide,
gnralement compos depoxy ou de fibre de verre. Elle possde des
pistes lectriques disposes sur une, deux ou plusieurs couches (en
surface et/ou en interne) qui permettent la mise en relation lectrique
des composants lectroniques. Chaque piste relie tel composant tel
autre, de faon crer un systme lectronique qui fonctionne et qui
ralise les oprations demandes.
4

Introduction

LES SYSTMES EMBARQUS ARDUINO

Les fondateurs de Arduino

Prsentation de Arduino par Massimo Banzi


dans la confrence TED (Technology
Entertainment Design)
5

Arduino
Pas cher!
Environnement de programmation clair et simple.
multiplateforme: tournes sous Windows, Macintosh, Linux.
Nombreuses librairies disponibles avec diverses fonctions
implmentes.
Logiciel et matriel open source et extensible.
Nombreux conseils, tutoriaux et exemples en ligne (forums, site perso
).
Existence de shield : ce sont des cartes supplmentaires qui se
connectent sur le module arduino pour augmenter les possibilits
comme par exemple: afficheur graphique couleur, interface Ethernet,
GPS,
Par sa simplicit dutilisation, arduino est utilis dans beaucoup
dapplications comme llectronique industrielle et embarque, le
modlisme, la domotique mais aussi dans des domaines diffrents
comme lart contemporain ou le spectacle!
6

Arduino
Voici quelques exemples dutilisation possible :
Simuler le fonctionnement des portes logiques,
Permettre lutilisation de diffrents capteurs,
Mettre en uvre et faciliter la comprhension dun rseau
informatique,
Se servir dArduino pour crer des maquettes animes
montrant le fonctionnement des collisions entres les plaques de
la croute terrestre, par exemple,
Donner un exemple concret dutilisation des matrices avec un
clavier alphanumrique,
tre la base pour des tudiants ayant un PEF faire,

De plus, normment de ressources et tutoriels (mais souvent en


anglais) se trouvent sur internet, ce qui offre un autonomie
particulire lapprenant.
7

Types de carte Arduino

Arduino pro

Arduino UNO R3

Arduino Mega 2560

Arduino DUE

Arduino UNO

Arduino LEONARDO

Arduino Mini

Arduino ADK Android

et bien dautres platines

Caractristiques de la carte Arduino UNO


(53 mm x 68 mm )
Microcontrleur

ATmega328

Tension de fonctionnement

5V

Tension dalimentation (recommande)

7-12V

Tension dalimentation (limites)

6-20V

Broches E/S numriques

14 (dont 6 disposent dune sortie PWM)

Broches dentres analogiques

Intensit maxi disponible par broche E/S (5V)

40 mA

Intensit maxi disponible par broche E/S (3.3V)

50 mA

Mmoire Programme Flash

16 KB (ATmega168) or 32 KB (ATmega328) dont 2 KB


sont utiliss par le bootloader

Mmoire SRAM (mmoire volatile)

1 KB (ATmega168) ou 2 KB (ATmega328)

Mmoire EEPROM (mmoire non volatile)

512 bytes (ATmega168) ou 1 KB (ATmega328)

Vitesse dhorloge

16 MHz

Caractristiques de la carte Arduino MEGA


(53 mm x 101 mm )
Microcontrleur

ATmega2560

Tension de fonctionnement

5V

Tension dalimentation (recommande)

7-12V

Tension dalimentation (limites)

6-20V

Broches E/S numriques

54 (dont 15 disposent d'une sortie PWM)

Broches dentres analogiques

16

Intensit maxi disponible par broche E/S (5V)

40 mA

Intensit maxi disponible par broche E/S (3.3V)

50 mA

Mmoire Programme Flash

256 KB dont 8 KB sont utiliss par le bootloader

Mmoire SRAM (mmoire volatile)

8 KB

Mmoire EEPROM (mmoire non volatile)

4 KB

Vitesse dhorloge

16 MHz

10

Caractristiques de la carte Arduino DUE


(53 mm x 101 mm )
Microcontrleur

AT91SAM3X8E

Tension de fonctionnement

3.3 V

Tension d'alimentation (recommande)

7-12V

Tension d'alimentation (limites)

6-20V

Broches E/S numriques

54 (dont 12 disposent d'une sortie PWM)

Broches d'entres analogiques

12

Intensit maxi disponible toutes broche I/O

130 mA

Intensit maxi disponible par broche E/S (3.3V)

800 mA

Mmoire Programme Flash

512 KB (application)

Mmoire SRAM (mmoire volatile)

96 KB

Vitesse dhorloge

84 Mhz

11

Description la carte Arduino UNO


Entres / sorties digital D0 D13

Port USB de programmation et


permet dalimenter lArduino.
Max 500ma

Entre DC 7-12 v
2,1 mm

Alimentation

Entres Analogiques A0 A5

SPI :Interface Srie pour priphrique D10 : /SS D11 : MOSI D12 : MISO et D13 : SCLK.
I2C : A4 (SDA), A5 (SCL)

12

Carte Arduino UNO


ATMEGA 328

13

Description la carte Arduino MEGA

Entres / sorties digital


D0 D13
Port USB de programmation et
permet dalimenter lArduino.
Max 500ma

Entres / sorties digital


D22 D53

Entre DC 7-12 v
2,1 mm

Alimentation

Entres Analogiques A0 A11

SPI :Interface Srie pour priphrique D10 : /SS D11 : MOSI D12 : MISO et D13 : SCLK.
I2C : A20 (SDA), A21 (SCL)
ISP : In-System Programmer (reprogrammation de lArduino)
14

Les Shields Arduino


Il existe de nombreux shields que lon traduit parfois dans les
documentations par boucliers (extension).
Un shield Arduino est une petite carte qui se connecte sur
une carte Arduino pour augmenter ses fonctionnalits.
Quelques exemples de shields:
Afficheur graphique
Ethernet et carte SD
GPS
Carte de prototypage
.

15

Exemples de shield

7-Segment Shield.mp4

GSM Shield.mp4

16

Dveloppement dun projet


Le dveloppent sur Arduino est trs simple:
On code lapplication: le langage Arduino est bas sur les
langages C/C++, avec des fonctions et des librairies
spcifiques Arduino (gestion des E/S),
On relie la carte Arduino au PC et on transfert le programme
sur la carte,
On peut utiliser le circuit!
Le logiciel de programmation des modules Arduino est une
application java multiplateformes, servant dditeur de code et
compilateur, et qui peut transfrer le firmware au travers de la
liaison.

17

Ardublock
Il existe diffrents outils qui
puissent tre utilis avec
Arduino.
Ardublock est un outil qui se
greffe au logiciel Arduino et qui
permet de programmer avec des
blocs. Chaque
bloc est une instruction. On peut
aisment faire des programmes
avec cet outil et mmes des
plutt complexes. Cela permet
par exemple de se concentrer sur
ce que lon doit faire avec
Arduino et non se concentrer sur
Arduino pour ensuite ce que lon
doit comprendre avec.

18

Logiciel de la carte Arduino


Le logiciel va vous permettre de
programmer la carte Arduino, par la
prise USB,
De crer des sketchs.
Le logiciel gratuit est disponible
cette adresse:
En franais :
www.mon-clubelec.fr/mes_telechargements/arduino
-0018-fr.zip
Page officielle (En Anglais) : v 023
http://arduino.cc/en/Main/Software

19

Logiciel de la carte Arduino

20

21

Programmation Arduino
Deux fonctions sont importantes :
setup() est appele une seule fois lorsque le programme commence.
Donc, dans cette fonction que lon va crire le code qui na besoin
dtre excut une seule fois. qui permet dinitialiser le programme. On
appelle cette fonction : "fonction dinitialisation".
Une fois que lon a initialis le programme il faut ensuite crer son
"cur", autrement dit le programme en lui mme.
Dans la fonction loop() o lon va crire le contenu du programme. Il
faut savoir que cette fonction est appele en permanence, cest--dire
quelle est excute une fois, puis lorsque son excution est termine,
on la r-excute encore et encore. On parle de boucle infinie.

Setup (){
.
}

loop () {

}
22

Programmation Arduino
Coloration syntaxique:
En orange, apparaissent les mots-cls reconnus
le langage Arduino comme des fonctions existantes.

par

En bleu, apparaissent les mots-cls


le langage Arduino comme des constantes.

par

reconnus

En gris, apparaissent les commentaires qui ne seront pas


excuts dans le programme. Lon peut dclarer un
commentaire de deux manires diffrentes :
Dans une ligne de code, tout ce qui se trouve aprs // sera
un commentaire.
Lon peut encadrer des commentaires sur plusieurs lignes
entre /* */ .
23

Programmation Arduino

Type

Quel nombre il
stocke ?

Valeurs maximales
Nombre sur X bits
du nombre stock

Nombre d'octets

int

entier

-32 768 +32 767

16 bits

2 octets

long

entier

-2 147 483 648 +2


147 483 647

32 bits

4 octets

char

entier

-128 +127

8 bits

1 octets

float

dcimale

-3.4 x 10^{38} +3.4


x 10^{38}

32 bits

4 octets

double

dcimale

-3.4 x 10^{38} +3.4


x 10^{38}

32 bits

4 octets

Arduino - Reference.htm
24

Programmation Arduino
Exemple de programme:
1

25

Programmation Arduino
Le programme est envoy dans la carte lorsque vous cliquez sur
le bouton . Le logiciel Arduino va alors vrifier si le programme
ne contient pas derreur et ensuite le compiler (le traduire) pour
lenvoyer dans la carte :

26

Programmation Arduino
Le programme rentre donc dans la carte en passant en premier par le connecteur USB
de celle-ci. Il va alors subir une petite transformation qui permet dadapter le signal
lectrique correspondant au programme vers un signal plus appropri pour le
microcontrleur. On passe ainsi dun signal cod pour la norme USB un signal cod
pour une simple voie srie. Puis ce nouveau signal est alors intercept par le
microcontrleur.

27

Programmation Arduino
Voici un petit synoptique qui vous montre un peu lintrieur du microcontrleur:

Lorsque le microcontrleur dmarre, il va commencer par lanc un


bout de code particulier : le bootloader. Cest ce dernier qui va
surveiller si un nouveau programme arrive sur la voie USB et sil faut
donc changer lancien en mmoire par le nouveau. Si rien narrive, il
donne la main votre programme, celui que vous avez cr. Ce
dernier va alors dfiler, instruction par instruction. Chaque fois
quune nouvelle variable sera ncessaire, elle sera mise en RAM pour
quon ai une mmoire de cette dernire (et supprimer lorsquelle nest
plus ncessaire). Sinon, les instructions vont se suivre une par une,
dans lordre que vous les avez crites.

28

Programmation Arduino
Dans un programme, les lignes sont souvent trs nombreuses. Il devient alors
impratif de sparer le programme en petits bouts afin damliorer la
lisibilit de celui-ci, en plus damliorer le fonctionnement et de faciliter le
dbogage.
On appelle fonction un sous-programme qui permet deffectuer
un ensemble d'instructions par simple appel de la fonction dans le corps du
programme principal.
Les fonctions permettent dexcuter dans plusieurs parties du programme
une srie dinstructions, cela permet une simplicit du code et donc une taille
de programme minimale. Dautre part, une fonction peut faire appel ellemme, on parle alors de fonction rcursive (il ne faut pas oublier de mettre
une condition de sortie au risque sinon de ne pas pouvoir arrter le
programme...).
type nom-fonction (type-1 arg-1,...,type-n arg-n) {
[dclarations de variables locales ]
liste dinstructions
}

29

Les libraires
Pour faciliter llaboration dune application, il existe des
librairies pour chaque interface. Ce sont des micros
programmes.
La librairie pour lire ou crire sur une carte SD.
//Include all the libraries necessary for FAT32
#include <byteordering.h>
#include <fat.h>
#include <FAT16.h>
#include <fat_config.h>
#include <partition.h>
#include <partition_config.h>
#include <sd-reader_config.h>
#include <sd_raw.h>
#include <sd_raw_config.h>

Ces librairies se dclarent en dbut de programme, elles doivent


tres tlcharges depuis le net et copies au paravent dans le
dossier /arduino/libraries/

30

Interruption
Une interruption est en fait un dclenchement qui arrte lexcution
du programme pour faire une tche demande.
Par exemple, imaginons que le programme compte jusqu linfinie.
Moi, programmeur, je veux que le programme arrte de compter
lorsque jappuie sur un bouton. Or, il savre que la fonction qui
compte est une boucle for(), dont on ne peut sortir sans avoir atteint
linfinie (autrement dit jamais, en thorie).
Nous allons donc nous tourner vers les interruptions qui, ds que le
bouton sera appuy, interromprons le programme pour lui dire :
Arrte de compter, cest lutilisateur qui le demande !
Une interruption est un vnement qui provoque larrt du
programme en cours et provoque le branchement du microcontrleur
un sou programme particulier dit de traitement de linterruption .
31

Interruption
Dans le cas dune carte Arduino UNO, on trouve deux broches
pour grer des interruptions externes, la 2 et la 3. Pour
dclencher une interruption, plusieurs cas de figure sont
possibles :
LOW : Passage ltat bas de la broche,
FALLING : Dtection dun front descendant,
RISING : Dtection dun front montant,
CHANGE : Changement dtat de la broche.
Autrement dit, sil y a un changement dun type numr audessus, alors le programme sera interrompu pour effectuer une
action.

32

Interruption

Crer une nouvelle interruption


Comme dhabitude, nous allons commencer par faire des rglages dans la
fonction setup ().
La fonction importante utiliser est attachInterrupt(interrupt, function,
mode).
Elle accepte trois paramtres :
interrupt: qui est le numro de la broche utilise pour linterruption (0 pour
la broche 2 et 1 pour la broche 3)
function : qui est le nom de la fonction appeler lorsque linterruption est
dclenche
mode : qui est le type de dclenchement (cf. ci-dessus)
Si lon veut appeler une fonction nomme Reagir () lorsque lutilisateur
appuie sur un bouton branch sur la broche 2 on fera :

attachInterrupt(0, Reagir, FALLING);


Lorsque quelque chose dclenchera linterruption, le programme principal
sera mis en pause. Ensuite, lorsque linterruption aura t excute et traite,
il reprendra lexcution (peut-tre mises jour des variables).
33

Interruption

AttachInterrupt.htm

34

Fin

35

36

37

38

Vous aimerez peut-être aussi