Админ                 

↶Ваш номер телефона Напишите ваш вопрос

Менеджер         

↶Ваш номер телефона Напишите ваш вопрос

Заказать           

↶Ваш номер телефона Напишите ваш вопрос

Консультация 

↶Ваш номер телефона Напишите ваш вопрос

 

 

 

GPS

Назад Управление умным домом

Умный дом на 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 своими руками не построить, но подавляющее большинство повседневных функций home automation реализовать будет достаточно просто.

Как сделать умный дом на Arduino своими руками

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

Обратитесь к нам и наш специалист бесплатно составит смету ➯Заказать услугу

Разработка эскизного проекта

На первом этапе составляется подробный проект будущей системы. При создании системы для собственных дома или квартиры, хозяин выступает и заказчиком, и исполнителем. Соответственно, этот этап включает и составление подробного ТЗ и эскизное проектирование.

Соответственно, разработчику придется решить несколько задач.

Формулировка задания

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

Они описывают:

  1. Основные условия для срабатывания автоматики – триггеры (triggers) в терминах home automation. В рассматриваемой задаче такой триггер один – приближение человека к крыльцу.
  2. Дополнительные условия (conditions). Они задают разрешения на срабатывание триггера и, в большинстве случаев, определяют длительность их действия. Для данной задачи дополнительное условие – темное время. Действительно, включать свет на крыльце днем смысла не имеет. Нет необходимости делать это и когда крыльцо освещено – свет уже включен или задействованы другие источники. Соответственно, дополнительные условия можно задать в нескольких вариантах: наступило темное время суток, и свет на крыльце не включен. Практически полное описание условий, но не учитывает возможность освещения от других источников, освещенность на крыльце ниже порогового значения. Хотя условие и выглядит проще, но учитывает практически все случаи.
  3. Действия (actions). Описывает реакцию системы на триггеры и дополнительные условия. Для текущего примера система должна выполнить единственное действие – включить свет.
  4. Действия в случае отсутствия триггеров и/или невыполнения условий. Здесь необходимо рассматривать 2 случая: ни основные, ни дополнительные условия не были выполнены. Наиболее логичное поведение – бездействие, триггер и условия были выполнены, произошло срабатывание, затем ситуация изменилась (т.н. post-action действия). Поведение проектируемой системы должно выглядеть следующим образом – не включать свет до срабатывания триггера и выполнения условий, выключить после того, как он перестал быть нужен.

Таким образом, результат – подробное описание задания:

  1. Проверять, есть ли у крыльца человек.
  2. Бездействовать, пока его нет.
  3. Если человек подошел – проверить освещенность.
  4. Если она ниже заданной – включить свет.
  5. Проверять, остается ли нужен свет.
  6. Если да – оставаться в текущем состоянии, если нет – выключить свет.

Обратитесь к нам и наш специалист бесплатно составит смету ➯Заказать услугу

Выбор способов реализации алгоритма

На этом этапе определяется набор сенсоров для получения данных (триггеров и условий) и исполнительных механизмов для выполнения действий.

Даже в простейшем рассматриваемом случае возможны несколько вариантов реализации. Например, определять присутствие человека у крыльца можно:

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

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

Еще один обязательный момент, требующий учета на данном этапе – определение обмена данными между устройствами. Здесь также возможны несколько вариантов – обмен по сигнальным проводникам, беспроводная передача сигналов (в этом случае потребуется выбрать соответствующий стандарт, например, BlueTooth, Wi-Fi, ZigBee или др.).

Завершает этап запись алгоритма с учетом принятых решений, например:

  1. Опрашивать проводной ИК-датчик.
  2. Если сигнала нет – ничего не делать.
  3. При появлении сигнала, проверить состояние проводного датчика освещенности.
  4. При наличии сигнала – ничего не делать.
  5. При отсутствии сигнала – выдать на ZigBee хаб команду на включение выключателя по соответствующему адресу (отвечающему за освещение на крыльце).
  6. Опрашивать ИК датчик.
  7. Пока есть сигнал (человек на крыльце) – ничего не делать.
  8. Если сигнала нет – отключить свет, т.е. выдать на ZigBee выключатель команду на отключение.
  9. Вернуться к началу цикла.

Еще один результат этого этапа – перечень необходимого оборудования и материалов. Для сборки системы потребуются:

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

Электрик с 20 летним стажем и богатым опытом

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

Выбор оборудования

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

Выбор контроллера Arduino

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

В список оборудования входят:

Контроллер
Чип
Память (ОЗУ/ПЗУ)
Порты ввода/вывода и интерфейсы
Дополнительно
Due
32-битный Cortex-M3 ARM SAM3U4E,, 84 МГц
64+36Кб/256+256Кб (возможна прямая адресация всего пространства)
54 цифровых IO (некоторые со специальными функциями, например, ШИМ)

12 аналоговых входов (с АЦП)

2 аналоговых входа

Питание контроллера 3.3В
Uno
8-бит ATmega328 или ATmega8U2 (в новой версии), 16 МГц
2Кб/32Кб+1Кб EEPROM
14 цифровых IO (6 могут использоваться как ШИМ)

6 аналоговых входов с АЦП

UART TTL

USB

Разъемы для модулей расширения

 
Leonardo
8-бит ATmega32u4, 16МГц
2.5кБ/32Кб+1Кб EEPROM
20 цифровых IO (7 с функциями ШИМ)

12 аналоговых входов (могут работать как цифровые)

USB

расширения

Встроенная поддержка USB позволяет настраивать видимость при связи с ПК (как клавиатуру, мышь, виртуальный последовательный порт)

Функционально и конструктивно аналогичен Uno

Duemilanove,

Decimila

8-бит ATmega168, 16МГц
1Кб/16Кб+512б EEPROM
В остальном полностью аналогичны Uno на базе ATmega328
Mini
8-бит ATmega168, 16МГц
1Кб/16Кб+512б EEPROM
14 цифровых IO (6 могут использоваться как ШИМ)

6 аналоговых входов с АЦП

Для программирования требуется адаптер MiniUSB

Компактное решение для макетирования

Micro
8-бит ATmega32u4, 16МГц
Компактный контролер, по функциональности и аналогичный Leonardo, для подключения и программирования используется кабель microUSB
Nano
8-бит ATmega168 или ATmega328, 16МГц
Компактный вариант Duemilanove, отличающийся только габаритами и отсутствием разъема для подключения внешнего источника питания
Mega
8-бит ATmega1280, 16МГц
8Кб/128Кб+4Кб EEPROM
54 цифровых IO (14 с функциями ШИМ)

16 аналоговых входов с АЦП

4 порта UART

USB

расширения

 
Mega 2560

Mega ADK

8-бит ATmega2560, 16МГц
Отличаются от Mega увеличенным до 256Кб объемом ПЗУ для хранения программ и реализацией USB-интерфейса на ATMega8U2. В Mega ADK сконфигурирован USB host, который моет работать с другими устройствами, в частности, смарифонами
Pro
8-бит ATmega328, 16МГц (3.3В) или

ATmega168, 8МГц (5В)

2 или 1 Кб/32 или 16 Кб + 1 Кб или 512б EEPROM
14 цифровых IO (6 могут использоваться как ШИМ)

6 аналоговых входов с АЦП

UART TTL

USB

Разъемы для модулей расширения

Разъемы ввода/вывода и интерфейсов не установлены, разработчик может использовать собственные
Pro Mini
Аналогична Mini, но как и в полномасштабной Pro требуется установка разъемов

Внимание! Для работы с платами, не содержащими встроенных USB-интерфейсов применяют адаптеры Adapter Mini USB или USB Serial Light Adapter.

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

  • 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/ официального сайта.

При выборе контроллера необходимо учитывать:

  1. Производительность;
  2. Наличие необходимого количества портов ввода/вывода, цифровых и аналоговых;
  3. Объем памяти для хранения программ и данных (все платы Arduino используют небогатые ресурсы микроконтроллера и не предполагают расширений);
  4. Удобство работы – программирования, отладки программ, установки готового устройства в корпус.

Для решения рассматриваемой задачи с освещением на крыльце вполне достаточно компактным Micro, Nano или Mini, но с базовой Uno работать гораздо удобнее. Кроме того, понадобится плата расширения Xbee Shield для работы c ZigBee устройствами.

Выбор периферии

При выборе датчиков и исполнительных механизмов нет значительных ограничений. Единственное требование – обеспечить совместимость с портами Arduino по уровням сигналов и нагрузке.

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

Разработка принципиальной схемы

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

К сведению! Поменять выводы на этапе разработки программы не сложно – достаточно откорректировать буквально 2 строки кода.

Работа с программным обеспечением

Когда принципиальная схема готова, начинается важнейший этап проектирования – написание программы для контроллера. Для этого необходимо скачать среду разработки 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 2.0 с улучшенной функциональностью, поддержкой Win 10, 32- или 64-разрядных Linux-систем, MacOS 10-14.

Возможности среды разработки Arduino IDE:

  • Создание проектов (скетчей, от англ. sketch – набросок).
  • Их проверка и компиляция для загрузки в контроллер;
  • «Заливка» готового машинного кода в контроллеры;
  • Поддержка всех версий плат;
  • Подключение библиотек, не входящих в комплект поставки.

После установки софта следует проверить работоспособность купленного контроллера и целостность софта.

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

Пошагово процесс выглядит следующим образом:

  1. Подключить плату Arduino Uno (именно на ней остановился выбор для реализации предложенной задачи) кабелем к USB-порту компьютера.
  2. Запустить Arduino IDE.
  3. В среде разработки открыть готовый скетч – в меню File выбрать папку Examples-1.Basic, в ней файл Blink.
  4. Выбрать плату контроллера для работы – меню Tools-Board.
  5. Указать порт для связи с платой (как правило COM3 или другой COM с бОльшим номером). Если этих портов нет, следует проверить, подключена ли плата или установить вручную драйверы.
  6. Откомпилировать скетч через меню Sketch-Verify/Compile или нажатием на соответствующую кнопку в панели инструментов под строкой меню.
  7. Загрузить готовый скетч в контроллер (Sketch-Upload) или нажатием кнопки панели инструментов. На этом этапе можно наблюдать мигание светодиодов Rx и Tx , которое свидетельствует об обмене с ПК.
  8. После окончания загрузки через несколько секунд начнет мигать светодиод на плате Uno. Это говорит о том, что и контроллер и среда разработки полностью работоспособны.

Внимание! Если скетч не загружается, следует нажать кнопку Reset на плате контролера и повторить процедуру загрузки. Аналогичным образом следует поступать перед каждой новой загрузкой, особенно на платах типа Mini.

После проверки можно приступать к разработке собственной программы.

Программирование скетчей

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

Для работы с программой в IDE необходимо:

  1. Создать новый скетч (File-New).
  2. Подключить необходимые библиотеки. Стандартные библиотеки функций входят в комплект поставки, нестандартные нужно разместить в соответствующих папках папки Libraries. После этого их имена станут доступны разработчику в меню Sketch-Import Library. Достаточно выбрать нужные имена, и они будут включены для обработки препроцессором.
  3. В функции setup() прописать все необходимые действия для инициализации системы. Эта функция выполняется один раз перед стартом. Как правило, в ее тексте достаточно ограничиться назначением функций пинам ввода/вывода.
  4. В функции loop() прописать код, реализующий алгоритм автоматизации – опрос сенсоров, анализ условий, выдачу сигналов на исполнительные механизмы. Функция выполняется в бесконечном цикле, операторы прерывания этого цикла не предусмотрены.
  5. Откомпилировать написанный скетч.
  6. Загрузить его в контроллер.

Отличия языка Arduino от стандарта C++

  • Не требуется включения заголовочных файлов (хидеров, файлов с расширением .h)в текст программы, препроцессор добавит их автоматически в соответствии с импортированными для скетча библиотеками.
  • Добавлены предопределенные константы для уровней (HIGH и LOW) и функций выводов портов ввода/вывода (INPUT и OUTPUT).
  • Добавлены функции для работы:
    • c цифровыми портами ввода/вывода pinMode(), digitalWrite(), digitalRead();
    • с аналоговыми пинами analogReference(), analogRead(), analogWrite();
    • дополнительными IO функциями, например, побитного вывода со сдвигом shiftOut();
    • временем mills() – время в мс, micros() время в мкс, delay() – задержка в мс, delayMicroseconds – задержка в мкс;
    • внешними прерываниями attachInterrupt() и detachInterrupt();
    • последовательным портом.
  • В комплект поставки включены библиотеки для сервоприводов (Servo), шаговых двигателей (Steps), EEPROM, SPI-интерфейса.

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

Со всеми платами контролеров и расширений поставляются необходимые библиотеки для работы со всем аппаратным обеспечением. Кроме того, в сети доступны тысячи готовых библиотек разработанных сообществом. Подобрать нужную (с документацией) можно по ссылкам на официальном сайте https://playground.arduino.cc/Main/LibraryList/ и https://www.arduinolibraries.info/ или на GitHub.

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

  1. Создать скетч.
  2. Скачать и подключить библиотеку для работы с Xbee (ZigBee).
  3. Выполнить назначение портов для опроса датчиков в функции setup();
  4. Инициализировать работу с интерфейсом ZigBee в setup();
  5. Прописать опрос датчиков и выдачу команды управления по условиям в 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.

Обратитесь к нам и наш специалист бесплатно составит смету ➯Заказать услугу

В категории материалов: