Travaux Pratiques Arduino

=Travaux Pratiques ETIA : Faire parler les choses avec Arduino=

Introduction
La plateforme utilisée pour les travaux pratiques est la carte Arduino.

Préliminaires

 * installez sur votre poste de travail l'environnement de développement Processing http://processing.org
 * installez sur votre poste de travail l'environnement de développement Arduino http://arduino.cc
 * téléchargez et dézippez les sources des projets
 * choisissez un mini-projet à réaliser : si vous terminez plutot, permuttez votre projet avec un autre groupe
 * récupérez la boite concernant le matériel nécessaire à la manipulation
 * branchez la carte Arduino Uno en installant éventuellement le pilote présent dans le répertoire arduino-0022\drivers


 * A la fin, pensez à remplir ce sondage anonyme pour donner votre avis sur le stage.

Documentation

 * Les transparents de cours [[Media:Arduino.pdf]] [[Media:Sujet.pdf]]
 * Une anti-séche sur Arduino [[Media:arduinocheatsheet.pdf]] (original)
 * Les montages électroniques possibles avec le Sparkfun Inventor Kit : s'en inspirer
 * livret en VO
 * livret en VF (copie de secours)
 * les schémas de branchement en VO
 * en VF http://www.sparkfun.com/news/636
 * Code couleur résistance http://www.robives.com/sites/default/files/premium/resistor.pdf
 * Code Arduino et Processing [[Media:Projects.tgz]] [[Media:Projects.zip]]

Clignotement d'une LED
explications, code et montage

Gradation d'une LED avec le PWM
L'Arduino possède plusieurs sorties PWM (3,5,6,9,10,11) émulant des sorties analogiques entre 0 et 5V en envoyant à haute fréquence des implusions pour ou plus longues en fonction du voltage souhaité. Les valeurs à écrire sont entre 0 et 255 avec la fonction analogWrite(pin,val).

Ce montage montre comment faire une tension entre 0 et 5V avec potentiomètre.

explications, code et montage

Boutons poussoirs
explications, code et montage

Potentiomètre
L'Arduino Uno est équipé de 6 entrées analogiques (A0 à A5) qui mesure une tension entre 0 et 5V et codée par un entier de 0 à 1023.

explications, code et montage

Complétez le programme pour écrire sur la sortie série les valeurs lues sur l'entrée analogique (voir le programme Arduino etia-arduino\Projects\SensorGrapher\graph). Visualisez les en utilisant le moniteur série de l'environnement Arduino.

Affichez ces valeurs transmises par l'Arduino sur votre hôte en utilisant le programme Processing fourni dans les sources: etia-arduino\Projects\SensorGrapher\grapher

Servomoteur
explications, code et montage

Musique Maestro !
explications, code et montage

Vous pouvez compléter le programme pour écrire sur la sortie série les notes jouées.

=Projets par binome=

ARD01 Horloge 3 cadrans

 * 1 Arduino Uno
 * 3 servomoteurs qui indiquent l'heure
 * 1 haut-parleur

L'heure courante est récupérée par le port série de l'Arduino lors de l'initialisation Le format est sur 6 chiffres 095410 pour 9h55 et 10 secondes L'heure courante peut être aussi réglée au moyen de boutons poussoirs branchés sur l'Arduino.

L'horloge peut fonctionner aussi en mode chronomètre (minute, seconde, centième) avec 4 boutons start, lap, stop, heure branchés sur l'Arduino.

Comme les coucous suisses, l'horloge peut jouer une mélodie à chaque demi-heure.



ARD02 Jeux Snake sur borne d'arcade

 * 1 Arduino Uno
 * 1 joystick
 * 4 buttons



Jeu de serpent (Snake)
Arduino pour la capture des 3+1 changements de direction

Plusieurs pad possibles
 * 4 boutons sur mini-breadboard
 * 1 nunchuk acceleration
 * 1 nunchuk joystick

Processing : Calcul et Affichage

Snake code

[[Media:Snake.pde.txt]]

ARD03a Asservissement par nunchuck

 * 1 arduino + câble USB
 * 1 breadboard
 * 1 nunchuck + adaptateur
 * 1 servo-moteur



ARD03b Asservissement par nunchuck de deux aiguilles

 * 1 arduino + câble USB
 * 1 breadboard
 * 1 nunchuck + adaptateur
 * 2 servo-moteur + aiguilles

ARD04 Affichage sur écran Nokia

 * 1 Arduino + câble USB
 * 1 breadboard
 * 1 écran Nokia 5110 BW



ARD05 Machine à écrire/Piano
Matériel (il faudrait fournir la passerelle Arduino --> Twitter)
 * Clavier PS2
 * Graphic LCD 84x48 - Nokia 5110 ?
 * Twitter depuis Arduino ?

Liens
 * http://www.arduino.cc/playground/ComponentLib/Ps2mouse
 * http://www.practicalarduino.com/projects/ps2-keyboard-or-mouse
 * Clavier testé avec le programme disponible ici : http://www.arduino.cc/playground/Main/PS2KeyboardExt2
 * http://blog.blprnt.com/blog/blprnt/quick-tutorial-twitter-processing
 * http://www.arduino.cc/playground/Main/PS2Keyboard

Commande LOGIN username:password TWIT Top mon stage PEIP TWIT Arduino c'est trop top LOGOUT

Comment brancher le clavier PS/2 :
 * rouge -> VCC +5V
 * noir -> GND
 * marron -> clock
 * blanc -> data



ARD06 Clavier musical 7 buttons

 * 1 Arduino + câble USB
 * 1 breadboard
 * 7 buttons
 * 1 haut-parleur



ARD07 Système stéréo

 * 1 Arduino + câble USB
 * 1 breadboard
 * 2 haut-parleurs



ARD08 Afficheur LCD 2 lignes

 * 1 Arduino + câble USB
 * 1 breadboard
 * 1 alimentation externe
 * 1 potentiomètre
 * 1 afficheur EL1602A



ARD09 Jeux de reflexe
Matériel : boutons (1 par joueur), LED, afficheur 7 segments (1 par joueur), bouton de reset

Jeu de reflexe à 2,3,4.


 * Chaque joueur qui appuie le premier sur son bouton après un signal (sonore ou lumineux) gagne 1 point. Les joueurs doit enfoncer en moins de 5 secondes.
 * Un joueur appuyant avant le signal est pénalisé des 2 points (-2 pts). Un signal lunimeux ou sonore indique la fin du tour et marque le début du tour suivant.
 * La partie est terminée quand un joueur atteint 10 points.
 * Au reset, les joueurs recommencent une partie (prévoir un bouton pour le reset)
 * Les points de chaque joueur peuvent s'afficher sur une afficheur 7 segments et être envoyé par le port série à une application Processing pour affichage.


 * Fonction de tirage pseudo aléatoire sur Arduino : fonction random http://www.arduino.cc/en/Reference/Random
 * Fonction de tirage aléatoire sur Arduino (requiert du hard): http://robseward.com/misc/RNG2/
 * Base de code [[Media:Reflexe.pde.txt]]



ARD09b Reflexe II : le retour
Matériel : boutons (2 par joueur), LED de 2 couleurs différentes, afficheur 7 segments (1 par joueur), bouton de reset

Variante du Jeu de reflexe à 2,3,4.


 * Chaque joueur qui appuie le premier sur un bouton correspondant à un signal lumineux de la couleur correspondante gagne 1 point. S'il se trompe, il ne gagne pas de points
 * Un joueur appuyant avant le signal est pénalisé des 2 points (-2 pts).
 * La suite est identique ensuite !

ARD10 Station Météo (Homebrew Weather Station)
Ce projet propose la réalisation d'une station météo basique mesurant les températures, l'indice UV, ... L'affichage sur l'écran Nokia 5110 présente les mesures courantes, minimales et maximales. La version minimale utilise un ou deux capteurs de température.

La version élaborée peut
 * comporter des capteurs supplémentaires : hygrometrie, anémomêtre, girouette, pluie ...
 * afficher des icones bitmap sur l'écran (soleil, pluie, ...). Elles peuvent être générées avec l'outil http://en.radzio.dxp.pl/bitmap_converter/.
 * exporter les mesures vers le port série au format CSV. Une application Processing ou Processing.JS peut afficher ou qu'un pont peut publier vers Pachube).
 * proposer des seuils d'alarme programmable par l'utilisateur. Le franchissement de seuil fait bipper le haut parleur de la station pendant 30 secondes.



Matériel :
 * 1 Arduino + câble USB
 * 1 breadboard
 * 1 écran Nokia 5110 BW
 * 1 photo résistance (optionnel)
 * 2 capteurs (DS1820 ou TMP36) pour les températures (intérieure, extérieure)
 * 3 boutons pour changer le mode d'affichage les données en alternatif (courant, min, max, ...) ou le réglage des seuils (température min ou max)
 * 1 haut parleur pour bipper lors de franchissement de seuil
 * capteurs météo additionnels

Liens:
 * DS1820
 * http://www.arduino.cc/playground/Learning/OneWire
 * http://datasheets.maxim-ic.com/en/ds/DS18S20.pdf
 * http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1209105786/2
 * TMP36
 * http://www.ladyada.net/learn/sensors/tmp36.html
 * http://www.sparkfun.com/tutorial/AIK/ARDX-EG-SPAR-WEB-REV10.pdf#page=28
 * Capteurs météo
 * SEN-08942
 * Rechange WS2300

Voir le chapitre 13 du livre Jonathan Oxer, Hugh Blemings, Practical Arduino: Cool Projects for Open Source Hardware, http://www.practicalarduino.com/projects/weather-station-receiver qui récupère les données des capteurs météo d'une station WS2355 en RF 433 MHz.

ARD11 Jeu de mémoire Simon
Simon est un jeu de mémoire très populaire fin des années 70.

Il peut être implémenté très simplement au moyen d'un Arduino.

Matériel :
 * 1 Arduino + câble USB
 * 1 breadboard
 * 4 boutons poussoirs intégrant des LED (en 2 couleurs) (protégez les Led intégrées au moyen de résistance).
 * 1 buzzer

ARD12 Arduino sur Pachube
A faire par Didier ...

ARD13 DIY Wattmeter
ATTENTION: cette manipulation comporte des risques car on manipule des fils en 220 V !

Matériel: une pince ampérométrique, une rallonge électrique (courte), un boitier électrique isolant

Le programme est assez simple : :



Jeu de la vie (conway) interactif
Arduino pour la capture des 3+1 changements de direction

Plusieurs pad possibles
 * 4 boutons sur mini-breadboard
 * 1 nunchuk acceleration
 * 1 nunchuk joystick

Manette pour déplacement entre cellule A => tue B => crée

Le Jeu de Conway est fourni au départ

Processing : Calcul et Affichage

Jeu d'attrapage de boules
Arduino pour la capture de 2 mouvements droite - gauche

Plusieurs pad possibles
 * 2 boutons sur mini-breadboard
 * 1 potentiometre
 * 1 nunchuk acceleration
 * 1 nunchuk joystick

Processing : Calcul et Affichage

Plus belle ma plante
Arduino pour la mesure de l'hygromêtrie d'une plante Cadran à Servomoteur

Processing : Affichage (dont graphe historique)



Réveil matin
Arduino : utilisé pour déclencher la mélodie (une particition) à une heure définie Processing : communique avec l'arduino sur le port série pour configurer l'heure courante, l'heure de réveil, et la mélodie choisie. Dans un premier temps, le moniteur série de l'IDE Ardiuno est suffisant.

Réglage initial de l'heure

Mélodies :
 * Star Wars, marche impériale
 * Two tigers song (nécessite 2 hauts-parleurs; à tester)
 * Les Simpson (partition á trouver http://up.sur-la-toile.com/s9m6 )
 * Zelda Lost Woods (partition à trouver)

Matériel :
 * 1 Arduino Uno
 * 1 Haut-parleur (de PC)
 * 1 Haut-parler supplémentaire pour la stéréo
 * 1 LCD
 * 1 Thermoresistance pour le reglage automatique de la luminosité de l'écran LCD

Une extension possible est le réveil moniteur physiologique iCoolSleep.

Utilitaires:
 * MidiNotate Player - convertissez des fichiers MIDI en partitions http://www.libellules.ch/dotclear/index.php?post/2005/07/15/491-midinotate-player---convertissez-des-fichiers-midi-en-partitions

Piano
Matériel : clavier + haut parleur En fonction de la touche appuyée sur le clavier, le haut parleur joue une fréquence donnée.

On peut rajouter un second haut-parleur et utiliser les touches de modification

(Idée de Gautier "Mushroom" B.)

Mailbox

 * 1) iMailbox (Didier Donsez)

Guitar Hero
Arduino : gamepad : breadboard avec 4 ou 6 boutons, haut parleur, diode LED, afficheur graphique, ...

Processing : affichage (ie c'est tres proche de l'attrapage des boules !

Arduinoscope (aka Poorman scope)
http://code.google.com/p/arduinoscope

=Annexes=

=Matériels=
 * 3 écrans Graphic LCD 84x48 - Nokia 5110
 * 1 écran LCD EL 1602A
 * 3 Nunchunks
 * 4 Speaker PC (PWM sur HP de PC/buzzer) + 1 haut-parleur stéréo de pc portable
 * 1 contrôleur Super Nintendo Controller Brochage
 * 4 thermo-résistances LM335
 * 2 DS1820
 * 18 Potentiomètre (pad, réglage luminosité, music speed, ...)
 * Cadran et aiguille pour Servomoteur (utilisez les couvercles de boite de ramette de papier)
 * Carton schotch double face

Haut-parleurs
La photo ci dessous presente un montage simple de 2 haut-parleurs récupérés sur un vieux portable pour jouer des morceaux en stéreo



Voici un exemple de code pour jouer la Marche Impériale de la Guerre des Etoiles en mono [[Media:ImperialMarch.pde.txt]]

Nunchuck
Nunchuck + servomoteur

Exemple de code : [[Media:NunchuckServo.pde.txt]]

Note : remplacer beginSerial par Serial.begin dans la fonction setup.

Comment relier le nunchuk :



Relier le nunchuck à l'arduino

Ce lien contient également un programme qui permet de récupérer les valeurs pour les différents contrôles (accéléromètre, joystick et boutons).

Ventilateur
Couleurs : Bien qu'il tourne, je pense que l'alimentation par le port usb seule n'est pas suffisante : il faudrait ajouter le connecteur AC-DC.
 * Rouge : +
 * Noir : -
 * Blanc : signal ?

Servomoteur
Connecter le servomoteur à l'arduino

Couleurs (source1, source2)

A standard RC servo has three wires:
 * Ground: black or brown
 * Power: red
 * Control/Signal: orange, yellow or white

A besoin de l'alimentation externe sur la carte Arduino ! Le code ci-dessus ne semble pas fonctionner...

Super Nintendo Controller
Référence

Une librairie pour utiliser le contrôleur + pin description

Spécifications

 * Référence rapide (1 page)
 * Référence complète - comment le programmer

Images


Notes :
 * La résistance est une résistance de 10k.
 * Le potentiomètre permet de régler le contraste. Sans cela l'écran apparaît vide.
 * L'alimentation externe n'est pas nécessaire mais préférable : sans cela l'affichage est faible.

Exemples de code
Dans le logiciel Arduino, des exemples peuvent être trouvés dans le menu File -> Examples -> LiquidCrystal

Écran LCD Philips PCD8544 (Nokia 3310 & 5110)
Écran graphique 84x48 pixels NB


 * Boutique http://www.sparkfun.com/products/10168
 * Code pour l'Arduino http://www.arduino.cc/playground/Code/PCD8544
 * Bitmap convertor http://en.radzio.dxp.pl/bitmap_converter/