Общие принципы построения системы.

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

Определился со структурой, узлам, начал экспериментировать. В итоге, оказалось, что все не так сложно…

Структура умного дома.

Существует несколько типов структур построения системы "умного дома".

Система на основе персонального компьютера.

В данном типе систем центральным узлом является персональный или встраиваемый компьютер. Все устройства подключаются к нему по сети LAN, RS-232, либо через LPT порт. Создание такой системы подходит для тех, кто умеет писать ПО для компьютера и держать в руках паяльник. Плюсами такой системы являются достаточная простота и очень большая функциональность (управление через интернет и телефон, простота построения системы видеонаблюдения, озвучивание событий, управление аудиосистемой).

Самый большой минус – низкая надежность (даже при использовании ОС типа Linux, компьютерное железо ломается, я уже не говорю о глючности Windows). Но для тех, кто хочет быстро и дешево, наверное, это самый подходящий вариант.

Система на основе центрального контроллера.

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

Плюсы такой системы – повышенная надежность, достаточно большая функциональность (никто не запрещает подключить центральный контроллер к ПК).

Минусы – сложность в написании встроенного ПО для центрального контроллера. Нужно быть хорошим программистом для написания достаточно функциональной программы. Кроме того, программа должна быть достаточно универсальной для легкого расширения системы.

Распределенная система.

Это система с несколькими контроллерами, каждый из которых выполняет свою функцию (вариант а), или каждый контроллер управляет отдельной частью дома (вариант в).

В варианте а – первый контроллер управляет освещением, второй – управляет системой отопления и кондиционирования, третий – системой охраны и видеонаблюдения, и т.д. В варианте в – первый контроллер управляет всеми узлами кухни, второй – всеми узлами зала, третий – всеми узлами спальни и т.д.

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

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

Для себя я выбрал распределенную систему, где каждый контроллер управляет отдельной комнатой. Для управляющего контроллера разрабатывается универсальная программа (чтение данных от однотипных датчиков и управление однотипными устройствами), и в систему включается несколько однотипных контроллеров, количество которых соответствует количеству комнат в доме + контроллер двора (освещение, охрана, измерение температуры). В случае выхода из строя одного из контроллеров, он легко может быть заменен другим, на время ремонта первого (например, при выходе из строя контроллера зала, его можно заменить контроллером, снятым с обслуживания туалета).

Подробное описание узлов и контроллеров смотрите в соответствующих разделах сайта.

Сетевой интерфейс.

Существует множество интерфейсов связи компонентов "умного дома" с контроллерами, это и беспроводные (Z-Wave, ZigBee, EnOcean) и проводные классические (RS-235, RS-485) и проводные экзотические (KNX/EIB, 1Wire, CBus) и с передачей по сетевым проводам (X10, PLCBus, INSTEON)…

У каждого есть свои плюсы и минусы. Поскольку в своем доме я делал капитальный ремонт недавно, сразу же заложил возможность инсталляции системы с проводным интерфейсом (где мог заложил витую пару, а где не мог, заложил в стены гофрошланг, для дальнейшего наращивания системы). ;-)

В начале экспериментов остановился на сети с протоколом 1-wire (много описаний ведущих устройств в интернет, большой выбор готовых микросхем с протоколом 1-wire, одна линия связи). Но при попытке что-либо собрать, столкнулся с неоправданно высокими ценами на микросхемы, слабой помехоустойчивостью, сложностью построения сети (сетевые метки, ветвители и т.д.)

В результате перешел на классический интерфейс RS-485. Он хорошо описан в литературе и интернет, имеет хорошую помехоустойчивость, прост в реализации (используется модуль USART микроконтроллера), имеет большую длину линии. Правда есть одно неприятное ограничение – 32 устройства на шине! Но с этим можно справиться. Во первых для каждой комнаты этого количества устройств должно быть достаточно, во вторых, во многих случаях можно в одном устройстве совместить несколько функций (например, приемник ИК кода можно встроить в кнопочную панель, датчики температуры, давления, влажности совместить с датчиками освещенности), при этом все компоненты обрабатываются одним микроконтроллером и имеют один адрес в сети, кроме того есть драйвера с входным сопротивление 1/2, 1/4 сопротивления линии, что позволяет подключить 64, 128 устройств…

Протокол обмена.

Для работы с интерфейсом RS-485 используется модуль USART микроконтроллера, который имеет встроенный контроль ошибок (контроль четности, контроль ошибок кадрирования, контроль переполнения). Кроме того, при передаче и приеме данных вычисляется контрольная сумма посылки. Для каждого устройства в сети количество принимаемых и передаваемых байт различно. Это немного не удобно с точки зрения программирования ведущего контроллера, но зато, получается достаточно быстро. Например, зачем читать от димера 8 байт данных, если нужны только два байта...

Протокол обмена поддерживает команды на передачу данных от устройства к ведущему контроллеру (h3C), и на запись данных из ведущего контроллера в устройство (h3E)

В общем виде протокол обмена выглядит следующим образом:

  • Ведущий контроллер посылает в сеть запрос на передачу данных от устройств:

  • Ведомое устройство посылает в шину данные состояния своих регистров, количество байтов зависит от конкретного устройства:

  • Для записи данных в устройство ведущий передает в шину команду на запись данных в устройство:

  • В ответ ведомое устройство отсылает в шину состояние своих регистров с измененными данными:

Символ ASK (h21) в конце посылки означает, что команда от ведущего принята без ошибок. Если команда содержит некорректные данные (например, на четырех кнопочную панель подана команда включения двенадцатого светодиода, или на диммер с разрешением 128 бит подана команда -> включить яркость на 130 бит), ответ от устройства придет с символом ошибки – NAK (h3F), при этом устройство не изменяет состояние своих регистров. То есть, устройство передаст в шину посылку:

Контрольная сумма для переданных данных вычисляется по алгоритму CRC8.

Более детально все это рассматривается при описании соответствующих компонентов «умного дома».