5187 186 p84

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 5

ARDUINO

Une carte pour vos projets


CHRISTOPHE ULTR[1]
Les projets interdisciplinaires impliquent de faire lacquisition
dun matriel adaptable et peu coteux qui rponde des
problmatiques communes, comme le contrle-commande ou
linterface homme-machine. La carte Arduino rpond parfaitement
ces exigences. Dcouvrons-la travers un exemple de projet.
e projet doit constituer un moment fort dans la scolarit des lves de terminale. Leur implication et
leur motivation se doivent dtre importantes. Il est
donc ncessaire de leur offrir un maximum de libert
pour la concrtisation de leurs ides. Et cela commence
par le choix du projet, qui doit rpondre au moins
une des thmatiques du rfrentiel : mobilit; sant;
confort; protection; nergie; environnement; assistance
au dveloppement. Une fois un sujet choisi par chaque
groupe dlves, les professeurs laborent des notes de
cadrage du projet destination dune commission acadmique de validation. Ds que cette commission donne
son accord, laventure commence, ou plutt continue...

mots-cls
automatismes,
partie commande,
programmation, projet

Le projet
Une quipe dlves de terminale S option sciences de
lingnieur du lyce Jacquard, dans le 19e arrondissement
de Paris, sest lance dans un projet cratif et original:
une bote aux lettres qui communique avec le facteur par
RFID. Cette activit de conception sinscrit dans le cadre
institutionnel du projet interdisciplinaire de terminale.
La technologie mettre en uvre devant tre peu
coteuse, le choix matriel sest rapidement port sur
une carte de contrle de type Arduino pour assurer
lautomatisation du produit.
Lors de la constitution du cahier des charges, les
lves ont propos que la bote aux lettres:
renseigne, de la faon le plus simple possible, lutilisateur sur la quantit de courrier reu. La solution retenue a
t de placer une balance lectronique au fond de la bote;
interdise toute personne non autorise la possibilit
dy mettre quelque chose (par exemple de la publicit),
tout en laissant la possibilit au facteur dy accder. La
solution retenue a t de dverrouiller laccs la bote
pour le facteur grce une carte RFID La Poste. Le cas
exceptionnel o une personne autre que le facteur aurait
dposer quelque chose dans la bote a t envisag. La
solution retenue consiste utiliser la fonction communication en champ proche (NFC, pour near field communication) du lecteur de cartes RFID pour reconnatre
le tlphone mobile de cette personne.
[1] Professeur dlectrotechnique au lyce Jacquard de Paris (75019).

84

TECHNOLOGIE 186

M A I -J U I N 2 013

Lquipe pdagogique encadrant le projet, compose de professeurs en sciences industrielles de lingnieur et dun professeur de physique, y a ajout une
dimension: une recherche sur la manire dalimenter
tous les quipements de la bote aux lettres en nergie lectrique et ventuellement, pour une habitation
individuelle, de la rendre indpendante de ce point de
vue; elle a propos au groupe dlves que la fonction
traiter de la chane dinformation (qui reoit des
informations des capteurs et qui pilote les practionneurs de la bote aux lettres) soit assure par un type
de microcontrleurs prsent sur les cartes Arduino.
Pourquoi les cartes Arduino?
Les aspects matriels
Ds son origine, ce projet se devait dtre conomique,
car les clients potentiels ne vont pas dpenser beaucoup
dargent pour ajouter des fonctions leur bote aux lettres.
Par consquent, il tait ncessaire de trouver un dispositif capable de piloter le systme et de communiquer avec
lutilisateur un prix raisonnable (environ 20). De plus,
il fallait trouver le moyen de le programmer simplement
sans tre un expert en langage informatique. Les cartes
Arduino rpondent ces deux attentes nous verrons
comment. Et, petit plus, elles sont fabriques dans un
pays de la Communaut europenne: lItalie.
Signalons que, si les cartes Arduino possdent leur
propre interface de programmation, la version 5 du
logiciel FlowCode possde en option le compilateur
pour cartes Arduino, de mme que Matlab et LabView.
Nous allons ici nous intresser la carte Arduino
Uno, mais il en existe dautres avec des caractristiques diffrentes: ATmega2560, Leonardo, Micro et
la dernire en date, DUE.
Les aspects pdagogiques
La programmation des cartes Arduino est aise, et
lensemble des outils ncessaires au dveloppement
des applications est open source, cest--dire que tous
les schmas, programmes, bibliothques de priphriques, etc., sont 100 % accessibles en consultation
et/ou en tlchargement sur internet. La communaut des personnes utilisant ces cartes est trs
nombreuse, et une recherche internet aboutit gnralement des bauches de solutions mises en ligne.
On trouve aussi de plus en plus douvrages traitant de
ce type de cartes (voir le S-SI le mag p. 14). Par
consquent, en prrequis, un apprentissage minimal
des fonctions algorithmiques de base et une initiation
aux microcontrleurs sont suffisants pour lexploiter.

Comme nous allons le voir, lutilisation de macrofonctions permet la concrtisation aise dune ide sans que
lon soit informaticien. Ces cartes sont donc un outil
parfaitement adapt pour le prototypage.
Les retours dexprience dquipes pdagogiques
dautres tablissements ayant dj utilis des cartes
Arduino en enseignement technologique prbac ont
confort notre choix: les cartes Arduino sont fiables,
robustes et faciles programmer.
La carte Arduino Uno
Quand on regarde une carte Arduino Uno, on est
drout par sa sobrit! On y retrouve le microcontrleur entour du minimum de composants ncessaires son fonctionnement et sa programmation 1 .
La carte, de conception trs robuste, tient dans la main
(75 54 15 mm). Autre avantage, une connectique trs
astucieuse permet aux cartes priphriques baptises
shields 2 en langage Arduino de venir se raccorder sur
la carte principale en formant une sorte de mille-feuille.
Quelques prcisions techniques:
La gestion du port USB se fait grce un microcontrleur indpendant qui tablit une liaison srie RS232
entre la carte et le PC, ce qui diminue la capacit des
transferts. Si cet aspect constitue un inconvnient, il
faudra utiliser la carte Arduino Leonardo qui permet
une gestion native du port USB, tant vue par le PC
comme un priphrique HID (human interface device).
Gestion du port USB

La connexion AREF permet dutiliser une tension de


rfrence autre que les 5 volts de la carte (configuration par dfaut). Lutilisation de cette fonction ncessite
quelques prcautions (voir les donnes du fabricant).
Le symbole ~ qui prcde le numro de certaines
connexions du port dentres/sorties numrique dsigne
leur capacit dlivrer un signal PWM (pour pulse
width modulation, ou MLI pour modulation de largeur
dimpulsion). Le microcontrleur ne possdant pas de
convertisseur numrique-analogique, le seul moyen de
disposer dune tension variable dpendant dune donne
numrique est de gnrer un signal rectangulaire de
frquence 490Hz dont le rapport cyclique est variable.
La donne numrique pourra aller de 0 255 et correspondra un rapport cyclique allant de 0 100 %.

a La carte Motor Shield Rev3 qui permet


de commander 2 moteurs
courant continu
par un double pont
en H (CI L298P)
ou un moteur
pas pas

b La carte Ethernet Shield


2 Exemples de shields

AREF: tension de rfrence


des entres analogiques

Bouton Reset

Port dentres/
sorties numriques
Led L

Quartz 16 MHz

Leds RX et TX indicatrices
dune transmission srie

Port USB

Led On

Fusible lectronique

Rgulateur de tension
C Atmel 328P
Alimentation externe

1 La carte Arduino

Connecteur des alimentations

Port dentres analogiques


M A I -J U I N 2 013

TECHNOLOGIE 186

85

La led L est directement relie la connexion 13,


elle permet donc de vrifier ltat dune sortie dun programme sans que lon ait effectuer le moindre cblage.
Une sortie de lArduino Uno peut dlivrer un courant
dune intensit de 40 mA, cependant lintensit totale
de toutes les sorties ne pourra pas excder 200 mA.
La carte possde 6 entres analogiques associables
avec un convertisseur 10 bits. La dure de la conversion analogique-numrique est denviron 100 ms.
La connexion Vin permet de rcuprer, en liaison
directe, la tension de lalimentation externe.

Le cblage dun shield


Pour le projet, il a fallu associer la carte Arduino
Uno un shield RFID pour lautorisation daccs. Un
shield LCD 2 x 16 (2 lignes, 16 colonnes) a t ajout
pour laffichage des informations utiles lutilisateur.
Les deux shields communiquent via le bus srie IC, et
leur alimentation est fournie par la carte mre. Il ny a
aucun cblage faire, il suffit dempiler les cartes 3 .
Pour des raisons videntes de lisibilit, le shield LCD
est install au sommet de la pile.
Remarque: Il faut vrifier, lors de lachat dun shield
compatible Arduino, que les connecteurs permettant
dempiler les cartes sont fournis, car ce nest pas systmatiquement le cas.
La programmation
Illustrons par un exemple (sans lien avec la bote aux
lettres intelligente) la simplicit de programmation de
la carte Arduino.
Le langage utilis nest pas propritaire, il utilise les
instructions et la structure du langage C et du langage
C++ (plus rcent). Les instructions disponibles sont
limites, car adaptes aux possibilits du microcontrleur. Linterface de programmation 4 est tlchargeable en version franaise cette adresse:
http://arduino.cc/fr/Main/DebuterInstallation
Notons que ce logiciel est portable, cest--dire quon
peut linstaller sur une cl USB, par exemple. Il permet
de programmer nimporte quel microcontrleur avec un
langage de haut niveau sans restrictions pour un cot nul.
De plus, les shields ou les priphriques que lon vient
ajouter la carte mre possdent tous leur bibliothque
(library), tlchargeable ou prsente par dfaut dans le

TECHNOLOGIE 186

Remarque: On vrifiera avant de lancer un tlversement du programme vers le microcontrleur que la carte
Arduino et le port COM utiliss sont correctement slectionns dans le menu Outils. Ces renseignements sont rappels en bas droite de linterface de programmation 4 .
Le programme 4 et le cblage 5 permettent de
piloter un servomoteur en fonction de la position dun
potentiomtre. Le convertisseur analogique-numrique
convertit la tension prsente lentre AO allant de 0

4 Le programme de lexemple dans la version 1.0.3 du logiciel


de programmation

3 Le mille-feuille de cartes

86

compilateur. Cette bibliothque fonctionne exactement


comme le pilote dun priphrique de PC. Au niveau de
la programmation, ce pilote va nous permettre dutiliser des macrofonctions qui ne ncessitent pas de
relles comptences en programmation. Par consquent, il nest pas ncessaire dentrer dans les dtails
de la structure du traitement du priphrique mais
un niveau minimal danglais technique est souhaitable.
La structure du programme, classique, est baptis sketch,
ou croquis dans la version franaise. Le programme commence par la dclaration des variables et par lappel aux
bibliothques (si ncessaire). Puis viennent deux parties:
La partie void setup( ) est la partie du programme
qui ne va sexcuter quune seule fois, la mise en route
(ou aprs un reset, ou quand on se connecte au port COM).
On y crit gnralement les fonctions dinitialisation.
La partie void loop( ) est une boucle infinie dans
laquelle le programme crit sexcute tant que la carte
est alimente.
Le programmeur peut galement crire ses propres
fonctions annexes, quil pourra utiliser dans les fonctions setup( ) et loop( ).

M A I -J U I N 2 013

5 V issue du potentiomtre en une grandeur code


sur 10 bits allant de 0 1023. La macrofonction
ServoMoteur.write(valeur) pilote intgralement le servomoteur dans les deux sens. Nul besoin de
connatre la logique de commande des servomoteurs en
fonction de la largeur et de la frquence des impulsions.
Remarque : la macrofonction ServoMoteur.
write(valeur) ayant besoin, en argument, de la
variable valeur de 0 179, nous avons procd une
mise lchelle avec la fonction :
map (donne, limite_basse_source, limite_
haute_source, limite_basse_destination,
limite_haute_destination);

7 La prsentation du badge facteur

Nous constatons dans cet exemple que la mobilisation


des connaissances et la rflexion principale vont vers larchitecture du programme et du prototype. Il ny a pas de
perte de temps en programmation fastidieuse, et en quelques
lignes on est capable de piloter un petit systme ludique.
Une production des lves
Pour le projet la bote aux lettres, lencadr montre une
partie de programme qui permet dobtenir les rsultats illustrs par les figures de 6 9 . Elle concerne la rsolution
du problme de lidentification du facteur. Ce programme
semble plus complexe que celui de lexemple prcdent,
mais son criture na pourtant pas ncessit normment
plus de travail. En effet, les lves sont partis des exemples
fournis avec les bibliothques du shield RFID et du shield
LCD, en ont analys les solutions, puis ils ont modifi les
programmes en fonction de ce dont ils avaient besoin.

5 Le cblage ncessaire au programme de lexemple


(schma ralis avec le logiciel gratuit Fritzing)

6 Laffichage de ladresse de la bote aux lettres

8 La prsentation dun badge inconnu

Dans un premier temps, le programme teste que le


shield RFID est bien connect la carte Arduino, puis
il se met en attente dun badge et affiche ladresse de
la bote aux lettres en bleu sur lcran LCD 6 .
Lorsque lon prsente un badge proximit de
lantenne du shield RFID, le programme lidentifie et
rcupre les 4 octets de son UID (Unique IDentification number). Lidentification du facteur se fait grce au
4e octet de lUID de son badge (la valeur hexadcimale
0x95 dans notre cas). LUID du badge est stock de
faon permanente dans la puce et nest pas modifiable.
Pour simplifier la reconnaissance du badge, les lves
ont choisi de ne tester que le dernier octet.
Par contre, le contenu du bloc 4 tant modifiable par
lutilisateur, les lves y ont inscrit (avec un autre programme) Badge Facteur 7 et Badge Inconnu 8
en guise de vrification visuelle immdiate des diffrents badges sur le moniteur srie de dialogue avec
le microcontrleur 9 (voir lencadr).
Si le badge du facteur est identifi, le programme
affiche en vert sur lcran LCD que laccs la bote aux
lettres est autoris 7 . Pour tout autre badge, il affiche
en rouge que laccs la bote aux lettres est interdit 8 .
La fin du programme permet aux lves dtre avertis, par un affichage sur le moniteur srie, dun ventuel
problme avec le badge ou quun badge est reconnu par
le lecteur mais incompatible avec cette application.
Remarque: Linterface de programmation ne permet pas de
simuler le fonctionnement dun programme. Cest pourquoi,
dans une phase de mise au point, il est trs utile dinsrer
dans le programme des lignes qui vont permettre denvoyer
et de recevoir des informations sur le moniteur srie en
fait une fentre qui souvre sur un PC permettant dafficher
M A I -J U I N 2 013

TECHNOLOGIE 186

87

dutilisation dun tel matriel. Ils ont t sduits par les


progrs rapides de ce groupe et ont tous voulu intgrer
les cartes Arduino dans leur projet. Par exemple, dans
le cadre dun projet de maison thermodynamique, des
lves ont ralis le pilotage en puissance du module
effet Peltier ainsi que lacquisition et le traitement des
mesures de temprature laide de ce type de cartes. n

Pour aller plus loin


TAVERNIER (Christian), Arduino: Matrisez sa programmation et
ses cartes dinterface (shields), Dunod, 2011
9 Le moniteur srie de dialogue avec le microcontrleur

www.arduino.cc/fr
www.adafruit.com
https://github.com/adafruit/Adafruit-PN532
https://github.com/adafruit/AdafruitRGB-LCD-Shield-Library
www.fritzing.org

des messages texte reus de la carte Arduino et denvoyer


des caractres vers la carte Arduino. Le dialogue entre la
carte et le PC seffectue par une liaison srie.
Une sduisante simplicit
Le choix de la technologie Arduino sest rvl trs fructueux: aprs quelques ttonnements, les lves affects
ce projet de bote aux lettres intelligente ont rapidement obtenu des rsultats concluants. Nous avons galement constat un intrt des lves des autres groupes,
pour le projet desquels le choix des solutions technologiques ntait pas compltement fix, devant la facilit

Remerciements
Bruno Guilbert (professeur en STS IRIS au lyce Jacquard)
pour son assistance technique sur les cartes Arduino et la
programmation en C++, et galement aux lves du groupe
bote aux lettres intelligente: Gustave Corpet, Samy Kettani,
Bilel Souabni et Ugo Vidberg.

Programme de gestion daccs par badge RFID avec afficheur LCD


#include < Wire .h>
#include <Adafruit_NFCShield_I2C.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>
#define ROUGE 0x1
#define VERT
0x2
#define BLANC 0x7

// Appel aux bibliothques


if (uidLength == 4) {
// Couleurs d'clairage de l'afficheur

Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();


Adafruit_NFCShield_I2C nfc( 2, 3);
// Dclaration du protocole I2C
void setup(void) {
Serial.begin( 1152 00);
lcd.begin(16, 2);
nfc.begin();

// Attribution des dimensions de l'afficheur LCD

uint32_t versiondata = nfc.getFirmwareVersion();


if (! versiondata) {
Serial .print ("Pas de carte PN53x");
while (1);
// Arrt si pas de shield NFC/RFID reconnu
}
// Renseignements propos de la carte PN53x
Serial .print (" Chip PN5 ."); Serial .println ((versiondata>>24) & 0xFF, HEX );
Serial .print (" Firmware ver. "); Serial .print ((versiondata>>16) & 0xFF, DEC);
Serial .print (' .'); Serial .println ((versiondata>>8) & 0xFF, DEC);
nfc.SAMConfig();
// Configuration pour lire la carte RFID
Serial .println (" En attente de carte ISO14443A ...");
// Voir fig. 9
}
void loop(void) {
int IDcarte = 0;
boolean acquisition;
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
uint8_t uidLength;
lcd.clear ();
lcd.print (" LYCE Jacquard");
lcd.setCursor (0, 1);
lcd.print (" 2, rue Bouret ");
lcd.setBacklight (BLANC);

// Identification de la carte
// Tableau pour retourner l'adresse UID
// Taille de l'UID (4 ou 7 octets)
// Effacer lcran LCD
// Affichage de l'adresse sur l'cran LCD
// de la boite aux lettres
// Voir fig. 6

88

TECHNOLOGIE 186

else {

else {
}

// En attente de la carte
acquisition = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
if (acquisition) {
Serial .println (" Carte ISO14443A identifie ");
// Info sur la carte dtecte
Serial .print (" Taille UID : "); Serial .print (uidLength, DEC); Serial .println (" Octets");

M A I -J U I N 2 013

// Si lUID de la carte comporte 4 octets

IDcarte =uid[3 ];
// Gnration du code d'identification
Serial .println (" Mifare Classic (4 Octets UID) ");
// Carte Mifare Classic
uint8_t keya[6] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
acquisition = nfc.mifareclassic_AuthenticateBlock(uid,uidLength, 4, 0, keya);
if (acquisition) {
Serial .println (" Lecture du bloc 4 ");
uint8_t data[16];
// Vrification du bloc 4 et du code
nfc.Print HexChar (data, 16);
Serial .println (" Code ID : "); Serial .print (IDcarte, HEX ); Serial .println ("");

if (IDcarte ==0x95 ) {
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print (" Badge facteur");
lcd.setCursor (0, 1);
lcd.print (" Autoriser acc s");
lcd.setBacklight (VERT);
delay(6000);
}
else {
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print (" Badge inconnu");
lcd.setCursor (0, 1);
lcd.print (" Accs interdit ");
lcd.setBacklight (ROUGE);
delay(6000);}
}
Serial .println (" Secteur illisible ") ;
}

// Code de la carte du facteur


// Voir fig. 7
// Rtroclairage vert
// Tous les autres codes
// Voir fig. 8
// Rtroclairage rouge

// Prise en compte dautres cas


// de figure

Serial .println (" DFAUT d'identification ");


}

if (uidLength == 7) {
Serial .println (" Mifare Ultralight (7 Octets UID) non utilise ");
}
}

Vous aimerez peut-être aussi