Умный дом на базе контроллеров Arduino: проектирование и организация управляемого пространства

Умный дом на базе контроллеров Arduino: проектирование и организация управляемого пространства

55
0

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

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

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

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

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

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

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

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

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

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

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

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

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

В материнскую плату входят следующие ключевые элементы:

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

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

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

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

Эти порты обеспечивают связь микроконтроллера с подключаемыми устройствами. Каждый порт может как принимать, так и передавать сигнал. Порты цифрового формата с обозначением «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.

Еще одна версия платы 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 бита, 32 МГц);
  • флэш-память: 196 КБ;
  • SRAM: 24 КБ;
  • EEPROM: отсутствует.

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

Еще один аналогичной категории платы – Arduino Zero, характеристики которой следующие:

  • процессор: SAM-D21 (32 бита, 48 МГц);
  • флэш-память: 256 КБ;
  • SRAM: 32 КБ;
  • EEPROM: отсутствует.

Эта модель отличается наличием встроенного отладчика (EDBG), что значительно облегчает отладку программного кода.

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

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

Модель №4 — семейство Mega

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

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

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

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

Arduino Mega функционирует на основе простого 8-битного 16 МГц микропроцессора aTMega1280.

У нее большой объем памяти:

  • флэш-память: 128 КБ;
  • SRAM: 8 КБ;
  • EEPROM: 4 КБ.

Одним из ее главных достоинств является огромное количество портов:

  • число цифровых портов: 54;
  • из них с PWM: 15;
  • число аналоговых портов: 16.

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

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

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

Для организации автономного питания Arduino можно использовать аккумуляторы или батарейки. Совмещение последовательного и параллельного соединений позволяет добиться необходимого напряжения и продолжительности работы.

Due – это еще одна плата от Arduino, которая сочетает в себе мощный микропроцессор и значительное количество портов.

Вот ее характеристики:

  • процессор: Atmel SAM3X8E (32 бита, 84 МГц);
  • число цифровых портов: 54;
  • из них с PWM: 12;
  • число аналоговых портов: 14;
  • флэш-память: 512 КБ;
  • SRAM: 96 КБ;
  • EEPROM: отсутствует.

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

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

Все устройства, которые будут подключены к плате, содержат как минимум три выхода. Два из них отвечают за питание: «земля» и напряжение 5 или 3.3 В. Третий выход – логический, по которому осуществляется передача данных к соответствующему порту. Для соединения модулей используют специальные кабели, состоящие из трех проводов, которые иногда называют джамперами.

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

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

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

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

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

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

Шилды Proto и Sensor

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

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

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

Если же устройств очень много (более 10), лучше воспользоваться более дорогими коммутирующими платами Sensor Shield.

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

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

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

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

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

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

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

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

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

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

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

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

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

Модуль GPRS. Обычно данный компонент используется для связи между владельцем «умного дома» и системой через SMS-сообщения на мобильный телефон.

Модули «умного дома»

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

Методы получения данных

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

Цифровой сигнал в компьютерной программе представлен изменением состояний на «0» и «1», тогда как аналоговый сигнал имеет неопределенный диапазон значений.

Микропроцессор может получать сигнал от человека двумя способами:

  • Нажатие кнопки. В подобном случае логический сигнал отправляется на цифровой порт: «0» – если кнопка не нажата, и «1» – если она нажата.
  • Вращение потенциометра. В данной ситуации сигнал идет на аналоговый порт. Данные о напряжении преобразуются аналогово-цифровым преобразователем и отправляются процессору.

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

Потенциометр является простым устройством и стоит недорого. Основные его параметры – это сопротивление и угол поворота.

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

Наибольшее распространение среди датчиков в системе «умный дом» имеют:

  • Датчик звука. Цифровые версии могут активировать события по хлопку или голосу, тогда как аналоговые распознают и анализируют звук.
  • Датчик света. Они работают как в видимом, так и в инфракрасном диапазонах. Инфракрасные модели могут использоваться для сигнализации о пожаре.
  • Температурный датчик. Существуют различные модели для внутреннего и наружного использования, последние обычно защищены от влаги.
  • Датчик влажности. Для помещений подходит DHT11, а для улицы – DHT22, который также измеряет температуру. Оба устройства подключаются к цифровым портам.
  • Датчик давления. Аналоговые барометры, такие как BMP180 и BMP280 от фирмы Bosch, хорошо работают с платформами Arduino, также измеряя температуру. Модель BME280 может также указывать уровень влажности.
  • Датчики движения и присутствия. Эти устройства применяются для охраны или автоматического включения освещения.
  • Датчик дождя. Воспринимает наличие влаги на своей поверхности и может срабатывать для оповещения о протечках.
  • Датчик тока. Используются для определения неисправных приборов или мониторинга напряжения, чтобы предотвратить перегрузки.
  • Датчик утечки газа. Предназначен для выявления повышенной концентрации газа, например, пропана.
  • Датчик углекислого газа. Применяется для контроля уровня углекислого газа в жилых помещениях и специализированных местах, таких как винные погреба, где происходит брожение.

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

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

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

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

Помимо сбора и анализа данных «умный дом» должен оперативно реагировать на события. Современные механизмы обладают продвинутой электроникой, что позволяет управлять ими напрямую через Wi-Fi, GPRS или Ethernet. В большинстве случаев для систем на основе Arduino организуется связь между микропроцессором и высокоэффективными устройствами через Wi-Fi.

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

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

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

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

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

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

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

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

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

Хотите сделать свой дом «умнее», но не владеете навыками программирования? Рекомендуем обратить внимание на готовые решения от Xiaomi и Apple, которые легко настроить даже новичку. Контролировать эти системы можно с помощью смартфона.

Более подробную информацию о «умном доме» от Xiaomi и Apple можно найти в следующих статьях:

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

Выводы и полезное видео по теме

Пример базового проекта для «умного дома», собранного самостоятельно:

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

Знакомы с платформой Arduino и хотите поделиться опытом с новичками? Или хотите дополнить вышеизложенное полезными советами? Пожалуйста, оставляйте свои комментарии под этой статьёй.

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

НЕТ КОММЕНТАРИЕВ

ОСТАВЬТЕ ОТВЕТ