Строю дом. Пока стены не зашили, решил проложить какую-нибудь сеть для умного дома, чтобы потом не мучаться. Решил разбить все на три сегмента — «чувственный» — всякие сенсоры, чтобы собирать информацию и знать, что где происходит, «оповещательная» — чтобы можно было в любой конец дома послать оповещение (динамики разные) и «управляющая» — чтобы можно было на нужные устройства послать управляющий сигнал — «включить то, выключить сё».
Решил начать с первой, чувствительной части. Срисовал план этажей в visio, разложил на плане разные датчики. Основными получились — датчики температуры и влажности, освещенности, качества воздуха (чтобы чувствовать нездоровую концентрацию газов), датчики движения, и по мелочи — датчики, которые реагируют на воду, и прочее. Датчиков получилось около 60 разных.
Для опроса датчиков у меня есть raspberry (хорошая штука, поигрался с ней немного уже).
Вот у меня такие вопросы:
где покупать датчики и как понять, что они подходят для 1-wire?
что еще важного нужно не забыть, чтобы потом не печалиться?
(я паять не умею) есть ли в природе «хабы», чтобы все провода скомутировать или только паять самому или на какой-нибудь «гребенке» все скомутировать — это тоже неплохой вариант?
1-wire — дорого. Дешевле — гроздь аналоговых датчиков + дешевенький микроконтроллер. Связь — по CAN шине (это проще, нежели реализовывать по ethernet). Оконечный контроллер уже можно делать с ethernet или USB (смотря что надо).
Если нужно именно 1-wire, то выбор не сильно-то велик. И надо обращать внимание на то, чтобы датчики обладали собственным ID'ом (а то некоторые китайские подделки не имеют идентификатора, поэтому с ними работать невозможно). Если датчик не умеет питаться от линии, нужны будут 3 провода. На небольшие расстояния витухи за глаза хватает или даже «лапши» четырехжильной для RJ-11.
А почему дорого? Самые дорогие вложения, если я понимаю, для 1-wire, — это USB-адаптер, блок питания (по-любому нужен будет на такое количество датчиков, насколько я понимаю), ну а малинка у меня и так есть. Датчики температуры — 60-80 рублей, света — около 200 рублей, для газа и движения пока не нашел, правда.
Сами датчики дорогие, т.к. в них по сути еще и микропроцессор встроен. Рублей 150..300 — как минимум.
Если подключать к компьютеру, достаточно COM-порта, ни на какой USB-адаптер тратиться не надо. А уж если есть raspberry, то адаптер точно не нужен: 1-wire работает либо на RX/TX RS-232, либо эмулируется при помощи 1 пина GPIO.
Еще: температурные датчики, которые я «щупал» (DS18S20), имеют ужасную точность + их показания «плавают». В общем, если нужна точность больше пары градусов, их не стоит использовать.
А ссылочкой на пример реализации вот по вашему совету поделиться можете? Мне важно, чтобы паять было не очень много, а лучше — чтобы совсем не паять. Программировать могу, а паять — это мука и ад :(
Ну или пример схемы (вроде как на картинке, которую я добавил) — как будет выглядеть схема подключения нескольких датчиков? Ничего толкового пока не найду что-то по теме.
Я уже говорил: у Raspberry Pi есть GPIO, а также есть UART — никакого преобразователя не нужно.
Пример реализации через UART я уже показывал (на STM32, для Raspberry алгоритм легко адаптировать). Советую поискать на easyelectronics.ru, а также на kazus.ru. Там же видел и примеры эмуляции 1-wire на GPIO (но этот вариант хуже тем, что нет DMA — приходится работать полностью программно).
Схема подключения датчиков выглядит элементарно: у вас идет трехпроводная шинка, на которой висят датчики (почти как CAN, только там 2 провода и терминаторы на концах).
В той статейке в ЖЖшке я подключал параллельно 2 датчика (т.к. пока нужды повесить их все не было: я всего-то хотел проверить, как они работают, да промаркировать все датчики ID'ами).
По запросу 1-wire sensors в гугле находится много чего интересного. Вот, например, схемка подключения (автор только точки забыл поставить в местах стыковки проводников):
Вот — подключение датчиков к «хабу» (если датчики расположены «звездой», так может быть проще, чем тянуть шину последовательно от датчика к датчику):
А вот — мониторинг состояния отопительной системы на 1-wire.
А, ну в этом случае нужны простые МКшки, поддерживающие CAN и имеющие АЦП «на борту» (даже PIC сгодится). Получается «звезда» датчиков вокруг каждого МК и шина, соединяющая все МК. На одном из концов шины (или где-нибудь в середине ее) сидит хоть та же Raspberry Pi и собирает все данные.
Подобная схема часто используется в автоэлектронике (для уменьшения количества проводов).
В общем, стоит сначала определиться с необходимым количеством датчиков, а потом прикинуть, как дешевле и проще будет реализовать схему.
Кстати, можно подумать еще о внедрении обычной автомобильной сигнализации с GSM модулем (стоимость — около 150 баксов). Вместо концевиков подключить контакты к push-pull портам GPIO. В случае чего — и сирена будет орать, и SMS'ка придет, и управлять можно будет с брелка.
Eddy_Em, ну датчиков будет около 60. Другое дело, что про 1-wire в сети много писано, а про CAN — мало. Найти «простые МКшки» — дело неочевидное :) Как бы про топологию я понял, а вот про сами конкретные девайсы — это еще в процессе. Нашел вот такое, например, но ценник конский :)
Кстати, да: глянул цены на PIC18F458 (с ним я когда-то работал): дороговато. Дешевле действительно взять ARM хоть Cortex M3.
Но все равно, это будет выгоднее, если N-е количество аналоговых (причем, дешевых) датчиков находится недалеко от МКшки. И при этом суммарная стоимость микроконтроллера с обвязкой (а то и макетки, смотря что дешевле — чаще макетка намного дешевле) + датчиков будет ниже стоимости аналогичного количества 1-wire датчиков.
Я, похоже, сильно подотстал: китайцы хорошо преуспели в штамповке всяких разных 1-wire. Главное — чтобы датчики были полноценными (т.е. имели уникальные идентификаторы), иначе «не взлетит».
А насчет того, что «про 1-wire в сети много писано, а про CAN — мало», впервые слышу: как раз насчет 1-wire маловато материала, т.к. технология новая. А CAN-шина довольно-таки старая штука. Но с развитием МК с нормальной поддержкой ethernet и CAN отходит от дел. Сдается мне, лет через 5 все железяки уже не по CAN-протоколу общаться будут, а иметь встроенный ethernet с ipv6.
MK c ethernet — выходит не очень дешево. Например, Arduino Ethernet стоит почти 40 евро. На нем 6 аналоговых входов. Выходит, 10 штук на 60 сенсоров, грубо говоря. «Логических» областей в доме — 10 штук, один в один выходит. 400 евро только на МК, датчиков на сотню, допустим. 20К.
Хотя по 1-wire 60 датчиков по +- 400 рублей (беру с запасом) выходит на 24к. Может и правда, ну его нахрен 1-wire :)
Да что вы все прицепились к этим дуинам? Есть же STM32 (там этих входов — уйма), или можно прикупить за 10 баксов ethernet-модуль.
В вашем случае пока действительно, похоже, дешевле будет сделать на 1-wire. Но через некоторое время китайские макетки еще больше подешевеют, так что можно будет уже делать связь устройств между собой по ethernet.
Возможен еще гибридный вариант: к макетке идет куча проводов от (если использовать мультиплексоры, можно даже разнородных) датчиков. Макетка их опрашивает и «выплевывает» результат по CAN (нынешняя цена макетки — около 15 баксов) или ethernet (нынешняя цена макетки — около 40 баксов).
Еще не забывайте про аналоговые мультиплексоры: за 4 бакса вы имеете возможность микшировать 16 аналоговых каналов на 1 АЦП! Т.е. имея даже лишь 16 аналоговых входов на МК, можно при помощи 20 цифровых каналов последовательно опрашивать 256 аналоговых устройств!
> «Логических» областей в доме — 10 штук
Не обязательно вешать каждую «логическую» область на отдельный контроллер.
Кстати, если все-таки не страшна пайка, можно промежуточную логику хоть на двухбаксовых восьмибитных контроллерах сделать. У них, правда, обычно только USART для связи на длинные расстояния — но RS485 позволяет связывать устройства, находящиеся друг от друга на десятках (а то и сотнях) метров. Восьмибитки с CAN на борту стоят чуть подороже (бакса 4). Дальность линии получается еще больше.
Но, не буду забивать вам голову. Все вышесказанное я привел для рассмотрения возможных вариантов построения схемы.