Z-uno или как добавить любое устройство в сеть z-wave
Как-то устанавливал клиенту умный дом: задача состояла в том, чтобы объединить все пульты в один и этим пультом стал телефон. Пультов было три, два из них были с инфракрасным сигналом, а вот третий — от штор — оказался на радиосигнале. Ик сигнал я могу записать и передать с помощью устройства ztx-120, а вот радиосигнал не запишешь. Что делать в этом случае я и хочу рассказать в этой статье. Только в примере будет не радиопульт, а сотовый телефон, смысл от этого не поменяется.
Для этого я взял плату z-uno, залил на нее свой код при помощи usb-кабеля через программу arduino IDE 1.6.5 (как установить arduino для z-uno на windows, я прочитал на z-uno.z-wave.me/install — инструкция на английском, но по картинкам все понятно). Так как язык «Cи» я не знаю, взял код от стандартной розетки, он есть в программе arduino в виде шаблона (называется «SimpleSwitch») и размножил его на пины 13,14,15. Ниже приведен тот код, который я залил на плату z-uno.
/*
* 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;
}
На момент написания статьи пульта под рукой у меня не оказалось, но для примера я взял свой старенький мобильный с кнопками, разобрал и припаялся к кнопкам «один», «два» и «сброс». Далее решил взять с кнопок телефона всю «землю» и скрутить в один, а плюсы раскидал на пины 13,14,15.
При этом у меня ничего не заработало, так как все кнопки оказались в одном электрическом контуре, а он должен быть у каждой кнопки свой.
Для таких случаев используется транзисторная оптопара.
Для того, чтобы было удобнее все это объединять, я взял макетную плату и соединил её с оптопарами. Нужно учесть, что там на оптопаре стоит кружочек или выемка — это та ножка оптопары, где расположен плюс диода, соответственно к этим ножкам мы будем присоединять плюсы от z-uno, а это у нас пины 13,14,15. «Землю» на оптопарах со стороны диода мы объединяем на макетной плате все в один и присоединяем их к порту gnd на z-uno.
Далее присоединяем к нашей схеме кнопки мобильного телефона, где там будет плюс, а где «земля» — не имеет значения, так как кнопки работают на замыкание. На картинке ниже можно рассмотреть рабочий образец в сборе.
Далее добавляем z-uno в сеть z-wave, и проверяем его на работоспособность. Как мы видим, все работает.
Удачных вам изобретений. В видео ниже вы можете посмотреть весь процесс.