Vous êtes sur la page 1sur 14

EIE

LP CONDORCET

La carte
ARDUINO UNO

Figure 1 : prsentation de la carte utilise pour le projet ROBOT SUIVEUR DE LIGNE

I.

Prsentation gnrale de lARDUINO ............................................................................................................................... 2


A. La partie logicielle ......................................................................................................................................................... 3
B. La partie matrielle....................................................................................................................................................... 3
1. Alimentation : ............................................................................................................................................................. 4
2. Mmoire ........................................................................................................................................................................ 4
3. Entres et sorties ...................................................................................................................................................... 4
4. Communication .......................................................................................................................................................... 5
5. Programmation .......................................................................................................................................................... 5
6. Reset automatique par Software ........................................................................................................................ 5
7. Protection de surintensit USB ........................................................................................................................... 5
8. Dimensions .................................................................................................................................................................. 5
9. Schma structurel ..................................................................................................................................................... 6
II. Prsentation de lEspace de dveloppement Intgr (EDI) Arduino .................................................................. 7
A. Description de linterface ........................................................................................................................................... 7
B. Description de la structure dun programme .................................................................................................... 8
1. Description gnrale des parties ........................................................................................................................ 8
2. Description dtaille des parties ........................................................................................................................ 9
a. Dfinition des variables et constantes ......................................................................................................... 9
b. Fonction principale : void setup() .................................................................................................... 10
c. Fonction boucle : void loop() ............................................................................................................... 10
C. Compilation et programmation de lARDUINO .............................................................................................. 10
1. Ecriture de lalgorithme ...................................................................................................................................... 10
2. Ecriture du programme ....................................................................................................................................... 10
3. Compilation du programme .............................................................................................................................. 11
4. Slection de la cible et du port srie .............................................................................................................. 11
5. Transfert du programme vers la carte ARDUINO..................................................................................... 12

YOUNSI A.

ROBOT SUIVEUR DE LIGNE

1/ 14

EIE

LP CONDORCET

La carte ARDUINO

DOSSIER

I. Prsentation gnrale de lARDUINO


Le systme Arduino est une carte lectronique base autour dun microcontrleur et de
composants minimum pour raliser des fonctions plus ou moins volues bas cot. Elle possde une
interface usb pour la programmer. Cest une plateforme open-source qui est base sur une simple carte
microcontrleur (de la famille AVR), et un logiciel, vritable environnement de dveloppement
intgr, pour crire, compiler et transfrer le programme vers la carte microcontrleur.
Arduino peut tre utilis pour dvelopper des applications
matrielles industrielles lgres ou des objets interactifs (cration
artistiques par exemple), et peut recevoir en entres une trs grande
varit de capteurs. Arduino peut aussi controler une grande varit
dactionneurs (lumires, moteurs ou toutes autres sorties matriels). Les
projets Arduino peuvent tre autonomes, ou communiquer avec des
logiciels sur un ordinateur (Flash, Processing ou MaxMSP). Les cartes
lectroniques peuvent tre fabriques manuellement ou bien tre achetes
prassembles ; le logiciel de dveloppement open-source est
tlchargeable gratuitement.
Figure 2 : carte ARDUINO UNO

Synthse des caractristiques


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

6 (utilisables en broches E/S numriques)

Intensit maxi disponible par


broche E/S (5V)
Intensit maxi disponible pour la
sortie 3.3V
Intensit maxi disponible pour la
sortie 5V

40 mA (ATTENTION : 200mA cumul pour


lensemble des broches E/S)

Mmoire Programme Flash

50 mA
Fonction de lalimentation utilise 500 mA max si
port USB utilis seul
32 KB (Atmega328) dont 0.5 KB sont utiliss par le
bootloader

Mmoire SRAM (mmoire volatile)

2 KB (Atmega328)

Mmoire EEPROM (mmoire non


volatile)

1 KB (Atmega328)

Vitesse dhorloge

16 MHz

YOUNSI A.

ROBOT SUIVEUR DE LIGNE

2/ 14

EIE

LP CONDORCET

Quest-ce quun microcontrleur ?

Figure 3 : schma simplifi du contenu type dun microcontrleur.

Un microcontrleur est un circuit intgr qui rassemble les lments essentiels


dun ordinateur : processeur, mmoires (mmoire morte pour le programme, mmoire vive pour les
donnes), units priphriques et interfaces dentres-sorties. Les microcontrleurs se caractrisent
par un plus haut degr dintgration, une plus faible consommation lectrique (quelques milliwatts en
fonctionnement, quelques nanowatts en veille), une vitesse de fonctionnement plus faible (quelques
mgahertz quelques centaines de mgahertz) et un cot rduit par rapport
aux microprocesseurs polyvalents utiliss dans les ordinateurs personnels.

A. La partie logicielle
Le logiciel de programmation des modules Arduino est une application Java, libre et multiplateformes, servant dditeur de code et de compilateur, et qui peut transfrer le firmware et le
programme au travers de la liaison srie (RS232, Bluetooth ou USB selon le module). Il est galement
possible de se passer de linterface Arduino , et de compiler les programmes en ligne de commande.
Le langage de programmation utilis est le C++, compil avec avr-g++, et li la bibliothque de
dveloppement Arduino, permettant lutilisation de la carte et de ses entres/sorties. La mise en place
de ce langage standard rend ais le dveloppement de programmes sur les plates-formes Arduino,
toute personne maitrisant le C ou le C++.

B. La partie matrielle
Un module Arduino est gnralement construit autour dun microcontroleur ATMEL AVR
(Atmega328 ou Atmega2560 pour les versions rcentes, Atmega168 ou Atmega8 pour les plus
anciennes), et de composants complmentaires qui facilitent la programmation et linterfaage avec
dautres circuits. Chaque module possde au moins un rgulateur linaire 5V et un oscillateur
quartz 16 MHz
(ou
un
rsonateur
cramique
dans
certains
modles).
Le microcontrleur est pr-programm avec un boot loader de faon ce quun programmateur ddi
ne soit pas ncessaire.
Les modules sont programms au travers une connexion srie RS-232, mais les connexions
permettant cette programmation diffrent selon les modles. Les premiers Arduino possdaient un port
srie, puis lUSB est apparu sur les modles Diecimila, tandis que certains modules destins une
utilisation portable se sont affranchis de linterface de programmation, relocalise sur un module USBsrie ddi (sous forme de carte ou de cble).
LArduino utilise la plupart des entres/sorties du microcontrleur pour linterfaage avec les
autres circuits. Le modle Diecimila par exemple, possde 14 entres/sorties numriques, dont 6
peuvent produire des signaux PWM, et 6 entres analogiques. Les connexions sont tablies au travers
de connecteurs femelle HE14 situs sur le dessus de la carte, les modules dextension venant sempiler
sur lArduino. Plusieurs sortes dextensions sont disponibles dans le commerce.
YOUNSI A.

ROBOT SUIVEUR DE LIGNE

3/ 14

EIE

LP CONDORCET

1. Alimentation :
La carte Arduino UNO peut tre alimente par lUSB ou par une alimentation externe. La source est
slectionne automatiquement.
La tension dalimentation extrieure (hors USB) peut venir soit dun adaptateur AC-DC ou de piles.
Ladaptateur peut tre connect grce un jack de 2.1mm positif au centre. Le raccordement vers un
bloc de piles peut utiliser les bornes Gnd et Vin du connecteur dalimentation (POWER).
La carte peut fonctionner laide dune tension extrieure de 7 12 volts. Les broches (pins)
dalimentation sont les suivantes :
VIN. La tension dentre positive lorsque la carte Arduino est utilise avec une source de tension
externe ( distinguer du 5V de la connexion USB ou autre source 5V rgule). Vous pouvez
alimenter la carte laide de cette broche, ou, si lalimentation est fournie par le jack
dalimentation, accder la tension dalimentation sur cette broche.
5V. La tension rgule utilise pour faire fonctionner le microcontrleur et les autres
composants de la carte (pour info : les circuits lectroniques numriques ncessitent une
tension dalimentation parfaitement stable dite tension rgule obtenue laide dun
composant appel un rgulateur et qui est intgr la carte Arduino). Le 5V rgul fourni par
cette broche peut donc provenir soit de la tension dalimentation VIN via le rgulateur de la
carte, ou bien de la connexion USB (qui fournit du 5V rgul) ou de tout autre source
dalimentation rgule.
3V3. Une alimentation de 3.3V fournie par le circuit intgr FTDI (circuit intgr faisant
ladaptation du signal entre le port USB de votre ordinateur et le port srie de lAtmega) de la
carte est disponible : ceci est intressant pour certains circuits externes ncessitant cette
tension au lieu du 5V). Lintensit maximale disponible sur cette broche est de 50mA
GND. Broche de masse (ou 0V).
2. Mmoire
L Atmega328 a 32 KB de mmoire (dont 0.5 KB pour le bootloader). Il a galement 2 KB de SRAM et
1 KB de mmoire non volatile EPROM (qui peut tre crite et lue grce la librairie EEPROM).
3. Entres et sorties
Chacune des 14 broches numriques de la Uno peut tre utilise en entre (input) ou en sortie
(output), en utilisant les fonctions pinMode(), digitalWrite(), et digitalRead().
Elles fonctionnent en logique TTL (0V-5V) ; chacune pouvant fournir (source) ou recevoir un
courant maximal de 40 mA et dispose si besoin est dune rsistance interne de pull-up.
En outre, certaines broches ont des fonctions spcialises :
Serial : broche 0 (RX) et broche1 (TX). Permet de recevoir (RX) et de transmettre (TX) des
donnes sries TTL. Ces broches sont raccordes leurs homologues sur le chip Atmega8U2
spcialis dans la conversion USB-to-TTL srie.
Interruptions externes 2 et 3. Ces broches peuvent tre configures pour dclencher une
interruption sur une valeur LOW, sur un front montant ou descendant, ou encore sur le
changement de valeur. (voir la fonction attachInterrupt() pour des dtails).
PWM : 3, 5, 6, 9, 10, and 11. Output 8-bit de PWM avec la fonction analogWrite().
SPI : 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ces broches fournissent le support de
communication SPI en utilisant la library spcialise
LED : 13. Il y a une LED connecte la broche numrique 13.
La carte Uno a 6 broches dentre analogiques, A0 A5, chacune avec 10 bits de rsolution (1024
valeurs diffrentes).
Par dfaut les mesures sont effectues de la masse 5V (valeur de rfrence), mais il est possible de
spcifier la valeur de rfrence en utilisant la broche VREF et la fonction analogReference().

YOUNSI A.

ROBOT SUIVEUR DE LIGNE

4/ 14

EIE

LP CONDORCET

En outre, certaines broches ont des fonctions spcialises :


I2C : 4 (SDA) and 5 (SCL). Permettent le support du bus I2C (TWI) en utilisant le library Wire.
Autres broches sur la carte :
AREF. Tension de rfrence dj mentionne.
Reset. Permet au niveau bas (LOW de faire un reset du contrleur. Elle est utilise
typiquement pour monter un bouton reset aux cartes additionnelles (shields) bloquant celui
de la carte principale.
4. Communication
La carte Arduino Uno a de nombreuses possibilits de communications avec lextrieur. LAtmega328
possde une communication srie UART TTL (5V), grce aux broches numriques 0 (RX) et 1 (TX).
Un contrleur Atmega8U2 sur la carte, gre cette communication srie vers lUSB et apparat
comme un port de communication virtuel pour le logiciel sur lordinateur.
Le firmware de l8U2 utilise le protocole USB, et aucun driver externe nest ncessaire.
Windows a cependant besoin dun fichier .inf, linstallation. Le logiciel Arduino possde un logiciel
srie (Telnet) intgr permettant lenvoi et la rception de texte. Les DELs RX et TX sur la carte
clignoteront pour indiquer la transmission de donnes vers lordinateur.
Une librairie SoftwareSerial permet la transmission de donnes srie partie de chacune des
broches numriques du Uno.
LAtmega328 supporte le bus I2C (TWI) et le protocole de communication synchrone matreesclave SPI. Le logiciel Arduino inclut un ensemble de fonctions pour mettre en uvre lun ou lautre.
5. Programmation
La carte Arduino Uno peut tre programme directement avec lArduino software . LAtmega328
sur la carte Uno est pr programm avec un bootloader qui permet de charger le code dune nouvelle
application sans utiliser un programmateur hardware externe. Il communique avec un ordinateur en
utilisant le protocole STK500 dATMEL.
Mais vous pouvez programmer le contrleur de la carte en utilisant le port ICSP (In-Circuit Serial
Programming).
Le code source du firmware du contrleur auxiliaire Atmega8U2 est disponible.
6. Reset automatique par Software
Il est possible deffectuer un reset via le logiciel ARDIONO. En effet, la ligne DTR sur lAtmega8U2 est
connecte la ligne Reset de lAtmega328 travers une capacit. Lorsque cette ligne est amene ltat
logique 0, un signal Reset est envoy au contrleur.
7. Protection de surintensit USB
La carte Arduino Uno possde une protection par fusible pour le port USB si un courant de plus de
500mA est demand. La dconnexion durera tant que la source de consommation excessive naura pas
cess.
8. Dimensions
Les longueur et largeur maximales du PCB sont de 6,9 et 5,3 cm respectivement.

YOUNSI A.

ROBOT SUIVEUR DE LIGNE

5/ 14

EIE

LP CONDORCET

9. Schma structurel

Figure 4 : schma structurel de l'ARDUINO UNO


YOUNSI A.

ROBOT SUIVEUR DE LIGNE

6/ 14

EIE

LP CONDORCET

II. Prsentation de lEspace de dveloppement Intgr (EDI) Arduino


A. Description de linterface
Le logiciel Arduino a pour fonctions principales :
de pouvoir crire et compiler des programmes pour la carte Arduino
de se connecter avec la carte Arduino pour y transfrer les programmes
de communiquer avec la carte Arduino
Cet espace de dveloppement intgr (EDI) ddi au langage Arduino et la programmation des
cartes Arduino comporte :
une BARRE DE MENUS comme pour tout logiciel une interface graphique (GUI),
une BARRE DE BOUTONS qui donne un accs direct aux fonctions essentielles du logiciel et fait
toute sa simplicit d'utilisation,
un EDITEUR ( coloration
syntaxique) pour crire le code
de vos programme, avec onglets
de navigation,
une ZONE DE MESSAGES qui
affiche indique l'tat des actions
en cours,
une CONSOLE TEXTE qui
affiche les messages concernant
le rsultat de la compilation du
programme
un TERMINAL SERIE (fentre
spare) qui permet d'afficher
des messages textes reus de la
carte Arduino et d'envoyer des
caractres vers la carte Arduino.
Cette fonctionnalit permet une
mise au point facilite des
Figure 5 : prsentation des lments de l'ARDUINO software
programmes, permettant
d'afficher sur l'ordinateur l'tat de variables, de rsultats de calculs ou de conversions
analogique-numrique : un lment essentiel pour amliorer, tester et corriger ses
programmes.

Figure 6 : module TERMINAL SERIE

YOUNSI A.

ROBOT SUIVEUR DE LIGNE

7/ 14

EIE

LP CONDORCET

B. Description de la structure dun programme


1. Description gnrale des parties
Un programme utilisateur Arduino est une suite dinstructions lmentaires sous forme textuelle,
ligne par ligne. La carte lit puis effectue les instructions les unes aprs les autres, dans lordre dfini par
les lignes de code, comme mors dune programmation classique. Cette structure se dcompose en trois
parties :
Description des constantes et variables du programme
Fonction principale : configuration des entres/sorties et lments configurer (cette partie
ne sera excute quune seule fois) dans le partie VOID SETUP()
Fonction boucle : description du fonctionnement gnral du programme (gestion des
interactions entre les entres/sorties) dans la partie VOID LOOP()

1re partie
2me partie
3me partie

Figure 7 : fentre graphique de l'EDI

Remarque :
Il est possible dajouter des commentaires au programme. Pour cela on peut procder de deux manire :
- la fin de la ligne en ajoutant //
- en encadrant les commentaires entre /* et */

YOUNSI A.

ROBOT SUIVEUR DE LIGNE

8/ 14

EIE

LP CONDORCET

2. Description dtaille des parties


a. Dfinition des variables et constantes
Dans cette partie, on dclare des lments utiliss tout au long du programme : les constantes
(statiques) et les variables (dynamiques). Ce sont des emplacements mmoire utiliss pour stocker des
donnes (des valeurs) utilisables dans la suite du programme.
Variable : Une variable peut aussi bien reprsenter
envoyes
tape de calcul
numro
physique de ces entres ou sorties. Une variable nest donc pas exclusivement un paramtre variant
dans le programme. On la dclare de la faon suivante :
TYPE_DE_LA_DONNEE

NOM_DE_LA_DONNEE

Exemple : int led


Constante : Une constante est une variable dont la valeur est inchangeable lors de l'excution d'un
programme. On la dclare de la faon suivante :
CONST

TYPE_DE_LA_DONNEE

NOM_DE_LA_DONNEE

Exemple : const int led


Les diffrents types de donnes:
En programmation informatique, un type de donne, ou simplement type, dfinit les valeurs que
peut prendre une donne, ainsi que les oprateurs qui peuvent lui tre appliqus.
NOM DU TYPE

VALEUR MIN/MAX

TAILLE EN MEMOIRE

0/1

1 octet

VALEURS BINAIRES
boolean

VALEURS NUMERIQUES ENTIERES SIGNEES


int
long

-32 768 / +32 767


-2 147 483 648 / +2 147 483 647

2 octets
4 octets

VALEURS NUMERIQUES ENTIERES NON SIGNEES


byte
unsigned int
word
unsigned long

0 / +255
0 / +65535
0 / +65535
0/ +4 294 967 295

1 octet
2 octets
2 octets
4 octets

VALEURS NUMERIQUES A VIRGULE


float
double

-3.4028235E+38 / +3.4028235E+38
-3.4028235E+38 / +3.4028235E+38

4 octets
4 octets

-128 / +127 (ASCII)

1 octet

CARACTERES
char

YOUNSI A.

ROBOT SUIVEUR DE LIGNE

9/ 14

EIE

LP CONDORCET

b. Fonction principale : void setup()


Cette fonction nest excute quune seule fois au dmarrage du programme. Elle permet la
configuration des entres et sorties de la carte. Les broches numriques de lArduino peuvent aussi bien
tre configures en entres quen sorties. Ici on a configur LED_Pin_13 en sortie.
pinMode (nom, tat) est une des quatre fonctions relatives aux entres et sorties numriques
que nous verrons plus bas.
void setup()
{
ici se trouve la configuration des entres et des sorties
}

c. Fonction boucle : void loop()


Cette fonction loop() (boucle en anglais) fait exactement ce que son nom suggre et s'excute en
boucle sans fin, permettant votre programme de s'excuter. Dans cette boucle, on dfinit les
oprations
.
La fonction loop() est obligatoire, mme vide, dans tout programme.
void loop()
{
ici se trouve la description gnrale du programme en boucle
}

C. Compilation et programmation de lARDUINO


Lcriture dun programme se droule en plusieurs tapes.
1. Ecriture de lalgorithme
Lalgorithme est une mthode pour rsoudre un problme. L'algorithme est un moyen pour le
programmeur de prsenter son approche du problme d'autres personnes. En effet, un algorithme est
lnonc dans un langage bien dfini d'une suite d'oprations permettant de rpondre au problme
donn. Un algorithme doit donc tre comprhensible mme par un non-informaticien.
Avant dcrire un programme, il est donc ncessaire davoir un algorithme.
2. Ecriture du programme
La rdaction du programme se fait bien sur directement en rapport avec lalgorithme ci-dessus. Il
faut absolument penser mettre des commentaires comprhensifs par le non programmateur. Dtaill
le programme et le partitionner en bloc logiques.
La rdaction du programme se fait dans la partie raye ci-dessous :

YOUNSI A.

ROBOT SUIVEUR DE LIGNE

10/ 14

EIE

LP CONDORCET

3. Compilation du programme
Dans cette partie, on vrifie si le code contient des erreurs de syntaxes. En cas danomalie de
compilation, le compilateur renseigne sur le type derreur et la ligne o elle se trouve.
Pour lancer la compilation, il faut appuyer sur
. A ce moment-l, le bouton devient jaune et la
zone de message affiche Compiling indiquant que la compilation est en cours.
Si la compilation se droule sans erreur, le message Done compilling apparat, suivi de la taille du
programme.

Un compilateur est un programme informatique qui traduit un langage (appel le langage source)
en un autre (le langage cible), gnralement dans le but de crer un fichier excutable.
Un compilateur sert le plus souvent traduire un code source crit dans un langage de
programmation en un autre langage, habituellement un langage d'assemblage ou un langage machine.
Le programme en langage machine produit par un compilateur est appel code objet.
4. Slection de la cible et du port srie
Avant de transfrer le programme vers la carte Arduino, il faut, si ce n'est dj fait, slectionner
la bonne carte Arduino (la bonne cible) depuis le menu Tools>Board (Outils>Carte).
La carte doit videmment tre connecte l'ordinateur via un cble USB.

Vous devez galement slectionner le bon port srie depuis le menu Tools > Serial Port (Outils >
Port Srie).
Remarque :
Selon le systme dexploitation le nom du port srie peut diffrer :
Sous Mac, slectionner le port /dev/tty.usbserial-1B1 (pour une carte USB)
Sous Windows, slectionner le port COM1, COM2 (pour une carte srie) ou COM4 ou suprieur
(pour une carte USB)
Sous Linux, slectionner le port /dev/ttyUSB0, /dev/ttyUSB1 ou quivalent.

YOUNSI A.

ROBOT SUIVEUR DE LIGNE

11/ 14

EIE

LP CONDORCET

5. Transfert du programme vers la carte ARDUINO


Une fois que vous avez slectionn le bon port srie et la bonne carte Arduino, cliquez sur le bouton
UPLOAD
(Transfert vers la carte) dans la barre d'outils, ou bien slectionner le menu File>Upload
to I/O board (Fichier > Transfrer vers la carte).
Sur la plupart des cartes, vous devez voir les LEDs des lignes RX et TX clignoter rapidement,
tmoignant que le programme est bien transfr. Durant le transfert, le bouton devient jaune et le
logiciel Arduino affiche un message indiquant que le transfert est en cours.

YOUNSI A.

ROBOT SUIVEUR DE LIGNE

12/ 14

EIE

LP CONDORCET

Sources
SUR INTERNET:
http://www.arduino.cc/
http://www.mon-club-elec.fr/
http://fr.wikipedia.org/wiki/Arduino
BIBLIOGRAPHIE:
Christian Tavernier, Arduino Matriser sa programmation et ses cartes dinterface (shields), Paris, 2011, DUNOD

YOUNSI A.

ROBOT SUIVEUR DE LIGNE

13/ 14

EIE

LP CONDORCET

Annexes
Erreurs de syntaxes les plus courantes :
En phase d'criture et de mise au point de votre code, rptez rgulirement les compilations
comme indiqu ici afin de dtecter les erreurs et corrigez-les ds qu'elles apparaissent. Les erreurs sont
parfois subtiles retrouver. Les plus frquentes en pratique :
oubli d'une accolade de fermeture ou d'ouverture
oubli d'un ; de fin de ligne, ajout d'un ; aprs une instruction #include ou #define
utilisation du signe = au lieu du signe == dans une condition If ou une boucle while
utilisation d'une variable non dclare, etc...
Si vous ne savez pas d'o vient votre erreur, utiliser des // avant les lignes suspectes, et
recompiler. Avec de l'exprience, vous aurez de moins en moins de messages d'erreur

YOUNSI A.

ROBOT SUIVEUR DE LIGNE

14/ 14