Download - 5187-186-p84
-
7/23/2019 5187-186-p84
1/5
T E C H N O L O G I E M A I J U I N 2 0 13
ARDUINO
Une carte pour vos projetsCHRISTOPHE ULTR []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 sco-
larit des lves de terminale. Leur implication etleur motivation se doivent dtre importantes. Il est
donc ncessaire de leur offrir un maximum de libert
pour la concrtisation de leurs ides. Et cela commencepar 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 aca-
dmique de validation. Ds que cette commission donneson accord, laventure commence, ou plutt continue...
Le projetUne quipe dlves de terminale S option sciences delingnieur du lyce Jacquard, dans le 19earrondissement
de Paris, sest lance dans un projet cratif et original :
une bote aux lettres qui communique avec le facteur parRFID. Cette activit de conception sinscrit dans le cadre
institutionnel du projet interdisciplinaire de terminale.
La technologie mettre en uvre devant tre peucoteuse, le choix matriel sest rapidement port sur
une carte de contrle de type Arduino pour assurerlautomatisation du produit.
Lors de la constitution du cahier des charges, leslves ont propos que la bote aux lettres :
renseigne, de la faon le plus simple possible, lutilisa-
teur 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 casexceptionnel o une personne autre que le facteur aurait
dposer quelque chose dans la bote a t envisag. Lasolution retenue consiste utiliser la fonction commu-nication en champ proche (NFC, pour near field com-
munication) du lecteur de cartes RFID pour reconnatrele tlphone mobile de cette personne.
mots-cls
automatismes,partie commande,programmation, projet
Lquipe pdagogique encadrant le projet, compo-se de professeurs en sciences industrielles de ling-
nieur et dun professeur de physique, y a ajout unedimension : une recherche sur la manire dalimenter
tous les quipements de la bote aux lettres en ner-
gie 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 praction-neurs 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 disposi-tif capable de piloter le systme et de communiquer aveclutilisateur un prix raisonnable (environ 20 ). De plus,
il fallait trouver le moyen de le programmer simplementsans tre un expert en langage informatique. Les cartesArduino rpondent ces deux attentes nous verrons
comment. Et, petit plus, elles sont fabriques dans unpays de la Communaut europenne : lItalie.
Signalons que, si les cartes Arduino possdent leur
propre interface de programmation, la version 5 dulogiciel FlowCode possde en option le compilateurpour cartes Arduino, de mme que Matlab et LabView.
Nous allons ici nous intresser la carte Arduino
Uno, mais il en existe dautres avec des caractris-tiques 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 dveloppementdes applications est open source,cest--dire que tous
les schmas, programmes, bibliothques de priph-
riques, etc., sont 100 % accessibles en consultation
et/ou en tlchargement sur internet. La commu-naut des personnes utilisant ces cartes est trsnombreuse, et une recherche internet aboutit gn-
ralement des bauches de solutions mises en ligne.
On trouve aussi de plus en plus douvrages traitant dece 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 initiationaux microcontrleurs sont suffisants pour lexploiter.[]Professeur dlectrotechnique au lyce Jacquard de Paris (75019).
-
7/23/2019 5187-186-p84
2/5
M A I J U I N 2 0 13 T E C H N O L O G I E
Bouton Reset
Gestion du port USB
AREF : tension de rfrence
des entres analogiquesPort dentres/
sorties numriques
Led On
Led L
Leds RX et TX indicatricesdune transmission srie
C Atmel 328P
Port dentres analogiquesConnecteur des alimentations
Alimentation externe
Rgulateur de tension
Fusible lectronique
Port USB
Quartz 16 MHz
Comme nous allons le voir, lutilisation de macrofonc-
tions 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 pdagogiquesdautres tablissements ayant dj utilis des cartes
Arduino en enseignement technologique prbac ontconfort notre choix : les cartes Arduino sont fiables,
robustes et faciles programmer.
La carte Arduino Uno
Quand on regarde une carte Arduino Uno, on estdrout par sa sobrit ! On y retrouve le microcon-trleur entour du minimum de composants nces-saires son fonctionnement et sa programmation .
La carte, de conception trs robuste, tient dans la main
(755415 mm). Autre avantage, une connectique trsastucieuse permet aux cartes priphriques baptises
shields en langage Arduino de venir se raccorder surla carte principale en formant une sorte de mille-feuille.
Quelques prcisions techniques :
La gestion du port USB se fait grce un microcon-trleur indpendant qui tablit une liaison srie RS232entre la carte et le PC, ce qui diminue la capacit destransferts. Si cet aspect constitue un inconvnient, il
faudra utiliser la carte Arduino Leonardo qui permetune gestion native du port USB, tant vue par le PC
comme un priphrique HID (human interface device). Exemples de shields
b La carte Ethernet Shield
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
La carte Arduino
La connexion AREF permet dutiliser une tension derfrence autre que les 5 volts de la carte (configura-
tion par dfaut). Lutilisation de cette fonction ncessite
quelques prcautions (voir les donnes du fabricant).
Le symbole~qui prcde le numro de certainesconnexions du port dentres/sorties numrique dsigne
leur capacit dlivrer un signal PWM (pour pulsewidth modulation, ou MLI pour modulation de largeur
dimpulsion). Le microcontrleur ne possdant pas de
convertisseur numrique-analogique, le seul moyen dedisposer dune tension variable dpendant dune donne
numrique est de gnrer un signal rectangulaire de
frquence 490 Hz dont le rapport cyclique est variable.La donne numrique pourra aller de 0 255 et cor-respondra un rapport cyclique allant de 0 100 %.
-
7/23/2019 5187-186-p84
3/5
T E C H N O L O G I E M A I J U I N 2 0 13
Le mille-feuille de cartes
Le programme de lexemple dans la version 1.0.3 du logiciel
de programmation
compilateur. Cette bibliothque fonctionne exactementcomme le pilote dun priphrique de PC. Au niveau de
la programmation, ce pilote va nous permettre duti-liser des macrofonctions qui ne ncessitent pas derelles comptences en programmation. Par cons-quent, 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 baptissketch,
ou croquis dans la version franaise. Le programme com-mence par la dclaration des variables et par lappel aux
bibliothques (si ncessaire). Puis viennent deux parties :La partievoid setup( )est la partie du programme
qui ne va sexcuter quune seule fois, la mise en route(ou aprs unreset,ou quand on se connecte au port COM).
On y crit gnralement les fonctions dinitialisation.La partie void loop( )est une boucle infinie danslaquelle le programme crit sexcute tant que la carte
est alimente.
Le programmeur peut galement crire ses propresfonctions annexes, quil pourra utiliser dans les fonc-
tions setup( )et loop( ).
Remarque :On vrifiera avant de lancer un tlverse-ment du programme vers le microcontrleur que la carte
Arduino et le port COM utiliss sont correctement slec-tionns dans le menu Outils. Ces renseignements sont rap-
pels en bas droite de linterface de programmation .
Le programme et le cblage permettent depiloter un servomoteur en fonction de la position dunpotentiomtre. Le convertisseur analogique-numrique
convertit la tension prsente lentre AO allant de 0
La led L est directement relie la connexion 13,
elle permet donc de vrifier ltat dune sortie dun pro-
gramme sans que lon ait effectuer le moindre cblage.Une sortie de lArduino Uno peut dlivrer un courantdune intensit de 40 mA, cependant lintensit totale
de toutes les sorties ne pourra pas excder 200 mA.La carte possde 6 entres analogiques associablesavec un convertisseur 10 bits. La dure de la conver-
sion analogique-numrique est d environ 100 ms.
La connexion Vin permet de rcuprer, en liaisondirecte, la tension de lalimentation externe.
Le cblage dunshield
Pour le projet, il a fallu associer la carte ArduinoUno un shieldRFID pour lautorisation daccs. Un
shieldLCD 2 x16 (2 lignes, 16 colonnes) a t ajoutpour laffichage des informations utiles lutilisateur.
Les deux shieldscommuniquent via le bus srie IC, et
leur alimentation est fournie par la carte mre. Il ny aaucun cblage faire, il suffit dempiler les cartes .Pour des raisons videntes de lisibilit, le shieldLCD
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 sys-
tmatiquement le cas.
La programmationIllustrons 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 lesinstructions et la structure du langage C et du langage
C++ (plus rcent). Les instructions disponibles sontlimites, car adaptes aux possibilits du microcon-trleur. Linterface de programmation est tlchar-
geable 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 unlangage de haut niveau sans restrictions pour un cot nul.
De plus, les shieldsou les priphriques que lon vient
ajouter la carte mre possdent tous leur bibliothque
(library), tlchargeable ou prsente par dfaut dans le
-
7/23/2019 5187-186-p84
4/5
M A I J U I N 2 0 13 T E C H N O L O G I E
Laffichage de ladresse de la bote aux lettres
Dans un premier temps, le programme teste que le
shieldRFID 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 .
Lorsque lon prsente un badge proximit de
lantenne du shieldRFID, le programme lidentifie etrcupre les 4 octets de son UID (Unique IDentifica-
tion number). Lidentification du facteur se fait grce au
4eoctet de lUID de son badge (la valeur hexadcimale0x95 dans notre cas). LUID du badge est stock defaon 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 parlutilisateur, les lves y ont inscrit (avec un autre pro-
gramme) Badge Facteur et Badge Inconnu
en guise de vrification visuelle immdiate des diff-
rents badges sur le moniteur srie de dialogue avecle microcontrleur (voir lencadr).
Si le badge du facteur est identifi, le programmeaffiche en vert sur lcran LCD que laccs la bote auxlettres est autoris . Pour tout autre badge, il affiche
en rouge que laccs la bote aux lettres est interdit .La fin du programme permet aux lves dtre aver-
tis, 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 desimuler le fonctionnement dun programme. Cest pourquoi,
dans une phase de mise au point, il est trs utile dinsrerdans le programme des lignes qui vont permettre denvoyer
et de recevoir des informations sur le moniteur srie enfait une fentre qui souvre sur un PC permettant dafficher
5 V issue du potentiomtre en une grandeur code
sur 10 bits allant de 0 1023. La macrofonction
ServoMoteur.write(valeur)pilote intgrale-ment le servomoteur dans les deux sens. Nul besoin deconnatre 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 unemise l chelle avec la fonction :
map(donne, limite_basse_source, limite_
haute_source, limite_basse_destination,
limite_haute_destination);
Nous constatons dans cet exemple que la mobilisationdes connaissances et la rflexion principale vont vers lar-
chitecture du programme et du prototype. Il ny a pas deperte 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 illus-
trs par les figures de . Elle concerne la rsolution
du problme de lidentification du facteur. Ce programmesemble 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 exemplesfournis avec les bibliothques du shieldRFID et du shield
LCD, en ont analys les solutions, puis ils ont modifi les
programmes en fonction de ce dont ils avaient besoin.
Le cblage ncessaire au programme de lexemple
(schma ralis avec le logiciel gratuit Fritzing)
La prsentation du badge facteur
La prsentation dun badge inconnu
-
7/23/2019 5187-186-p84
5/5
T E C H N O L O G I E M A I J U I N 2 0 13
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, dansle 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.
des messages texte reus de la carte Arduino et denvoyer
des caractres vers la carte Arduino. Le dialogue entre lacarte et le PC seffectue par une liaison srie.
Une sduisante simplicit
Le choix de la technologie Arduino sest rvl trs fruc-tueux : aprs quelques ttonnements, les lves affects ce projet de bote aux lettres intelligente ont rapide-
ment obtenu des rsultats concluants. Nous avons gale-
ment constat un intrt des lves des autres groupes,pour le projet desquels le choix des solutions technolo-
giques ntait pas compltement fix, devant la facilit
Le moniteur srie de dialogue avec le microcontrleur
Pour aller plus loin
TAVERNIER (Christian), Arduino: Matrisez sa programmation etses cartes dinterface ( shields ),Dunod, 2011
www.arduino.cc/fr
www.adafruit.com
https://github.com/adafruit/Adafruit-PN532
https://github.com/adafruit/Adafruit-RGB-LCD-Shield-Library
www.fritzing.org
Remerciements
Bruno Guilbert (professeur en STS IRIS au lyce Jacquard)pour son assistance technique sur les cartes Arduino et laprogrammation en C++, et galement aux lves du groupe bote aux lettres intelligente : Gustave Corpet, Samy Kettani,Bilel Souabni et Ugo Vidberg.
#include < Wire .h>#include // Appel aux bibliothques#include #include
#define ROUGE 0x1 // Couleurs d'clairage de l'afficheur#define VERT 0x2#define BLANC 0x7
Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield(); Adafruit_NFCShield_I2C nfc( 2, 3); // Dclaration du protocole I2C
void setup(void) {
Serial.begin(115200);lcd.begin(16, 2); // Attribution des dimensions de l'afficheur LCDnfc.begin();
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 PN53xSerial .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) {
intIDcarte = 0;booleanacquisition; // Identification de la carte uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Tableau pour retourner l'adresse UIDuint8_t uidLength; // Taille de l'UID (4 ou 7 octets)lcd.clear(); // Effacer lcran LCDlcd.print(" LYCE Jacquard"); // Affichage de l'adresse sur l'cran LCD lcd.setCursor(0, 1); // de la boite aux lettres lcd.print(" 2, rue Bouret "); // Voir fig. 6 lcd.setBacklight (BLANC);
// En attente de la carteacquisition = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);if(acquisition) {
Serial .println(" Carte ISO14443A identifie "); // Info sur la carte dtecteSerial .print(" Taille UID : "); Serial .print(uidLength, DEC); Serial .println(" Octets");
if(uidLength == 4) { // Si lUID de la carte comporte 4 octets
IDcarte =uid[3]; // Gnration du code d'identificationSerial .println(" Mifare Classic (4 Octets UID) "); // Carte Mifare Classicuint8_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];nfc.Print HexChar(data, 16); // Vrification du bloc 4 et du codeSerial .println(" Code ID : "); Serial .print(IDcarte, HEX); Serial .println("");
if(IDcarte ==0x95) { // Code de la carte du facteurlcd.clear();lcd.setCursor(0, 0);lcd.print(" Badge facteur"); // Voir fig. 7lcd.setCursor(0, 1);lcd.print(" Autoriser acc s");lcd.setBacklight (VERT); // Rtroclairage vert
delay(6000);}else { // Tous les autres codes
lcd.clear();lcd.setCursor(0, 0);lcd.print(" Badge inconnu"); // Voir fig. 8lcd.setCursor(0, 1);lcd.print(" Accs interdit ");lcd.setBacklight (ROUGE); // Rtroclairage rouge delay(6000);}}
else{Serial .println(" Secteur illisible "); // Prise en compte dautres cas } // de figure
}else {
Serial .println(" DFAUT d'identification ");}
}
if(uidLength == 7) {Serial .println(" Mifare Ultralight (7 Octets UID) non utilise ");
}}
Programme de gestion daccs par badge RFID avec afficheur LCD