Assumed by Joshfre Chlo Payot Ce projet ne se veut pas expert en la matire Arduino. Voici juste les notes dun designer qui se penche avec curiosit sur le domaine. Prlude Larduino est une plate-forme de prototype lectronique open-source permettant dutiliser simplement un microcontrleur ATMEL AVR. Larduino rcupre les informations de lextrieur travers des capteurs de tout genre et peut contrler des mcanismes comme des petits moteurs ou des LED. Cest une interface dentre/sortie simple qui se programme avec un langage bas sur Wiring. Elle utilise lenvironnement processing. Comme linterface de larduino est standardise, les gens peuvent crer des extensions (wif, cran...) quon peut clipser directement sur la carte sans avoir souder les composants. Larduino permet une interaction autonome entre lobjet et son environnement. Une action physique ou analogique dclenche une information digitale et inversement. Cest pourquoi on trouve souvent de larduino ds quil sagit de crer des objets intelligents. Pour lhistoire, il a t dvelopp par des designers dinteraction italien Massimo Banzi et David Cuartielles. Larduino HARDWARE LArduino de base possde un microcontrleur, qui rassemble la mmoire (morte et vive), le processeur et les priphriques dentres et sorties ; des entres et sorties USB (spcifque ce model) et des prises power jack pour transmettre les informations et alimenter lArduino avec une tension entre 7 et 12V, permettant dutiliser difrents types dalimentations (piles, batteries, adaptateur...) ; des LED qui servent surtout indiquer ltat dactivit de larduino ; un bouton reset manuel ; un ICSP Header qui permet de programmer le microcontrleur sans passer par la couche Arduino ; une puce FTDI USB qui convertit linformation usb et enfn ; des pins dans tous les sens. Les lments Les pins sont les entres et sorties sur lesquelles on peut confgurer des actions pour larduino. Ils peuvent donc tre programms en Input, Output ou comme des rsistances. Par dfaut, ils sont programms en Input. Sur tous les Arduinos, on trouve 3 types de pins difrents : - Les pins digitaux Les pins digitaux peuvent tre des entres ou des sorties. Ils vont grer des informations de type ON/OFF (Est-ce que le courant passe ou non ?) Parmis les pins, certains ont une double fonction spcifque, comme la fonction AREF qui dfni la tension de rfrence pour les pins Analogiques entre 0 et 1024. - Les pins power Les pins power assurent lalimentation du circuit. Le Gnd est le ground, le - du circuit ; 5V, 3V3 et VIN sont les + du circuit et sont choisis en fonction du voltage du circuit. (le VIN permet de lier la sortie la prise power jack) - Les pins analogiques Les pins analogiques par opposition aux numriques traduisent linformation dans un rapport continu (une variable). Ils permettent de mesurer les rsultats des capteurs analogiques. Les pins Il existe au moins 14 Arduino difrents avec chacun des spcifcits. Etant donn que le board de larduino peut aussi tre fait main, on imagine quil y a une infnit de possibilits. Mais voici ceux que lon trouve le plus souvent et leurs caractristiques : Les modles Arduino UNO Larduino Uno est un gnrique qui possde une sortie usb et qui gre trs bien les communications avec lordinateur. Arduino Ethernet Comme son nom lindique il peut se connecter au web grce sa prise ethernet. Arduino Lonardo Il est possible de le connecter avec un ordinateur comme une souris, car il gre le mode usb- host Arduino Micro Cest la mme que larduino Lonardo mais elle fait 5 cm par 1,77. Arduino Lilypad Cet arduino est souvent utilis dans les textiles car il est souple et petit. Arduino Mega Possde beaucoup plus de pins pour grer plus dactions par larduino. Motor Shield Voici un shield spcialement pens pour lier larduino des petits moteurs. Arduino Duemilanove Cest un modle quasi identique larduino UNO Wif Shield Ceci est un shield que lon va pluger sur un arduino et qui permet de se connecter en wif. Les shields sont des extensions des cartes Arduino. Cest ce qui donne tout son potentiel lusage des Arduinos. Par exemple : si je voulais envoyer des coordonnes GPS par wif, il faudrait un arduino pour faire tourner la logique, un shield GPS pour rcuprer les donnes de localisation et un shield wif pour la connexion. Je les branche simplement sans soudure en les empilant et je peux programmer larduino.
Les Shields Les capteurs vont permettre dobtenir des informations analogiques qui seront ensuite traduites par larduino. Voici quelques exemples de capteurs et de ce que lon peut capter.
Les capteurs Capteur LDR Photoresistance pour capter lintensit lumineuse. Dtecteur de choc Dtecteur dinclinaison Ampoule bille Capte linclinaison (renversement) Capteur CTN Thermistance pour capter la chaleur. Capteur dhumidit, de gaz et de temprature. LECTRONIQUE Tlchargez le logiciel arduino sur la page : http://arduino.cc/en/Main/Software Connectez larduino avec le cble adapt. Il sagit en gnral de cble USB, mais pour larduino ethernet cest un cble wiznet ethernet interface. Une fois connect lordinateur, des LED vertes sallument sur la carte. Ouvrez le logiciel. Dans la partie Outils/Type de carte, slectionnez larduino que vous utilisez. Assurez vous que le Port Serial (sur Mac OS X) donne une adresse de ce genre : /dev/tty.usbmodem621 ou /dev/tty.usbserial-A02f8e Pour larduino ethernet, le serial usb napparait pas naturellement, cause du wiznet. Il faut installer un FTDI serialdriverusb que vous trouverez ici : http://hofmannsven.com/2012/laboratory/arduino- ethernet/ Faites un test en tlversant un exemple de sketch que vous trouverez dans le menu Fichier/exemples. Le plus simple est dutiliser Blink qui fera clignoter la LED sur le pin 13 (ou 9 pour larduino ethernet) Si problme : http://arduino.cc/en/Guide/Troubleshooting#toc1 Connexion Lorsquun Arduino dmarre, il va lancer par dfaut le dernier programme tlcharg. Une petite partie logicielle sert de chargeur damorage et va vrifer si lordinateur nous envoie un autre programme. Cest le bootloader. Sil y a un nouveau code, larduino dmarre le nouveau programme. Sinon il rpte lancien. On ne touche quasiment jamais au bootloader, mais si on avait besoin de modifer le systme daccs aux programmes (tlcharger le programme en wif par exemple), on peut trouver les mthodes sur internet. Pour modifer les prfrences sur le bootloader : http://arduino.cc/en/Hacking/Bootloader Le dmarrage SOFTWARE Le logiciel Arduino est dun usage trs simple. On peut dj programmer des actions travers cet outil, mais pour ceux qui ne savent pas programmer ou pour des codes plus complexes, on peut tlcharger des bibliothques. On cre un nouveau fchier, on slectionne notre support arduino dans la liste et notre serial port, on code linformation, on verife grce au correcteur, on envoie sur la carte arduino et le port sur lequel il est branch ragit par un clignotement des LED. On peut vrifer sur le terminal quelles informations ont t reues par la carte.
Le logiciel Les sketchs sont les programmes que lon peut coder avec le logiciel Arduino. Conseil dusage Pour soi, il est parfois apprciable de pouvoir mettre des commentaires pour dcrire laction attendue. Les notes scrivent ainsi : /* * Blink * * The basic Arduino example. Turns on an LED on for one second, * then off for one second, and so on... We use pin 13 because, * depending on your Arduino board, it has either a built-in LED * or a built-in resistor so that you need only an LED. * * http://www.arduino.cc/en/Tutorial/Blink */ Tout ce qui se trouve entre /* et */ nest pas pris en compte. Un autre moyen est de lcrire ainsi, avec // ceux-ci sarrtent la fn de la ligne. int ledPin = 13; // LED connected to digital pin 13 Pour des raccourcis on peut utiliser des variables. La variable pour une broche (pin) scrit ainsi : int ledPin = 13 Plus tard, 13 sufra signifer la LED. Premier sketch EXEMPLE int ledPin = 13; // LED connected to digital pin 13 void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() { digitalWrite(ledPin, HIGH); // sets the LED on delay(1000); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(1000); // waits for a second } Tous les sketchs doivent possder deux lignes de code minimum : void setup et void loop qui vont difrencier les fonctions dinitialisation et la boucle principale du programme. Il est ncessaire dans chaque sketch arduino dintgrer les fonctions setup() et loop(), mme si on ne les utilise pas. La fonction setup est appele une fois au dmarrage du programme, elle permet dintialiser des bibliothques ou de paramtrer les pins. La fonction loop est appele en boucle tout le temps o larduino est allum. void setup() indique les actions qui se lancent 1 fois et va contenir souvent les variables initialiser, les modes des pins et les bibliothques. Pour chaque pin quon va utiliser, il est ncessaire de spcifer dans quel mode (input ou output) le pin est connect pinMode() o pin = numro du pin void loop() contient les actions qui tournent en continu. if () va permettre de choisir de faire une action ou une autre selon une condition. Exemple : if (temprature<0) {Serial.printin(FROID) .write() ou digitalWrite() permet dindiquer la valeur low ou high. .printIn() permet de voir crite une information sur le programme. delay() laisse un temps dattente. On trouve une grande partie des lments du langage sur ce lien : http://arduino.cc/en/Reference/HomePage void setup() { Serial.begin(9600); pinMode(buttonPin, INPUT); } void loop() { if (digitalRead(buttonPin) == HIGH) Serial.write(H); else Serial.write(L); delay(1000); } Langage Les fonctions donnent les actions du code. Voici un exemple dcriture dune fonction. void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output } Il faut dans un premier temps coder linformation lie chaque broche, pin. Sont-elles in or output ? Input, cest une donne extrieure que je veux lire. Output, cest une action que je veux faire. digitalWrite(ledPin, HIGH) ; digitalWrite() est la fonction qui permet de choisir la valeur dune broche. Ici en HIGH, elle correspond 5 volts. Sil y avait crit LOW, elle correspondrait au ground, une valeur de 0 volt. On peut ajouter un dlai pour demander larduino de laisser un lapse de temps entre deux actions. Pour laisser 1 seconde, il faut convertir en milliseconde. On crira la fonction delay() : delay(1000) ; Lorsquon touche des programmes plus complexes, on trouve les tutoriaux et codes sur les bibliothques : http://arduino.cc/en/Reference/Libraries EXEMPLE La LED sallume en High, laisse un dlai de une seconde et passe en of, Low. int ledPin = 13; // LED connected to digital pin 13 void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() { digitalWrite(ledPin, HIGH); // sets the LED on delay(1000); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(1000); // waits for a second } Fonction input et output Lorsquil sagit de rcuprer les informations dun capteur qui envoie une donne non-binaire, on passe par les broches analogiques. Voici un exemple avec un potentiomtre. On connecte deux broches en input et output et la dernire sur le 0 / GND. Il faut lire la valeur actuelle du capteur et la mettre dans une variable p de type int(nombre entier). Cest une faon de dterminer la sensibilit du capteur. analogRead() renvoie une valeur entre 0 et 1024, qui correspond la tension qui arrive au pin. int sensorValue = analogRead(A0); Ensuite il faut pouvoir visionner les rsultats du capteur en rcuprant une quantit dcimale sur la fentre du programme avec la commande Serial.println(). Serial.println(sensorValue, DEC)
/* AnalogReadSerial Reads an analog input on pin 0, prints the result to the serial monitor. Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
This example code is in the public domain. */ // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // print out the value you read: Serial.println(sensorValue); delay(1); // delay in between reads for stability } Programmer pour lanalogique Pour se connecter internet il est ncessaire de possder un arduino ethernet ou wif et de tlcharger une bibliothque ethernet. Ladresse mac, est ladresse matrielle de larduino sur le rseau. Sur les versions rcentes elle est crite sur le Shield , sinon il faut en choisir une au hasard. Autrement ladresse IP de connexion sobtient en utilisant : Ethernet.begin(mac), avec le rseau internet choisi. mac = Media Access Control Sur lexemple gauche on voit comment indiquer la connexion dun utilisateur. On reconnait lutilisateur : EthernetClient client; client.connect(adressedusiteweb,80) On demande dindiquer ltat de la connexion ethernet avec la fonction Serial.printIn(connecting..) Pour la connexion du client on entre une condition : if (client.connect()) { Serial.println(connected); client.println(GET /search?q=arduino HTTP/1.0); client.println(); } Pour indiquer quand elle choue: else { Serial.println(connection failed); } #include <Ethernet.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip[] = { 10, 0, 0, 177 }; byte server[] = { 64, 233, 187, 99 }; // Google Client client(server, 80); void setup() { Ethernet.begin(mac, ip); Serial.begin(9600); delay(1000); Serial.println(connecting...); if (client.connect()) { Serial.println(connected); client.println(GET /search?q=arduino HTTP/1.0); client.println(); } else { Serial.println(connection failed); } } void loop() { if (client.available()) { char c = client.read(); Serial.print(c); } if (!client.connected()) { Serial.println(); Serial.println(disconnecting.); client.stop(); for(;;) ; } Se connecter en ethernet EXERCICE Sur le site Arduino.cc, on trouve les codes et tutoriaux pour raliser de simple projet avec larduino de base. http://arduino.cc/en/Tutorial/HomePage Pour tester les circuits on utilise les platines dessai.
Premier projet Voici un sketch qui permet de controler lallumage dune led grce un bouton. Il faut connecter les cbles power, rouge 5V et noir Gnd, ainsi que la broche 2 ct digital. Ce programme allume et teint la LED intgre du pin 13 lorsque lon appuie sur le bouton. Seul le bouton a besoin de recevoir le courant lectrique 5V depuis larduino. // constants wont change. Theyre used here to // set pin numbers: const int buttonPin = 2; // the number of the pushbutton pin const int ledPin = 13; // the number of the LED pin // variables will change: int buttonState = 0; // variable for reading the pushbutton status void setup() { // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); } void loop(){ // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); // check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (buttonState == HIGH) { // turn LED on: digitalWrite(ledPin, HIGH); } else { // turn LED off: digitalWrite(ledPin, LOW); } } Un bouton et une LED La majorit de ces informations sont une traduction du site : www.arduino.cc/ Les autres sites : http://fr.wikipedia.org/wiki/Arduino http://www.ladyada.net/learn/arduino/ http://video.mit.edu/watch/arduino-tutorial-1-10950/