Развитие средств автоматизации привело к созданию комплексных систем, улучшающих качество жизни человека. Многие известные производители электроники и программных сред предлагают готовые типовые решения для различных объектов.
Разработать самостоятельные проекты и собрать под свои потребности «умный дом» на Ардуино сможет даже неопытный пользователь. Главное – понять основы и не бояться экспериментировать.
В этой статье рассмотрим принцип создания и основные функции автоматизированного дома на базе устройств Arduino. Также рассмотрим применяемые виды плат и основные модули системы.
Создание систем на платформе Arduino
Arduino – платформа для разработки электронных устройств с автоматическим, полуавтоматическим или ручным управлением. Она выполнена по принципу конструктора с четко определенными правилами взаимодействия между элементами. Система является открытой, что позволяет сторонним производителям участвовать в ее развитии.
Классический «умный дом» состоит из автоматизированных блоков, которые выполняют следующие функции:
- собирают нужную информацию через датчики;
- анализируют данные и принимают решения с помощью программируемого микропроцессора;
- реализовывают принятые решения, отдавая команды различным устройствам.
Платформа Arduino хороша именно тем, что не замыкается на определенном производителе, а позволяет потребителю самому подобрать подходящие ему компоненты. Их выбор огромен, поэтому можно реализовать практически любые задумки.
Рекомендуем ознакомиться с лучшими умными устройствами для дома.
Для обучения работы с Arduino можно на сайте производителя приобрести стартовый набор (Starter Kit). Знание технического английского обязательно, так как документация не русифицирована
Помимо многообразия подключаемых устройств, вариативности добавляет среда программирования, реализованная на языке C++. Пользователь может не только воспользоваться созданными библиотеками, но и сам запрограммировать реакцию компонентов системы на возникающие события.
Беспроводные дверные звонки
В частных домах между входной калиткой и жилым помещением может быть значительное расстояние, и чтобы не тянуть провода от кнопки до сигнального устройства, используются беспроводные звонки. В таких устройствах сигнал от нажатой кнопки передается на звуковое устройство посредствам радиоволн. Беспроводные звонки очень удобны в эксплуатации, а их монтаж не требует прокладку кабелей и осуществляется довольно просто. Дальность действия может составлять от 30 до 100 метров, поэтому при выборе звонка необходимо учесть расстояние от калитки или входной двери до жилого помещения. Каждый звонок использует свою собственную радиочастоту, поэтому даже если ваши соседи установят у себя такое же устройство, они не будут влиять друг на друга.
Дверные звонки могут работать от сети или от батареек. Разумеется, в квартире или частном доме нет смысла использовать устройство с автономным источником питания, но вот на даче или в тех местах, где нет электричества (например, бунгало или охотничий домик в лесу) оно будет незаменимо. Покупая звонок на батарейках, необходимо учесть, что он может плохо работать при отрицательных температурах.
Большинство звонков не отличается привлекательным дизайном, и представляют собой простую пластиковую коробку. Такие устройства предназначены для установки в невидимом для глаз месте. Однако если вы планируете поместить звонок на виду, необходимо подумать о его внешнем виде. Сегодня можно приобрести звонки, выполненные в форме различных декоративных элементов, которые удачно впишутся в вашу гостиную или прихожую. Такие изделия не придется прятать, при этом они станут частью интерьера дома.
Основные элементы плат
Главным элементом «умного дома» является одна или несколько центральных (материнских) плат. Они отвечают за взаимодействие всех элементов. Только определив задачи, которые необходимо будет решить, можно приступать к выбору основного узла системы.
Материнская плата объединяет в себе следующие элементы:
- Микроконтроллер (процессор). Основное его предназначение – выдавать и измерять напряжение в портах в диапазоне 0-5 или 0-3.3 В, запоминать данные и производить вычисления.
- Программатор (есть не у всех плат). С помощью этого устройства в память микроконтроллера записывают программу, согласно которой будет работать «умный дом». К компьютеру, планшету, смартфону или другому устройству его подключают при помощи USB-интерфейса.
- Стабилизатор напряжения. Необходимо устройство на 5 вольт, требуется для питания всей системы.
Под маркой Arduino выпускают несколько моделей плат. Они отличаются друг от друга форм-фактором (размером), количеством портов и объемом памяти. Именно по этим показателям нужно выбирать подходящее устройство.
Платы Arduino и шилды под них лучше приобретать у производителя, так как они качественнее совместимых устройств, которые выпускают в Китае
Существуют два вида портов:
- цифровые, которые помечены на плате буквами «d»;
- аналоговые, которые помечены буквой «a».
Благодаря им микроконтроллер осуществляет связь с подключенными устройствами. Любой порт может работать как на получение сигнала, так и на его отдачу. Цифровые порты с пометкой «pwm» предназначены для ввода и вывода сигнала типа ШИМ (широтно-импульсная модуляция).
Поэтому прежде чем приобретать плату, необходимо хотя бы приблизительно оценить уровень ее загруженности различными устройствами. Это позволит определить нужное количество портов всех типов.
При этом надо понимать, что система «умный дом» необязательно должна быть завязана в блок управления на основе одной материнской платы. Такие функции как, например, включение искусственного освещения придомовой территории в зависимости от времени суток и поддержание резерва воды в накопительном баке являются независимыми друг от друга.
С позиции обеспечения надежности работы электронной системы лучше разнести несвязанные между собой задачи по различным блокам, что концепция Arduino позволяет легко осуществить. Если же в одном месте объединить много устройств, то возможно перегревание микропроцессора, конфликт программных библиотек и сложности при поиске и устранении программных и аппаратных неисправностей.
Подсоединение множества разнотипных устройств к одной плате обычно применяют в робототехнике, где важна компактность. Для «умного дома» лучше для каждой задачи использовать свою основу
Каждый микропроцессор оснащен тремя видами памяти:
- Flash Memory. Основная память, где хранится код программы управления системой. Незначительную ее часть (3-12 %) занимает вшитая программа загрузки (bootloader).
- SRAM. Оперативная память, где хранятся временные данные, необходимые при работе программы. Отличается высокой скоростью работы.
- EEPROM. Более медленная память, где также можно хранить данные.
Основное отличие видов памяти для хранения данных заключается в том, что при выключении электроэнергии информация, которая записана в SRAM, теряется, а в EEPROM остается. Но у энергонезависимого типа есть и недостаток – ограниченное число циклов записи. Это нужно помнить при создании собственных приложений.
В отличие от применения Arduino в робототехнике, для большинства задач «умного дома» не нужно много памяти ни для программ, ни для хранения информации.
Простые проекты Ардуино
Давайте начнем наш обзор с традиционно самых простых, но очень важных проектов, включающих в себя минимальное количество элементов: светодиоды, резисторы и, конечно же, плату ардуино. Все примеры рассчитаны на использование Arduino Uno, но с минимальными изменениями будут работать на любой плате: от Nano и Mega до Pro, Leonardo и даже LilyPad.
Проект с мигающим светодиодом – маячок
Все без исключения учебники и пособия для начинающих по ардуино стартуют с примера мигания светодиодом. Этому есть две причины: такие проекты требуют минимального программирования и их можно запустить даже без сборки электронной схемы – уж что-что, а светодиод есть на любой плате ардуино. Поэтому и мы не станем исключением – давайте начнем с маячка.
Нам понадобится:
- Плата Ардуино Uno, Nano или Mega со встроенным светодиодом, подключенным к 13 пину.
- И все.
Что должно получиться в итоге:
Светодиод мигает – включается и выключается через равные промежутки времени (по умолчанию – 1 сек). Скорость включения и выключения можно настраивать.
Схема проекта
Схема проекта довольно проста: нам нужен только контроллер ардуино со встроенным светодиодом, подсоединенным к пину 13. Именно этим светодиодом мы и будем мигать. Подойдут любые популярные платы: Uno, Nano, Mega и другие.
Подсоединяем Arduino к компьютеру, убеждаемся, что плата ожила и замигала загрузочными огоньками. Во многих платах «мигающий» скетч уже записан в микроконтроллер, поэтому светодиод может начать мигать сразу после включения.
С помощью такого простого проекта маячка вы можете быстро проверить работоспособность платы: подключите ее к компьютеру, залейте скетч и по миганию светодиода сразу станет понятно – работает плата или нет.
Программирование в проекте Ардуино
Если в вашей плате нет загруженного скетча маячка – не беда. Можно легко загрузить уже готовый пример, доступный в среде программирования Ардуино.
Открываем программу Arduino IDE, убеждаемся, что выбран нужный порт.
Проверка порта Ардуино – выбираем порт с максимальным номером
Затем открываем уже готовый скетч Blink – он находится в списке встроенных примеров. Откройте меню Файл, найдите подпункт с примерами, затем Basics и выберите файл Blink.
Открываем пример Blink в Ардуино IDE
В открытом окне отобразится исходный код программы (скетча), который вам нужно будет загрузить в контроллер. Для этого просто нажимаем на кнопку со стрелочкой.
Кнопки компиляции и загрузки скетча Информация в Arduino IDE – Загрузка завершена
Ждем немного (внизу можно отследить процесс загрузки) – и все. Плата опять подмигнет несколькими светодиодами, а затем один из светодиодов начнет свой размеренный цикл включений и выключений. Можно вас поздравить с первым загруженным проектом!
Проект маячка со светодиодом и макетной платой
В этом проекте мы создадим мигающий светодиод – подключим его с помощью проводов, резистора и макетной платы к ардуино. Сам скетч и логика работы останутся таким же – светодиод включается и выключается.
Графическое изображение схемы подключения доступно на следующем рисунке:
Другие идеи проектов со светодиодами:
- Мигалка (мигаем двумя свтодиодами разных цветов)
- Светофор
- Светомузыка
- Сонный маячок
- Маячок – сигнализация
- Азбука Морзе
Подробное описание схемы подключения и логики работы программы можно найти в отдельной статье, посвященной проектам со светодиодами.
Виды плат для сборки умного дома
Рассмотрим основные виды плат, которые чаще всего используют при сборки системы умного дома.
Вид #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-битном, который позволяет получать более точный сигнал.
Напишем простую программу и загрузим ее в Ардуино
IDE для Arduino использует упрощенный язык программирования C++, понятный начинающим программистам. Для примера напишем программу, которая будет включать светодиод с интервалом 1.5 секунды. Для этого запустите IDE и вставьте код, расположенный ниже:
В строке «int ledPin = 13» объявляем переменную цифровую ledPin и присвистываем ей значение 13. В функции «setup» устанавливаем порт 13 как исходящий. В цикле «loop» с помощью оператора «digitalWrite» включаем и отключаем светодиод. А с помощью оператора «delay» делаем задержку в 1,5 секунду два раза. В итоге бесконечный цикл «loop» будет отключать, и включать наш светодиод на 1,5 секунды.
Схема подключения с помощью набора из платы Arduino Uno и светодиода для нашей программы показана на рисунке ниже.
Для загрузки программы в Arduino Uno необходимо подключить плату к компьютеру с помощью USB кабеля. При успешном подключении загорится светодиод «ON» и замигает светодиод «L».
После этого в меню «Скетч» нажмите кнопку загрузка.
После компиляции и загрузки программы на устройстве начнет мигать светодиод.
Особенности взаимодействия модулей через порты
Все модули, которые будут подключены к плате, имеют как минимум три выхода. Два из них – провода питания, т.е. «земля», а также напряжение 5 или 3.3 В. Третий провод является логическим. По нему идет передача данных к порту. Для подключения модулей используют специальные сгруппированные по 3 штуки провода, которые иногда называют джамперами.
Так как на моделях Arduino обычно всего 1 порт с напряжением и 1-2 порта с «землей», то для того, чтобы подключить несколько устройств нужно будет либо спаивать провода, либо использовать макетные платы (breadboard).
К макетной плате можно подключать не только питание и порты платы Arduino, но и другие элементы, такие как, например, сопротивление, регистры и т.д.
Пайка более надежна и применяется в устройствах, которые подвержены физическому воздействию, например, платы управления роботами и квадрокоптерами. Для умного дома лучше использовать макетные платы, так как это проще и при установке, и при удалении модуля.
У некоторых моделей (например, Arduino Zero и MKR1000) рабочее напряжение составляет 3.3 В, поэтому если на порты подать большее значения, то возможно повреждение платы. Вся информация по питанию доступна в технической документации к устройству.
Исполняемая часть
Для исполняемой части берутся «семейные» релейные модули на 4 линии. Найти подобные можно на АлиЭкспресс по цене около 200 р. Главное при выборе — триггерное напряжение 5 В, при коммутируемом AC до 250 В/10 А. Настоящие платы достаточно просто подключаются к Ардуино и не требуют гальванической развязки. Модуль объединяющий несколько реле имеет отдельные входы активирующий каждый из триггеров. Дополнительно к нему идет +5 В и GND от Arduino, через фильтр уменьшающий шанс просадки общего напряжения системы.
Силовая техника будет подключена через повторяющие реле высокой нагрузки. Несмотря на заявления производителей модулей, рисковать с мощными потребителями на конечную плату, соединенную напрямую с Ардуино — не стоит.
Светодиоды Led1-4 на схеме больше относятся к интерфейсной части и показывают текущий режим работы: 1 — охрана отключена, 3 — активирована, 2 — люди дома, 4 — экономия электроэнергии. Уличная лампа и в кладовке — обычные бытовые светильники на 220 В.
Платы дополнения (шилды)
Для увеличения возможностей материнских плат используют шилды (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 UNO R3 элементов схемы
Сведем все соединения между Ардуино и внешними устройствами в единую таблицу, которая поможет в деле сборки готовой схемы.
Куда | Пин Arduino UNO R3 | Пин устройства/контакт |
Модуль на 4 реле D0 общее освещение, D1 отопление, D2 свет в кладовке, D3 на улице. | D0 | D0 |
D1 | D1 | |
D2 | D2 | |
D3 | D3 | |
Кнопка постановки на сигнализацию/снятия | D4 | |
Клавиша включения режима экономии/люди дома | D5 | |
D6 | ||
Коммуникация с модемом | D7 | RX |
D8 | TX | |
Светодиод охрана отключена(кр) | D9 | |
Охрана активирована (зел) | D10 | |
Хозяева дома (кр) | D11 | |
Режим экономии (зел) | D12 | |
Включение модема | D13 | D9 |
Геркон кладовка | A1 | |
Геркон дверь/калитка | A2 | |
Термометр | A3 | |
Определение наличия сети 220 В | A4 |
Планируемая система полностью не заняла все пины микроконтроллера. Еще есть место для добавления аналогового датчика и одной линии управления. Вариант — использовать свободные контакты для сенсора дыма и сигнализатора. Если планируется расширять конструкцию дальше, — придется брать микроконтроллер Arduino Mega. В нем больше портов ввода/вывода и памяти, при полной программной совместимости.
Модули «умного дома»
Подключение модулей от сторонних производителей и возможность работы с ними, используя встроенный язык программирования – основное преимущество открытой системы Arduino по сравнению с «фирменными» решениями для «умного дома». Главное, чтобы модули имели описание получаемых или передаваемых сигналов.
Способы получения информации
Ввод информации может быть осуществлен через цифровые или аналоговые порты. Это зависит от типа кнопки или датчика, который получает информацию и транслирует ее на плату.
Для компьютерной программы цифровой сигнал соответствует периодам с «0» и «1», а аналоговый определяет диапазон значений в соответствии со своей размерностью
Сигнал к микропроцессору может быть послан человеком, который использует для этого два способа:
- Нажатие кнопки (клавиши). Логический провод в этом случае идет к цифровому порту, которые получает значение «0» в случае отпущенной кнопки и «1» в случае ее нажатия.
- Вращение колпачка поворотного потенциометра (резистора) или сдвиг рычага движкового. В этом случае логический провод идет к аналоговому порту. Напряжение проходит через аналогово-цифровой преобразователь, после чего данные поступают к микропроцессору.
Кнопки используют для старта какого-либо события, например, включение и выключение света, отопления или вентиляции. Поворотные ручки применяют для изменения интенсивности – увеличения или уменьшения яркости света, громкости звука или скорости вращения лопастей вентилятора.
Потенциометр представляет собой простейшее устройство, поэтому стоит очень дешево. Основные его характеристики – электрическое сопротивление и угол поворота
Для автоматического определения параметров среды или происхождения какого-либо события используют датчики.
Для работы «умного дома» наиболее востребованы следующие их разновидности:
- Датчик звука. Цифровые варианты этого устройства используют для активации какого-либо события с помощью хлопка или подачи голоса. Аналоговые модели позволяют распознавать и обрабатывать звук.
- Датчик света. Эти приборы могут работать как в видимом, так и в инфракрасном диапазоне. Последние могут быть применены в качестве системы оповещения о возгорании.
- Датчик температуры. Для дома и улицы используют разные модели, так как наружные лучше защищены от воздействия влаги. Есть также выносные устройства на проводе.
- Датчик влажности воздуха. Для помещения подойдет модель DHT11, а для улицы – более дорогая DHT22. Оба устройства также могут давать и показание температуры. Подключаются к цифровому порту.
- Датчик давления воздуха. Для совместной работы с платами Arduino хорошо зарекомендовали себя аналоговые барометры фирмы Bosh: bmp180, bmp280. Они также измеряют температуру. Модель bme280 можно назвать метеостанцией, так как она выдает дополнительно еще и значение влажности.
- Датчики движения и присутствия. Их используют в охранных целях или для автоматического включения света.
- Датчик дождя. Реагирует на попадание воды на его поверхность. Он может быть также использован для срабатывания сигнализации о протечках водопроводного или отопительного контура.
- Датчик тока. Их применяют для обнаружения неработающих электроприборов (перегоревших ламп) или для анализа напряжения, чтобы не допустить перегрузку.
- Датчик утечки газа. Применяется для обнаружения и реагирования на повышенную концентрацию пропана.
- Датчик углекислого газа. Его используют для определения концентрации углекислоты в жилых комнатах и в специальных помещениях, таких как винные погреба, где происходит брожение.
Существует еще много разных датчиков под специфические задачи, например для измерения веса, скорости течения воды, расстояния, влажности почвы и т.д.
Некоторые датчики, такие как анемометр, предназначенный для измерения скорости и направления ветра, представляют собой сложные электромеханические приборы
Многие сенсоры и датчики можно сделать самостоятельно, используя более простые компоненты. Это обойдется дешевле. Но, в отличие от применения серийных устройств, придется потратить время на калибровку.
Управление приборами и системами
Кроме сбора и анализа информации «умный дом» должен реагировать на возникающие события. Присутствие на современных бытовых приборах продвинутой электроники позволяет обращаться к ним напрямую, используя Wi-Fi, GPRS или EtherNet. Обычно, для систем Arduino реализуют коммутацию микропроцессора и высокотехнологичных устройств посредством Wi-Fi.
Для того чтобы с помощью Arduino включить кондиционер при высокой температуре в доме, блокировать телевизор и интернет в ночное время в детской комнате или запустить бойлер отопления к приходу хозяев необходимо выполнить три действия:
- Установить модуль Wi-Fi на материнскую плату.
- Найти незанятые каналы частоты, чтобы избежать конфликта систем.
- Разобраться в командах приборов и запрограммировать действия (либо воспользоваться готовыми библиотеками).
Помимо «общения» с компьютеризированными приборами часто возникают задачи, связанные с выполнением каких-либо механических действий. Например, к плате можно подключить сервопривод или небольшой редуктор, который будет от нее запитан.
Сервопривод состоит из моторчика и нескольких редукторов. Поэтому, несмотря на малый ток (5 В), он может развить приличную мощность, которой хватит, например, для открытия форточки
В случае необходимости подключения мощных устройств, работающих от внешнего источника питания, используют два варианта:
- Включение в цепь реле.
- Подключение силового ключа и симистора .
Включаемое в электрическую цепь электромагнитное или твердотельное реле замыкает и размыкает один из проводов по команде, поступающей от микропроцессора. Основная их характеристика – максимально допустимая сила тока (например, 40 A), которая может проходить через этот прибор.
Что касается подключения силового ключа (мосфета) для постоянного тока и симистора для переменного, то они обладают меньшим значением допустимой силы тока (5-15 A), но могут плавно увеличивать нагрузку. Именно для этого на платах предусмотрены ШИМ-порты. Это свойство используют при регулировании яркости освещения, скорости вращения вентиляторов и т.д.
С помощью реле и силовых ключей можно полностью автоматизировать все электрические цепи дома и запускать генератор при отсутствии тока. Поэтому на базе Arduino реально осуществить автономное обеспечение квартиры или здания, включая все особо важные функции – отопление, водоснабжение, водоотведение, вентиляцию и систему охраны.
Хотите, чтобы вам дом стал умнее, но с программированием на «вы»? В таком случае рекомендуем посмотреть готовые решения от Xiaomi и Apple, которые несложно установить и настроить даже новичку. А задавать команды и контролировать их выполнение можно даже со своего смартфона.
Подробнее об умном доме от Xiaomi и Apple в следующих статьях:
- Умный дом Xiaomi: особенности проектирования, обзор основных узлов и рабочих элементов
- Умный дом Apple: тонкости организации систем управления домом от “яблочной” компании
Резерв питания
Есть много способов обеспечить резервное питание. Так как одно из требований для проекта умного дома своими руками было — экономичность, в качестве резерва будут использоваться обычные аккумуляторы, соединенные последовательно для получения 5 В. Описание интерфейса их подзарядки выходит за рамки статьи и обеспечивать наличие запасенной энергии хозяева должны будут сами. Периодическая подзарядка «лягушкой», раз в несколько месяцев проблем не составит для конечного пользователя.
Принцип работы прост. При отключении сети 220 В нормально разомкнутое реле К1 соединяет Ардуино и модем с +5 питания батареи. Одновременно устанавливается состояние HIGH на входе A4 микроконтроллера. Последний аналоговый, а значит через него можно контролировать заряд батареи, вычислив опытным путем при каких минимальных показаниях происходит отключение логических компонентов. Информирование человека о разряде выполняется отправкой СМС.
Выводы и полезное видео по теме
Пример самостоятельно собранной заготовки начального уровня для «умного дома»:
Открытость платформы Arduino позволяет использовать компоненты различных производителей. Это позволяет легко сконструировать «умный дом» под запросы пользователя. Поэтому, если есть хотя бы незначительные познания в области программирования и подключения электронных приборов, на эту систему стоит обратить внимание.
Вы на практике знакомы с платформой Arduino и хотите поделиться своим опытом с новичками в этом деле? Может вы хотите дополнить изложенный выше материал полезными рекомендациями или замечаниями? Пишите свои комментарии под этой публикацией.
Если у вас возникли вопросы по проектированию системы автоматизированного дома на базе Ардуино, задавайте их нашим экспертам и другим посетителям сайта в блоке ниже.
Возможный функционал и постановка требований к системе
Прежде чем перейти к части проектирования, вначале нужно описать для себя, что требуется от конкретной системы.
Комплекс будет устанавливаться в небольшом доме (даче), находящемся достаточно далеко от жилья и средств коммуникации. Отопление в нем выполнено на основе электрических тэнов, что тоже накладывает свои ограничения. Дом посещается редко в холодную часть года, но отопление вымерзать не должно. Экономия при отсутствии людей обязательна. Последнее касается и случайно забытых включенными осветительных приборов — они должны сами отключаться.
Также важным фактором, требующим неустанного контроля, служит охрана дома. Любым образом человек должен узнать о попадании в дом посторонних.
Так как приезд осуществляется в темное время суток, любой хозяин желает, чтобы ему подсветили момент открывания дверей и перемещения по двору. Что нужно учесть в проектировании системы. Итак, в комплексе:
- Выявление прохода через калитку участка, для подсветки пути при необходимости.
- Определение открытия входной двери в дом.
- Управление системой отопления. В отсутствие хозяев держать температуру не ниже 5 ℃, чтобы не вымерзла вода. По полученной команде удаленно прогреть помещение до +20 градусов.
- Сообщать владельцу о перебоях энергоснабжения, чтобы не размораживался холодильник.
- Включение света в кладовке, когда ее дверь кто-то открыл.
- Все перечисленное получить при минимальных денежных затратах.
- Отключение всей электрики и переход дома в режим экономии энергии. При этом холодильник продолжает работать.
Существует много проектов умного дома на Ардуино, но под описанные возможности они слишком дороги. Проще собрать аналогичную систему самостоятельно.
Управление
Используя это ПО, можно не только получать информацию от системы, но и осуществлять управление – например, активировать и деактивировать сигнализацию. Если опция активна, то при активации датчика движения программа получит соответствующую информацию. Отметим, что опрос Arduino на активацию датчика движения программа осуществляет с интервалом раз в 60 секунд.
Следующий этап подключения – настройка браузерной программы на использование с «умным домом». В адресной строчке нужно ввести определенную последовательность, которой будет IP-адрес вашего компьютера. После осуществления этого действия пользователю станет доступной возможность получения информации от «умного дома» и возможность управлять им.
После этого можно переходить к работе с маршрутизатором. На нем следует открыть порт.
Осуществить это можно по следующему алгоритму:
- открыть настройки;
- прописать адрес микроконтроллера Arduino;
- открыть восьмидесятый порт.
Теперь следует настроить учетную запись на портале Noip. com. Хотя данный этап необязателен, но в нем есть необходимость, если адресу необходимо дать имя доменного типа. Нужно пройти процедуру регистрации на портале www. noip. com, после чего перейти в категорию Add host и указать IP-системы. После прохождения этой процедуры можно будет получать доступ не только по IP, но и по домену. На этом формирование проекта закончено и можно осуществлять проверку системы на предмет ее работоспособности.
Достоинства микроконтроллера 2560
Ардуино – популярнейшая платформа для реализации различных проектов, подходящая инженерам, которые не хотят программировать «пустые» микроконтроллеры и, в принципе, желают свести общение с программной средой к минимуму.
Но даже у неё в базовой комплектации имеются свои подводные камни, о которых лучше узнать заранее.
Постепенно ставя перед собой более сложные задачи и занимаясь новыми разработками на данном МК, вы со временем столкнетесь с двумя главными проблемами стандартных плат:
- Неоптимальные размеры, не подходящие для удобного их размещения во многих корпусах.
- Недостача в количестве пинов на ввод-вывод данных.
Проблема № 1
Минимизировать занимаемое место крайне легко – достаточно использовать специальные разновидности МК, будь то нано или мини. Здесь есть некоторые особенности, с недостатком памяти, например, на Attiny85, но для простого функционала – это не столь существенно.
Конечно, для более сложных задач можно докупить специальные модули с дополнительным объемом памяти под инструкции, но это полностью нивелирует все плюсы нано, ведь уменьшенный размер будет компенсирован дополнительным слотом под чип и занятым пином. Относится эта проблема не ко всем платам, и всё та же nano способна полностью копировать функционал уно.
Проблема № 2
Менее приятная, но и у неё есть несколько путей для решения:
Как мы видим, оба выхода из ситуации задействуют «костыли», и элегантными их не назовешь. Но это далеко не единственная проблема. Они или работают частично, или нивелируют достоинства системы, что абсолютно недопустимо для сколь-нибудь сложных проектов.
Благо, есть и третий подход, используемый всё чаще, – Ардуино Мега 2560, проекты на которой уже не страдают от обилия этих «костылей». Есть также аналог данной платы, поддерживающий usb-хосты, но давайте сначала разберёмся с основным МК.
Первое, что бросается в глаза при знакомстве с 2560, – внешний вид, ведь она в 1.8 раз длиннее уно, что является необходимым злом, дабы разместить на ней целых 54 порта.
Притом, 15 из них можно использовать в качестве источников ШИМ-сигналов, чтобы регулировать мощность тока или другие параметры системы. Регуляция осуществляется с помощью широтно-импульсных модуляций, а дополнительные 16 портов под вход могут обработать цифровые сигналы и применяться в качестве всё тех же цифровых выходов. В результате, мы получаем более тонкую, длинную и функциональную плату.
Под связь с несколькими видами устройств установлено 4-о UART интерфейсов, на 0, 1, 14, 19 пинах. Притом, один из них направлен под usb с помощью микроконтроллера ATmega8U2, применяемого в качестве замены привычному USB-TTL, который использовался повсеместно в более старых платах.
Но, что важнее, – прошивка располагается в паблик репозитории, а соответственно, доступна для скачивания и модификации любому желающему. Под связь с дисплеями присутствуют SPI и I2C технологии, которые вы также можете применить в своем проекте.