Разработка Z-Wave бесшумного выключателя и автоматизация на балконе

в 9:00, , рубрики: arduino, DIY, diy или сделай сам, ruvds_статьи, z-uno, z-wave, Блог компании RUVDS.com, выключатель света, гаджеты, Разработка под Arduino, умный дом

Разработка Z-Wave бесшумного выключателя и автоматизация на балконе - 1


Решился балкон переделать в рабочий кабинет. Фотографий ДО и ПОСЛЕ не будет, но я расскажу об автоматизации, которую там устроил. С самого начала планировал автоматическое управление теплым полом и освещением, а уже по окончанию ремонта решил добавить еще и сенсорную панель управления на стену. Устройства выбрал с технологией Z-Wave, но в процессе использования оказалось, что меня не устраивает функционал управления освещением. Пришлось разработать свой собственный выключатель на базе платы Z-Uno 2 и твердотельных реле Сrydom.

Мне очень нравится серия выключателей Gira E3 за их лаконичный дизайн и качественное исполнение, также она входит в программу System 55, что дает совместимость с большим количеством устройств для умного дома. Я выбрал двойную белую рамку и одинарный выключатель.

image

Среди Z-Wave термостатов теплого пола есть термостат Heatit Z-TRM3 совместимый с рамками программы Gira System 55. В использовании термостат мне очень понравился, сенсорный экран и всего 3 кнопки: вверх/ок/вниз, даже ребенок справится. Меня он полностью устраивает!

image

На балконе 2 зоны освещения, это встроенные светильники на потолке и лампа над рабочим местом. Но управлять ими я хотел с одного выключателя по следующему сценарию:

  • По одинарному клику вкл/выкл светильников
  • По двойному клику вкл/выкл лампы
  • По долгому удержание вкл/выкл лампы и светильников

В наличии у меня был двухканальный Z-Wave модуль реле Philio PHI_PAN04. К нему я подключил одинарный звонковый выключатель, который одновременно включал/выключал лампу и светильники, для раздельного управления использовался телефон. К сожалению этот модуль нельзя было настроить, как я хотел на одинарные и двойные нажатия, можно было только управлять нагрузкой с двух выключателей. После нескольких недель неудобств я решился на разработку собственного выключателя с бесшумными твердотельными реле и Z-Wave чипом 7-го поколения.

Разработка Z-Wave бесшумного выключателя и автоматизация на балконе - 4Встраиваемое Z-Wave двойное реле Philio PAN4 с сухими контактами

Недавно вышла новая Z-Wave плата Z-Uno 2 для быстрой разработки устройств в среде Arduino IDE (теперь еще и VS Code поддерживается). Новая Z-Uno 2 основана на Z-Wave чипе 7 поколения ZGM130S, а это CortexM4F, 39 МГц и куча периферии, но мне нужно было только 4 GPIO.

Для разработки собственного выключателя потребовалось немного деталей «Lego»:

  • Z-Wave плата Z-Uno G2
  • Блок питания Hi-Link 3.3 В
  • Пара твердотельных реле Сrydom
  • Кусок макетки

Аккуратно спаяв все компоненты на макетке получился компактный модуль, который точно влезает в подрозетник за выключатель. Перед установкой всю макетку обмотал изоляцией.

image Z-Uno на Z-Wave чипе 700 серии, блок питания Hi-Link, два твердотельных реле

image Запаял блок питания Hi-Link и твердотельные реле Crydom на макетке

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

Код двойного выключателя для Z-Uno 2

#include "ZUNO_Buttons.h"

#define RELAY_1 0
#define RELAY_2 1
#define BTN_PIN 23

// Global variables
byte relay1State = 0;
byte relay2State = 0;

// Create btn
PinBtn btn;

// Z-Wave channels
ZUNO_SETUP_CHANNELS(
  ZUNO_SWITCH_BINARY(relay1Getter, relay1Setter),
  ZUNO_SWITCH_BINARY(relay2Getter, relay2Setter)
);

void setup() {
  pinMode(RELAY_1, OUTPUT);
  pinMode(RELAY_2, OUTPUT);
  pinMode(BTN_PIN, INPUT_PULLUP);

  // Add button with parameters
  ZunoBtnButtonInit_t initButton = BTN_BUTTON_INIT_DEFAULT;
  btn.addButton(BTN_PIN, &initButton);
}

void loop() {
  digitalWrite(RELAY_1, relay1State ? HIGH : LOW);
  digitalWrite(RELAY_2, relay2State ? HIGH : LOW);

  if (btn.isSingleClick(BTN_PIN) || btn.isLongClick(BTN_PIN)) {
    relay1State = !relay1State;
    zunoSendReport(1);
  }
  else if (btn.isDoubleClick(BTN_PIN)) {
    relay2State = !relay2State;
    zunoSendReport(2);
  }
}

// Getters and setters
void relay1Setter(byte value) {
  relay1State = value;
}

byte relay1Getter() {
  return relay1State;
}

void relay2Setter(byte value) {
  relay2State = value;
}

byte relay2Getter() {
  return relay2State;
}

Часть управления реле сгенерировал графический конфигуратор, а обработку кнопок по моему желанию я написал следую документации.

image

Запихал модуль в подрозетник, подключил питание и выключатель. Подрозетник в этом месте специально сделан глубоким — 80 мм. В 60 мм тоже можно было бы запихнуть, а в 40 мм вообще ни один радио модуль не влезет с выключателем.

image

Во время тестирования выяснилось, что с твердотельными реле не все светодиодные лампы работают одинаково хорошо, оно и понятно, через транзисторы течет небольшой ток на лампу и она вспыхивает. В таком случае нужно использовать либо диммируемые лампы, либо на которых указано, что они работают с выключателями с подсветкой. У меня диммируемая лампа из IKEA.

imageGira E3 System 55 в интерьере

Уровень комфорта повышен, свет под контролем и включение/выключение совершенно бесшумные.

А в стену я встроил 7 дюймовый сенсорный дисплей Nextion NX8048P070. Управляет им ESP32 и держит связь с контроллером умного дома на базе Raspberry Pi, но это уже совсем другая история, если будет интересно, расскажу о ней в следующей статье.

P/s ещё немного картинок:

imageNextion NX8048P070

imageESP32 + Nextion NX8048P070

imageESP32 + Nextion NX8048P070

Автор: Виталий

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js