Волна Z. Используем Z-Uno, чтобы сделать свое устройство для умного дома

Волна Z. Используем Z-Uno, чтобы сделать свое устройство для умного дома

Эксплойт

Существует масса готовых решений для умного дома, но дешевле и интереснее делать самому. В этой статье мы разберемся, как создать устройство с поддержкой Z-Wave, не покупая комплект разработчика за 6000 долларов. Делать мы будем детектор дыма, а поможет нам в этом плата Z-Uno.

Под словосочетанием «умный дом», которое нынче через раз заменяют на «интернет вещей», скрывается довольно простая вещь — автоматизация повседневных домашних нужд (по крайней мере тех, что в принципе могут быть автоматизированы). Подключение при этом может быть проводным или беспроводным, причем проводной вариант всегда обходится дороже, поскольку требует серьезных монтажных работ. Беспроводной проще и менее монументальный — конфигурацию можно потом менять в любой момент.

У каждого из беспроводных протоколов (Wi-Fi, Bluetooth, Z-Wave, ZigBee, Thread и другие) есть свои преимущества и недостатки, о которых стоит подумать, прежде чем начинать что-то покупать и мастерить.


  • Wi-Fi — технология, которая поддерживается любым смартфоном, но это всего лишь транспорт. Устройства разных производителей при этом обычно несовместимы друг с другом на уровне командного протокола, к тому же имеют высокое энергопотребление (чтобы работал Wi-Fi и TCP/IP, на устройстве нужен, считай, целый компьютер).
  • Bluetooth — популярный протокол, но изначально созданный скорее для беспроводных гарнитур и колонок, чем для светильников и выключателей. Из-за этого имеет ряд ненужных свойств. Bluetooth LE используется в некоторых устройствах с поддержкой Apple HomeKit, но их не так много.
  • Z-Wave имеет наибольшее количество совместимых устройств, более тысячи, но это обычно самые дорогие в своем сегменте модели.
  • ZigBee — на нем основаны весьма недорогие устройства, которые, к сожалению, не всегда совместимы друг с другом.
  • Thread и лежащий в его основе 6LoWPAN — перспективные разработки, которые пока что используются всего в двух устройствах.
Z-Wave-плата Z-Uno

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

В этой статье мы поговорим о разработке устройств на Z-Wave. Они сослужат тебе верную службу, если ты хочешь:

  • управлять освещением, возможно — даже с датчика движения;
  • измерять температуру и влажность, при необходимости включать климат-систему;
  • включать робот-пылесос, когда дома никого нет;
  • получать сообщения о протечках и взломах.

Можно купить датчик движения Fibaro и модуль управления освещением Aeotec и при этом не беспокоиться о совместимости: устройства Z-Wave совместимы между собой и могут работать напрямую без хаба. Для большинства задач автоматизации есть подходящие устройства:

  • лампы RGBW;
  • выключатели на батарейках;
  • разного рода датчики;
  • реле;
  • диммеры;
  • термостаты.

Если же требуется уникальное устройство вроде датчика радиации — и такое бывает, — можно разработать свое собственное профессиональное Z-Wave-устройство с помощью платы Z-Uno.

 


Что такое Z-Uno

Z-Uno — это плата для прототипирования устройств Z-Wave, основанная на чипе ZM5101. Многие производители оборудования для умных домов используют этот чип в своих устройствах, но для его самостоятельного программирования придется приобрести у Silicon Labs комплект разработчика: компилятор, программатор и SDK за 6000 долларов. О времени, которое придется потратить на изучение документации, не стоит и говорить.

Z-Uno pinout

Плата Z-Uno позволяет разработать устройство Z-Wave за один день, и оно будет на 100% совместимо с любым другим девайсом Z-Wave. Весь фокус в том, что для разработки используется среда Arduino IDE, которая ускоряет процесс программирования в тысячу раз. К тому же с ATmega328 каждый любитель мастерить уже знаком.

По сути, Z-Uno — это та же Arduino, только на другом чипе и с радиомодулем. Любую ножку можно настроить на вход или выход, есть четыре ножки ШИМ и четыре ножки АЦП, для коммуникации присутствует UART и SPI, питание от 3,3 до 18 В.

Как и к Arduino, к Z-Uno можно добавить абсолютно любой датчик и исполнительный механизм. Всего к нему можно подключить 32 девайса одновременно, это значительно уменьшает расходы на домашнюю автоматизацию. Управлять таким устройством можно как с подключенных клавиш, так и по радио с хаба или с другого устройства Z-Wave.

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

Веб-интерфейс Z-Wave-контроллера RaZberry с тремя датчиками температуры DS18B20

Если в доме уже есть какая-то автоматизация, например блок реле под управлением Arduino, то его функциональность можно расширить с помощью беспроводных датчиков движения и Z-Uno в качестве приемника радиосигналов. Другой вариант: встроить Z-Uno в уже установленные проводные датчики (дыма, освещения, движения и прочие), чтобы они могли напрямую включать свет или, к примеру, регулировать климатическую систему.

Охранный датчик движения с подключенной платой Z-Uno

 


Делаем детектор пыли и сигаретного дыма

Посмотрим, как реализовать детектор пыли и сигаретного дыма на основе Sharp GP2Y1010AU0F.

Датчик пыли Sharp GP2Y1010AU0F

Для детектирования дыма при возгорании существуют датчики дыма, которые срабатывают при большом количестве взвешенных частиц в воздухе. Но такие датчики не реагируют на пыль или сигаретный дым. Частицы пыли и сигаретного дыма очень маленькие и для их детектирования требуются более точные приборы, чем простые датчики дыма. Подойдет, к примеру, оптический датчик Sharp GP2Y1010AU0F.

Оптическая камера Sharp GP2Y1010AU0F

Внутри корпуса этот датчик имеет специально сконструированную оптическую камеру, которая и обнаруживает мелкие частицы. Камера работает следующим образом: светодиод (LED) в течение 280 мкс светит через линзу (Lens) на зону обнаружения частиц (Detector area). Фотодиод (Detector) фиксирует, сколько света доходит до него. Если есть препятствие в виде пыли или дыма, то датчик выдаст значение в диапазоне от 0 до 255 (если АЦП установлен на 8 бит).

Такому датчику периодически требуется калибровка. В любом жилом помещении есть пыль, и ее количество нужно принимать за 0, иначе датчик будет постоянно срабатывать. Разумно проводить калибровку каждые десять минут, так как в течение дня уровень пыли в воздухе может меняться: когда в помещении кто-то передвигается, пыли больше, по ночам — меньше.

Этот датчик можно использовать в проектах на Arduino, STM32 и других микроконтроллерах, но Z-Uno позволяет интегрировать датчик сигаретного дыма в систему умного дома. Благодаря тому что датчик производит измерения в течение очень короткого времени, его можно питать от одной батарейки 3 В CR123A.

Батарейка CR123A

Корпус предлагается использовать от обычного датчика дыма, он недорогой и имеет все нужные отверстия.

Корпус датчика дыма

Следуя даташиту на датчик Sharp GP2Y1010AU0F, подключаем его к плате Z-Uno.

Схема подключения датчика пыли к микроконтроллеру

Код достаточно прост и занимает 29 строк. Каждую секунду измеряется количество пыли по шкале от 0 до 255. Значение 255 — это 3,3 В на выходе датчика, но экспериментальным путем было установлено, что максимальное значение пыли достигается при меньшем напряжении и, соответственно, максимальное значение составляет 152. От него мы в процентах рассчитываем количество пыли в камере. После каждого измерения отправляем данные на контроллер Z-Wave.

#define LED 8
#define SAMPLING_TIME 280
#define DELTA_TIME 40
#define MAX_VALUE 152 // (instead 255)

ZUNO_SETUP_CHANNELS(ZUNO_SENSOR_MULTILEVEL_GENERAL_PURPOSE(getter));

byte voMeasured = 0;

void setup(){
  analogReadResolution(8);
  pinMode(LED,OUTPUT);
  Serial.begin();
}

void loop(){
  digitalWrite(LED,LOW);
  delayMicroseconds(SAMPLING_TIME);
  voMeasured = analogRead(A3);
  delayMicroseconds(DELTA_TIME);
  digitalWrite(LED,HIGH);
  Serial.println(voMeasured);
  zunoSendReport(1);
  delay(1000);
}

byte getter(void) {
  return (word(voMeasured)*word(99)/word(MAX_VALUE));
}

Информацию с датчика пыли на контроллере Z-Wave можно обработать и выполнить нужное действие: включить тревогу, отправить сообщение или запустить проветриватель.

Веб-интерфейс контроллера RaZberry с датчиком пыли

Используемый корпус пришлось немного модифицировать, чтобы разместить все компоненты устройства:

  • датчик пыли Sharp GP2Y1010AU0F;
  • плата Z-Uno;
  • отсек для батарейки.
Готовый датчик пыли и сигаретного дыма

 


Разработка твердотельного реле с поддержкой Z-Wave

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

Устройство электромагнитного реле

При замыкании контактов через них начинает течь ток, и чем выше мощность управляемой нагрузки, тем выше ток течет. Если мощность большая, например у обогревателя или электрочайника (порядка 2 кВт), то при касании контактов начинает течь очень большой ток и контакты могут привариться, в этом случае реле выходит из строя. Следует выбирать реле с запасом, для нагрузки в 2 кВт нужно брать реле на 3 кВт.

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

Твердотельное реле, в отличие от электромагнитного, не содержит механических элементов, а значит, может служить гораздо дольше и более пожаробезопасное.

Устройство твердотельного реле

Если не углубляться в детали, то можно считать, что внутри твердотельного реле — светодиод и фотоприемник. При подаче небольшого напряжения внутри реле начинает гореть светодиод, фотоприемник улавливает этот свет и подает сигнал на тиристор или симистор, который замыкает контакт.

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

Еще одно преимущество твердотельного реле перед электромагнитным — это бесшумная работа. Приятно, когда свет включается плавно и без шума, а не резко бьет в глаза с характерным щелчком.

Твердотельное реле, в отличие от электромагнитного, управляется напряжением, а не током, поэтому даже мощное реле на 60 А можно подключить напрямую к ножке микроконтроллера без резистора и не опасаться, что выгорит порт.

Для разработки радиоуправляемого твердотельного реле потребуется:

  • твердотельное реле 60 А;
  • плата Z-Uno;
  • блок питания на 3,3 В;
  • корпус трехмодульный на DIN-рейку.

Для питания Z-Uno нужно 3,3 В, так что отлично подойдет компактный блок питания Hi-Link 220 В → 3,3 В.

Блок питания Hi-Link на 3,3 В

Твердотельное реле Clion на 60 А идеально помещается в трехмодульном корпусе на DIN-рейку.

Твердотельное реле Clion на 60 А

К тринадцатому пину платы Z-Uno подключаем твердотельное реле и пишем крохотный скетч для управления им. При этом индикация состояния реле будет отображаться встроенным светодиодом на Z-Uno.

#define LED_PIN 13

byte currentLEDValue;

ZUNO_SETUP_CHANNELS(ZUNO_SWITCH_BINARY(getter, setter));

void setup() {
   pinMode(LED_PIN, OUTPUT);
}

void loop() { 
  // Loop is empty, because all the control comes over the Z-Wave
}

void setter(byte value) {
  currentLEDValue = value;
  digitalWrite (LED_PIN, value ? HIGH : LOW);
}

 byte getter() {
   return currentLEDValue;
}

Готовое устройство устанавливается в электромонтажном щитке перед всеми автоматами.

Готовое Z-Wave твердотельное реле на DIN-рейку


Report Page