Transmission RF

Piloter ses prises et éclairages OTIO avec l’Arduino

Le voilà mon premier article !

Trève de plaisanterie, je vais essayer de vous expliquer (c’est la première fois que je tiens un blog) comment piloter des prises et des modules d’éclairage de la marque OTIO à partir d’un Arduino.

Après pas mal de recherches sur le net, je n’ai pas réussi à trouver le protocole des appareils domotiques OTIO, surement parce que leur distribution à l’air de se faire au compte-gouttes. Je me suis donc tourné vers l’excellente librairie rc-switch (à télécharger ici) qui est extrêmement simple d’utilisation et surtout qui permet de lire les codes envoyés par une télécommande (à l’aide d’un récepteur 433MHz mais ce n’est pas le sujet ici puisque je vous ai mâché le travail…). Vous pouvez tout de même la télécharger puisque nous en auront besoin également pour la partie émission.

 Pour arriver à nos fins, il faudra donc :

  • Un arduino (ahem…)
  • La librairie rc-switch (à télécharger ici)
  • Un émetteur 433 MHz (trouvable sur eBay pour moins de €5)
  • Une breadboard
  • Des fils
  • Et c’est tout !

Petit détour rapide sur l’emetteur 433MHz pour ceux qui sont pas sur d’acheter le bon :

Image

Et oui c’est ce petit objet minuscule… Tel quel, sa portée est pas trop mal (je commande mes éclairages à travers deux pièces). Il est possible d’augmenter la portée de deux manières, la plus simple étant de lui souder une antenne de 17,3cm au niveau du percage noté ANT, et la seconde manière étant d’augmenter sa tension d’alimentation à 12V. Mais attention, dans ce cas, la sortie DATA qui ira vers l’arduino sera elle aussi en 12V, et il aimera pas trop… Il faudra alors penser à mettre un pont diviseur entre l’arduino et la sortie DATA.

Passons à la partie cablage, ultra simple :

  • GND du transmetteur -> GND de l’Arduino
  • VCC du transmetteur -> 5V de l’Arduino
  • DATA du transmetteur -> pin #10 de l’Arduino

Image

Plûtot simple comme cablage ! Maintenant, avant de passer à la partie code, on va s’intéresser vite fait à la télécommande.

Image

Comme on peut le voir sur l’image du dessus la commande permet de commander 4 appareils appartenant à 4 familles, ce qui donne 16 appareils pilotables et donc 32 codes à trouver (on/off pour chaque appareil). Et comme je suis gentil, je partage.

 

Mode: 32 bit
Protocol: 2

A1 ON  :  919844896
A1 OFF :  1054062624
A2 ON  :  248756256
A2 OFF :  30652448
A3 ON  :  651409440
A3 OFF :  785627168
A4 ON  :  382973984
A4 OFF :  517191712
B1 ON  :  970176544
B1 OFF :  903067680
B2 ON  :  97761312
B2 OFF :  231979040
B3 ON  :  701741088
B3 OFF :  634632224
B4 ON  :  433305632
B4 OFF :  366196768
C1 ON  :  819181600
C1 OFF :  953399328
C2 ON  :  148092960
C2 OFF :  80984096
C3 ON  :  550746144
C3 OFF :  684963872
C4 ON  :  282310688
C4 OFF :  416528416
D1 ON  :  1020508192
D1 OFF :  852736032
D2 ON  :  47429664
D2 OFF :  181647392
D3 ON  :  752072736
D3 OFF :  584300576
D4 ON  :  483637280
D4 OFF :  315865120

GROUPE ON  :  332642336
GROUPE OFF :  601077792  

Ces donc ces fameux codes qui constituent le protocole de communication d’OTIO. Et ce sont ces mêmes codes que nous allons faire manger à la libraire rc-switch qui pilotera notre émetteur.

On peut donc passer au programme:

/*
Codes commandes OTIO 433MHz Ref. 09HA02
Ces codes peuvent etre utilisés avec la libraire RC-Switch
http://code.google.com/p/rc-switch/
Contactez moi sur Twitter: @SpoonS2K
-----------------------------------------------

Mode: 32 bit
Protocol: 2

A1 ON  :  919844896
A1 OFF :  1054062624
A2 ON  :  248756256
A2 OFF :  30652448
A3 ON  :  651409440
A3 OFF :  785627168
A4 ON  :  382973984
A4 OFF :  517191712
B1 ON  :  970176544
B1 OFF :  903067680
B2 ON  :  97761312
B2 OFF :  231979040
B3 ON  :  701741088
B3 OFF :  634632224
B4 ON  :  433305632
B4 OFF :  366196768
C1 ON  :  819181600
C1 OFF :  953399328
C2 ON  :  148092960
C2 OFF :  80984096
C3 ON  :  550746144
C3 OFF :  684963872
C4 ON  :  282310688
C4 OFF :  416528416
D1 ON  :  1020508192
D1 OFF :  852736032
D2 ON  :  47429664
D2 OFF :  181647392
D3 ON  :  752072736
D3 OFF :  584300576
D4 ON  :  483637280
D4 OFF :  315865120

GROUPE ON  :  332642336
GROUPE OFF :  601077792
*/

#include <RCSwitch.h> // on inclus la bibliotheque RC-Switch

RCSwitch rf_cmd = RCSwitch(); // initialisation
const char rf_mode = 32; // mode 32 bits
const char rf_pin = 10; // l'emetteur est connecte au pin 10 de l'arduino
const char arduino_led =  13;  // led de la carte Arduino

void setup() {
 
  Serial.begin(9600);
  rf_cmd.enableTransmit(rf_pin); // emetteur sur la broche 10
  rf_cmd.setProtocol(2); // par defaut le protocole utilisé est le 1, mais les commandes OTIO utilisent le 2
  rf_cmd.setRepeatTransmit(15); // on repete la transmission 15 fois pour etre sur qu'elle arrive bien
  rf_cmd.setPulseLength(700); //
 
  pinMode(arduino_led, OUTPUT); // la broche de la led est configuree en sortie
  digitalWrite(arduino_led, LOW); // on la met à l'état bas
 
}

/* cette fonction va envoyer le code voulu via le transmetteur et faire flasher la led de la carte arduino a chaque commande*/
void rf_send(unsigned long rf_code) {
  digitalWrite(arduino_led, HIGH);
  rf_cmd.send(rf_code, rf_mode);
  digitalWrite(arduino_led, LOW);
}

void loop() {
 
  // cette fonction d'exemple allume et eteint tout les recepteurs grace au code de groupe toute les trois secondes
 
  rf_send(332642336);
  delay(3000);
 
  rf_send(601077792);
  delay(3000);
 
}

Je pense avoir assez commenté le code, mais n’hésitez pas au besoin. A vous d’intégrer ces petits bouts de code dans votre projet maintenant !

J’utilise ce montage chez moi avec des récepteurs OTIO 09HA07 sans soucis, la portée est d’environ un étage.

Publicités