STI2D – Enseignement de spécialité SIN...

15
Lycée Gustave Eiffel STI2D – SIN Carte Arduino Yùn Page n°1/15 STI2D – Enseignement de spécialité SIN CARTE ARDUINO YUN 1 – PRESENTATION La carte Arduino Yùn est une carte similaire à la carte Arduino Léornardo mais qui posséde des fonctionnalités avancées permettant de réaliser des prototypes d’objets connectés. Elle dispose du WiFi intégré, d’un contrôleur Ethernet et un port RJ45 ainsi qu’un port USB host permettant la connexion de périphériques. Un slot pour carte SD permet le stockage externe de données. 2 – CONSTITUTION L'Arduino Yún utilise le même microcontrôleur que la carte Arduino Léonardo, l'Atmel ATmega32U4. Elle comporte également un microprocesseur additionnel, Atheros AR9331, sur lequel tourne la distribution Linux pour systèmes embarqués appelée Linio basée sur OpenWrt wireless stack. SIN

Transcript of STI2D – Enseignement de spécialité SIN...

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°1/15

STI2D–EnseignementdespécialitéSIN

CARTEARDUINOYUN

1–PRESENTATION

La carte Arduino Yùn est une carte similaire à la carte Arduino Léornardo mais qui posséde desfonctionnalitésavancéespermettantderéaliserdesprototypesd’objetsconnectés.ElledisposeduWiFiintégré,d’uncontrôleurEthernetetunportRJ45ainsiqu’unportUSBhostpermettantlaconnexiondepériphériques.UnslotpourcarteSDpermetlestockageexternededonnées.

2–CONSTITUTION

L'ArduinoYúnutiliselemêmemicrocontrôleurquelacarteArduinoLéonardo,l'AtmelATmega32U4.Ellecomporteégalementunmicroprocesseuradditionnel,AtherosAR9331,surlequeltourneladistributionLinuxpoursystèmesembarquésappeléeLiniobaséesurOpenWrtwirelessstack.

SIN

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°2/15

LemicrocontrôleurATmega32U4etlemicroprocesseurAtherosAR9331communiquententreeuxgrâceàlaliaisonsérieasynchrone(UART).Cettecommunicationestfacilitéeparlalibrairie«bridge».

3–CARACTERISTIQUESTECHNIQUES

3.1–Caractéristiquesprincipales

MicrocontrôleurATmega32U4 MicroprocesseurAtherosAR9331Tensiondefonctionnement 5V Tensiondefonctionnement 3,3VE/Snumériques 14 Architecture MIPSSortiesPWM 7 Ethernet 802.310/100Mbit/sEntréesanalogiques 6 WiFi 802.11b/g/n2.4GHzIntensitéparbrocheE/S 40mAmax USBType 2.0HostIntensitébroche5V 500mAmax Lecteurdecarte Micro-SDIntensitébroche3,3V 50mAmax RAM 64MBDDR2MémoireFlash 32Ko MémoireFlash 16MBSRAM 2,5Ko SRAM 2,5KoEEPROM 1Ko EEPROM 1KoVitessed’horloge 16MHz Vitessed’horloge 400MHz

3.2–AlimentationIlestrecommandéd’alimenterlacarteparl’intermédiairedelaconnexionmicro-USBavecunetensionde5Vcontinue.

Ilestpossibled’alimenterlacarteparl’intermédiairedelabrocheVin.Cependantlacartenepossédantpasderégulateurdetension, ilestnécessairedefournirunetensionréguléeà5Vcontinue.Lacarteseradoncendommagéeencasdesurtension.

La carteYúnestégalementcompatibleavec lesmodulesPoE (PowerOverEthernet) il estnécessaired’ajouterunmodulePoEpourbénéficierdecettefonctionnalité.

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°3/15

3.3–MémoiresL’ATmega32U4disposede32Kodemémoiredeprogrammeflashdont4Koutiliséparlebootloader.Ildisposeégalementde2,5KodeSRAMetde1Kod’EEPROM.

LamémoireduAR9331n’estpas inclusedans leprocesseur. LaRAMet lamémoiredestockagesontdisposéesàl’extérieurduprocesseur.LaRAMestdetypeDDR2etsacapacitéde64Mo.Lamémoiredestockageflashaunecapacitéde16Mo.

La mémoire flash est préchargée en usine avec une distribution Linux basée sur OpenWRT. Cettedistributions’appelleLinino.

Ilestpossibledemodifierlecontenudelamémoireflasheninstallantunprogrammeouenmodifiantlefichierdeconfiguration.Pour revenirà laconfigurationd’usine il fautpresser lebouton«WLANRST»pendant30secondes.

3.4–Lesentrées/sortiesLacarteYUNpossède20brochesd’entrée/sortienumériques.Ils’agitdesbrochesnumériques0à13etdesbrochesA0àA5quipeuventégalementêtreutiliséescommeentrée/sortienumériques.Chaquebroche peut fournir et recevoir un maximum de 40 mA et dispose d’une résistance de pull-up(déconnectéepardéfaut).

Cesbrochesd’entrée/sortienumériquespossèdentdesfonctionsspécialisées:

Broche E/Snumérique Liaison Interruption PWM Analogique0 E/Snumérique Rx(UART) Interruption2 1 E/Snumérique Tx(UART) Interruption3 2 E/Snumérique SDA(I2C) Interruption1 3 E/Snumérique SCL(I2C) Interruption0 PWM 4 E/Snumérique A65 E/Snumérique PWM 6 E/Snumérique PWM A77 E/Snumérique Interruption4 8 E/Snumérique A89 E/Snumérique PWM A910 E/Snumérique PWM A1011 E/Snumérique PWM 12 E/Snumérique A1113 E/Snumérique PWM A0 E/Snumérique A0A1 E/Snumérique A1A2 E/Snumérique A2A3 E/Snumérique A3A4 E/Snumérique A4A5 E/Snumérique A5

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°4/15

Laliaisonsérieasynchrone(UART)estdisponiblesurlesbrochesnumériques0(Rx)et1(Tx).

LeBusI2C(ouTWI:TwoWire)estdisponiblesurlesbrochesnumériques2(SDA)et3(SCL).

LessortiesPWMsontdisponiblessurlesbrochesnumériques3,5,6,9,10,11et13.

Les interruptions externes peuvent être déclenchées par des évènements sur les broches 3(interruption0),2(interruption1),0(interruption2),1(interruption3)et7(interruption4).Iln'estpasrecommandéd'utiliser lesbroches0et1commeinterruptionparcequ'ellessontaussiutiliséespar leportsérieLabroche7estconnectéesurleprocesseurAR9331,ilestdoncrecommandéd'êtreprudentvis-à-visdespossiblesconflitssielleestutiliséecommeinterruption.

LebusSPIn’estdisponiblequesurleconnecteurICSP.

LesentréesanalogiquessontdisponiblessurlesbrochesA0àA5etsurlesbrochesnumériques4(A6),6(A7),8(A8),9(A9),10(A10)et12(A11).LeCANd'unerésolutionnumériquede10bits.Pardéfautlatension de référence est de 5 V. Il est cependant possible de changer la valeurmaximale utilisée enutilisantlabrocheAREF.

3.5–LesDELs

LacarteYUNdisposed’uncertainnombredeDEL− La DEL L13 ou LIN est connectée sur la broche

numérique 13. Lorsque la broche est à l’état HIGH(état haut), la DEL est allumée. La DEL est éteintelorsquelabrocheestàLOW(étatbas).

− LaDELONindiquel’étatdel’alimentation.− LaDELWANindiquel’étatdelaconnexionEthernet.− LaDELWLANindiquel’étatdelaconnexionWiFi.− LaDELUSBindiquel’étatdelacommunicationUSB.− LesDELRxetTxindiquentl’étatdelaliaisonsérie.

RéceptionliaisonsérieTransmissionliaisonsérieEtatsortie13

EtatalimentationEtatconnexionEthernet

EtatconnexionWiFiEtatconnexionUSB

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°5/15

3.6–BoutonsderesetIlya3boutonsderesetsurlacarteYùn:

LeboutonYúnRSTpermetlereboot(redémarrage)dusystèmelinux.L’appuisurceboutonpermetdefaireunresetdumicroprocesseurAR9331.TouteslesdonnéesstockéesenRAMserontperduesettouslesprogrammmesencoursd'exécutionserontarrêtés.

Lebouton32U4RSTpermetdefaireunresetdumicrocontroleurATmega32U4.

LeboutonWLANRSTaunedoublefonctionnalité:− Il permet de restaurer la configuration d'usine Wifi. Cette restauration provoque le reboot de

l'environnementlinux.PourrestaurerlaconfigurationWifiilfautpresseretmaintenirleboutonWLANRSTpendant5secondes.

− Il permet également de restaurer l'environnement linux par défaut. Pour cela il faut presser leboutonpendant30secondes.CetterestaurationeffacetouslesdonnéessauvegardéesettousleslogicielsinstallésdanslamémoireFlashduAR9331.

3.7–ConfigurationWiFiusineLacerteYúnestconfiguréepardéfautenmode"accesspoint"(AP)etavecl’adresseIP192.168.240.1.IlestpossibledeconnecteravecunordinateursurleréseauWiFigéréparlacarteYùnetdelenomSSIDet"ArduinoYun-XXXXXXXXXXXX"(oùles12'X'sontl'adresseMACdelacarteYún).Une fois connecté, il estpossibled’accéderaupanneaude configurationwebde la carteYún, viaunnavigateur,àpartirl'adresse192.168.240.1oudel’URL"http://arduino.local".

Resetlinux

ResetWiFi

Resetmicrocontrôleur

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°6/15

4–BRIDGE,UNPONTENTRELINUXETARDUINO

4.1–CommunicationbidirectionnelleL’environnementArduinoet l’environnement Linuxpeuvent communiquer à l’aidede la bibliothèque«Bridge»,présenteàlafoisducôtéArduinoetducôtéLinux(viaunebibliothèquePython).

Lesdeuxenvironnementscommuniquententreeuxselonlescouchessuivantes:

1–LiaisonsérieentrelemicrocontrôleurArduinoetlemicroprocesseurLinux.

2–Bibliothèque«Bridge»,quiestlapartiebasniveauduprotocoledecommunication.

3–Bibliothèquesspécifiquess’appuyantsur«Bridge»:− Console:émulationduterminalsérie− Process : commandes sur l’environnement Linux à partir l’environnement Arduino, avec

récupérationdelasortiedecescommandes.− FileIO:lectureetécrituredefichierssurlacartemicroSDàpartird’Arduino.− YunClient:permetderéaliserunclientHTTPsimple.− YunServer:permetderéaliserunserveurHTTPsimple.− Temboo:SDKpermettantd’accéderàunecentainedeservicesweb.− Spacebrew:unsystèmedecommunicationinter-objetsbasésurWebSockets.

Cettecommunicationbidirectionnelleentrelesdeuxenvironnementspermet(entreautre)dedéléguerunepartiedelacouchelogicielleréseauàl’environnementLinux,etdoncdesoulagerlesressourcesdel’environnementArduino.

Danslecasd'unserveurweb,l’environnementArduinon’apasàgénérerlesentêtesHTTP:iln’envoiequelapartie«utile»àl’environnementLinux,etc’estcedernierquieffectueraleformatagefinalavantlerenvoiaunavigateurclient.

Deplus,toutfichierprésentdansunrépertoirenommé«/arduino/www/»sur lacartemicroSDestautomatiquementmisàdispositionparleserveurwebàl’adresse«http://<ip>/sd/».Ilestégalementpossibled’exécuterdesscriptsCGI1(shell,PHP,etc.)afind’avoirdespagesWEBdynamiques.

4.2–AppelsRESTTout accès à l’adresse «http://<ip>/arduino/chaine» transfère automatiquement la chaîne decaractères«chaine»àl’Arduino.Leprogrammetournantsurlemicrocontrôleurutiliselabibliothèque«YunServer» pour traiter la chaîne de caractères, et «YunClient» pour d’éventuels retours vers lenavigateur.

Il est possible ainsi de créer unAPI REST (ApplicationProgramming InterfaceRepresentationalStateTransfer)permettantdecommuniqueravecl’Arduinoàtraversleréseau.SurlacarteYún,ilyadeuxpointd'accèsRESTreconnu:

− /arduino− /data

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°7/15

Le répertoire«/arduino»n'estpaspré-configuré. Tout cequi est ajoutédans l'URLderrière lepointd'accèsesttransféréparleServeurWebauprogrammefonctionnantsurlemicrocontrôleur.

Lerépertoire«/data»estutilisépourfournirunaccèsàunstockageinternedetype«Clé/Valeur».Lesappelspossiblesont:

− /put/KEY/VALUE:stockeunevaleur«VALUE»danslaclé«KEY».− /get/KEY:récupèrelavaleurdelaclé«KEY».LavaleurestretournéeauformatJSON.− /get:récupèrelalistedesélémentsstockésauformatJSON.− /delete:effacelecontenudustockageinterne.

4.3–ExempleAPIRESTLe programme d’exemple «Bridge» de l’IDE Arduino permet d’interroger les entrées/sorties del’Arduino ou bien de modifier leur état à l’aide d’une API REST du type:«<commande>/<broche>/<valeur>».Parexemple:

− /arduino/digital/13:litl’étatdel’entréenumérique13.− /arduino/digital/13/1:placelasortienumériqueàl’état1.− /arduino/analog/2:litlavaleurdel’entréeanalogique2.− /arduino/mode/13/input:configurelabrochenumérique13commeuneentrée.− /arduino/mode/13/output:configurelabrochenumérique13commeunesortie.

AlimenterlacarteYùn.

Lors de son démarrage, la carte va créer automatiquement un réseauWiFiintitulé«ArduinoYun-XXXXXXXXXXXX»(les12Xcorrespondantsàl’adresseMACdelacarteYùn)

Connecterl’ordinateuràceréseauWiFi.

LancerleprogrammeArduino.Ouvrirleprogramme«Bridge»quisetrouvedanslesexemplesdel’IDE.

SélectionnerdanslalistedecarteslacarteYùn.

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°8/15

Choisir dans la liste des ports disponibles le port réseau «serveur at192.168.240.1(ArduinoYùn)».

TéléverserleprogrammedanslacarteYùn.

Lorsdutéléversement,unefenêtredemandeunmotdepasse.

Entrerlemotdepasse«arduino».

Le montage suivant permet lacommande d’une DEL à partir de labroche 10 et de récupérer une tensionanalogique réglable sur l’entréeanalogiqueA0.Câblerlemontageci-contre.

Lancer un navigateurWEB. Entrer, dans la barre d’adresse, l’URL suivante: «arduino.local/arduino/mode/10/output»ou«192.168.240.1/arduino/mode/10/output».

Lors du premier accès une demanded’authentificationestnécessaire.

Entrer «root» comme Utilisateur et«arduino»commeMotdepasse.

Labroche10estconfiguréeensortie.

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°9/15

Entrer, dans la barre d’adresse, l’URL suivante: «arduino.local/arduino/digital/10/1» ou«192.168.240.1/arduino/digital/10/1».

La broche 10 est placée à l’état 1 et laDELs’allume.

Entrer, dans la barre d’adresse, l’URL suivante: «arduino.local/arduino/digital/10/0» ou«192.168.240.1/arduino/digital/10/0».

Labroche10est placéeà l’état 1 et laDELs’allume.

Entrer, dans la barre d’adresse, l’URL suivante: «arduino.local/arduino/analog/0» ou«192.168.240.1/arduino/analog/0».

Lavaleurluesurl’entréeA0estde132.

Modifierlapositiondupotentiomètreetrechargerl’URLprécédente.

La nouvelle valeur lue sur l’entrée estde754.

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°10/15

5–CONFIGURATIONWIFI

LacarteYúnpeutêtreutiliséeenpointd’accèsWiFi,maisellepeutégalementseconnecteràunréseauWiFiexistant.Ellepeutseconnecteràdesréseauxnonprotégés(noncryptés)ainsiquesurdesréseauxsupportantlechiffrementWEP,WPAetWPA2.

Lors de son démarrage, la carte va créer automatiquement un réseauWiFiintitulé«ArduinoYun-XXXXXXXXXXXX»(les12Xcorrespondantsàl’adresseMACdelacarteYùn)

Connecterl’ordinateuràceréseauWiFi.

Lancer un navigateur Internet et entrer l'ULR «http://arduino.local» ou l’adresse IP 192.168.240.1danslabarred'adresse.La pageWEB obtenue demande unmot de passe d'accès (password). Entrer "arduino" et cliquer lebouton«Login».

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°11/15

L’interface WEB configuration est alorsaccessible. La page obetnue contient lesinformations relative aux connexionsréseauxactuelles.Cliquer sur «CONFIGURE» pourpoursuivrelaconfigurationdelacarteYùn.

La première zone de configuration permet deparamètrerlacarteYùn.

PlacerlenomdelacarteYùn(pardéfautArduino)dans le champ «Board name». Ce nom serautiliséparlasuitepourseconnecteràlacarte.

ChoisiretconfirmerunmotdepassepourlacarteYùn. Ildoitposséderaumoins8caractères.Si leschamps «Password» restent vides, le systèmemaintiendra le mot de passe par défaut c’est-à-dire«arduino»

Le champ «Timezone» (fuseau horaire) permetde configurer le fuseau horaire et le pays. Il estrecommandé de configurer ces optionspuisqu'elles peuvent faciliter la connexion sur leréseauWifilocal.

La zone de configuration suivante permet deconfigurerlesparamètresWiFi.

Entrerdans le champ«WIRELESSNAME», lenomduréseauWiFisurlequeldoitseconnecterlacarteYùnoubiensélectionner le réseauWiFiàpartirdela liste proposée par le champ «DETECTEDWIRELESSNAME»,

Sélectionneràpartirdchamp«Security»letypedecryptage utilisé sur le réseau WiFi puis la cléd’identificationselonoptionchoisie.

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°12/15

6–MISEENPLACED'UNSERVEURWEBAPARTIRDELACARTESD

La mémoire Flash interne de la carte Yùn possède un nombre limité d’écritures possibles. Il estpréférabled’utiliserlacartemicro-SDcommemémoireexternepoursauvegarderlesdonnées,lespagesWEB,etc…PlacerlacarteSDdansleslotprévuàceteffet.

Lancer le programme PuTTY (ou WinSCP) afin de seconnecteràl’environnementLinuxdelacarteYùnàpartirdel’ordinateur.Dans le champ «HostName (or IP adress) », entrerl’adresseIPdelacarteYùn.

Une fenêtre «terminal» s’ouvre alors permettant laconnexionaveclacarteYùn.Entrer le login «root» et lemot de passe «arduino»(s’iln’apasétéchangé).

Une invite de commande s’affiche alors. Il est alorspossible de manipuler la carte Yùn en lignes decommandesLinux.

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°13/15

Taper la commande suivante pourdéterminer le point de montage de lacarteSD.

mount

Dans notre exemple la carte SD estaccessibleàpartirde«/mnt/sda1».

Créer un répertoire «arduino» sur la carte sd qui pourra être monter automatiquement sous«/mnt/sd»etutilisabledanslesprogrammesarduino.ino.

cd / mkdir /mnt/sda1/arduino chmod 777 /mnt/sda1/arduino

Ilfautcréer,danslerépertoire«arduino»,ledossier«www»quicontiendralespagesWEB.

mkdir /mnt/sda1/arduino/www

6–EXEMPLE

L’exemple suivant permet d’afficher sur une page WEB, la valeurd’unetensionanalogiquevariableappliquéesurl’entréeanalogiqueA0delacarteYùn.

Lefonctionnementdecetexemplenécessite3fichiers:

− leprogrammearduino:«mes_val.ion»;− lefichierhtmldelapageWEB:«index.html»;− unebibliothèque javascriptpermettant letransfertdesvaleursde lacarteYùnvers leserveur

WEB:«zepto.min.js».

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°14/15

Leprogrammearduinoestlesuivant:

#include <Bridge.h> #include <YunServer.h> #include <YunClient.h> YunServer server; void setup() { Bridge.begin(); server.listenOnLocalhost(); server.begin(); } void loop() { YunClient client = server.accept(); if (client) { String command = client.readString(); command.trim(); if (command == "valeur") { int val = analogRead(A0); client.print(val); } client.stop(); } delay(50); }

Editerceprogrammeetenregistrersouslenom«mes_val.ino».Ceprogrammeaétéenregistrédansundossierportantlemêmenom Créer dans ce dossier un sous-dossier nommé«www». Tout le contenude ce sousdossierserachargésurlacarteSDlorddutéléversementduprogrammearduinovialeportWiFi. Lefichierhtmlestlesuivant:

<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="zepto.min.js"></script> <script type="text/javascript"> function refresh() { $('#content').load('/arduino/valeur'); } </script> </head> <body onload="setInterval(refresh, 1000);"> <h1>Valeur lue sur l’entrée A0 :</h1> <span id="content">Attente de la carte Arduino</span> </body> </html>

LycéeGustaveEiffel STI2D–SIN

CarteArduinoYùn Pagen°15/15

Editer ce fichier et enregistrer-le sous le nom «index.html» dans le sous-dossier«www»dudossier«mes-val».Sauvegarderégalementdanscerépertoirelefichier«zepto.min.js».

Choisir,surl’IDEArduino,leportWiFiettéléverserl’ensembledesfichiers.TaperlepassedelacarteYùnpourfinaliserletéléversement.

LeprogrammearduinoaétéchargédanslemicrocontrôleurATmega32U4etlesfichiers«index.html»et «zepto.min.js» contenus dans le dossier «mes_val/www» ont été chargés dans le dossier«/arduino/www»delacarteSD.Pour avoir accès à la page WEB, taper dans la barre d’adresse du navigateur WEB, l’URL«http://<ip>/sd/mes_val/»ou«http://arduino.local/sd/mes_val/».