Содержание
Умный дом на Arduino своими руками
Сегодня наблюдается рост интереса пользователей к внедрению в домах и квартирах если не полноценных систем «умного дома», то некоторых элементов Home Automation (домашней автоматизации).
В связи с этим производители ведут разработки и наращивают выпуск систем различной сложности – от полноценных коробочных решений с использованием ИИ, до комплектов на базе микроконтроллеров, позволяющих быстро решать прикладные задачи различной сложности.
Некоторые из них помогут как сделать первые шаги в разработке, так и реализовать достаточно сложные проекты. Например¸ вполне реальный вариант – умный дом на Arduino своими руками.
Что такое Arduino
Arduino – это полностью открытая программно-аппаратная платформа для создания систем роботизации и автоматизации (в том числе, домашней) различной сложности. Ее основное отличие – простота в использовании, возможность освоения и создания вполне работоспособных проектов даже без глубоких знаний электроники и программирования.
Аппаратные средства Arduino позволяют получить сигналы от сенсоров (например, уровень температуры, наличие света, нажатие на кнопку) или более сложных систем, таких как html-страницы.
Программный код обрабатывает их и выдает сигналы на исполнительные механизмы, например, включает сервопривод, замыкает контакты реле или сервисы, способные выполнять весьма сложные операции – от отправки сообщений на e-mail до размещения контента на страницах.
Основными преимуществами платформы являются:
- Полная открытость. Это касается как аппаратных модулей (приводятся схемы и для большинства – печатные платы), так и программного обеспечения. В результате сторонние разработчики имеют возможность создавать полностью совместимые устройства. Сообществом создано множество программных проектов и модулей для решения различных задач автоматизации. Все они находятся в свободном доступе, так что подобрать нужный софт и адаптировать его под собственные потребности труда не составляет. Существует достаточно большое число и российских проектов, которые упоминаются на страницах официального сайта.
- Широкий выбор. В ассортименте предлагаемых продуктов – решения для любого уровня, от плат на 8-битных контроллерах с минимумом функциональных возможностей для начальных шагов и простых проектов, до мощных контроллеров на 32-битных чипах. Возможности подбора нужной конфигурации расширяет богатый ассортимент собственных модулей расширения и аппаратных продуктов сторонних разработчиков. Кроме того, приобрести продукты Arduino можно практически в любом виде – от печатной платы с набором компонентов для сборки своими руками, до готовых контроллеров и Starter Kits – специализированных наборов.
- Кроссплатформенность. Софт Arduino работает под всеми ОС для ПК – Windows, Linux, MacOS, сохраняя полную функциональность, а готовые программные наработки вообще являются платформенно независимыми.
- Гибкость подхода. На платах Arduino реализован весь необходимый функционал, – от стабилизатора питания и программатора для контроллера, до набора портов ввода/вывода и конкретных интерфейсов, например BlueTooth, Wi-Fi, управления двигателями и пр. Однако представленная система не ограничивает разработчика в выборе, например, прошивку микроконтроллера можно выполнить не только при помощи штатных средств, но также и с помощью совместимости программаторов других производителей, а набор портов и интерфейсов легко расширить.
- Простота освоения. Прозрачные схемотехнические решения, качественная документация позволяют работать с модулями платформами без серьезного опыта и знаний электроники. Этому способствует и программная среда, требующая лишь базовых знаний C++. Более того, проект предлагает и средства графического проектирования, освоить которые могут даже дети и подростки.
- Стоимость. Микроконтроллеры Arduino на сегодняшний день являются одним из самых более доступных в ценовой среде вариантов среди множественных более модифицированных аналогов – даже самый мощный микроконтроллер обойдется покупателю не дороже 50 долларов. На рынке можно найти множество разнообразных расширений и компонентов, которые выпускаются различными производителями, в том числе и азиатскими, которые при достаточно достойном качестве изготовления стоят весьма недорого.
Как сделать умный дом на Arduino своими руками
Создание умного дома на Arduino своими руками мало чем отличается от разработки и реализации любой другой электронной системы. Процесс включает несколько обязательных этапов.
Разработка эскизного проекта
Соответственно, разработчику придется решить несколько задач.
Формулировка задания
Задание для проекта должно быть определено максимально точно и подробно. Например, решается одна из частных home automation – включить освещение крыльца, когда в темное время к нему приближается человек. Это общее описание задачи нуждается в более конкретных формулировках для проектирования.
- Основные условия для срабатывания автоматики – триггеры (triggers) в терминах home automation. В рассматриваемой задаче такой триггер один – приближение человека к крыльцу.
- Дополнительные условия (conditions). Они задают разрешения на срабатывание триггера и, в большинстве случаев, определяют длительность их действия. Для данной задачи дополнительное условие – темное время. Действительно, включать свет на крыльце днем смысла не имеет. Нет необходимости делать это и когда крыльцо освещено – свет уже включен или задействованы другие источники. Соответственно, дополнительные условия можно задать в нескольких вариантах: наступило темное время суток, и свет на крыльце не включен. Практически полное описание условий, но не учитывает возможность освещения от других источников, освещенность на крыльце ниже порогового значения. Хотя условие и выглядит проще, но учитывает практически все случаи.
- Действия (actions). Описывает реакцию системы на триггеры и дополнительные условия. Для текущего примера система должна выполнить единственное действие – включить свет.
- Действия в случае отсутствия триггеров и/или невыполнения условий. Здесь необходимо рассматривать 2 случая: ни основные, ни дополнительные условия не были выполнены. Наиболее логичное поведение – бездействие, триггер и условия были выполнены, произошло срабатывание, затем ситуация изменилась (т.н. post-action действия). Поведение проектируемой системы должно выглядеть следующим образом – не включать свет до срабатывания триггера и выполнения условий, выключить после того, как он перестал быть нужен.
Таким образом, результат – подробное описание задания:
- Проверять, есть ли у крыльца человек.
- Бездействовать, пока его нет.
- Если человек подошел – проверить освещенность.
- Если она ниже заданной – включить свет.
- Проверять, остается ли нужен свет.
- Если да – оставаться в текущем состоянии, если нет – выключить свет.
Выбор способов реализации алгоритма
На этом этапе определяется набор сенсоров для получения данных (триггеров и условий) и исполнительных механизмов для выполнения действий.
Даже в простейшем рассматриваемом случае возможны несколько вариантов реализации. Например, определять присутствие человека у крыльца можно:
- по сигналу стандартного инфракрасного датчика;
- разместив под площадкой у крыльца датчики, реагирующие на давление (например, тензодатчики на основе пьезоффекта);
- получая с работающего в квартире Wi-Fi-роутера сигнал о подключении нового/конкретного абонента к домашней беспроводной сети и т.д.
Аналогичным образом рассматриваются ситуации с определением уровня освещенности и включением света на крыльце.
Завершает этап запись алгоритма с учетом принятых решений, например:
- Опрашивать проводной ИК-датчик.
- Если сигнала нет – ничего не делать.
- При появлении сигнала, проверить состояние проводного датчика освещенности.
- При наличии сигнала – ничего не делать.
- При отсутствии сигнала – выдать на ZigBee хаб команду на включение выключателя по соответствующему адресу (отвечающему за освещение на крыльце).
- Опрашивать ИК датчик.
- Пока есть сигнал (человек на крыльце) – ничего не делать.
- Если сигнала нет – отключить свет, т.е. выдать на ZigBee выключатель команду на отключение.
- Вернуться к началу цикла.
Еще один результат этого этапа – перечень необходимого оборудования и материалов. Для сборки системы потребуются:
- Контроллер с возможностью опроса проводных каналов связи (минимум, двух, для датчика освещенности и ИК-датчика).
- ZigBee выключатель.
- ZigBee хаб (без него моно обойтись, если контроллер имеет интерфейс для прямого управления ZigBee устройствами).
Выбор оборудования
После составления структурной схемы проекта можно приступать к разработке принципиальной, которая, прежде всего, включает выбор оборудования.
Выбор контроллера Arduino
Поскольку базовая платформа – Arduino, определена ранее, остается выбрать конкретную модель контроллера и, при необходимости, расширение. Задача не сложная, поскольку ассортимент устройств достаточно обширен и включает модели для большинства практических задач.
В список оборудования входят:
12 аналоговых входов (с АЦП)
2 аналоговых входа
6 аналоговых входов с АЦП
Разъемы для модулей расширения
12 аналоговых входов (могут работать как цифровые)
Функционально и конструктивно аналогичен Uno
6 аналоговых входов с АЦП
Компактное решение для макетирования
16 аналоговых входов с АЦП
ATmega168, 8МГц (5В)
6 аналоговых входов с АЦП
Разъемы для модулей расширения
Кроме стандартных контроллеров разработаны и поставляются специализированные, с дополнительными интерфейсами на борту:
- Yun – устройство по возможностям (чип, выводы) аналогичное Leonardo, но со встроенным Wi-Fi модулем на базе Atheros AR9331.
- BT – платформа со встроенным BlueTooth интерфейсом.
- Fio – контроллер, аналогичный Uno по функциональности, но без установленных разъемов на портах ввода/вывода. Предназначен для работы в беспроводной сети ZigBee.
- Serial – функционально аналогична базовой Uno с интегрированным стандартным последовательным интерфейсом RS232.
Кроме того, для работы с различными стандартами связи и устройствами можно использовать стандартные платы расширения:
- Wi-Fi с поддержкой протокола 802.11 b/g;
- Xbee Shield, с интегрированным модулем Maxstream Xbee Zigbee, поддерживающим до 32 устройств ZigBee (35/90 м в помещении и на открытом пространстве соответственно);
- Ethernet Shield – с установленным портом стандарта Ethernet 10/100 Base-T для проводного сетевого соединения;
- Motor Shield – с портами для управления двигателями постоянного тока и получения сигналов обратной связи от датчиков положения.
При необходимости можно найти и другие конфигурации полностью совместимых контроллеров, выпускаемые сторонними разработчиками. Полный список одобренного оборудования размещен на странице https://playground.arduino.cc/Main/SimilarBoards/ официального сайта.
При выборе контроллера необходимо учитывать:
- Производительность;
- Наличие необходимого количества портов ввода/вывода, цифровых и аналоговых;
- Объем памяти для хранения программ и данных (все платы Arduino используют небогатые ресурсы микроконтроллера и не предполагают расширений);
- Удобство работы – программирования, отладки программ, установки готового устройства в корпус.
Выбор периферии
При выборе датчиков и исполнительных механизмов нет значительных ограничений. Единственное требование – обеспечить совместимость с портами Arduino по уровням сигналов и нагрузке.
Однако, при желании, и это требование легко обходится за счет сборки собственных или использования готовых плат согласования.
Разработка принципиальной схемы
После покупки контроллера и периферийных устройств следует начертить принципиальную схему системы автоматизации. С платами Arduino это труда не составит, главная задача разработчика – выбрать пины портов ввода/вывода для подключения – это важная информация для написания программы.
Работа с программным обеспечением
Когда принципиальная схема готова, начинается важнейший этап проектирования – написание программы для контроллера. Для этого необходимо скачать среду разработки Arduino IDE.
Загрузка, установка, проверка ПО
Программное обеспечение скачивают со страницы официального сайта https://www.arduino.cc/en/software.
Стабильная версия – Arduino IDE 1.8.13 поддерживает:
- Windows 7 и более новые версии ОС, х86 и х64;
- MacOS 10.10 и новее;
- 32- и 64-битные версии Linux и Linux ARM.
Для работы под Windows можно скачать установщик или ZIP-архив софта. Использовать установщик для неопытных пользователей предпочтительнее – установка драйверов будет произведена автоматически вместе с установкой программы.
При использовании ZIP-архива достаточно развернуть программу на жестком диске ПК и запустить IDE. В этом случае программа также попытается установить драйвера, но, возможно, придется обновить их вручную в Панели управления. Все необходимые .inf файлы входят в комплект поставки.
Возможности среды разработки Arduino IDE:
- Создание проектов (скетчей, от англ.sketch – набросок).
- Их проверка и компиляция для загрузки в контроллер;
- «Заливка» готового машинного кода в контроллеры;
- Поддержка всех версий плат;
- Подключение библиотек, не входящих в комплект поставки.
Для этого достаточно выполнить входящий в комплект поставки простейший скетч с управлением светоиодом.
Пошагово процесс выглядит следующим образом:
- Подключить плату Arduino Uno (именно на ней остановился выбор для реализации предложенной задачи) кабелем к USB-порту компьютера.
- Запустить Arduino IDE.
- В среде разработки открыть готовый скетч – в меню File выбрать папку Examples-1.Basic, в ней файл Blink.
- Выбрать плату контроллера для работы – меню Tools-Board.
- Указать порт для связи с платой (как правило COM3 или другой COM с бОльшим номером). Если этих портов нет, следует проверить, подключена ли плата или установить вручную драйверы.
- Откомпилировать скетч через меню Sketch-Verify/Compile или нажатием на соответствующую кнопку в панели инструментов под строкой меню.
- Загрузить готовый скетч в контроллер (Sketch-Upload) или нажатием кнопки панели инструментов. На этом этапе можно наблюдать мигание светодиодов Rx и Tx , которое свидетельствует об обмене с ПК.
- После окончания загрузки через несколько секунд начнет мигать светодиод на плате Uno. Это говорит о том, что и контроллер и среда разработки полностью работоспособны.
После проверки можно приступать к разработке собственной программы.
Программирование скетчей
Программирование скетча можно выполнить непосредственно в редакторе среды разработки или в любом другом удобном текстовом редакторе (в последнем случае не забыть сохранить работу в файле .ino). Встроенный язык программирования Arduino является клоном языка C++ с некоторыми упрощениями и дополнительными функциями и библиотеками для обращения к функционалу контроллера.
Для работы с программой в IDE необходимо:
- Создать новый скетч (File-New).
- Подключить необходимые библиотеки. Стандартные библиотеки функций входят в комплект поставки, нестандартные нужно разместить в соответствующих папках папки Libraries. После этого их имена станут доступны разработчику в меню Sketch-Import Library. Достаточно выбрать нужные имена, и они будут включены для обработки препроцессором.
- В функции setup() прописать все необходимые действия для инициализации системы. Эта функция выполняется один раз перед стартом. Как правило, в ее тексте достаточно ограничиться назначением функций пинам ввода/вывода.
- В функции loop() прописать код, реализующий алгоритм автоматизации – опрос сенсоров, анализ условий, выдачу сигналов на исполнительные механизмы. Функция выполняется в бесконечном цикле, операторы прерывания этого цикла не предусмотрены.
- Откомпилировать написанный скетч.
- Загрузить его в контроллер.
Отличия языка Arduino от стандарта C++
- Не требуется включения заголовочных файлов (хидеров, файлов с расширением .h)в текст программы, препроцессор добавит их автоматически в соответствии с импортированными для скетча библиотеками.
- Добавлены предопределенные константы для уровней (HIGH и LOW) и функций выводов портов ввода/вывода (INPUT и OUTPUT).
- Добавлены функции для работы:
- c цифровыми портами ввода/вывода pinMode(), digitalWrite(), digitalRead();
- с аналоговыми пинами analogReference(), analogRead(), analogWrite();
- дополнительными IO функциями, например, побитного вывода со сдвигом shiftOut();
- временем mills() – время в мс, micros() время в мкс, delay() – задержка в мс, delayMicroseconds – задержка в мкс;
- внешними прерываниями attachInterrupt() и detachInterrupt();
- последовательным портом.
В остальном полностью поддерживается стандарт языка, включая директивы компилятора, константы и типы данных, операторы (в т.ч. унарные), функции.
Со всеми платами контролеров и расширений поставляются необходимые библиотеки для работы со всем аппаратным обеспечением. Кроме того, в сети доступны тысячи готовых библиотек разработанных сообществом. Подобрать нужную (с документацией) можно по ссылкам на официальном сайте https://playground.arduino.cc/Main/LibraryList/ и https://www.arduinolibraries.info/ или на GitHub.
Соответственно, для реализации поставленной задачи разработчику нужно:
- Создать скетч.
- Скачать и подключить библиотеку для работы с Xbee (ZigBee).
- Выполнить назначение портов для опроса датчиков в функции setup();
- Инициализировать работу с интерфейсом ZigBee в setup();
- Прописать опрос датчиков и выдачу команды управления по условиям в loop().
Работать с Arduino можно и без установки IDE. Для этого удобно использовать:
- Web-редактор на официальном сайте. Полностью поддерживает синтаксис (с подсветкой), включает все необходимые для работы библиотеки. Альтернативный вариант – любой тестовый редактор.
- Компилятор avr-gcc.
- Программатор, поддерживающий чипы микроконтроллеров, используемых на платах Arduino,
Для пользователей, далеких от программирования на любых языках, созданы альтернативные варианты разработки проектов – визуальные. Среди наиболее известных:
- Scratch (http://s4a.cat);
- Snap (http://snap4arduino.rocks/);
- Ardublock (http://ardublock.com);
- XOD (https://xod.io/).
Таким образом, умный дом на Arduino своими руками – решение, доступное практически каждому. Ассортимент аппаратных средств позволяет решать задачи от простейших до максимально сложных (в том числе, за счет взаимодействия нескольких контролеров).
Способствует этому и накопленный сообществом богатый опыт, и полная открытость проекта, благодаря которой можно найти готовые программные разработки для большинства процессов home automation.
Система nooLite: умный свет с беспроводными выключателями
Есть мнение, что «умный дом» — это нечто дорогое и бесполезное, которое планируется ещё на стадии ремонта. Комплекс устройств от nooLite разрушит этот стереотип.
Семейство nooLite — это система управления освещением и бытовыми приборами по радиоканалу. Забудьте про перфоратор, провода и дробление стен: теперь управление светом можно перенести в удобное место. Беспроводная технология существенно упростит процесс и сэкономит ваше время.
В самом простом случае система состоит из одного пульта и силового блока. Пульт передаёт по радиоканалу команду на силовой блок, который включает/выключает или регулирует яркость освещения. Все устройства общаются между собой на радиочастоте 433 МГц. Радиус действия сигнала между модулями доходит до 50 метров. Этого достаточно для управления устройствами в квартире или частном доме.
В системе также может участвовать контроллер: сетевой шлюз, подключенный к домашнему роутеру Wi-Fi, или USB-адаптер для компьютера. Они позволят управлять всей системой c ноутбука, планшета или мобильного телефона.
Зачем мне умный свет
Итак, с nooLite можно очень гибко управлять светом. Но может возникнуть резонный вопрос — зачем? Вы наверняка сталкивались с одним из сценариев, в котором беспроводная система nooLite будет очень уместна:
- Когда купили новый шкаф, его установке мешает выключатель, а портить стены для переноса проводки — не вариант.
- Если ребёнок не может заснуть без света, а каждый раз после этого вставать и идти выключать свет лень.
- Если хочется управлять светом, лёжа в кровати с любимой книгой.
- Чтобы перед уходом из дома выключать свет во всей квартире одной кнопкой.
- Чтобы включать уличное освещение из любого места на участке.
- Чтобы управлять освещением и другой электрикой с компьютера, смартфона или планшета.
- Когда источников света много, а управлять ими хочется в группах.
- Если маленький ребёнок ещё не дотягивается до настенного выключателя, а хочется дать ему возможность включать свет.
- Когда светом в ванной хочется рулить дополнительно из самой ванной.
Подключение за 20 минут
Установка системы nooLite не сложнее замены простого клавишного выключателя. Рассмотрим внедрение nooLite на банальной проблеме в быту: новая мебель перекрывает доступ к стационарному выключателю. Необходимо перенести выключатель в другое место.
- Установите силовой блок в коробку от существующего выключателя, в стакане люстры или за подвесным потолком. Именно он будет управлять подключённой нагрузкой. Старый выключатель можно заменить на заглушку, если хочется.
- Закрепите пульт-выключатель в новом месте: на стене напротив или где удобнее. Он будет передавать команды включения-выключения по воздуху. Дальности радиосигнала хватает, чтобы покрыть всю квартиру.
- Проведите несложную процедуру привязки пульта к силовому блоку нажатием одной сервисной кнопки.
Вот и всё, система готова к работе, и для этого не понадобилось менять существующую проводку!
Управление с телефона
Добавьте к системе Ethernet-шлюз, и вы подружите nooLite со смартфоном. Приложение nooLite Home Control для Android и iOS позволит комфортно управлять, мониторить и задавать сценарии работы освещения с любимого телефона.
Совместимость с Arduino и Raspberry Pi
Для разработчиков и любителей DIY-электроники в линейке девайсов nooLite предусмотрен модуль-приёмопередатчик. Адаптер подружит беспроводные устройства nooLite c управляющими платами Arduino и STM32. А если вы обладатель одноплатного компьютера Raspberry Pi — воспользуйтесь USB-адаптером и управляйте системой nooLite на языке Python.
Такой союз позволит запрограммировать систему на событие по показаниям датчиков и сенсоров: например, при наступлении темноты включать свет у калитки, или регулировать отопление при изменении температуры. Вам остаётся только выбрать управляющую плату и язык программирования.
Из чего состоит система nooLite
В системе nooLite есть пульты, силовые блоки и контроллеры. Вы запросто можете ограничиться лишь парой элементов. А можете добавлять новые узлы по мере надобности, в течение нескольких лет. Все элементы системы совместимы между собой: ничто не помешает вам заменить силовой блок на более мощный, не меняя пультов управления.
Пульты
Радиопульт дистанционно управляет силовыми блоками и внешне напоминает обычный выключатель, который может быть размещен в любом удобном месте без необходимости прокладки проводов. Пульты питаются от батарейки, которая служит минимум 3 года.
В системе nooLite также есть встраиваемые выключатели, которые сделают ваш стационарный домашний выключатель радиопультом, и пульты в виде брелока, которые можно повесить к связке ключей и носить с собой.
Беспроводной пульт можно разместить в удобном для себя месте:
- на стене;
- у прикроватной тумбы;
- на корпусе дивана с невидимой стороны;
- внутри ванной комнаты;
- на кухонном фартуке.
Силовые блоки
Силовой блок — это исполняющее устройство, которое получает команды от пульта или контроллера и управляет подключённой нагрузкой. Силовые блоки могут управлять практически любой нагрузкой, которая укладывается в номинальную мощность блока:
- лампы накаливания;
- галогенные лампы;
- энергосберегающие лампы;
- светодиодные светильники;
- люминесцентные лампы;
- светодиодные ленты;
- нагреватели, электродвигатели, жалюзи, кондиционеры и вентиляторы.
Помимо мощности нагрузки силовые блоки отличаются своим исполнением и возможностями:
- домашние и уличные с защитой IP65, которые не боятся дождя и снега;
- релейные (вкл. / выкл.) и диммируемые с регулировкой яркости;
- для осветительных приборов с питанием 220 В и светодиодных лент 12/24 В;
- многоканальные, поддерживающие до 10 управляемых линий.
Контролеры
Для расширения системы используйте контроллеры, которые помогут управлять освещением с помощью компьютера, мобильного телефона или Arduino. Кто знает, может, задумка перенести выключатель станет первым шагом в превращении вашего дома в умный.
Объединить управление всей системой nooLite можно следующими девайсами:
- подключает систему nooLite к домашней сети, чтобы наблюдать статус и управлять блоками через приложение для смартфонов и планшетов на Android/iOS. Для работы мобильное устройство должно быть подключёно по Wi-Fi к локальной сети, в которой находится контроллер. Маршрутизатор позволит организовать управление системой nooLite на больших площадях, где нет возможности использовать обычные пульты‑радиопередатчики из-за недостаточной дальности действия. даёт возможность принимать и передавать управляющие команды устройствам системы nooLite при помощи компьютера.
- Arduino-адаптер — приёмопередатчик для коммуникации модулей nooLite с управляющими платформами по интерфейсу UART. Для этого подойдёт контроллер Arduino или USB-UART преобразователь. Но это уже другая история.
Где взять nooLite
Купить устройства nooLite можно на нашем сайте. Амперка является официальным дистрибьютором nooLite в России. Мы также даём техническую поддержку по продукции nooLite: подскажем какой модуль нужен конкретно в вашем случае. Приобщайтесь к технологиям умного дома с нами!
https://smarthomegadget.ru/umnyj-dom-na-arduino-svoimi-rukami/
https://amperka.ru/page/what-is-noolite