Raspberry Pi, сигнализация и умный дом
Началось все года 4 назад когда во время рабочего дня у меня обчистили квартиру. Попасть домой через дверь после этого уже не удалось из-за поврежденного замка. Неприятное событие заставило задуматься о безопасности жилища. И это лишь одна из причин для мониторинга и автоматизации квартиры. Как часто прийдя на работу (а то и уезжая или улетая куда-либо) вы сомневались выключили ли перед уходом утюг, закрыли ли газ, воду ;-) Подбавим масла в огонь админам — спокойны ли вы что ваш старый БП в работающем системнике дома не чадит и не пылает!?) И что удаленно делать с девайсом, который «наглухо завис».
В этом посте я рассмотрю некоторые существующие на рынке решения, розничную стоимость доступного аппаратного обеспечения и способ как создать сигнализацию квартиры и некоторые из функций «умного дома» используя одноплатный компьютер Raspberry Pi
Безусловно можно подключиться к вневедомственной охране, заплатить втридорого за оборудовани, установку и платить ежемесечную абонентку. Это не вариант для гиков) Охрана дешево не ребутнет зависший дома компьютер и к тому же не все объекты получится сдать под охрану. У всех ли вас есть телефонная линия? ;-)
Университетский друг подсказал как подсоединить датчик движения и задымленности к компьютеру по LPT порту. Этот порт — опция нынче не модная в материнских платах и програмировать ее в ОС работающей в защищенном режиме на языке высокого уровня, а не в однозадачной DOS реального режима, не очень удобно. Олдфаги проклянут меня и с с ностальгией погрустят о звучании Covox на LPT, который когда-то паяли и програмили сами)))
А тем временем датчики пылились в шкафу… С другом-одногруппником удачно вспомнили о USB портах и HID драйверах которые присутствуют «из коробки» во всех современных операционках. Другой друг отлично разбирающийся в электронике, вновь помог с девайсом. В этот раз устройство было на контроллере STM32 Cortex M3. Чтобы не паять «с нуля» купил готовую плату STM32-H103 www.olimex.com/dev/stm32-h103.html и программатор ST-Link. Перспектива програмить для этого контроллера без опыта и без помощи друга мне не улыбалась. В результате у меня теперь пылиться плата микроконтроллера с прошивкой и напаяные на макетник цепи опторазвязки для подключения датчиков на запрограммированные GPIO ноги контроллера. Программить самостоятельно микроконтроллеры STM32 я так и не научился, но из этого решения очень понравилась реализованная идея — доступ к состояниям датчиков через МК по USB Virtual COM Port. В Linux драйвера последовательного интерфейса через USB включены в ядро и доступ из прикладной программы на java это просто чтение и запись текстовых данных в файл. Элегантное решение, можно придумать и реализовать свой текстовый протокол на контроллере. В целом решение для ввода дискретных сигналов в компьютер не самое доступное. Цена такой платы была порядка 1500р, почти такие же деньги стоил программатор. Для добавления новых функций в такой девайс требуются знания сред разработки для контроллера, библиотек функций контроллера, более глубокие знания схемотехники. Отличное решение для тех кто дружит с STM32, Keil и паяльником ;-) Но опять же слишком замороченно для прикладных программистов.
Кажется очевидным — поискать готовые решения. А не тут то было! Цены просто на клемники с опторазвязкой начинаются от 2500р. Блоки, с помощью которых можно коммутировать внешнюю нагрузку с компьютера начинаются от 900р www.chipdip.ru/product/mp709.aspx. Хотя всякому красноглазому понятно что не может настолько дорого стоить дешевое китайской электромагнитное реле с драйверами для windows. Было когда-то у того же мастер кита в продаже более человеческое решение для коммутации сетевой нагрузки, а именно твердотельное реле www.masterkit.ru/info/magshow.php?num=199 (Народ активно применяет похожую схему в своих домашних девайсах arduino-ru.blogspot.com/2009/02/220.html). Розничные цены на твердотельное реле в корпусе начинаются от 600р. Доступных адаптеров для ввода дискретных сигналов по USB нет, есть только дорогие для промэлектроники. К USB 2.0 контроллеру компьютера мне так и не удалось подключить больше одной вещающей в сеть веб камеры. IP камеры все еще достаточно дороги. DVR платы с множеством видеовходов, работающие под linux, надо еще поискать в продаже (есть информация по таким платам на странице проекта zone minder) и они требуют PCI порта. Те которые работают через USB обычно содержат только 1 видеовход.
Из доступных универсальных решений могу отметить NetPing /PWR-220 v2 при достаточно доступной стоимости в 112 у.е. Более дорогое и специализированое устройство для ввода-вывода по USB доступно Geovision GV-IO USB Box 16 Inputs 16 Relay Outputs за 150$. Цена готовой 3G сигнализаций начинается от 3500р за пультовой блок. Много пультов охранных систем расчитанных на аппаратуру какой либо одной фирмы, использующих радиоканал для связи с датчиками, управляемых проприетарным софтом и посылающих СМС только в случае тревоги. А как же «глушители GSM» и радиочастот датчиков!?
Что останавливает нас реализовать массово доступное решение, основаное на open source коде, для охраны квартиры и удаленного управления электронагрузкой?
1. Отсутствие нескольких контактов GPIO в компьютерах для ввода сигнала с датчиков/вывода управляющих сигналов
2. Высокая цена покупки и энергопотребление для постоянно работающего компьютера.
3. Отсутвие доступных массовых плат дискретного ввода/вывода сигналов с опторазвязкой и способностью коммутировать нагрузку в сети переменного тока.
4. Отсутствие доступных USB веб камер с аппаратной компрессией видеопотока. Или же доступной DVR платы со множеством видеовходов для охранных камер с аппаратной компрессией видеопотока.
Появление в продаже одноплатного компьютера Raspberry Pi должно решить первые две проблемы.
Плата судя по документации имеет 8 GPIO. Модификация за 35$ имеет порт Ethernet. В розничной продаже есть usb wifi адаптеры, работающие под Debian linux от 400р. 3G модем без привязки к оператору связи стоит в Связном от 990р. Питание можно получать от USB хаба Defender Septima Light c внешним блоком питания и использовать его по прямому назначению, при этом стоимость его в розничной сети от 440р. Если нам будет нужен микрофонный вход, то можно разориться на китайскую USB аудиокарту за 220р, которую народ успешно использует под linux everybuying.ru/product_info.php?products_id=1469. 8Gb SD карту можно купить в рознице за 300р. Корпус просто как коробка с выводами для проводов для РЭА будет стоить от 160р. Цены на внешние HDD на 500Гб начинаются в районе 2600р (это опционально для работы и нужно лишь в случае файлокачалки, медиаплейера). Да, если вдруг нам будет мало одного ethernet адаптера, то можно купить USB ethernet адаптер. Например TrendNet TU-ET100C за 460р. В любом случае такое решение будет дешевле неттопа минимум в 3-4 раза, энергоэкономичнее и компактнее.
Программировать GPIO в linux достаточно просто — либо используя API на C, либо что удобнее, выполнять доступ через файловую систему
Если будем использовать только для охранных целей, домашний веб, файл сервер и torrent качалку то можно не покупать отдельный монитор и подключаться удаленно с телефона или ноутбука по wifi или с десктопа по ethernet. Если нам будет нужен домашний медиаплейер, то можно подключить его к телевизору по HDMI. А если решим использовать в авто или в качестве видеодомофона, можем приобрести портативный 7" монитор с композитным видеовходом, например Velas VTV-720 (от 1900р). В качестве БП можно использовать зарядку от прикуривателя для USB 300-500р.
Для обеспечения бесперебойного питания блоков питания датчиков и Raspberry Pi можно использовать компьютерный источник бесперебойного питания, например APC Back-UPS ES 525VA. При стоимости около 3000р, у этого ИБП есть поддержка сигнализирования об отсутствии внешнего питания и уровня оставшегося заряда батареи через USB выход в linux (у меня все отлично работает в ubuntu).
Останется проблема с платой дискретного ввода-вывода сигналов, но даже при моем знание схемотехники и владении паяльником, вполне могу собрать прототип платы на 4 дискретных ввода с опторазвязкой, 4 дискретных вывода. Пару из выводов можно использовать для коммутации сетевой нагрузки с помощью оптореле и удаленно включать/выключать дома электроприборы. Оставшиеся выводы с опторазвязкой можно использовать например для удаленного нажатия на на reset сервера, включения соленоидного клапана для перекрытия воды/газа в случае протечки и т.п. Уверен что Китай не дремлет и скоро подобные готовые девайсы будут массово распространены на рынке. В таких устройствах есть потребность.
При первом приближении стоимость деталей в розничной сети не превышает 1000р для разработки прототипа платы дискретного ввода-вывода, с опторазвязкой внешних сигналов, контактными панелями для датчиков, с 2мя коммутируемыми сетевыми розетками 220В, готовым корпусом.
Немного о датчиках для систем сигнализации и их стоимости в розницу. Датчик движения стоит около 400р, датчик дыма 400-500р, датчик протечки воды 400-800р, датчик протечки природного газа 1300р, датчик реагирующий на разбивание оконного стекла 400р, геркон (герметичный контакт) который срабатывает на открытие/закрытие двери и рамы окон стоит около 30р))))
Также такое решение подойдет не только для типовой квартиры, но и в случае охраны большой территории. Т.к. эти ЭВМ достаточно дешевые и снабжены всеми необходимыми сетевыми интерфейсами, легко собирать данные и передавать управляющие сигналы. Помехой может быть температурный диапазон в котором работает Raspberry Pi (возможное решение — это корпус с термодатчиком и подогревом), влаго и пыле защищенность (эту проблему можно преодалеть за счет герметичного корпуса).
Мешают провода от датчиков и оптореле/исполнительных механизмов!? Можем сделать менее секьюрным и помехозащищенным соединение. Например с помощью микроконтроллера с интегрированным Zegbee приемопередатчиком. Многие устройства могут питаться от батарей небольшой емкости долгое время и быть доступны по радиоканалу. Управляемым сетевым розеткам и электровыключателям доступно сетевое переменное напряжение, которое можно использовать для питания маломощного контроллера через компактный бестрансформаторный блок питания. На китайском рынке уже есть достаточное колличество устройств, управляемых по Zigbee протоколу. Нашему рынку электронных устройств есть куда стремиться ;-)
Для программной компрессии видеосигнала с нескольких веб камер производительности устройства вряд ли хватит. Если что-либо изменится на рынке IP камер и они станут более доступными для массового рынке, то производительности устройства должно вполне хватить для записи и вещания компрессированного видео.
C точки зрения программиста такое аппаратное обеспечение позволяет передавать сигнал о срабатывании датчиков по SMS, 3G, WiFi, проводному интернет. Достаточно легко создать веб сервис, который позволит получать доступ к домашней охране, веб камерам, управлять розетками. Невозможность подсоединиться к системе — тоже сигнал, что не все в порядке. Возможно получать sms, email, jabber, skype и т.п. оповещения. Для параноиков, недоверяющим веб сервисам можно организовать свой космопарк…
Как вам идея использовать доступную универсальную ЭВМ с linux для охранной системы квартиры, управления системами умного дома и сомещать в ней другие полезные функции? Как второй вариант для использования старых компьютеров разработать плату USB->GPIO на микроконтроллере?
Повторюсь что я программист и не знаю деталей конструирования устройств для серийного производства. Можно ждать появления разработок китайской промышленности, но лучше создать массовое решение раньше и сосредоточится на создании ПО для него. Насколько сложно запустить мелкую серию плат ввод-вывода в производство(до 1000шт.). Где лучше выпускать печатные платы, где лучше выполнять монтаж элементов? Какую себестоимость можно обеспечить для такой партии устройств?