Table Of ContentARDUINO : PREMIERS PAS EN
INFORMATIQUE EMBARQUÉE
Eskimon, olyte
19 février 2016
Table des matières
1 Introduction 7
1.0.1 Apprentissagedesbases . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Découverte de l’Arduino 9
2.1 Présentationd’Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Qu’est-cequec’est? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.2 PourquoichoisirArduino? . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.3 LescartesArduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.4 Listed’achat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Quelquesbasesélémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.1 Lecourant,latensionetlamasse . . . . . . . . . . . . . . . . . . . . . . 24
2.2.2 Larésistanceetsaloi! . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.3 Lemicrocontrôleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2.4 Lesbasesdecomptage(2,10et16) . . . . . . . . . . . . . . . . . . . . . . 31
2.3 Lelogiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3.2 Interfacedulogiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.3.3 Approcheetutilisationdulogiciel . . . . . . . . . . . . . . . . . . . . . . 40
2.4 Lematériel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.4.1 Présentationdelacarte . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.4.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4.3 Fonctionnementglobal . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.5 LelangageArduino(1/2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.5.1 Lasyntaxedulangage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.5.2 Lesvariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.5.3 Lesconditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.6 LelangageArduino(2/2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2.6.1 Lesboucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2.6.2 Lesfonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
2.6.3 Lestableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3 Gestion des entrées / sorties 95
3.1 Notrepremierprogramme! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.1.1 Ladiodeélectroluminescente . . . . . . . . . . . . . . . . . . . . . . . . 95
3.1.2 Parquoioncommence? . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.1.3 Créerleprogramme:lesbonsoutils! . . . . . . . . . . . . . . . . . . . . 101
3.1.4 Commenttoutcelafonctionne? . . . . . . . . . . . . . . . . . . . . . . . 109
3.2 Introduireletemps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.2.1 Commentfaire? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.2.2 FaireclignoterungroupedeLED . . . . . . . . . . . . . . . . . . . . . . . 118
3.2.3 Réaliserunchenillard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
3
Tabledesmatières
3.2.4 Fonctionmillis() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
3.3 TPFeuxdesignalisationroutière . . . . . . . . . . . . . . . . . . . . . . . . . . 129
3.3.1 Préparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
3.3.2 Énoncédel’exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
3.3.3 Correction! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
3.4 Unsimplebouton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
3.4.1 Qu’est-cequ’unbouton? . . . . . . . . . . . . . . . . . . . . . . . . . . 134
3.4.2 Récupérerl’appuidubouton . . . . . . . . . . . . . . . . . . . . . . . . . 141
3.4.3 InteragiraveclesLED . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
3.4.4 Lesinterruptionsmatérielles . . . . . . . . . . . . . . . . . . . . . . . . 152
3.5 Afficheurs7segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
3.5.1 Premièreapproche:côtéélectronique . . . . . . . . . . . . . . . . . . . . 155
3.5.2 Affichersonpremierchiffre! . . . . . . . . . . . . . . . . . . . . . . . . . 161
3.5.3 Techniquesd’affichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
3.5.4 UtilisationdudécodeurBCD . . . . . . . . . . . . . . . . . . . . . . . . . 166
3.5.5 Utiliserplusieursafficheurs . . . . . . . . . . . . . . . . . . . . . . . . . 171
3.5.6 Contraintesdesévènements . . . . . . . . . . . . . . . . . . . . . . . . . 180
3.6 [TP]Parking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
3.6.1 Consigne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
3.6.2 Correction! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
4 La communication avec Arduino 195
4.1 Généralitéssurlavoiesérie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
4.1.1 Communiquer,pourquoi? . . . . . . . . . . . . . . . . . . . . . . . . . . 195
4.1.2 LanormeRS232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
4.1.3 ConnexionsérieentreArduinoet… . . . . . . . . . . . . . . . . . . . . . 203
4.1.4 Audelàd’Arduinoaveclaconnexionsérie . . . . . . . . . . . . . . . . . . 208
4.2 Envoyeretrecevoirdesdonnéessurlavoiesérie . . . . . . . . . . . . . . . . . . 210
4.2.1 Préparerlavoiesérie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
4.2.2 Envoyerdesdonnées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
4.2.3 Recevoirdesdonnées . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
4.2.4 [Exercice]Attentionàlacasse! . . . . . . . . . . . . . . . . . . . . . . . . 222
4.3 [TP]Baignadeinterdite! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
4.3.1 SujetduTPsurlavoiesérie . . . . . . . . . . . . . . . . . . . . . . . . . . 224
4.3.2 Correction! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
4.3.3 Améliorations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
4.4 [Annexe]Ordinateuretvoiesériedansunautrelangagedeprogrammation . . . . 240
4.4.1 EnC++avecQt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
4.4.2 EnC#(.Net) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
4.4.3 EnPython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
5 Les grandeurs analogiques 257
5.1 Lesentréesanalogiquesdel’Arduino . . . . . . . . . . . . . . . . . . . . . . . . 257
5.1.1 Unsignalanalogique:petitsrappels . . . . . . . . . . . . . . . . . . . . . 257
5.1.2 Lesconvertisseursanalogiques–>numériqueouCAN . . . . . . . . . . . . 259
5.1.3 Lectureanalogique,onyvient… . . . . . . . . . . . . . . . . . . . . . . . 268
5.1.4 Exempled’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
5.1.5 Unemeilleureprécision? . . . . . . . . . . . . . . . . . . . . . . . . . . 276
4
Tabledesmatières
5.2 [TP]Vu-mètreàLED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
5.2.1 Consigne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
5.2.2 Correction! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
5.2.3 Amélioration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
5.3 Etlessorties“analogiques”,enfin…presque! . . . . . . . . . . . . . . . . . . . 284
5.3.1 Convertirdesdonnéesbinairesensignalanalogique . . . . . . . . . . . . . 284
5.3.2 LaPWMdel’Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
5.3.3 TransformationPWM->signalanalogique . . . . . . . . . . . . . . . . . . 297
5.3.4 ModifierlafréquencedelaPWM . . . . . . . . . . . . . . . . . . . . . . . 305
5.4 [Exercice]Uneanimation“YouTube” . . . . . . . . . . . . . . . . . . . . . . . . 309
5.4.1 Énoncé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
5.4.2 Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
6 Les capteurs et l’environnement autour d’Arduino 315
6.1 Généralitéssurlescapteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
6.1.1 CapteuretTransducteur . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
6.1.2 Uncapteur,çacapte! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
6.1.3 Lescaractéristiquesd’uncapteur . . . . . . . . . . . . . . . . . . . . . . . 321
6.2 Différentstypesdemesures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
6.2.1 ToutOuRien,uncapteurquisaitcequ’ilveut . . . . . . . . . . . . . . . . 323
6.2.2 Capteursàrésistancedesortievariable . . . . . . . . . . . . . . . . . . . 328
6.2.3 Capteursàtensiondesortievariable . . . . . . . . . . . . . . . . . . . . . 338
6.2.4 Étalonnersoncapteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
6.3 Descapteursplusévolués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
6.3.1 Capteuràsortieenmodulationdelargeurd’impulsion(PWM) . . . . . . . . 354
6.3.2 Capteuràsignaldesortiedefréquencevariable . . . . . . . . . . . . . . . 358
6.3.3 Capteurutilisantunprotocoledecommunication . . . . . . . . . . . . . . 360
7 Le mouvement grâce aux moteurs 363
7.1 Lemoteuràcourantcontinu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
7.1.1 Unmoteur,çafaitquoiaujuste? . . . . . . . . . . . . . . . . . . . . . . . 363
7.1.2 Alimenterunmoteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
7.1.3 Piloterunmoteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
7.1.4 EtArduinodanstoutça? . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
7.2 Unmoteurquiadelatête:leServomoteur . . . . . . . . . . . . . . . . . . . . . 415
7.2.1 Principeduservomoteur . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
7.2.2 Lacommanded’unservomoteur . . . . . . . . . . . . . . . . . . . . . . . 423
7.2.3 Arduinoetlesservomoteurs . . . . . . . . . . . . . . . . . . . . . . . . . 427
7.2.4 L’électroniqued’asservissement . . . . . . . . . . . . . . . . . . . . . . . 430
7.2.5 Unpeud’exercice! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
7.2.6 Testerunservomoteur“non-standard” . . . . . . . . . . . . . . . . . . . 438
7.3 Apetitspas,lemoteurpas-à-pas . . . . . . . . . . . . . . . . . . . . . . . . . . 440
7.3.1 Lesdifférentsmoteurspas-à-pasetleurfonctionnement . . . . . . . . . . 440
7.3.2 Seservirdumoteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
7.3.3 UtilisationavecArduino . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
8 L’affichage, une autre manière d’interagir 465
8.1 LesécransLCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
8.1.1 UnécranLCDc’estquoi? . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
5
Tabledesmatières
8.1.2 Quelécranchoisir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
8.1.3 Commentons’ensert? . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
8.2 VotrepremiertextesurleLCD! . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
8.2.1 EcriredutextesurleLCD . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
8.2.2 Sedéplacersurl’écran . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
8.2.3 Créeruncaractère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
8.3 [TP]SupervisionavecunLCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
8.3.1 Consigne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
8.3.2 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
9 Internet of Things : Arduino sur Internet 493
9.1 Découvertedel’EthernetsurArduino . . . . . . . . . . . . . . . . . . . . . . . . 493
9.1.1 Unréseauinformatiquec’estquoi? . . . . . . . . . . . . . . . . . . . . . 493
9.1.2 LeshieldEthernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
9.1.3 Unpeudevocabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
9.2 ArduinoetEthernet:client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
9.2.1 ClientetrequêtesHTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
9.2.2 Utilisationdushieldcommeclient . . . . . . . . . . . . . . . . . . . . . . 499
9.2.3 Exercice,lirel’uptimedeEskimon.fr . . . . . . . . . . . . . . . . . . . . . 512
9.3 ArduinoetEthernet:serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
9.3.1 Préparerl’Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
9.3.2 Répondreetservirdesdonnées . . . . . . . . . . . . . . . . . . . . . . . 514
9.3.3 Agirsurunerequêteplusprécise . . . . . . . . . . . . . . . . . . . . . . . 517
9.3.4 Sortirdesonréseauprivé . . . . . . . . . . . . . . . . . . . . . . . . . . 527
9.3.5 FaireuneinterfacepourdialogueravecsonArduino . . . . . . . . . . . . . 528
10Conclusion 533
10.1 Allerplusloin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
10.2Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
6
1 Introduction
Bienvenueàtoutesetàtouspouruntutorielsurl’électroniqueetl’informatiqueensemble!:)
Cequenousallonsapprendreaujourd’huiestunmélanged’électroniqueetdeprogrammation.
Onvaeneffetparlerd’informatiqueembarquéequiestunsous-domainedel’électroniqueetqui
al’habiletéd’unirlapuissancedelaprogrammationàlapuissancedel’électronique.
Nousallons,dansunpremiertemps,voircequ’estl’électroniqueetlaprogrammation.Puisnous
enchaînerons sur la prise en main du système Arduino, un système d’informatique embarquée
grandpublic.Enfin,jevousferaiuncourstrèsrapidesurlelangageArduino,maisilposerales
basesdelaprogrammation.Unefoiscesétapespréliminairesachevées,nouspourronsentamer
notrepremierprogrammeetfaireunpasdansl’informatiqueembarquée.
1.0.1 Apprentissage des bases
Lecoursestcomposédefaçonàcequelesbasesessentiellessoientregroupéesdanslespremières
parties.C’est-à-dire,pourcommencerlalecture,vousdevrezlirelesparties1et2.Ensuite,les
parties3et4sontégalementessentiellesetsontàliredansl’ordre.
Aprèscela,vousaurezacquistouteslesbasesnécessairespourpoursuivrelalecturesereinement.
C’est seulement alors que vous pourrez sélectionner les chapitres selon les connaissances que
voussouhaitezacquérir.
7
2 Découverte de l’Arduino
Danscettepremièrepartie,nousferronsnospremierspasavecArduino.Nousallonsavanttout
voirdequoiils’agitexactement,essayerdecomprendrecommentcelafonctionne,puisinstalle-
ronslematérieletlelogicielpourensuiteenchaînersurl’apprentissagedulangagedeprogram-
mationnécessaireaubonfonctionnementdelacarteArduino.Soyezdoncattentifafindebien
comprendretoutcequejevaisvousexpliquer.Sanslesbases,vousn’irezpasbienloin…;)
2.1 Présentation d’Arduino
Commentfairedel’électroniqueenutilisantunlangagedeprogrammation?Laréponse,c’estle
projetArduinoquil’apporte.Vousallezlevoir,celui-ciaétéconçupourêtreaccessibleàtouspar
sasimplicité.Maisilpeutégalementêtred’usageprofessionnel,tantlespossibilitésd’applica-
tionssontnombreuses.
2.1.1 Qu’est-ce que c’est?
UneéquipededéveloppeurscomposéedeMassimoBanzi,DavidCuartielles,TomIgoe,GianlucaMartino,
DavidMellisetNicholasZambettiaimaginéunprojetrépondantaudouxnomdeArduinoetmettant
enœuvreunepetitecarteélectroniqueprogrammableetunlogicielmultiplateforme,quipuisse
êtreaccessibleàtoutunchacundanslebutdecréerfacilementdessystèmesélectroniques.Étant
donnéqu’ilyadesdébutantsparminous,commençonsparvoirunpeulevocabulairecommun
propreaudomainedel’électroniqueetdel’informatique.
2.1.1.0.0.1 Une carte électronique
Une carte électronique est un support plan, flexible
ourigide,généralementcomposéd’epoxyoudefibredeverre.Ellepossèdedespistesélectriques
disposéessurune,deuxouplusieurscouches(ensurfaceet/oueninterne)quipermettentlamise
enrelationélectriquedescomposantsélectroniques.Chaquepisterelietelcomposantàtelautre,
defaçonàcréerunsystèmeélectroniquequifonctionneetquiréaliselesopérationsdemandées.
9
2 Découvertedel’Arduino
Figure : Exemple de carte électronique : Ar-
duinoSeverino-(CC-BY-SA,arduino.cc)
Figure : Carte Arduino Duemilanove -
(CC-BY-SA,arduino.cc)
Évidemment, tous les composants d’une carte électronique ne sont pas forcément reliés entre
eux.Lecâblagedescomposantssuitunplanspécifiqueàchaquecarteélectronique,quisenomme
leschémaélectronique.
10
Description:Un site en anglais arduino.cc et un autre en français arduino.cc où vous Imaginons, vous êtes en train de faire avancer un robot. Le deuxième type serait une conversation normale où chacun des interlocuteurs est poli et.