Контроллер водопровода
За основу буду брать систему защиты от протечки для стиральной машины.
Задачи модуля:
- перекрытие подачи воды по команде;
- защита от протечки: перекрыть ввод и полотенцесушитель в случае срабатывания датчиков;
- переключение источника горячей воды: центральное водоснабжение или водонагреватель;
- учет расхода воды.
Характеристики:
- Количество управляемых вентилей: 6
- 2шт - ввод холодной и горячей воды;
- 2шт - вход и выход водонагревателя;
- 2шт - полотенцесушитель.
- Количество входов для счетчиков расхода воды: 2
- Количество входов для датчиков протечки: 4
- Автономное питание от батареи в случае отключения электричества.
Структурная схема
Необходимое количество GPIO портов
Назначение | Выводов на единицу | Кол-во кдиниц | Общее кол-во |
контроллер вентилей |
вентили | 4 | 6 | 24 |
SPI | 3 | 1 | 3 |
итого | 27 |
контроллер свтодиодов |
светодиоды двухцветные | 2 | 11 | 22 |
светодиоды одноцветные | 1 | 2 | 2 |
SPI | 3 | 1 | 3 |
итого | 27 |
главный контроллер |
счетчики расхода | 1 | 2 | 2 |
датчики протечки | 2 | 4 | 8 |
LCD/LED дисплей | 7 | 1 | 7 |
кнопки | 1 | 2 | 2 |
энкодер | 3 | 1 | 3 |
контроллер питания | 4 | 1 | 4 |
SPI | 3 | 1 | 3 |
итого | 29 |
Выбор микроконтроллеров
- Главный контроллер: ATmega2560-16A
- Контроллер вентилей: ATmega8515 (*)
- Контроллер свтодиодов: ATmega8515 (*)
* Atmega8515 не имеет контроллера I2C, поэтому для связи будет использована шина SPI.
Конфигурация узлов и моделей BLE Mesh
Чем мы хотим управлять и что хотим контролировать.
Управлять, разумеется, мы может только вентилями. Для этого подойдет простой On/Off сервер. Но существует ряд ограничений:
- В случае протечки (аварии), все вентили закрываются. Открыть их потом с помощью команды BLE Mesh будет нельзя.
- Существуют запрещенные комбинации открытия вентилей (TODO: расписать эти комбинации), которые нельзя будет настроить с помощью BLE Mesh.
TODO: предусмотреть возможность отключения датчиков протечки.
Для датчиков протечки можно сделать отдельную ноду с моделями серверов: OnOff и Sensor.
Контролировать нужно будет следующие параметры:
- неисправность вентилей (вентиль не открылся/закрылся за определенное время) - 6шт;
- состояние датчиков протечки: нормально, авария, неисправность - 4шт;
- значения счетчиков расхода воды: текущий расход (л/с), общее потребление (M3) - 2шт.
Всвязи с этим появляются следующие проблемы:
- Вентили, счетчики и датчики протечки практически никак друг с другом не связаны логически. Разве что, счетчики воды можно совместить с первыми двумя вентилями (вентили ввода). Датчики же вообще никак не связаны ни с вентилями, ни со счетчиками. Поскольку, одинаковые модели не должны располагаться на одном узле, нам придется, либо создавать 12 от дельных узлов, либо группировать модели сенсоров с моделями OnOff как получится, и ограничется 6-ю узлами.
- В стандартах GATT Specification отсуствуют такие параметры, как: неисправность вентиля, состояние датчика протечки, расход и потребление жидкостей (TODO: хотя, два последних еще могут быть). Поэтому, придется колхозить свои кастомные значения и отходить от спецификации. Хотя, состояние несиправности вентилей и датчиков протечки можно будет попробовать запихнуть в модель Health.
Ссылки