Projet Nuage Interactif 2 - Arduino

De Les Fabriques du Ponant
Révision datée du 18 janvier 2017 à 15:11 par EtienneL (discussion | contributions) (Première Partie)
Aller à : navigation, rechercher

Cette page est une fiche écrite dans le cadre de l'Inter Semestre ENIB 2017

Le contenu de cette fiche est en cours de rédaction, elle va s'étoffer pendant tout le mois de janvier !

Nuage Intéractif - Arduino

Vous aimez le bricolage et vous êtes capable de lire un code basique Arduino ? Vous aimeriez contrôler un nuage lumineux à l'aide d'une télécommande? Et bien c'est possible si vous suivez ce tutoriel ! Grâce à cette page vous aurez appris à construire la maquette d'un nuage composé de LEDs. Toutes ces LEDs pourront être contrôlées à distance via une télécommande infrarouge. Les instructions émises par la télécommande seront ainsi captées par un dispositif autour d'une carte Arduino.

Auteurs

Ont participé à la rédaction de cette fiche :

Outils et matériaux

Liste du matériel

Électronique :

  • Carte Arduino
  • LEDs : 2 Rrouges 2 Vertes 2 Jaunes
  • Fils conducteurs
  • 6 Resistances pour les LEDs ( 300 Ohms pour des LEDs basiques à courant max 20 mA )
    • Led émettrice infrarouge
    • Récepteur infrarouge : TSOP32138
    • Filtre de réception : condensateur 0.1 uF
    • Résistance pour le récepteur : 47 ohms
    • Deux résistances pour adapter la portée de l'émission : conditions peu ou très perturbées (150 ohms et 68 ohms)
  • Batterie ou cable USB pour l'alimentation de l'Arduino
  • Plaque LABDEC

Autres :

  • Patafix
  • Bouteillete en plastique pour contenir la carte Arduino et la plaque LABDEC
  • Adhésif avec fibres exemple
  • Coton
  • Fil de pêche
  • Télécommande infrarouge

Outils

  • Colle liquide
  • Ciseaux

Réaliser le projet

Première Partie

  • Programmation

Ouvrez le logiciel Arduino et établissez la connexion avec votre carte ( ******* ). Ecrivez le code suivant :

   /////*
   //// * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
   //// * An IR detector/demodulator must be connected to the input RECV_PIN.
   //// * Version 0.1 July, 2009
   //// * Copyright 2009 Ken Shirriff
   //// * http://arcfn.com
   //// */
   ////
   #include <IRremote.h>             //
   
   int RECV_PIN = 11;                //
   int ledy1=2;                      // 
   //int ledy2=3;                    //
   int ledg1=4;                      //
   //int ledg2=5;                    //
   int ledr1=6;                      //
   //int ledr2=7;                    //
   long randOn = 0;                  // Initialize a variable for the ON time
   long randOff = 0;                 //                 
   
   IRrecv irrecv(RECV_PIN);
   
   decode_results results;
   
   void setup(){
     Serial.begin(9600);
     irrecv.enableIRIn(); // Start the receiver
     pinMode(ledr1, OUTPUT);
     //pinMode(ledr2, OUTPUT);
     pinMode(ledg1, OUTPUT);
     //pinMode(ledg2, OUTPUT);
     pinMode(ledy1, OUTPUT);
     //pinMode(ledy2, OUTPUT);
     }
   
   void loop() {
     if (irrecv.decode(&results)) {
       Serial.println(results.value, DEC);
       irrecv.resume(); // Receive the next value
     }
     //digitalWrite(ledr1, HIGH);
     //digitalWrite(ledy1, HIGH);
     //digitalWrite(ledg1, HIGH);
     
     switch(results.value){
     
     // only red
     case 16724175: // num 1
       digitalWrite(ledr1, HIGH);
       //digitalWrite(ledr2, HIGH);
       digitalWrite(ledg1, LOW);
       //digitalWrite(ledg2, LOW);
       digitalWrite(ledy1, LOW);
       //digitalWrite(ledy2, LOW);
       break;
   
     // only yellow
     case 16718055: // num 2
       digitalWrite(ledr1, LOW);
       //digitalWrite(ledr2, LOW);
       digitalWrite(ledg1, LOW);
       //digitalWrite(ledg2, LOW);
       digitalWrite(ledy1, HIGH);
       //digitalWrite(ledy2, HIGH);
       break;
   
     // only green
     case 16743045: // num 3
       digitalWrite(ledr1, LOW);
       //digitalWrite(ledr2, LOW);
       digitalWrite(ledg1, HIGH);
       //digitalWrite(ledg2, HIGH);
       digitalWrite(ledy1, LOW);
       //digitalWrite(ledy2, LOW);
       break;
   
     // all
     case 16716015: // num 4
       digitalWrite(ledr1, HIGH);
       //digitalWrite(ledr2, HIGH);
       digitalWrite(ledg1, HIGH);
       //digitalWrite(ledg2, HIGH);
       digitalWrite(ledy1, HIGH);
       //digitalWrite(ledy2, HIGH);
       break;
   
     // switch off all the leds
     case 16726215: // num 5
       digitalWrite(ledr1, LOW);
       //digitalWrite(ledr2, LOW);
       digitalWrite(ledg1, LOW);
       //digitalWrite(ledg2, LOW);
       digitalWrite(ledy1, LOW);
       //digitalWrite(ledy2, LOW);
       break;
   
     // yellow and green
     case 16734885: // num 6
       digitalWrite(ledr1, LOW);
       //digitalWrite(ledr2, LOW);
       digitalWrite(ledg1, HIGH);
       //digitalWrite(ledg2, HIGH);
       digitalWrite(ledy1, HIGH);
       //digitalWrite(ledy2, HIGH);
       break;
   
     // yellow and red
     case 16728765: // num 7
       digitalWrite(ledr1, HIGH);
       //digitalWrite(ledr2, HIGH);
       digitalWrite(ledg1, LOW);
       //digitalWrite(ledg2, LOW);
       digitalWrite(ledy1, HIGH);
       //digitalWrite(ledy2, HIGH);
       break;
   
     // red and green
     case 16730805: // num 8
       digitalWrite(ledr1, HIGH);
       //digitalWrite(ledr2, HIGH);
       digitalWrite(ledg1, HIGH);
       //digitalWrite(ledg2, HIGH);
       digitalWrite(ledy1, LOW);
       //digitalWrite(ledy2, LOW);
       break;
     
     // guirlande
     case 16732845:
      
       break;
     }
   }

Notez le "case 16724175" Ce nombre 16724175 correspond à la touche appuyée sur la télécommande. Ces nombres sont spécifiques à chaque télécommande. Il vous faudra donc connaître le nombre correspondant à chaque touche de votre télécommande que vous allez utiliser. Pour cela, la partie de code suivante vous permettra de connaître les valeurs des touches de votre télécommande:

     /* Cette partie de code vous permet de trouver les valeurs des touches de votre télécommande. Afin de les déterminer,
     ouvrez le "Moniteur série" (Ctrl + Maj + M) et appuyez sur les touches de votre télécommande. Vous verrez apparaître
     des nombres: ceux-ci correspondent aux valeurs des touches de votre télécommande.*/
     if (irrecv.decode(&results)) {
       Serial.println(results.value, DEC);
       irrecv.resume(); // Receive the next value
     }


  • Câblage

Suivre le schéma fourni en faisant bien attention au sens des LEDs. La patte la plus longue de la LED représente l'anode, qui doit être reliée à l'entrée. Il est conseillé d'espacer les composants pour plus de clarté.


Seconde Partie : Construction du nuage

Pour réaliser le nuage, vous pouvez choisir le support de votre choix, dans ce tutoriel le support utilisé sera une bouteille. Il faudra un espace pour placer la carte Arduino et la plaque LABDEC à l'intérieur de la bouteille ainsi que le passage des fils. Pour réaliser l'ouverture de la carte Arduino, découpez le fond d'une bouteille.

IMG 20170118 110310.jpg










Une fois le découpage de la bouteille réalisé, il faudra mettre de la colle sur la bouteille et y déposer un torchon/chiffon. Attendez que tout cela soit sec. Percez des trous dans la bouteilles : 6 trous pour les 6 Leds et un 1 trou pour le passage de l'alimentation. Disposez les LEDs de manière hétérogène sur la bouteille, ensuite mettez de la colle sur le torchon/chiffon pour y déposer le coton. Vous pouvez si vous le souhaitez faire des formes avec le coton pour avoir un beau nuage.

Erreur lors de la création de la miniature : Fichier avec des dimensions supérieures à 12,5 MP

Comment ça marche ?

Observations

En appuyant sur différents boutons de la télécommande on peut observer différents modes d'éclairage pour les LEDs.

Explications

En appuyant sur les boutons d'une télécommande, vous envoyez des données via un émetteur infrarouge, chaque bouton de la télécommande possède un(e) code/donnée différent(e). Un capteur permet de recevoir ces données. Grâce à l'Arduino, nous pouvons récupérer les données des capteurs et effectuer différentes actions. Par exemple : En appuyant sur le bouton 1 de la télécommande, le capteur va recevoir "16462326561" et le transmettre à l'Arduino. Dans l'Arduino, nous réalisons un programme qui effectue une action (comme par exemple allumer une LED) s'il reçoit la valeur "16462326561".

Vous aimerez aussi

Réaliser le même projet avec différentes applications pour faciliter la vie de tous les jours. Exemple : détecter que le facteur est passé, savoir quand le repas est prêt. Pour cela il vous faudra modifier le système et installer des capteurs supplémentaires, modifier le programme pour ajouter différentes fonctionnalités etc...

Sources et ressources utiles

Tuto : Exemple de forme : http://www.instructables.com/id/Interactive-Thunder-and-Lightning-Cloud/ ( ! ballons se dégonflent, pas de code arduino) Meilleur tuto http://www.instructables.com/id/IR-Rainbow-Cloud-ver-1/?ALLSTEPS