Z-uno atau cara menambahkan perangkat apa pun ke jaringan z-wave

Entah bagaimana saya memasang rumah pintar untuk klien: tugasnya adalah menggabungkan semua remote menjadi satu dan ini adalah telepon. Ada tiga remote, dua dari mereka dengan sinyal inframerah, tetapi yang ketiga - dari tirai - muncul pada sinyal radio. Saya dapat merekam dan mengirimkan sinyal menggunakan perangkat ztx-120, tetapi Anda tidak dapat merekam sinyal radio. Apa yang harus dilakukan dalam hal ini, saya ingin katakan dalam artikel ini. Hanya dalam contoh tidak akan ada remote control radio, tetapi ponsel, artinya ini tidak akan berubah.

Untuk melakukan ini, saya mengambil z-uno board, mengunggah kode saya ke dalamnya menggunakan kabel usb melalui program arduino IDE 1.6.5 (cara menginstal arduino untuk z-uno di windows, saya baca di z-uno.z-wave.me/ instal - instruksi dalam bahasa Inggris, tetapi semuanya jelas dari gambar). Karena saya tidak tahu bahasa C, saya mengambil kode dari outlet standar, itu dalam program arduino dalam bentuk templat (disebut "SimpleSwitch") dan dikalikan dengan pin 13,14,15. Di bawah ini adalah kode yang saya unggah ke papan z-uno.

lihat kode
/*
 * 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;
}


Pada saat menulis artikel, saya tidak punya tangan di tangan, tetapi misalnya saya mengambil ponsel lama saya dengan tombol, dibongkar dan disolder ke tombol "satu", "dua" dan "reset". Kemudian saya memutuskan untuk mengambil semua "bumi" dari tombol telepon dan memutarnya menjadi satu, dan menyebarkan pro ke pin 13,14,15.

Pada saat yang sama, tidak ada yang berhasil bagi saya, karena semua tombol berada di sirkuit listrik yang sama, dan masing-masing tombol harus memiliki sendiri.



Untuk kasus seperti itu, optocoupler transistor digunakan.

Agar lebih mudah untuk menggabungkan semua ini, saya mengambil papan tempat memotong roti dan menghubungkannya dengan optocoupler. Perlu dicatat bahwa ada lingkaran pada optocoupler atau takik - ini adalah kaki optocoupler di mana plus dioda berada, masing-masing, kita akan menempelkan plus dari z-uno ke kaki ini, dan kami memiliki pin 13,14,15. Kami menggabungkan "ground" pada optocoupler dari sisi dioda pada papan tempat memotong roti dalam satu dan melampirkannya ke port gnd pada z-uno.



Selanjutnya, kami lampirkan ke skema kami tombol-tombol pada ponsel, di mana akan ada nilai tambah, dan di mana "ground" tidak masalah, karena tombol-tombol itu berfungsi untuk menutup. Pada gambar di bawah ini Anda dapat melihat perakitan sampel yang berfungsi.



Selanjutnya, tambahkan z-uno ke jaringan gelombang-z, dan uji untuk operabilitas. Seperti yang kita lihat, semuanya berfungsi.



Semoga beruntung dengan penemuan Anda. Dalam video di bawah ini Anda dapat menonton seluruh proses.

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


All Articles