Sunteți pe pagina 1din 24

ARDUINO,

exploration dun designer


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/

Crdit
Assumed by Joshfre
Chlo Payot

S-ar putea să vă placă și