0,0
рейтинг
30 октября 2013 в 11:09

Умный дом, как я до такого докатился. Часть 3-я


В первой части разобрались с тем, зачем все это нужно и как я до этого докатился, во второй поговорили о софте. Настала пора остановиться на самом любимом хабравчанами разделе DIY — на железе. Итак, берем текстолит, хлорное железо, паяльник… Хотя нет, стоп, открываем редактор плат. Про паяльник, куда его засовывать, а куда лучше не надо другие лучше меня расскажут. А я расскажу какие платы и датчики трудятся на благо моего умного дома.



Шина


В качестве шины у меня используется четырех-жильный телефонный кабель.
Все кабели обжаты вилками TP6P4C (RJ11).

Соединения и ветвления происходят через стандартные телефонные разъемы и разветвители.

Распиновку делал в соответствии с первыми купленными платами

  1. (зеленый) — 12V
  2. (белый) — данные 1-wire
  3. (коричневый) — земля
  4. (желтый) — не используется

В первых купленных мною платах, 4-й контакт не использовался и, соответственно, не коммутировался в конечных устройствах, поэтому так и остался незадействованным. В некоторых схемах на четвертый контакт подается 18V. Но, если бы я делал все с нуля, то пустил там 5V для питания термодатчиков.

Термодатчики DS18B20



Не зная об особенностях работы на паразитном питании (блокировка шины от 0.3 до 1.5 секунд при запросе), я просто подсоединял контакт 1 к земле, а контакт 2 к 1-wire.
Сейчас новые датчики я добавляю в местах, где есть другие платы с которых можно взять 5V. В будущем старые датчики хочу оборудовать схемами преобразования питания и запитать правильно.
Таким образом «правильная» схема подключения выглядит так:
  • Ножка 1 — земля
  • Ножка 2 — к шине 1-wire
  • Ножка 3 — 5V


Платы на DS2413


Как я уже говорил ранее, первые платы я покупал. Покупал я их тут www.ab-log.ru/smart-house/1-wire-modules/2ch-module
Единственным минусом этой платы, на тот момент, было отсутствие транзита четвертой линии, но сейчас это исправили и он присутствует. В качестве приятных особенностей можно отметить наличие светодиодов, что очень удобно для отладки. На своих платах мне было лень заниматься разводкой под светодиоды, так что приходилось отлаживаться тестером.
Схемы первых плат домашнего изготовления были подсмотрены тут www.benuks.ru/oborud.html#9
Схема

Плата

Собственно по функционалу они полностью идентичны покупным и представляют из себя двухканальный ключ, для управления нагрузкой 220V.

Платы на DS2408


Тут уже было где развернутся фантазии.
Идея первой платы на DS2408 возникла когда делал освещение на кухне. Хотелось сделать четыре независимых зоны освещения и плат на DS2413 потребовалось бы две штуки. В итоге родилась схема на DS2408 которая, по сути, отличалась только растиражированными группами MOC3043M + BT138. Вывел все восемь, три, так сказать, для будущего развития. (К сожалению, схема не сохранилась.)

Следующие две платы на DS2408 были только на считывание данных. Первая — получает данные с датчиков открытия всех окон и двери на лоджию, вторая — получает данные с дверных замков и датчиков движения в общем коридоре и около двери.
Схема

Плата


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

Плата

Внешний вид готовой платы
Два управляющих вывода — это первая и вторая группа лампочек. Два считывателя — это данные с двух выключателей, один датчик движения, один датчик двери, два в резерве.
Хочу отметить, что в этой плате есть один серьезный недочет, который усложняет монтаж и обслуживание. Я вывел на клеммники только по одному контакту 5V, 12V, GND, а, например контакты 5V, нужны в каждом датчике. Пришлось подключать по несколько проводов в один, что неудобно и ненадежно.

Конструктор

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

Давайте разберем подробно на базе последней моей платы, так как в ней присутствуют все эти условные модули.

  1. Коннекторы
  2. Модуль питания
  3. Чип 1-wire с обвязкой
  4. Модуль чтения
  5. Модуль управления

Коннекторы

Можно сделать просто выводы на плату и повесить коннекторы на проводах (в покупных платах было именно так), но мне это показалось не очень удобным и в следующих платах я распаивал вот такие:


Модуль питания

Основным компонентом тут является чип 78L05, замечательная штука которая из любого входного напряжения в диапазоне от 7V до 20V выдает нужные нам 5V.

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

  • Vin — 12V
  • GND — земля
  • Vout — к питанию платы


В качестве вспомогательных элементов установлена обвязка из конденсаторов (два твердотельных и один электролитический) для стабилизации.

Чип 1-wire с обвязкой

Сам чип.

В данном случае — DS2408, подсоединяется следующим образом:
  • Ножка 3 — 5V
  • Ножка 4 — к шине 1-wire
  • Ножка 5 — земля
  • Ножки 2, 7, 8, 9, 11, 12, 13, 14 — двунаправленные вход/выход, т. е. те самые ножки к которым подсоединяют модули чтения или управления, в зависимости от того, что нам нужно

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

Модуль чтения

Это фактически просто контакт ножки с коннектором для удобства монтажа плюс подтягивающий резистор (без него даже очень слабые наводки смогут генерировать напряжение достаточное для ложного срабатывания)

Модуль управления

Состоит из двух основных элементов: оптопары MOC3043M и симистора BT138.
Оптопара нужна для гальванической развязки (чтобы сеть 220V никак не была соединена и не влияла на управляющую сеть).

  • Ножка 1 — 5V
  • Ножка 2 — к выходу 1-wire
  • Ножка 4 — к симистору
  • Ножка 6 — 220V

Принцип действия: когда в соответствующем регистре DS2408 появляется значение 1, соответствующая ножка соединяется с землей. В цепи от ножки 1 к ножке 2 начинает течь ток, внутри загорается диод, и замыкает цепь между ножками 4 и 6, подавая напряжение на симистор.

Симистор нужен для управления нагрузкой с питанием от переменного тока, так как оптрон не может сам держать высокую нагрузку.

  • Ножка 1 — 220V
  • Ножка 2 — выход на нагрузку
  • Ножка 3 — от оптопары

Принцип действия как у транзистора в цепях с постоянным током, когда на ножку 3 подается напряжение, замыкается цепь между ножками 1 и 2

Датчики открытия дверей и окон


Как я уже писал ранее, в качестве датчиков открытия я использовал советские герконы без маркировки плюс неодимовые магниты 1x10 мм.
Схема подключения проста до безобразия, один контакт на 5V второй на контакт считывания на плате.
Если бы герконов с магнитами у меня в наличии не было, купил бы, например, вот такие датчики:

По сути это те же герконы и магниты, только упакованные в корпус.

Датчики движения.


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

У датчиков обычно семь контактов, для нужд умного дома я использовал четыре из них
  • T2, T1 — тамперные контакты, которые отвечают за несанкционированное вскрытие. В моем случае не подключал, за ненадобностью.
  • NC, C, NO — контакты сенсора. Я использовал нормально разомкнутый контакт NO и С. Они подключаются к 5V и контакту считывания на плате соответственно.
  • -12V+ — питание датчика. Тут все понятно.


Датчики протечки


Как показал эксперимент, если два контакта (5V + контакт считывания от платы) засунуть в воду, то контакт считается замкнутым, так что заморачиваться не стал. Старая советская телефонная “лапша” с частично оголенными (по всей длине с разных сторон) проводами вот и весь датчик протечки.


Подключение классических выключателей


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

Схема резервного включения


Напомню, что включение света происходит по следующей схеме:



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

Видеонаблюдение


Тут нет уже никакого железного DIY, но, наверное, стоит упомянуть.
Для видеозахвата использовал самую дешевую, на тот момент плату ORIENT SDVR-404.

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


Заключение


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

Отдельное спасибо всем тем, кто писал мне, задавал вопросы и просил продолжение, без вас этой части могло не быть.
Александр Бушнев @sashacmc
карма
53,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (42)

  • +1
    При проектировании своей системы столкнулся с той же проблемой:
    Одним из главных недостатков такой системы с централизованным управлением, что при выходе из строя центрального узла (сервера), управление светом становится невозможным.

    И для решения мне категорически не хватает трехпозиционных настенных выключателей приличного вида, off — auto — on. Таких, чтобы линию можно было выключить, включить, или оставить под контролем сервера. Как в датчиках движения, только без датчика движения и с большой клавишей:


    Ещё пришли в голову выключатели для управления шторами (вверх — стоп — вниз), но удобных тоже не нашлось. Есть идеи?
    • 0
      дешевый 8 битный контроллер, драйвер питания и стандартные ардуиновские 3 кнопки. или пульт с ИК (кстати стоят одинаково).
      • +2
        Ну можно реле и джамперы на патч-панели на стену повесить. Я-то про удобные клавиши спрашивал, с возможно меньшим шансом отказа. Просто удивительно, что есть с тремя выключателями, есть проходные, но нет трехпозиционных.
        • 0
          Сейчас думаю взять датчик движения с фотки выше и запихнуть внутрь тини и подключить датчиков. То есть использовать корпус, выключатель и датчик движения, а логику вставить свою.
          • 0
            Как вариант — 3D печать красивой формы под ваш компонент.
    • 0
      кстати, про шторы — у меня этот вопрос очень актуален — сильно хочу готовое решение — моторчик на кронштейн + 1-wire контроль.
      с высокими потолками и тяжелыми шторами их открывать-закрывать тот еще гемор, особенно в детской.
      • 0
        тут самое сложное это механика… если мотор будет обычный, то сделать можно весьма просто и на двух концевиках, трех кнопках и двух диодах… И управление с контроллера можно сделать просто меняя полярность питания или его выключая вовсе.
        Но самое клевое — с обратной связью, макетировал такое с жалюзи, там резистор определял примерный наклон ламелей.
    • 0
      switch 3 position
      А такие не устраивают?
      • 0
        Такие надо врезать в какую-то заглушку на месте выключателя и это не «удобная большая клавиша», по которой можно попасть в темноте. Если переключатель только аварийный и нужен очень редко, когда отказала автоматика — пойдёт, я их находил поближе.
    • 0
      Поставить обычный бытовой выключатель с двумя клавишами не вариант? Даже не 3, а 4 положения можно закодировать.
  • 0
    Для начала советы тем, кто будет повторять.

    В качестве шины у меня используется четырех-жильный телефонный кабель.

    Не стоит так делать, если 1-wire пойдет около силовых проводов. Если все делаем в готовой квартире, то проводка вся сделана уже до нас и наводки при коммутации нас не затронут, т.к. силовые провода будут делеко. Но если мы прокладываем проводку вместе с 1-wire, то только (S)FTP и никаких UTP или телефонных проводов.

    Соединения и ветвления происходят через стандартные телефонные разъемы и разветвители.

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

    Теперь вопросы автору.
    Почему DS2413, а не 2406? 2413 работает только на паразитном питании, соответственно при работе с ней получаем блокировки шины и прочие радости…
    Какое время реакции при нажатии на кнопки и сработке датчиков? Особенно интересует как оно все работает при опросе датчиков. Если я все правильно понял из даташитов на 2406(08,13), то мы можем считать только текущее состояние входов, т.е. если в промежутке между опросами датчик срабатывал, то мы про это не узнаем. А в большой сети задержки между опросами могут быть значительными. Т.е. в случае с датчиком движения — человек зашел в комнату и сел, а свет так и не врубился или вор вскрыл дверь, зашел и сразу закрыл ее и про факт открывания мы опять не в курсе. :(
    • 0
      Ответил ниже.
    • 0
      Но если мы прокладываем проводку вместе с 1-wire, то только (S)FTP и никаких UTP или телефонных проводов.

      Вы имеете ввиду надо класть витую пару?
      • 0
        Я этой зимой пока готовился к прокладке 1w, сетки и проводки в доме перелопатил кучу профильных сайтов и форумов. Вердикт был такой — хотите, чтобы 1w работала стабильно и без глюков, даже в случае если ее проводка пройдет рядом с силовой или ethernet, то лучше всего чуток переплатить и прокинуть экранированную витую пару aka (S)FTP. Ну и плюс не повредит датчики сделать с активным питанием. В качестве образца схемки от elin.ru самое то.
  • 0
    Не стоит так делать, если 1-wire пойдет около силовых проводов.

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

    Почему DS2413, а не 2406

    2413 — стоял на тех платах, которые я покупал, а потом воспроизводил, на новых я ставлю 2408.

    Какое время реакции при нажатии на кнопки и сработке датчиков? Особенно интересует как оно все работает при опросе датчиков. Если я все правильно понял из даташитов на 2406(08,13), то мы можем считать только текущее состояние входов, т.е. если в промежутке между опросами датчик срабатывал, то мы про это не узнаем.

    2408 по даташитам имеет возможность запоминать срабатывание сигнала и отдавать по Conditional Search, вот только почему-то в моей конфигурации (возможно из-за багов в owfs) этот режим не завелся.
    Я опрашиваю три раза в секунду (у меня на шине около 15-ти таких устройств) сильных лагов нет, если не попали на опрос термодатчика (а об этом я уже не первый раз пишу)
    Но, даже с учетом попадания на опрос паразитного термодатчика, пропустить датчик движения (который меняет свое состояние секунд на 5) или открывания двери (уж заведомо больше секунды) не получится.

    • 0
      А почему не используете latch, который устанавливается при появлении/исчезновении напряжения на соответствующем входе?
      • 0
        У меня он не работал так, как положено. Разобраться так и не смог.
        • 0
          Странно. У меня, вроде, всё работает.
  • +3
    Насчет датчика протечки: провода могут со временем окислиться, поэтому выглядит не слишком надежно. Смысл такого датчика если ему доверия нет — вдруг откажет в нужный момент.
    Наденьте хотя бы на концы провода позолоченые контакты и будет вам счастье.
    А еще для 100%-й надежности люди берут мелкопористую губку, вымачивают в соленой воде, и сушат… ну и контакты внутрь. Как правило теперь достаточно совсем немного воды, чтобы датчик сработал.
    • 0
      Спасибо за совет, учту.
      • 0
        Однако, сам по себе вход у DS2408 очень чувствительный, у меня часто бывают ложные срабатывания, если не подтягивать к земле. А если подтягивать, то на простое опускание контактов в воду не реагирует. Нет такой проблемы?
        • 0
          Подтягивание к земле у меня есть и при этом срабатывает.
          • 0
            А каким номиналом? Я ставил 10к и не работало. Причём вода с солями и железом, должна быть весьма электропроводной.)
  • +1
    Спасибо за статью. Собирался оконные датчики подключать через DS2401, но ваш вариант оптимальней. У вас на схеме, которая получает данные с датчиков открытия всех окон — не указаны сопротивления резисторов. Можете уточнить эти сопротивления?
    • 0
      Я не подгонял под «товарный» вид старые схемы, виноват.
      Все значения сопротивлений можно посмотреть на схеме где разбираются модули.
  • 0
    Прочитал Ваши три статьи, и видимо торопился и не понял, по какому каналу Ваш сервер собирает данные со всех датчиков 1-wire?
    Я тут тоже сейчас занимаюсь разработкой умного дома, и вот есть пока некоторые моменты:
    Например, выбор интерфейса связи со своими модулями. В качестве главного центра сбора информации пока вижу atxmegaXXX. Дак вот как лучше собирать данные?
    • 0
      Я тоже сейчас свой вариант разрабатываю.
      Не совсем понял одно — зачем центр сбора, когда можно сразу на центральный узел все собирать? То бишь зачем плодить лишние сущности?
      • 0
        Ну для моих задач пока хватит центра сбора на atxmega, а отсюда значительно ниже энергопотребление, чем использование компа. В будущем хочу использовать главным центром raspberry pi. Ну а вообще, пока нет 100 -процентной уверенности в том, что хочу, в голове куча мыслей.
        • 0
          Я решил обойтись без компа. Точнее говоря, в ядре системы будет стоять BeagleBone Black. Вся периферия собрана в виде cape'а к нему. В этом случае atmega это только лишняя сущность.
    • 0
      Все данные собираются по проводу, по протоколу 1-wire, через адаптер DS9490R на сервер.
  • +1
    Очень хочется покритиковать и рассказать, что сам бы сделал лучше… но у вашего решения есть одно огромное преимущество — оно уже существует и уже работает. Все 3 статьи читал, всё очень понравилось и ждал описания железа :)

    Основной недостаток с моей точки зрения — невозможность прямого обмена между устройствами и невозможность устройства сгенерировать пакет в сторону сервера (работа по прерыванию, а не по опросу).
    Было бы интересно взять RS-485 или что-то аналогичное, добавить каждому сенсору кроме режима «пассивно ждём запроса со стороны мастера» ещё режимы:
    1. Отправка нотификации мастеру по событию
    2. Отправка нотификации мастеру по событию, если мастер недоступен — отправка команды X устройству Y
    3. Отправка по событию команды X устройству Y

    Мастеру добавить рассылку широковещательных пакетов формата «я тут, я жив, готов принимать события».
    И на оконечном устройстве использовать микроконтроллер, в который можно примитивную логику заливать «по проводам».

    Тогда для простых устройств (к примеру, выключатель) падение мастера не будет проблемой, они смогут использовать режимы #2 и #3.
    А в некоторых случаях мастер вообще станет ненужен.
    • +1
      Согласен, но тогда система была бы значительно сложнее, как с точки зрения софта, так и железа. В первую очередь именно железа (сложность софта меня не пугает). А я, до начала построения этой системы, с паяльником не сильно дружил.
      Поэтому, это был осознанный выбор.
      • +2
        Тоже подход.
        Судя по нарастающей активности подобных тем — почти каждый IT'шник хочет придумать свой велосипед для запуска «Умного дома» :)
        Прямо как старая шутка про сеть ФИДО — «каждый настоящий фидошник обязательно должен написать свой мейлер».

        Заброшу вашу статью в «избрабнные», у самого тоже есть мысли попробовать поиграться с «умным домом» (первым делом — управление светом, некоторыми розетками, сбор данных с датчиков влажности/температуры, управление вытяжкой по данным с датчиков). Если будет какой-то работающий результат — вернусь к вам. Меня довольно сильно пугает набор проблем при создании приложения под Android, железо кажется мЕньшей проблемой.
        • +1
          А если взглянуть на AppInventor? Визуальное программирование для Android. Оно достаточно примитивно, конечно, но POST/GET запросы отправлять даст. Для начала — более чем достаточно, на мой взгляд.
          • 0
            Спасибо за ссылочку, попробую :)
        • +1
          Все очень просто — готовые решения чаще всего не устраивают функционалом или соотношением цена/функционал. Плюс это дает возможность самому собрать что-то полезное для себя. С нынешними ценами на электронику и обилием ее ассортимента оооочень редко возникает необходимость собрать что-то свое. А тут есть где разгуляться.

          По поводу софта под андроид. А на фига оно надо? Дом все равно будет иметь выход в сеть, поэтому делаем просто под мобильные браузеры легковесный интерфейс и вытаскиваем закладку на рабочий стол. Если же надо по каким-то событиям на телефоне что-то делать с домом, то есть готовое решение — Tasker. Вот пример использования.
          • 0
            Хотелось именно интерфейс с визуальным отображением.
            Но действительно — ведь можно всё сделать на HTML + JS и работать через браузер.

            Связывать события телефона с домом вообще не планировал, это, как мне кажется, оправдано в частном доме, но малополезно в обычной квартире… если только включать «тёплый пол», но у меня обычное центральное отопление.
            • 0
              У Majordomo как раз так и реализовано. Только у них что-то сегодня картинки не грузятся :(

              На самом деле можно использовать телефон вместо датчиков движения для определения наличия хозяев в доме. Вариантов много, но для дома актуальнее — согласен.
  • 0
    MOC3043M + BT138. Вывел все восемь, три, так сказать, для будущего развития.
    Ток включения MOC3043M — 5mA, а у DS2408 максимальный ток в сумме по всем выходам 20mA. Если я правильно понимаю, выходит, что одновременно могут работать не более четырёх. А как эта схема работала на практике?

    И ещё такой вопрос: нет ли готовой схемы для управления 12-вольтовыми устройствами относительно большой мощности (конкретно светодиодными лентами ватт по 35 на PIO).
    • 0
      Расчет по току я не делал, а та схема до сих пор обслуживает только 4 устройства. Но теперь буду знать, что больше она не потянет. Спасибо!
      • 0
        Ну, я не пробовал, может и больше выдержит.) А насчёт 12В схем ничего?
        • 0
          Нет, готовых схем нет.

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