One Wire controller
version: 1.0 08.06.2019
Сейчас в отдельном проекте "Smart Home".
Прошивка разработана на базе предыдущего проекта. В этом проекте ставилась цель создать web интерфейс по настройке устройства. Технологически интерфейс представляет собой web-приложение, которое хранится в расширенной памяти устройства ESP8266, данное приложение взаимодействует с основным приложением, которое работает в самом устройстве, по протоколу websocket. Данный факт позволяет взаимодействовать с устройством в режиме DIY, т.е. вместо web-приложения может быть любая пользовательская система. Формат данных, который используется в обмене - JSON.
Под данный проект разработана плата устройства, которая включает:
- Электромагнитное реле - 2 шт;
- светодиодный сегментный дисплей (4 сегмента);
- три кнопки управления;
- вольтметр (можно использовать один из двух входов до 5 вольт или до 3.3 вольт);
- адаптер (мастер) шины 1-wire на базе чипа DS2482S-100.
Прототип устройства можно увидеть на картинке ниже.
Контроллер предполагает расширение аппаратного функционала по шине 1-wire, на первом этапе (текущем) поддерживаются устройства:
- датчик температуры DS18B20
- switch/sensor DS2413 (подключение сенсоров и исполнительных устройств-реле).
Максимально возможное количество подключенных устройств к контроллеру по шине 1-wire ограничено числом 32.
Запланировано поддержка других устройств для шины 1-wire и развитие функционала самой прошивки. Прошивка включает автообновление новых версий через интернет.
Как и в предыдущем проекте основная цель контроллера - это автономность и самодостаточность для простых случаев автоматизации (без использования дорогих внешних контроллеров).
На светодиодном индикаторе можно просмотреть состояние всех подключенных датчиков. При изменении температуры или состояния датчика, индикатор замигает и покажет номер и значение этого датчика.
С помощью кнопок можно управлять заданными в приложении реле.
Так же устройство поддерживает протоколы UDP и MQTT.
При первоначальном включении устройства, оно находится режиме AP-точки доступа WiFi, так что пользователь может подключиться к нему со смартфона и произвести первоначальные настройки для подключения к домашней WiFi сети. В дальнейшем на устройство можно заходить любым интернет-браузером по адресу вида http://ow-XXXXXX.local, где XXXXXX - уникальный номер устройства.
Возможности прошивки можно увидеть в демо-приложении - esp.1vp.ru.
К данному варианту настройки приложения настроена mqtt-панель для смартфона (скриншет ниже). В основном, mqtt-панель служит для мониторинга настроенных в приложении исполнительных устройств, но можно вмешиваться в автоматический режим работы реле. Если какое либо реле остается не настроенным, то им можно управлять только в ручном режиме с помощью mqtt панели или посредством DIY режима, по протоколу websocket.
В настоящее время разрабатывается рабочий вариант контроллера и периферийные платы адаптеров шины 1-ware с креплением под DIN рейку.
Можно заказать рабочий прототип контроллера за 2900 рублей (количество ограничено).
Далее следует описание функций, которые могут быть настроены для любого реле (исполнительного устройства) в системе.
Реле времени
Реле времени может быть использовано для включения какой либо нагрузки в определенный промежуток времени. Для задания моментов включения и/или выключения реле используются записи в формате CRON, данный формат задания моментов времени выбран из-за своей универсальности и лаконичности записи.
Реле времени, режим Astro
Для случая включения освещения в темное время суток предусмотрен данный режим работы. Работа реле будет привязана к астрономическим часам, к моментам восхода и захода солнца. В момент восхода солнца реле будет отключаться, а в момент захода включаться или наоборот, если включить опцию инверсии режима. Необходимо будет задать географические координаты вашего местоположения и времени поправки в минутах относительно моментов восхода и заката. Точное время срабатывания реле будет рассчитываться: время восхода +(плюс) время поправки и время заката -(минус) время поправки(смещения). Так же можно задать и значения включения и/или выключения для обычного режима "реле времени". Тогда результирующее состояние реле будет результатом двух условий по логической операции "И", т.е. реле времени будет в состоянии включено по астрономическому времени И в заданные моменты времени.
Термостат
Термостат по алгоритму температурного гистерезиса c двумя температурными границами (нормальной и высокой). Нормальная граница задает температуру, которую нужно достигнуть включив нагрузку и выключить, достигнув температуры +(плюс) температуры гистерезиса. Верхний диапазон, рассчитан для случая когда нужно снова включать нагрузку, когда достигнута верхняя граница температуры и выключить, когда температура снизилась на величину высокого гистерезиса.
Термостат (PID-контроллер)
Данный режим работает по алгоритму PID контроллера (proportional–integral–derivative controller). Данный алгоритм обеспечивает более точное поддержание температуры в отличии от алгоритма температурного гистерезиса.
На картинке можно наблюдать эффект на различных значениях параметров PID алгоритма. По дефолту заданы следующие значения: Kp=2.0 Ki=5.0 Kd=1.0, длительность одного цикла выбрана 960 секунд (16 минут), ввиду большой инерционности систем отопления (значения настраивается). Параметры можно подбирать экспериментальным путем. Длительность рабочего цикла (включенного состояния реле) рассчитывается алгоритмом. В настройки вынесены минимальное время рабочего цикла, т.к. нет смысла включать двигатель отопления или газовый котел на слишком короткий интервал времени и максимальное время, выше которого реле будет постоянно включенным, опять же нет смысла отключать систему отопления на слишком короткое время.
В обоих режимах термостата можно задавать моменты времени и устанавливать необходимые целевые температуры, так-же в формате CRON.
Цифровой сенсор
В данном режиме реле будет включать или выключать нагрузку в зависимости от состояния цифрового датчика, который подключается через устройство по шине 1-wire на основе микросхемы DS2413.
Сенсор напряжения
Состояние реле включается или выключается в зависимости от уровня напряжения на входе датчика-вольтметра.
Повторить состояние реле
Если необходимо просто скопировать состояние какого-либо реле или включить или выключить нагрузку на заданный интервал времени в зависимости от состояния другого реле в системе.
продолжние следует ...