Умный дом на базе контроллеров Arduino: проектирование и организация управляемого пространства
Развитие средств автоматизации привело к созданию комплексных систем, улучшающих качество жизни человека. Многие известные производители электроники и программных сред предлагают готовые типовые решения для различных объектов.
Разработать самостоятельные проекты и собрать под свои потребности «умный дом» на Ардуино сможет даже неопытный пользователь. Главное – понять основы и не бояться экспериментировать.
В этой статье рассмотрим принцип создания и основные функции автоматизированного дома на базе устройств Arduino. Также рассмотрим применяемые виды плат и основные модули системы.
Содержание статьи:
Создание систем на платформе Arduino
Arduino – платформа для разработки электронных устройств с автоматическим, полуавтоматическим или ручным управлением. Она выполнена по принципу конструктора с четко определенными правилами взаимодействия между элементами. Система является открытой, что позволяет сторонним производителям участвовать в ее развитии.
Классический «умный дом» состоит из автоматизированных блоков, которые выполняют следующие функции:
- собирают нужную информацию через датчики;
- анализируют данные и принимают решения с помощью программируемого микропроцессора;
- реализовывают принятые решения, отдавая команды различным устройствам.
Платформа Arduino хороша именно тем, что не замыкается на определенном производителе, а позволяет потребителю самому подобрать подходящие ему компоненты. Их выбор огромен, поэтому можно реализовать практически любые задумки.
Рекомендуем ознакомиться с лучшими умными устройствами для дома.
Помимо многообразия подключаемых устройств, вариативности добавляет среда программирования, реализованная на языке C++. Пользователь может не только воспользоваться созданными библиотеками, но и сам запрограммировать реакцию компонентов системы на возникающие события.
Основные элементы плат
Главным элементом «умного дома» является одна или несколько центральных (материнских) плат. Они отвечают за взаимодействие всех элементов. Только определив задачи, которые необходимо будет решить, можно приступать к выбору основного узла системы.
Материнская плата объединяет в себе следующие элементы:
- Микроконтроллер (процессор). Основное его предназначение – выдавать и измерять напряжение в портах в диапазоне 0-5 или 0-3.3 В, запоминать данные и производить вычисления.
- Программатор (есть не у всех плат). С помощью этого устройства в память микроконтроллера записывают программу, согласно которой будет работать «умный дом». К компьютеру, планшету, смартфону или другому устройству его подключают при помощи USB-интерфейса.
- Стабилизатор напряжения. Необходимо устройство на 5 вольт, требуется для питания всей системы.
Под маркой Arduino выпускают несколько моделей плат. Они отличаются друг от друга форм-фактором (размером), количеством портов и объемом памяти. Именно по этим показателям нужно выбирать подходящее устройство.
Существуют два вида портов:
- цифровые, которые помечены на плате буквами «d»;
- аналоговые, которые помечены буквой «a».
Благодаря им микроконтроллер осуществляет связь с подключенными устройствами. Любой порт может работать как на получение сигнала, так и на его отдачу. Цифровые порты с пометкой «pwm» предназначены для ввода и вывода сигнала типа ШИМ (широтно-импульсная модуляция).
Поэтому прежде чем приобретать плату, необходимо хотя бы приблизительно оценить уровень ее загруженности различными устройствами. Это позволит определить нужное количество портов всех типов.
При этом надо понимать, что система «умный дом» необязательно должна быть завязана в блок управления на основе одной материнской платы. Такие функции как, например, включение искусственного освещения придомовой территории в зависимости от времени суток и поддержание резерва воды в накопительном баке являются независимыми друг от друга.
С позиции обеспечения надежности работы электронной системы лучше разнести несвязанные между собой задачи по различным блокам, что концепция Arduino позволяет легко осуществить. Если же в одном месте объединить много устройств, то возможно перегревание микропроцессора, конфликт программных библиотек и сложности при поиске и устранении программных и аппаратных неисправностей.
Каждый микропроцессор оснащен тремя видами памяти:
- Flash Memory. Основная память, где хранится код программы управления системой. Незначительную ее часть (3-12 %) занимает вшитая программа загрузки (bootloader).
- SRAM. Оперативная память, где хранятся временные данные, необходимые при работе программы. Отличается высокой скоростью работы.
- EEPROM. Более медленная память, где также можно хранить данные.
Основное отличие видов памяти для хранения данных заключается в том, что при выключении электроэнергии информация, которая записана в SRAM, теряется, а в EEPROM остается. Но у энергонезависимого типа есть и недостаток – ограниченное число циклов записи. Это нужно помнить при создании собственных приложений.
В отличие от применения Arduino в робототехнике, для большинства задач «умного дома» не нужно много памяти ни для программ, ни для хранения информации.
Виды плат для сборки умного дома
Рассмотрим основные виды плат, которые чаще всего используют при сборки системы умного дома.
Вид #1 — Arduino Uno и ее производные
Наиболее часто в системах «умный дом» применяют платы Arduino Uno и Arduino Nano. Они обладают достаточным функционалом для решения типичных задач.
Основные параметры 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, но немного более мощная. Также интересной особенностью этой модели является ее определение при подключении к компьютеру как клавиатуры, мыши или джойстика. Поэтому ее часто используют для создания оригинальных игровых устройств и симуляторов.
Основные параметры 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 имеет следующие характеристики:
- процессор: 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). С его помощью гораздо проще проводить поиск ошибок при программировании платы.
Arduino MKR1000 – еще одна модель, подходящая для мощных вычислений. Она имеет микропроцессор и память, аналогичные Zero. Основное ее отличие – наличие интегрированных Wi-Fi-чипа с протоколом 802.11 b/g/n и крипто-чипа с поддержкой алгоритма SHA-256 для защиты передаваемых данных.
Вид #4 — модели семейства Mega
Иногда необходимо использовать большое количество датчиков и управлять значительным числом устройств. Например, это нужно для автоматического функционирования систем распределенного кондиционирования, которые осуществляют поддержку определенной температуры для отдельных зон.
Для каждой локальной области необходимо отследить показания двух датчиков температуры (второй используется как контрольный) и в соответствии с алгоритмом проводить регулировку положения заслонки, определяющей объем поступления теплого воздуха.
Если таких зон в коттедже более 10, то для управления всей системой необходимо более 30 портов. Конечно, можно использовать несколько плат типа Uno под общим управлением одной из них, однако это создает дополнительные сложности коммутации. В этом случае целесообразно использовать модели семейства Mega.
Плата 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 ампера. При осуществлении питания через батарейки это условие нужно учитывать.
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 Zero и MKR1000) рабочее напряжение составляет 3.3 В, поэтому если на порты подать большее значения, то возможно повреждение платы. Вся информация по питанию доступна в технической документации к устройству.
Платы дополнения (шилды)
Для увеличения возможностей материнских плат используют шилды (Shields) – расширяющие функционал дополнительные устройства. Они изготавливаются под конкретный форм-фактор, что отличает их от модулей, которые подключают к портам. Шилды стоят дороже модулей, однако работа с ними проще. Также они снабжены готовыми библиотеками с кодом, что убыстряет разработку собственных программ управления для «умного дома».
Шилды Proto и Sensor
Эти два стандартных шилда не привносят каких-либо особых функций. Их используют для более компактного и удобного подключения большого числа модулей.
Proto Shield представляет собой практически полную копию оригинала в плане портов, а посередине модуля можно приклеить макетную плату. Это облегчает сборку конструкции. Такие дополнения существуют для всех полноформатных плат Arduino.
Но если устройств очень много (более 10), то лучше использовать более дорогие коммутационные платы Sensor Shield.
У них не предусмотрен брэдборд, однако ко всем выводам портов индивидуально подведено питание и земля. Это позволяет не путаться в проводах и перемычках.
Также на этой плате есть колодки для простого подключения нескольких модулей: Bluetoots, SD-карты, RS232 (COM-port), радио и ультразвука.
Подключение вспомогательного функционала
Шилды с интегрированным в них функционалом рассчитаны на решение сложных, но типовых задач. При необходимости реализации оригинальных задумок лучше все же подобрать подходящий модуль.
Motor Shield. Он предназначен для управления скоростью и вращением маломощных двигателей. Оригинальная модель оснащена одним чипом L298 и может работать одновременно с двумя моторами постоянного тока или с одним сервоприводом. Есть и совместимая деталь от стороннего производителя, у которой два чипа L293D с возможностью управления вдвое большим количеством приводов.
Relay Shield. Часто используемый модуль с системах «умный дом». Плата с четырьмя электромеханическими реле, каждое из которых допускает прохождение тока с силой до 5А. Этого достаточно для автоматического включения и отключения киловатных приборов или линий освещения, рассчитанных на переменный ток 220 В.
LCD Shield. Позволяет выводить информацию на встроенный экран, который можно проапгрейдить до TFT-устройства. Это расширение часто применяют для создания метеостанций с показаниями температуры в различных жилых помещениях, пристройках, гараже, а также температуры, влажности и скорости ветра на улице.
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» в случае ее нажатия.
- Вращение колпачка поворотного потенциометра (резистора) или сдвиг рычага движкового. В этом случае логический провод идет к аналоговому порту. Напряжение проходит через аналогово-цифровой преобразователь, после чего данные поступают к микропроцессору.
Кнопки используют для старта какого-либо события, например, включение и выключение света, отопления или вентиляции. Поворотные ручки применяют для изменения интенсивности – увеличения или уменьшения яркости света, громкости звука или скорости вращения лопастей вентилятора.
Для автоматического определения параметров среды или происхождения какого-либо события используют датчики.
Для работы «умного дома» наиболее востребованы следующие их разновидности:
- Датчик звука. Цифровые варианты этого устройства используют для активации какого-либо события с помощью хлопка или подачи голоса. Аналоговые модели позволяют распознавать и обрабатывать звук.
- Датчик света. Эти приборы могут работать как в видимом, так и в инфракрасном диапазоне. Последние могут быть применены в качестве системы оповещения о возгорании.
- Датчик температуры. Для дома и улицы используют разные модели, так как наружные лучше защищены от воздействия влаги. Есть также выносные устройства на проводе.
- Датчик влажности воздуха. Для помещения подойдет модель DHT11, а для улицы – более дорогая DHT22. Оба устройства также могут давать и показание температуры. Подключаются к цифровому порту.
- Датчик давления воздуха. Для совместной работы с платами Arduino хорошо зарекомендовали себя аналоговые барометры фирмы Bosh: bmp180, bmp280. Они также измеряют температуру. Модель bme280 можно назвать метеостанцией, так как она выдает дополнительно еще и значение влажности.
- Датчики движения и присутствия. Их используют в охранных целях или для автоматического включения света.
- Датчик дождя. Реагирует на попадание воды на его поверхность. Он может быть также использован для срабатывания сигнализации о протечках водопроводного или отопительного контура.
- Датчик тока. Их применяют для обнаружения неработающих электроприборов (перегоревших ламп) или для анализа напряжения, чтобы не допустить перегрузку.
- Датчик утечки газа. Применяется для обнаружения и реагирования на повышенную концентрацию пропана.
- Датчик углекислого газа. Его используют для определения концентрации углекислоты в жилых комнатах и в специальных помещениях, таких как винные погреба, где происходит брожение.
Существует еще много разных датчиков под специфические задачи, например для измерения веса, скорости течения воды, расстояния, влажности почвы и т.д.
Многие сенсоры и датчики можно сделать самостоятельно, используя более простые компоненты. Это обойдется дешевле. Но, в отличие от применения серийных устройств, придется потратить время на калибровку.
Управление приборами и системами
Кроме сбора и анализа информации «умный дом» должен реагировать на возникающие события. Присутствие на современных бытовых приборах продвинутой электроники позволяет обращаться к ним напрямую, используя Wi-Fi, GPRS или EtherNet. Обычно, для систем Arduino реализуют коммутацию микропроцессора и высокотехнологичных устройств посредством Wi-Fi.
Для того чтобы с помощью Arduino включить кондиционер при высокой температуре в доме, блокировать телевизор и интернет в ночное время в детской комнате или запустить бойлер отопления к приходу хозяев необходимо выполнить три действия:
- Установить модуль Wi-Fi на материнскую плату.
- Найти незанятые каналы частоты, чтобы избежать конфликта систем.
- Разобраться в командах приборов и запрограммировать действия (либо воспользоваться готовыми библиотеками).
Помимо «общения» с компьютеризированными приборами часто возникают задачи, связанные с выполнением каких-либо механических действий. Например, к плате можно подключить сервопривод или небольшой редуктор, который будет от нее запитан.
В случае необходимости подключения мощных устройств, работающих от внешнего источника питания, используют два варианта:
- Включение в цепь реле.
- Подключение силового ключа и симистора .
Включаемое в электрическую цепь электромагнитное или твердотельное реле замыкает и размыкает один из проводов по команде, поступающей от микропроцессора. Основная их характеристика – максимально допустимая сила тока (например, 40 A), которая может проходить через этот прибор.
Что касается подключения силового ключа (мосфета) для постоянного тока и симистора для переменного, то они обладают меньшим значением допустимой силы тока (5-15 A), но могут плавно увеличивать нагрузку. Именно для этого на платах предусмотрены ШИМ-порты. Это свойство используют при регулировании яркости освещения, скорости вращения вентиляторов и т.д.
С помощью реле и силовых ключей можно полностью автоматизировать все электрические цепи дома и запускать генератор при отсутствии тока. Поэтому на базе Arduino реально осуществить автономное обеспечение квартиры или здания, включая все особо важные функции – отопление, водоснабжение, водоотведение, вентиляцию и систему охраны.
Хотите, чтобы вам дом стал умнее, но с программированием на «вы»? В таком случае рекомендуем посмотреть готовые решения от Xiaomi и Apple, которые несложно установить и настроить даже новичку. А задавать команды и контролировать их выполнение можно даже со своего смартфона.
Подробнее об умном доме от Xiaomi и Apple в следующих статьях:
- Умный дом Xiaomi: особенности проектирования, обзор основных узлов и рабочих элементов
- Умный дом Apple: тонкости организации систем управления домом от “яблочной” компании
Выводы и полезное видео по теме
Пример самостоятельно собранной заготовки начального уровня для «умного дома»:
Открытость платформы Arduino позволяет использовать компоненты различных производителей. Это позволяет легко сконструировать «умный дом» под запросы пользователя. Поэтому, если есть хотя бы незначительные познания в области программирования и подключения электронных приборов, на эту систему стоит обратить внимание.
Вы на практике знакомы с платформой Arduino и хотите поделиться своим опытом с новичками в этом деле? Может вы хотите дополнить изложенный выше материал полезными рекомендациями или замечаниями? Пишите свои комментарии под этой публикацией.
Если у вас возникли вопросы по проектированию системы автоматизированного дома на базе Ардуино, задавайте их нашим экспертам и другим посетителям сайта в блоке ниже.