Z-Wave светофор на базе платы Z-UNO +7



Для детской игры мне нужен светофор с радио управлением. У меня уже есть Z-Wave контроллер RaZberry, поэтому и светофор я решил сделать с управлением по Z-Wave. Суть проста: 4 разноцветные лампочки управляются с помощью 4-х реле (четвертая — синяя, режим турбо).
Для разработки своего Z-Wave устройства с 4-мя реле я выбрал плату Z-UNO второй версии, которая стала более компактная.

Программирование и заливка прошивки осуществляются в Arduino IDE. Для работы с Z-Wave к синтаксису Arduino добавлены специфичные Z-Wave функции.

Модули реле используются 5 вольтовые, управляемые оптопарой PC817C (datasheet), подключены к ножкам 9,10,11,12. Стоит обратить внимание, что максимальный ток проходящий через ножку Z-UNO может быть не более 8мА, поэтому ограничиваем ток резистором на 220Ом.

Скетч пишется на Си с возможностью использовать Arduino функции и специфичные Z-Wave вызовы.

Скетч 4-х канальное Z-Wave реле
/*
*
* 4 Relays controlled thouth resistors 220Omh and optocouplers 817С
* Off — HIGH
* On — LOW
*/

// Pins definitions
#define LedPin1 9
#define LedPin2 10
#define LedPin3 11
#define LedPin4 12

// Global variables to store data reported via getters
byte switchValue1 = 1;
byte switchValue2 = 1;
byte switchValue3 = 1;
byte switchValue4 = 1;

ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_ALWAYS_AWAKE);

// Set up 10 channels
ZUNO_SETUP_CHANNELS(
ZUNO_SWITCH_BINARY(getterSwitch1, setterSwitch1),
ZUNO_SWITCH_BINARY(getterSwitch2, setterSwitch2),
ZUNO_SWITCH_BINARY(getterSwitch3, setterSwitch3),
ZUNO_SWITCH_BINARY(getterSwitch4, setterSwitch4)
);

void setup() {
// set up I/O pins. Analog and PWM will be automatically set up on analogRead/analogWrite functions call
pinMode(LedPin1, OUTPUT);
pinMode(LedPin2, OUTPUT);
pinMode(LedPin3, OUTPUT);
pinMode(LedPin4, OUTPUT);
}

void loop() {
// Empty
}

// Getters and setters

void setterSwitch1(byte value) {
digitalWrite(LedPin1, (value > 0)? LOW: HIGH);
switchValue1 = value;
}

byte getterSwitch1(){
return switchValue1;
}

void setterSwitch2(byte value) {
digitalWrite(LedPin2, (value > 0)? LOW: HIGH);
switchValue2 = value;
}

byte getterSwitch2(){
return switchValue2;
}

void setterSwitch3(byte value) {
digitalWrite(LedPin3, (value > 0)? LOW: HIGH);
switchValue3 = value;
}

byte getterSwitch3(){
return switchValue3;
}

void setterSwitch4(byte value) {
digitalWrite(LedPin4, (value > 0)? LOW: HIGH);
switchValue4 = value;
}

byte getterSwitch4(){
return switchValue4;
}

Заливаем скетч в Z-UNO, после чего добавляем наше устройство в Z-Wave контроллер. Немного кастомизируем иконки и пульт управления светофором готов.


На телефоне веб интерфейс RaZberry тоже не плохо выглядит.


Также этим светофором можно управлять с других Z-Wave устройств, например брелока Key Fob с 4 кнопками.


В игре я сам буду управлять светофором в зависимости от дорожной ситуации, но с помощью дополнительных датчиков, расписания и приложений RaZberry можно было бы и автоматизировать систему.


Плата Z-UNO позволяет разрабатывать Z-Wave устройства любого типа: реле, диммеры, датчики освещенности, движения, расстояния и многие другие. Z-UNO это одно из самых дешевых Z-Wave устройств. За 3000р вы можете сделать например 10-канальное реле или 10 канальный RGBW модуль! Это очень круто!




К сожалению, не доступен сервер mySQL