Arduino умный дом

Содержание

Что такое «умный дом»

У этого термина есть более понятный аналог — «домашняя автоматизация». Суть подобных решений состоит в том, чтобы обеспечить автоматическое выполнение различных процессов, происходящих в жилище, офисе или на специализированных объектах. Простейший пример — автоматическое включение освещения в тот момент, когда кто-то из жильцов входит в комнату.

Система «умный дом» от Arduino представляет собой комплект оборудования для управления работой различных устройств с помощью мобильного телефона на базе ОС Android

В любой системе «умный дом» можно выделить следующие составляющие:

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

    Одним из наиболее часто импользуемых элементов «умного дома» является датчик движения

  2. Исполнительная часть. Это устройства, которыми система может управлять, реагируя таким образом на то или иное событие в соответствии с заданным пользователем сценарием. Прежде всего, это реле, посредством которых контроллер «умного дома» может подавать питание на любой электрический прибор, то есть включать и выключать его. Например, по хлопку в ладони (система «услышит» его при помощи микрофона) можно настроить включение реле, подающего питание на вентилятор. Обратите внимание: в этом примере вентилятор может быть любым. Но можно применить и прибор, специально выпущенный для работы в составе той или иной системы. Например, компания Arduino выпускает для своих систем электромоторчики, при помощи которых можно, допустим, закрывать или открывать форточку, а компания Xiaomi (китайский производитель подобных систем) — устройства управления воздухоочистителем. Такой прибор полностью контролируется системой, то есть она может не только включить его, но и изменить настройки.

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

  3. Процессор. Может также называться контроллером. Это «мозг» системы, который координирует и согласовывает работу всех её составляющих.

    Плата процессора (или контроллера) управляет исполнительными устройствами на основе встроенной программы и данных, полученных от сенсоров

  4. Программное обеспечение. Это набор инструкций, которыми руководствуется процессор. В системах некоторых производителей, в том числе и от Arduino, пользователь может написать программу самостоятельно, в других — используются готовые решения, в которых пользователю доступны лишь типовые сценарии.

Современные системы «умный дом» делятся на несколько разновидностей:

  1. Оснащённые собственным контроллером.
  2. Использующие в этом качестве процессор пользовательского компьютера (планшета, смартфона).
  3. Обрабатывающие информацию при помощи удалённого сервера, принадлежащего компании-разработчику (облачный сервис).

Система может не только активировать тот или иной прибор, но и проинформировать пользователя о происшедшем событии путём отправки сообщения на телефон или каким-то иным способом. Таким образом, на неё можно возложить функции сигнализации, в том числе и противопожарной.

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

Знакомимся с Arduino

Arduino — итальянская компания, занимающаяся разработкой и производством компонентов и программного обеспечения для простых систем «умный дом», предназначенных для неспециалистов. Примечательным является то, что этот разработчик сделал архитектуру созданных им систем полностью открытой, что дало возможность сторонним производителям разрабатывать новые и копировать уже существующие Arduino-совместимые устройства, а также выпускать ПО для них.

Набор Arduino Uno содержит необходимые компоненты для реализации устройств, описанных в прилагаемой книге

Такой подход обеспечил высокую популярность системам итальянской компании, но у него есть и недостаток: из-за того что за производство компонентов для Arduino-систем берутся, так сказать, все кому не лень, не всегда удаётся с первого раза приобрести качественное изделие. Зачастую приходится сталкиваться и с проблемой совместимости компонентов от разных производителей.

Потенциальному пользователю следует знать, что с 2008 года существуют две компании, выпускающие продукцию под торговой маркой Arduino. У первой, которая начинала это направление, официальный сайт размещён по адресу www.arduino.cc; у второй, новообразовавшейся — по адресу www.arduino.org. То, что было разработано до раскола, на обоих сайтах представлено одинаково, а вот ассортимент новой продукции уже отличается.

ПО для систем «умный дом» Arduino имеет вид программной оболочки (называется IDE), в которой можно писать и компилировать программы. Распространяется бесплатно. Программы пишутся на языке C++.

Версии программы Arduino IDE, представленные на указанных сайтах, тоже сильно отличаются, хотя имеют одинаковые не только название, но и номера версий. Из-за этого в них довольно легко запутаться. Отличие состоит в том, что каждое ПО поддерживает свои библиотеки и платы.

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

На процессорную плату можно устанавливать специальные расширения (шилды), которые увеличивают функциональность системы

Преимущества системы Arduino

Этот аппаратно-программный комплекс привлекает пользователя такими достоинствами:

  • возможность автономной работы, обусловленная наличием собственного контроллера;
  • широкие возможности по настройке работы системы (пользователь сам пишет программу, в которой могут быть предусмотрены сценарии любой сложности);
  • простота процесса загрузки программы в контроллер: программатор для этого не требуется, достаточно иметь USB-кабель (в микроконтроллере имеется прошивка загрузчика Bootloader);
  • доступная стоимость компонентов, обусловленная отсутствием у того или иного производителя монопольных прав (архитектура является открытой).

Если загрузчик Bootloader стал работать со сбоями, либо в приобретённом микроконтроллере его не оказалось, пользователь имеет возможность прошить его самостоятельно. В программной оболочке IDE для этой цели предусмотрена поддержка ряда наиболее доступных и популярных программаторов. Кроме того, почти все процессорные платы Arduino имеют штыревой разъём, позволяющий осуществлять внутрисхемное программирование.

В программе Arduino IDE, представленной на сайте arduino.cc, заложена возможность создания пользовательских аппаратно-программных платформ, в то время как в версии программы на arduino.org такая функция отсутствует.

Какие решения предлагает Arduino

Поскольку производством Arduino-совместимых датчиков и приборов занимается множество компаний, ассортимент этой продукции довольно широк. Вот что применяется чаще всего:

  1. Сенсоры, отслеживающие климатические параметры:
    • температуру;
    • влажность;

      Специальная плата с датчиками температуры и влажности предоставляет интерфейс вывода измеряемых параметров на LCD-дисплей

    • осадки (датчик дождя и снега);
    • освещённость;
    • давление.
  2. Сенсоры, позволяющие определить пространственное положение объекта, на котором они закреплены:
    • 6-осный датчик-гироскоп с акселерометром;
    • компас.

      Встроенный компас позволяет определять стороны света по отношению к объекту, на котором используется система

  3. Сенсоры, позволяющие регистрировать присутствие различных объектов:
    • датчик движения;
    • инфракрасный датчик (зафиксирует неподвижно сидящего человека или теплокровное животное);

      ИК-датчик позволяет гарантированно определить присутствие в доме людей и перейти на соответствующую ветку рабочего сценария

    • ультразвуковой датчик (обнаруживает объекты с любой температурой и определяет расстояние до них).
  4. Аварийные сенсоры:
    • датчик дыма;
    • датчик огня;
    • датчик утечки газа;

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

    • датчик углекислоты.
  5. Прочие устройства, например:
    • микрофон;
    • часы;
    • датчик открывания двери;
    • пульты дистанционного управления (радиочастотные и инфракрасные) с приёмниками;
    • удалённые кнопки.

Некоторые из этих устройств включены в состав базового набора Arduino Start, который у ряда производителей имеет название StarterKit.

Стартовый набор системы Arduino включает в себя процессорную плату и несколько наиболее часто используемых устройств

Исполнительная часть содержит огромный набор устройств, например:

  • электромоторы;
  • реле и различные переключатели;
  • диммеры (позволяют плавно менять интенсивность освещения);
  • доводчики дверей;
  • вентили и 3-ходовые клапаны с сервоприводами.

Если вы планируете подключить через реле Arduino освещение, то правильнее использовать в качестве светильников светодиодные лампы. Лампы накаливания при подключении через такие реле быстро горят.

Видео: начинаем работать с Arduino — управляем светодиодом через web-интерфейс

Составление проекта на Arduino

Процесс создания и настройки «умного дома» Arduino покажем на примере системы, в которую будут заложены следующие функции:

  • мониторинг температуры на улице и в помещении;
  • отслеживание состояния окна (открыто/закрыто);
  • мониторинг погодных условий (ясно/дождь);
  • генерация звукового сигнала при срабатывании датчика движения, если активирована функция сигнализации.

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

Используемые сокращения:

  1. «GND» — заземление.
  2. «VCC» — питание.
  3. «PIR» — датчик движения.

Необходимые компоненты для изготовления системы «умного дома»

Для системы «умного дома» Arduino потребуется следующее:

  • микропроцессорная плата Arduino;
  • модуль Ethernet ENC28J60;
  • два температурных датчика марки DS18B20;
  • микрофон;
  • датчик дождя и снега;
  • датчик движения;
  • переключатель язычковый;
  • реле;
  • резистор сопротивлением 4,7 кОм;
  • кабель «витая пара»;
  • кабель Ethernet.

Стоимость всех компонентов составляет примерно 90 долларов.

Для изготовления системы с необходимыми нам функциями потребуется набор устройств стоимостью около 90 долларов

Сборка «умного дома»: пошаговая инструкция

Вот в какой последовательности необходимо действовать.

Подключение исполнительных и сенсорных устройств

Подключаем все компоненты согласно схеме.

Сборка системы в основном сводится к подключению исполнительных устройств к соответствующим контактам процессорной платы

Разработка программного кода

Пользователь пишет всю программу целиком в оболочке Arduino IDE, для чего последняя оснащена текстовым редактором, менеджером проектов, компилятором, препроцессором и средствами для заливки программного кода в микропроцессор платы Arduino. Разработаны версии IDE для операционных систем Mac OS X, Windows и Linux. Язык программирования — С++ с некоторыми упрощениями. Пользовательские программы для Arduino принято называть скетчами (sketch) или набросками, программа IDE сохраняет их в файлы с расширением «.ino».

Функцию main(), которая в С++ является обязательной, оболочка IDE создаёт автоматически, прописывая в ней ряд стандартных действий. Пользователь должен написать функции setup() (выполняется единоразово во время старта) и loop() (выполняется в бесконечном цикле). Обе эти функции для Arduino являются обязательными.

Заголовочные файлы стандартных библиотек вставлять в программу не нужно — IDE делает это автоматически. К пользовательским библиотекам это не относится — они должны быть указаны.

Добавление библиотек в «Менеджер проекта» IDE осуществляется несколько необычным способом. В виде исходных текстов, написанных на С++, они добавляются в особую папку в рабочем каталоге оболочки IDE. После этого названия этих библиотек появятся в соответствующем меню IDE. Те, что отметит пользователь, будут внесены в список компиляции.

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

Вот пример самой простой программы, заставляющей каждые 2 секунды мигать подключённый к 13-му выводу платы светодиод:

void setup () { pinMode (13, OUTPUT); // Назначение 13 вывода Arduino выходом}

void loop () { digitalWrite (13, HIGH); // Включение 13 вывода, параметр вызова функции digitalWrite HIGH — признак высокого логического уровня

delay (1000); // Цикл задержки на 1000 мс — 1 секунду

digitalWrite (13, LOW); // Выключение 13 вывода, параметр вызова LOW — признак низкого логического уровня

delay (1000); // Цикл задержки на 1 секунду}

Однако в настоящий момент перед пользователем далеко не всегда встаёт необходимость лично писать программу: в сети выложено множество готовых библиотек и скетчей (загляните сюда: http://arduino.ru/Reference). Имеется готовая программа и для системы, рассматриваемой в этом примере. Её нужно загрузить, распаковать и импортировать в IDE. Текст программы снабжён комментариями, поясняющими принцип её работы.

Все программы на Arduino работают по одному принципу: пользователь посылает запрос процессору, а тот загружает необходимый код на экран компьютера или смартфона

Когда пользователь нажимает в браузере или установленном на смартфоне приложении кнопку «Refresh» (Обновление), микроконтроллер Arduino осуществляет отсылку данных этому клиенту. С каждой из страниц, обозначенных как «/tempin», «/tempout», «/rain», «/window», «/alarm», поступает программный код, который и отображается на экране.

Установка клиентского приложения на смартфон (для ОС Android)

Для получения данных от системы «умный дом» в сети можно скачать готовое приложение.

Вот что необходимо сделать владельцу гаджета:

  1. Скачайте файл SmartHome.apk.
  2. Отправьте его на телефон.
  3. Открыв «Менеджер файлов», разместите этот файл.
  4. Щёлкните на нём и выберите «Установить» (должна быть отмечена «галочка», позволяющая осуществлять установку программ вне сервиса Google Play).

    Необходимо включить разрешение на установку программ не из PlayMarket, которое находится в разделе «Безопасность» настроек смартфона

  5. Когда установка будет завершена, активируйте приложение.
  6. Выполните его настройку.

С помощью этого приложения можно не только получать информацию от системы «умный дом», но и управлять ею — включать и отключать сигнализацию. Если она включена, то при срабатывании датчика движения приложению будет отправлено уведомление. Опрос системы Arduino на предмет срабатывания датчика движения приложение выполняет с периодичностью раз в минуту.

Активировав иконку «Настройки», можно отредактировать свой IP-адрес.

Настройка браузера на работу с «умным домом»

В адресной строке браузера следует ввести XXX.XXX.XXX.XXX/all, где «XXX.XXX.XXX.XXX» — ваш IP-адрес. После этого появится возможность получать данные от системы и осуществлять управление ею.

Представленный здесь программный код позволяет через браузер включать и выключать свет, тогда как в приложении для Android-смартфона такая функция не реализована.

Работа с роутером

Далее на маршрутизаторе необходимо открыть порт:

  • открываем настройки маршрутизатора;
  • прописываем адрес Arduino IP;
  • открываем порт 80.

    Необходимо прописать маршрут перехода на процессор Arduino по порту 80

Настройка учётной записи на noip.com

Этот этап не является обязательным, но он необходим, если вы хотите присвоить адресу доменное имя. Для этого надо зарегистрироваться на сайте https://www.noip.com/, перейти в раздел «Add host» и ввести IP-адрес системы.

После регистрации на сайте noip.com доступ к системе можно получать не только по IP-адресу, но и по полному доменному имени

Создание проекта завершено, можно проверять работоспособность системы.

Видео: умный дом на «Ардуино»

Особенности работы некоторых аппаратных средств Arduino

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

Похожая ситуация сложилась в сфере разработки персональных компьютеров. В своё время компания IBM сделала архитектуру своих компьютеров открытой, вследствие чего IBM-совместимые компьютеры и отдельные компоненты стали выпускать многие компании. В итоге «персоналки» этого типа широко распространились по всему миру, однако, качество комплектующих и степень их совместимости во многих случаях оказывались не на самом высоком уровне. Противоположной тактики придерживалась компания Apple. Она ограничила круг разработчиков, имеющих доступ к архитектуре, и такую же политику провела в сфере разработки ПО. В итоге компьютеры Apple оказались менее распространёнными и более дорогими, но зато по качеству они на порядок превосходят IBM-совместимые устройства, работающие под Windows.

В отношении некоторых комплектующих для систем Arduino пользователи заметили следующее:

  1. Датчик температуры DHT11, поставляемый с базовым набором (StarterKit), даёт значительную погрешность в 2–3 градуса. В помещении рекомендуют применять температурный датчик DHT22, дающий более точные показания, а для установки на улицу — DHT21, способный работать при отрицательных температурах и имеющий защиту от механических повреждений.
  2. На некоторых микропроцессорных платах Arduino при замыкании подключённых к ним реле выходит из строя COM-порт. Из-за этого на микроконтроллер не удаётся загрузить скетч: как только начинается заливка, процессор перезагружается. Реле при этом щёлкает, COM-порт отключается и процесс загрузки скетча прекращается.
  3. Датчик закрытия окна/двери иногда преподносит сюрпризы в виде ложных срабатываний. С учётом этого скетч пишут так, чтобы система производила необходимое действие только по получении нескольких сигналов подряд.
  4. Для настройки управления процессами при помощи хлопков некоторые пользователи по неопытности вместо микрофона заказывают детектор звука с ручной настройкой порога. Для подобных целей этот компонент не подходит, так как имеет слишком малый радиус действия: хлопать приходится не далее 10 см от детектора. Кроме того, этот датчик передаёт сигналы импульсами малой продолжительности, так что при наличии большого скетча, на обработку которого уходит сравнительно много времени, микроконтроллер просто не успевает их зафиксировать.
  5. Для устройства противопожарной сигнализации следует использовать датчик дыма, а не датчик огня. Последний регистрирует пламя не далее 30 см от себя.
  6. На случай сбоя в работе микроконтроллера или ошибки в коде лучше применять нормально замкнутые реле с последовательно подключёнными ручными выключателями.

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

Возможно, система «умный дом» от компании Arduino является не самой качественной, но зато широчайший выбор компонентов и их доступная стоимость точно сделали её одной из самых популярных. Воспользовавшись нашими советами, вы быстро научитесь создавать проекты Arduino, автоматизируя различные домашние процессы.

Принцип работы умного дома на базе Ардуино

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

Схема управления светом с помощью «Умного дома»

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

Созданный на Arduino умный дом, управляется через Web интерфейс, что позволит удаленно контролировать работу системы с любого устройства, подключенного к интернету. Также поддерживает Arduino GSM управление с помощью обычных мобильных телефонов или смартфонов.

Какие датчики и контролеры можно подключать и как они работают

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

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

Датчики и компоненты «Умного дома» на базе Arduino

Через шилды к контроллеру можно подключить разные по функциональности датчики.

  1. Сенсоры, которые контролирую параметры и характеристики окружающей среды внутри или вне помещения. Это могут быть датчики температуры, влажности, давления, уровня освещенности наличия осадков.
  2. Сенсоры, которые контролируют пространственную ориентацию объекта, к которому они прикреплены. К ним относятся гироскопы, компасы, акселерометры.
  3. Сенсоры, которые регистрируют наличие подвижных объектов. К ним относятся датчики движения, тепловые датчики УЗ-сенсоры.
  4. Сенсоры контроля аварийных ситуаций. К ним относятся устройства, которые позволяют контролировать целостность инженерных коммуникаций в доме. Датчики выявляют утечку газа, воды, отключения электричества, появления задымленности, открытого огня.

Многие из этих устройств входят в набор Ардуино умный дом, предлагаемый производителями для тех, кто собрался самостоятельно автоматизировать свой дом.

Процесс сборки умного дома

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

Подключение всей периферии

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

Прикрепление датчика движения «Умного дома»

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

Программирование и отладка

Чтобы умный дом на Ардуино своими руками запрограммировать, нужно знать язык программирования С++ или использовать специальную оболочку Arduino IDE. Первый вариант подходит для продвинутых пользователей, которые знают и могут программировать на этом языке. Второй вариант подойдет для тех, кто только делает первые шаги в программировании алгоритмов для устройств, созданных на платформе Ардуино.

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

Программная оболочка Arduino IDE

Версии Arduino IDE доступны пользователям для разных операционных систем. Это могут быть Windows, Mac OS X или Linux.

После того, как созданный код залит в микропроцессор можно выполнить отладку системы и проверить насколько эффективно работает взаимодействие между датчиками, контроллером и исполнительными устройствами.

Чтобы система умный дом всегда была под контролем, существуют разные приложения, которые можно установить на свой смартфон. Например, можно закачать и настроить приложение SmartHome.apk. С его помощью можно в любое время получать данные от контроллера умного дома, а также выполнять управление его функциями.

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

Сопряжение с интернетом

Умный дом, созданный своими руками на Arduino, может настраиваться и контролироваться через интернет. Для этого сначала следует настроить роутер, который обеспечивает раздачу интернета в доме.

Изначально нужно зайти в раздел настроек роутера и прописать в нем IP-адрес для системы Arduino. Затем выполняется открывание порта 80.

Если есть необходимость в том, чтобы присвоить доменное имя адресу системы умный дом, можно воспользоваться возможностями сервиса https://www.noip.com. После регистрации на этой платформе следует воспользоваться функцией «Add host» и прописать там IP-адрес созданной системы умного дома. После этого доступ можно будет получать, как по IP-адресу, так и по доменному имени.

Схема подключения «Умного дома» на базе Arduino к интернету

Чтобы управлять развернутым на Arduino умным домом можно было с любого места, где есть интернет нужно провести несложную настройку используемого браузера. Для этого в его адресной строке следует набрать следующий код «xxx.xxx.xxx.xxx/all».

Здесь под xxx.xxx.xxx.xxx подразумевают IP-адрес, используемый системой умный дом. После этой процедуры пользователь будет иметь возможность получать информацию от созданной системы автоматизации дома, а также задавать параметры ее работы.

Заключение

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

Например, можно начать с управления освещением Ардуино, а затем добавлять функциональные датчики, которые будут контролировать движение в помещении, следить за утечкой воды, газа. Чтобы упростить процедуру создания автоматизированной системы в интернет-магазинах можно найти много готовых наборов умный дом Arduino. Они обеспечивают создание базовой конфигурации системы, которую позже можно усовершенствовать под свои требования.

Создание систем на платформе Arduino

Arduino – платформа для разработки электронных устройств с автоматическим, полуавтоматическим или ручным управлением. Она выполнена по принципу конструктора с четко определенными правилами взаимодействия между элементами. Система является открытой, что позволяет сторонним производителям участвовать в ее развитии.

Классический “умный дом” состоит из автоматизированных блоков, которые выполняют следующие функции:

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

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

Рекомендуем ознакомиться с лучшими умными устройствами для дома.

Для обучения работы с Arduino можно на сайте производителя приобрести стартовый набор (Starter Kit). Знание технического английского обязательно, так как документация не русифицирована

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

Основные элементы плат

Главным элементом “умного дома” является одна или несколько центральных (материнских) плат. Они отвечают за взаимодействие всех элементов. Только определив задачи, которые необходимо будет решить, можно приступать к выбору основного узла системы.

Материнская плата объединяет в себе следующие элементы:

  • Микроконтроллер (процессор). Основное его предназначение – выдавать и измерять напряжение в портах в диапазоне 0-5 или 0-3.3 В, запоминать данные и производить вычисления.
  • Программатор (есть не у всех плат). С помощью этого устройства в память микроконтроллера записывают программу, согласно которой будет работать “умный дом”. К компьютеру, планшету, смартфону или другому устройству его подключают при помощи USB-интерфейса.
  • Стабилизатор напряжения. Необходимо устройство на 5 вольт, требуется для питания всей системы.

Под маркой Arduino выпускают несколько моделей плат. Они отличаются друг от друга форм-фактором (размером), количеством портов и объемом памяти. Именно по этим показателям нужно выбирать подходящее устройство.

Платы Arduino и шилды под них лучше приобретать у производителя, так как они качественнее совместимых устройств, которые выпускают в Китае

Существуют два вида портов:

  • цифровые, которые помечены на плате буквами “d”;
  • аналоговые, которые помечены буквой “a”.

Благодаря им микроконтроллер осуществляет связь с подключенными устройствами. Любой порт может работать как на получение сигнала, так и на его отдачу. Цифровые порты с пометкой “pwm” предназначены для ввода и вывода сигнала типа ШИМ (широтно-импульсная модуляция).

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

При этом надо понимать, что система “умный дом” необязательно должна быть завязана в блок управления на основе одной материнской платы. Такие функции как, например, включение искусственного освещения придомовой территории в зависимости от времени суток и поддержание резерва воды в накопительном баке являются независимыми друг от друга.

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

Подсоединение множества разнотипных устройств к одной плате обычно применяют в робототехнике, где важна компактность. Для “умного дома” лучше для каждой задачи использовать свою основу

Каждый микропроцессор оснащен тремя видами памяти:

  • Flash Memory. Основная память, где хранится код программы управления системой. Незначительную ее часть (3-12 %) занимает вшитая программа загрузки (bootloader).
  • SRAM. Оперативная память, где хранятся временные данные, необходимые при работе программы. Отличается высокой скоростью работы.
  • EEPROM. Более медленная память, где также можно хранить данные.

Основное отличие видов памяти для хранения данных заключается в том, что при выключении электроэнергии информация, которая записана в SRAM, теряется, а в EEPROM остается. Но у энергонезависимого типа есть и недостаток – ограниченное число циклов записи. Это нужно помнить при создании собственных приложений.

В отличие от применения Arduino в робототехнике, для большинства задач “умного дома” не нужно много памяти ни для программ, ни для хранения информации.

Виды плат для сборки умного дома

Рассмотрим основные виды плат, которые чаще всего используют при сборки системы умного дома.

Вид #1 — Arduino Uno и ее производные

Наиболее часто в системах “умный дом” применяют платы Arduino Uno и Arduino Nano. Они обладают достаточным функционалом для решения типичных задач.

Наличие питания полноформатных плат от напряжения 7-12 Вольт предоставляет множество преимуществ. Прежде всего, это возможность длительной автономной работы от стандартных батареек или аккумуляторов

Основные параметры Arduino Uno Rev3:

  • процессор: ATMega328P (8 bit, 16 MHz);
  • количество цифровых портов: 14;
  • из них с функцией ШИМ: 6;
  • количество аналоговых портов: 6;
  • flash memory: 32 KB;
  • SRAM: 2 KB;
  • EEPROM: 1 KB.

Не так давно вышла модификация – Uno Wi-Fi, которая содержит интегрированный модуль ESP8266, позволяющий обмениваться информацией с другими устройствами по стандарту 802.11 b/g/n.

Отличие Arduino Nano от своего более габаритного аналога заключается в отсутствии собственного гнезда питания от 12 В. Это сделано, чтобы достигнуть меньшего размера устройства, что позволяет его легко спрятать в маленьком пространстве. Также для этих целей стандартное USB-подключение заменено чипом с mini-USB кабелем. У Arduino Nano по сравнению с Uno на 2 аналоговых порта больше.

Есть еще одна модификация платы Uno – Arduino Mini. Она еще меньше чем Nano, и с ней работать гораздо сложнее. Во-первых, отсутствие USB-порта создает проблему с прошивкой, так как для этого придется использовать USB-Serial Converter. Во-вторых, эта плата более привередлива по питанию – необходимо обеспечить диапазон входящего напряжения 7-9 В.

По описанным выше причинам плату Arduino Mini редко используют для работы “умного дома”. Обычно ее применяют либо в робототехнике, либо при реализации уже готовых проектов.

Вид #2 — Arduino Leonardo и Micro

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

Таблица размеров и габаритов моделей Uno, Leonardo и их миниатюрных аналогов. Разработчиками не соблюдена логика в названиях – “нано” должна быть самой маленькой

Основные параметры Arduino Leonardo следующие:

  • процессор: ATMega32u4 (8 bit, 16 MHz);
  • количество цифровых портов: 20;
  • из них с функцией ШИМ: 7;
  • количество аналоговых портов: 12;
  • flash memory: 32 KB;
  • SRAM: 2,5 KB;
  • EEPROM: 1 KB.

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

Также для Leonardo существует абсолютно идентичный по характеристикам миниатюрный аналог под названием Micro. У него отсутствует питание от 12 В и вместо полноценного USB-входа присутствует чип под mini-USB кабель.

Модификация Leonardo под названием Esplora – чисто игровая модель и под нужды “умного дома” не подходит.

Вид #3 — Arduino 101, Arduino Zero и Arduino MKR1000

Иногда для работы систем “умного дома”, реализованных на базе Arduino, необходима большая вычислительная мощность, которую 8-битные микроконтроллеры не в состоянии обеспечить. Такие задачи как распознавание голоса или изображения требуют быстрого процессора и значительного для таких устройств объема оперативной памяти.

Для решения подобных специфических задач применяют мощные платы, функционирующие согласно концепции Arduino. Количество портов у них приблизительно такое же, как и у плат Uno или Leonardo.

Arduino 101 имеет те же габариты, что Uno или Leonardo, но весит почти в два раза больше. Причина этого – наличие двух USB-входов и дополнительных чипов

Одна из наиболее простых в использовании, но мощных плат – Arduino 101 имеет следующие характеристики:

  • процессор: Intel Curie (32 bit, 32 MHz);
  • flash memory: 196 KB;
  • SRAM: 24 KB;
  • EEPROM: нет.

Дополнительно плата оснащена BLE-функционалом (Bluetooth Low Energy) с возможностью простого подключения готовых решений, таких как датчик сердцебиения, получение информации о погоде за окном, отсылки текстовых сообщений и т.д. Также в устройство интегрированы гироскоп и акселерометр, но их используют в основном в робототехнике.

Еще одна похожая плата – Arduino Zero имеет следующие показатели:

  • процессор: SAM-D21 (32 bit, 48 MHz);
  • flash memory: 256 KB;
  • SRAM: 32 KB;
  • EEPROM: нет.

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

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

Arduino MKR1000 – еще одна модель, подходящая для мощных вычислений. Она имеет микропроцессор и память, аналогичные Zero. Основное ее отличие – наличие интегрированных Wi-Fi-чипа с протоколом 802.11 b/g/n и крипто-чипа с поддержкой алгоритма SHA-256 для защиты передаваемых данных.

Вид #4 — модели семейства Mega

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

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

Если таких зон в коттедже более 10, то для управления всей системой необходимо более 30 портов. Конечно, можно использовать несколько плат типа Uno под общим управлением одной из них, однако это создает дополнительные сложности коммутации. В этом случае целесообразно использовать модели семейства Mega.

Размер плат семейства Mega (101.5 x 53.4 см) больше чем у рассмотренных ранее моделей. Это техническая необходимость – иначе такое количество портов не разместить

Плата Arduino Mega построена на базе достаточно простого 8-битного 16-мегагерцового микропроцессора aTMega1280.

Она обладает большим объемом памяти:

  • flash memory: 128 KB;
  • SRAM: 8 KB;
  • EEPROM: 4 KB.

Но главное ее достоинство – наличие множества портов:

  • количество цифровых портов: 54;
  • из них с функцией ШИМ: 15;
  • количество аналоговых портов: 16.

У этой платы существует две современные разновидности:

  • Mega 2560 основана на микропроцессоре aTMega2560, отличающимся большим объемом flash памяти – 256 KB;
  • Mega ADK помимо микропроцессора aTMega2560 оснащена USB-интерфейсом с возможностью подключения к устройствам на базе операционной системы Android.

У модели Arduino Mega ADK существует одна особенность. При подключении телефона к USB-входу возможно следующая ситуация: если телефону будет нужна зарядка, то он начнет ее “тянуть” из платы. Поэтому есть дополнительное требование к источнику электроэнергии – он должен обеспечить силу тока в 1,5 ампера. При осуществлении питания через батарейки это условие нужно учитывать.

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

Due – еще одна модель от Arduino, объединяющая мощь микропроцессора и большое количество портов.

Ее характеристики следующие:

  • процессор: Atmel SAM3X8E (32 bit, 84 MHz);
  • количество цифровых портов: 54;
  • из них с функцией ШИМ: 12;
  • количество аналоговых портов: 14;
  • flash memory: 512 KB;
  • SRAM: 96 KB;
  • EEPROM: нет.

Аналоговые контакты этой платы могут работать как в привычном для Arduino 10-битном разрешении, что сделано для совместимости с предыдущими моделями, так и в 12-битном, который позволяет получать более точный сигнал.

Особенности взаимодействия модулей через порты

Все модули, которые будут подключены к плате, имеют как минимум три выхода. Два из них – провода питания, т.е. “земля”, а также напряжение 5 или 3.3 В. Третий провод является логическим. По нему идет передача данных к порту. Для подключения модулей используют специальные сгруппированные по 3 штуки провода, которые иногда называют джамперами.

Так как на моделях Arduino обычно всего 1 порт с напряжением и 1-2 порта с “землей”, то для того, чтобы подключить несколько устройств нужно будет либо спаивать провода, либо использовать макетные платы (breadboard).

К макетной плате можно подключать не только питание и порты платы Arduino, но и другие элементы, такие как, например, сопротивление, регистры и т.д.

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

У некоторых моделей (например, Arduino Zero и MKR1000) рабочее напряжение составляет 3.3 В, поэтому если на порты подать большее значения, то возможно повреждение платы. Вся информация по питанию доступна в технической документации к устройству.

Платы дополнения (шилды)

Для увеличения возможностей материнских плат используют шилды (Shields) – расширяющие функционал дополнительные устройства. Они изготавливаются под конкретный форм-фактор, что отличает их от модулей, которые подключают к портам. Шилды стоят дороже модулей, однако работа с ними проще. Также они снабжены готовыми библиотеками с кодом, что убыстряет разработку собственных программ управления для “умного дома”.

Шилды Proto и Sensor

Эти два стандартных шилда не привносят каких-либо особых функций. Их используют для более компактного и удобного подключения большого числа модулей.

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

Proto Shield ставят поверх материнской платы. Это незначительно увеличивает высоту конструкции, но экономит много места в плоскости

Но если устройств очень много (более 10), то лучше использовать более дорогие коммутационные платы Sensor Shield.

У них не предусмотрен брэдборд, однако ко всем выводам портов индивидуально подведено питание и земля. Это позволяет не путаться в проводах и перемычках.

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

Также на этой плате есть колодки для простого подключения нескольких модулей: Bluetoots, SD-карты, RS232 (COM-port), радио и ультразвука.

Подключение вспомогательного функционала

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

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

Relay Shield. Часто используемый модуль с системах “умный дом”. Плата с четырьмя электромеханическими реле, каждое из которых допускает прохождение тока с силой до 5А. Этого достаточно для автоматического включения и отключения киловатных приборов или линий освещения, рассчитанных на переменный ток 220 В.

LCD Shield. Позволяет выводить информацию на встроенный экран, который можно проапгрейдить до TFT-устройства. Это расширение часто применяют для создания метеостанций с показаниями температуры в различных жилых помещениях, пристройках, гараже, а также температуры, влажности и скорости ветра на улице.

В LCD Shield встроены кнопки, позволяющие запрограммировать листание информации и выбор действий для подачи команд на микропроцессор

Data Logging Shield. Основная задача модуля – записывать данные с датчиков на полноформатную SD-карту объемом до 32 Gb с поддержкой файловой системы FAT32. Для записи на микро-SD карту нужно приобрести адаптер. Этот шилд можно использовать как хранилище информации, например, при записи данных с видеорегистратора. Производство американской фирмы Adafruit Industries.

SD-card Shield. Более простая и дешевая версия предыдущего модуля. Такие расширения выпускают многие производители.

EtherNet Shield. Официальный модуль для связи Arduino с Интернетом без участия компьютера. Есть слот для микро-SD карты, что позволяет записывать и отправлять данные через всемирную сеть.

Wi-Fi Shield. Позволяет осуществлять беспроводной обмен информацией с поддержкой режима шифрования. Служит для связи с интернетом и устройствами, которыми можно управлять через Wi-Fi.

GPRS Shield. Этот модуль, как правило, используют для связи “умного дома” с владельцем по мобильному телефону через SMS сообщения.

Модули “умного дома”

Подключение модулей от сторонних производителей и возможность работы с ними, используя встроенный язык программирования – основное преимущество открытой системы Arduino по сравнению с “фирменными” решениями для “умного дома”. Главное, чтобы модули имели описание получаемых или передаваемых сигналов.

Способы получения информации

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

Для компьютерной программы цифровой сигнал соответствует периодам с “0” и “1”, а аналоговый определяет диапазон значений в соответствии со своей размерностью

Сигнал к микропроцессору может быть послан человеком, который использует для этого два способа:

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

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

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

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

Для работы “умного дома” наиболее востребованы следующие их разновидности:

  • Датчик звука. Цифровые варианты этого устройства используют для активации какого-либо события с помощью хлопка или подачи голоса. Аналоговые модели позволяют распознавать и обрабатывать звук.
  • Датчик света. Эти приборы могут работать как в видимом, так и в инфракрасном диапазоне. Последние могут быть применены в качестве системы оповещения о возгорании.
  • Датчик температуры. Для дома и улицы используют разные модели, так как наружные лучше защищены от воздействия влаги. Есть также выносные устройства на проводе.
  • Датчик влажности воздуха. Для помещения подойдет модель DHT11, а для улицы – более дорогая DHT22. Оба устройства также могут давать и показание температуры. Подключаются к цифровому порту.
  • Датчик давления воздуха. Для совместной работы с платами Arduino хорошо зарекомендовали себя аналоговые барометры фирмы Bosh: bmp180, bmp280. Они также измеряют температуру. Модель bme280 можно назвать метеостанцией, так как она выдает дополнительно еще и значение влажности.
  • Датчики движения и присутствия. Их используют в охранных целях или для автоматического включения света.
  • Датчик дождя. Реагирует на попадание воды на его поверхность. Он может быть также использован для срабатывания сигнализации о протечках водопроводного или отопительного контура.
  • Датчик тока. Их применяют для обнаружения неработающих электроприборов (перегоревших ламп) или для анализа напряжения, чтобы не допустить перегрузку.
  • Датчик утечки газа. Применяется для обнаружения и реагирования на повышенную концентрацию пропана.
  • Датчик углекислого газа. Его используют для определения концентрации углекислоты в жилых комнатах и в специальных помещениях, таких как винные погреба, где происходит брожение.

Существует еще много разных датчиков под специфические задачи, например для измерения веса, скорости течения воды, расстояния, влажности почвы и т.д.

Некоторые датчики, такие как анемометр, предназначенный для измерения скорости и направления ветра, представляют собой сложные электромеханические приборы

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

Управление приборами и системами

Кроме сбора и анализа информации “умный дом” должен реагировать на возникающие события. Присутствие на современных бытовых приборах продвинутой электроники позволяет обращаться к ним напрямую, используя Wi-Fi, GPRS или EtherNet. Обычно, для систем Arduino реализуют коммутацию микропроцессора и высокотехнологичных устройств посредством Wi-Fi.

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

  1. Установить модуль Wi-Fi на материнскую плату.
  2. Найти незанятые каналы частоты, чтобы избежать конфликта систем.
  3. Разобраться в командах приборов и запрограммировать действия (либо воспользоваться готовыми библиотеками).

Помимо “общения” с компьютеризированными приборами часто возникают задачи, связанные с выполнением каких-либо механических действий. Например, к плате можно подключить сервопривод или небольшой редуктор, который будет от нее запитан.

Сервопривод состоит из моторчика и нескольких редукторов. Поэтому, несмотря на малый ток (5 В), он может развить приличную мощность, которой хватит, например, для открытия форточки

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

  1. Включение в цепь реле.
  2. Подключение силового ключа и симистора .

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

Что касается подключения силового ключа (мосфета) для постоянного тока и симистора для переменного, то они обладают меньшим значением допустимой силы тока (5-15 A), но могут плавно увеличивать нагрузку. Именно для этого на платах предусмотрены ШИМ-порты. Это свойство используют при регулировании яркости освещения, скорости вращения вентиляторов и т.д.

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

Хотите, чтобы вам дом стал умнее, но с программированием на “вы”? В таком случае рекомендуем посмотреть готовые решения от Xiaomi и Apple, которые несложно установить и настроить даже новичку. А задавать команды и контролировать их выполнение можно даже со своего смартфона.

Подробнее об умном доме от Xiaomi и Apple в следующих статьях:

  • Умный дом Xiaomi: особенности проектирования, обзор основных узлов и рабочих элементов
  • Умный дом Apple: тонкости организации систем управления домом от “яблочной” компании