Total-Informatique

Le blog de sablier94

Ruban RGB controlé via smartphone

29 septembre 2012

Dans mon dernier article, je vous ai montré comment contrôler une led RGB avec son ordinateur (connecté à internet). Cette fois ci, c’est l’occasion de mettre en pratique ce que l’on a appris dans un petit projet utile. Voilà une photo de ce que l’on va faire :

Photo du résultat

Il y a quelques semaines, j’ai acheté dans un magasin de bricolage, un ruban de leds RGB de 50cm de la marque Paulmann pour une dizaine de francs suisse. On nous disait d’acheter avec ce ruban un adaptateur secteur pour l’alimentation et un kit de télécommande infrarouge pour le contrôle à distance. Cependant si j’avais acheté le pack entier, j’aurai dû débourser environ 70 francs. Je suis parti simplement avec mon ruban en réfléchissant à l’installation que je ferai.

Ruban de leds RGB utilisé

Ruban de leds RGB utilisé

Ce ruban consomme en théorie dans les 15 watts et demande 12 volts. Pour trouver les ampères consommés, on fait 15 divisé par 12 et ça nous donne 1.25 ampères. Il me fallait donc trouver une alimentation équivalente vu que l’arduino ne peut fournir autant de puissance je me suis tourné vers l’utilisation d’un pile 9 volts (avec le connecteur approprié) et d’un relai. L’avantage est que ça ne nous coûte pas trop cher, par contre il faudra changer la pile et la puissance n’est pas exactement celle qu’on attendait (Mais les leds s’allument avec un éclairage très correct et quasiment équivalent au montage officiel. En plus je n’utiliserai qu’une seule couleur à la fois).

La connectique est pareil que pour une led RGB, c’est à dire qu’il y a un pin pour l’alimentation et 3 autres pins pour allumer les différentes couleurs. Si le pin est connecté au ground, la led s’allumera, sinon le courant ne passera pas et la led restera éteinte.

Voyons tout de suite le branchement du relai (télécharger le schéma) :

Schéma du montage

Donc il vous faut mettre le shield ethernet sur votre Arduino et utiliser une breadboard pour les branchements du relai. Vu que je n’ai qu’un seul relai pour le moment, on ne pourra faire que d’allumer ou d’éteindre une couleur, pas possible de la choisir.

Photo du câblage

Câblage du relai

Pour le code Arduino, c’est celui de l’article précèdent avec quelques petites modification :

/*
  Code de base : http://arduino.cc/en/Tutorial/UDPSendReceiveString
  Modifié par Sablier94
  Version 1.0
  Matériel requis : un Arduino (UNO  R3), un shield Ethernet, 3 résistances
  1.1K, une LED RGB à anode commune et une breadboard.
  Instructions : Connectez le 5v à l'anode de la LED, connectez la première
  broche (celle qui est "isolée") au pin 5 (rouge),
  la deuxième au pin 6 (bleu) et la troisième au pin 7 (vert). Changez
  éventuellement les adresses IP puis uploadez ce sketch sur votre arduino.
  Vous pouvez envoyer vos commandes depuis l'application S-Remote Control
  sur android.
  N'oubliez pas que pour y accéder depuis l'extérieur (avec une IP publique),
  il faut ouvrir le port / IP de l'arduino sur votre routeur.
*/

#include          // needed for Arduino versions later than 0018
#include
#include          // UDP library from: bjoern@cs.stanford.edu 12/30/2008

int ledPinB = 3;

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 177);

unsigned int localPort = 8888;      // local port to listen on

// buffers for receiving and sending data
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,

// An EthernetUDP instance to let us send and receive packets over UDP
EthernetUDP Udp;

void setup() {
  // start the Ethernet and UDP:
  Ethernet.begin(mac,ip);
  Udp.begin(localPort);
  pinMode(ledPinB, OUTPUT);
  digitalWrite(ledPinB, HIGH);
}

void loop() {
  // if there's data available, read a packet
  int packetSize = Udp.parsePacket();
  if(packetSize)
  {
    IPAddress remote = Udp.remoteIP();
    // read the packet into packetBufffer
    Udp.read(packetBuffer, 4); //On peut remplacer 4 par UDP_TX_PACKET_MAX_SIZE
    if(String(packetBuffer) == "n") //On regarde la commande reçue
    {
       digitalWrite(ledPinB, HIGH); //On éteind la led
    }
    else if(String(packetBuffer) == "y")
    {
       digitalWrite(ledPinB, LOW); //On allume la led
    }
  }
  delay(10);
}

Passons maintenant à la résolution du problème suivant : Comment piloter les leds en étant confortablement assis dans son salon ? J’avais le choix entre une télécommande infrarouge ou mon smartphone sous android. La décision a été vite prise car j’ai trouvé une application géniale pour la domotique; S-Remote Control. Cette application gratuite et en français vous permet de configurer une interface et émettre des trames TCP ou UDP en fonctions des actions effectuées sur l’interface. On peux y mettre des boutons, des barres et des cases à cocher. Vu qu’on peut personnaliser le texte affiché sur les boutons et le texte envoyé, on peut créer une sorte de protocole pour communiquer avec notre Arduino. Dans mon cas j’ai mis 2 boutons (« Allumer » et « Éteindre ») qui envoient Y ou N à l’adresse 192.168.0.177 (port 8888) en fonction du bouton appuyé :

Screenshot de l'interface

Screenshot de l’interface

Une fois le montage terminé et l’application configurée, il faut placer le ruban à l’endroit souhaité. Plusieurs places conviennent et permet une superbe décoration. Pour ma part, je l’ai attachée (avec du scotch) sur le bas de ma télévision écran plat (la lumière émise est donc indirecte et n’éblouis pas). Un des avantages à le placer à cet endroit est que mon WiFi est juste en dessous et qu’il dispose d’un port USB. Il m’a donc suffit de branché l’alimentation de mon Arduino au port USB et le câble ethernet du shield sur le WiFi. De plus on peut placer le montage derrière l’écran et le laisser allumer 24h/24 et 7j/7 (pas vraiment écologique mais un le montage en « veille »ne consomme vraiment pas beaucoup) sans qu’il ne fasse de bruit (excepté le « clap » d’activation et de désactivation du relai) ni ne chauffe.

Le résultat est excellent, on ne voit rien quand les leds sont éteintes et le fait de pouvoir les allumer avec son smartphone (ou sa tablette sur android) tout en regardant un film est magique.

Photo du résultat

Bien sûr vous pouvez améliorer ce projet, vous pouvez par exemple mettre 3 relais pour choisir entre 6 couleurs différentes (il faudra aussi changer l’interface sur l’application) et pouvoir le contrôler depuis n’importe ou sur Internet en ouvrant le port utilisé par l’Arduino sur votre WiFi (mais c’est à déconseiller car ce n’est pas sécurisé, n’importe qui peut contrôler vos leds et ce n’est pas une fonction très utile).

Votre adresse email ne sera pas publiee. Les champs requis sont marque *

*

Total-Informatique

Le blog de sablier94