Для детской игры мне нужен светофор с радио управлением. У меня уже есть 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 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 модуль! Это очень круто!
ссылка на оригинал статьи https://geektimes.ru/post/273588/
Добавить комментарий