Z-uno ou comment ajouter n'importe quel appareil au réseau z-wave

D'une certaine manière, j'ai installé une maison intelligente pour le client: la tâche consistait à combiner toutes les télécommandes en une seule et c'était le téléphone. Il y avait trois télécommandes, deux d'entre elles étaient avec un signal infrarouge, mais la troisième - des rideaux - est apparue sur le signal radio. Je peux enregistrer et transmettre le signal à l'aide du périphérique ztx-120, mais vous ne pouvez pas enregistrer le signal radio. Que faire dans ce cas, je veux dire dans cet article. Seulement dans l'exemple, il n'y aura pas de télécommande radio, mais un téléphone portable, la signification de cela ne changera pas.

Pour ce faire, j'ai pris la carte z-uno, y ai téléchargé mon code à l'aide d'un câble USB via le programme arduino IDE 1.6.5 (comment installer arduino pour z-uno sur Windows, j'ai lu sur z-uno.z-wave.me/ installer - l'instruction est en anglais, mais tout est clair sur les photos). Comme je ne connais pas le langage "C", j'ai pris le code d'une prise standard, il est dans le programme arduino sous la forme d'un modèle (appelé "SimpleSwitch") et je l'ai multiplié par les pins 13,14,15. Vous trouverez ci-dessous le code que j'ai téléchargé sur la carte z-uno.

voir le code
/*
 * That is a Simple Sensor Multilevel example
 * It measures the value on the potentiometer
 * And sends report to the controller if changed
 */
 
// LED pin number
#define LED_PIN 13
#define LED_PINN 14
#define LED_PINNN 15

// Last saved LED value
byte currentLEDValue;
byte currentLEDValuee;
byte currentLEDValueee;

// next macro sets up the Z-Uno channels
// in this example we set up 1 switch binary channel
// you can read more on http://z-uno.z-wave.me/Reference/ZUNO_SWITCH_BINARY/
ZUNO_SETUP_CHANNELS(ZUNO_SWITCH_BINARY(getter, setter),
                    ZUNO_SWITCH_BINARY(getterr, setterr),
                    ZUNO_SWITCH_BINARY(getterrr, setterrr));

// next macro sets up the Z-Uno frequency
ZUNO_SETUP_FREQUENCY(ZUNO_FREQ_RU);

void setup() {
  pinMode(LED_PIN, OUTPUT); // setup pin as output
  pinMode(LED_PINN, OUTPUT); // setup pin as output
  pinMode(LED_PINNN, OUTPUT); // setup pin as output
}

void loop() { 
  // loop is empty, because all the control comes over the Z-Wave
}

// function, which sets new relay state
// this function runs only once the controller sends new value
 void setter (byte value) {
  // value is a variable, holding a "new value"
  // which came from the controller or other Z-Wave device
  if (value > 0) {    // if greater then zero
    digitalWrite (LED_PIN, HIGH); //turn LED on
  } else {            // if equals zero
    digitalWrite(LED_PIN, LOW);   //turn LED off
  } 
  // let's save our value for the situation, when the controller will ask us about it
  currentLEDValue = value;
}

void setterr (byte valuee) {
  // value is a variable, holding a "new value"
  // which came from the controller or other Z-Wave device
  if (valuee > 0) {    // if greater then zero
    digitalWrite (LED_PINN, HIGH); //turn LED on
  } else {            // if equals zero
    digitalWrite(LED_PINN, LOW);   //turn LED off
  } 
  // let's save our value for the situation, when the controller will ask us about it
  currentLEDValuee = valuee;
}

void setterrr (byte valueee) {
  // value is a variable, holding a "new value"
  // which came from the controller or other Z-Wave device
  if (valueee > 0) {    // if greater then zero
    digitalWrite (LED_PINNN, HIGH); //turn LED on
  } else {            // if equals zero
    digitalWrite(LED_PINNN, LOW);   //turn LED off
  } 
  // let's save our value for the situation, when the controller will ask us about it
  currentLEDValueee = valueee;
}

// function, which returns the previously saved relay value
// this function runs only once the controller asks
byte getter (){
  return currentLEDValue;
}
byte getterr (){
  return currentLEDValuee;
}
byte getterrr (){
  return currentLEDValueee;
}


Au moment de la rédaction de l'article, je n'avais pas de main à la main, mais par exemple, j'ai pris mon ancien mobile avec des boutons, démonté et soudé aux boutons "un", "deux" et "réinitialiser". Ensuite, j'ai décidé de prendre toute la «terre» des boutons du téléphone et de la tordre en une seule, et j'ai dispersé les pros dans les broches 13,14,15.

En même temps, rien ne fonctionnait pour moi, car tous les boutons étaient dans le même circuit électrique, et chaque bouton devrait avoir le sien.



Dans de tels cas, un optocoupleur à transistor est utilisé.

Afin de rendre plus pratique de combiner tout cela, j'ai pris une planche à pain et l'ai connectée avec des optocoupleurs. Il convient de noter qu'il y a un cercle sur l'optocoupleur ou une encoche - c'est le pied de l'optocoupleur où se trouve le plus de la diode, respectivement, nous attacherons des avantages de z-uno à ces jambes, et nous avons des broches 13,14,15. Nous combinons le "sol" sur les optocoupleurs du côté diode sur la platine d'essai en un et les fixons au port gnd sur z-uno.



Ensuite, nous attachons à notre schéma les boutons du téléphone mobile, où il y aura un plus, et où le «sol» n'a pas d'importance, car les boutons fonctionnent pour se fermer. Dans l'image ci-dessous, vous pouvez voir l'assemblage de l'échantillon de travail.



Ensuite, ajoutez z-uno au réseau z-wave et testez son opérabilité. Comme nous le voyons, tout fonctionne.



Bonne chance avec vos inventions. Dans la vidéo ci-dessous, vous pouvez regarder l'ensemble du processus.

Source: https://habr.com/ru/post/fr395907/


All Articles