ARDUINO : 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: