Модули и решения «умного дома» на Ардуино
Основным элементом умного дома является центральная плата микроконтроллера. Две и более соединенных между собой плат, отвечают за взаимодействие всех элементов системы.
Существует три основных микроконтроллера в системе:
Arduino UNO – средних размеров плата с собственным процессором и памятью. Основа — микроконтроллер ATmega328. В наличии 14 цифровых входов/выходов (6 из них можно использовать как ШИМ выводы), 6 аналоговых входов, кварцевый резонатор 16 МГц, USB-порт (на некоторых платах USB-B), разъем для внутрисхемного программирования, кнопка RESET. Флэш-память – 32 Кб, оперативная память (SRAM) – 2 Кб, энергонезависимая память (EEPROM) – 1 Кб.
Arduino UNO
Arduino NANO – плата минимальных габаритов с микроконтроллером ATmega328. Отличие от UNO – компактность, за счет используемого типа контактных площадок – так называемого «гребня из ножек».
Arduino Nano
Arduino MEGA – больших размеров плата с микроконтроллером ATMega 2560. Тактовая частота 16 МГц (как и в UNO), цифровых пинов 54 вместо 14, а аналоговых 16, вместо 6. Флэш-память – 256 Кб, SRAM – 8 Кб, EEPROM – 4.
Arduino Mega
Arduino UNO – самая распространённая плата, так как с ней проще работать в плане монтажных работ. Плата NANO меньше в размерах и компактнее – это позволяет разместить ее в любом уголке умного дома. MEGA используется для сложных задач.
Сейчас на рынке представлено 3 поколение плат (R3) Ардуино. Обычно, при покупке платы, в комплект входит обучающий набор для собирания StarterKit, содержащий:
- Шаговый двигатель.
- Манипулятор управления.
- Электросхематическое реле SRD-05VDC-SL-C 5 В.
- Беспаечная плата для макета MB-102.
- Модуль с картой доступа и и двумя метками.
- Звуковой датчик LM393.
- Датчик с замером уровня жидкости.
- Два простейших устройства отображения цифровой информации.
- LCD-дисплей для вывода множества символов.
- LED-матрица ТС15-11GWA.
- Трехцветный RGB-модуль.
- Температурный датчик и измеритель влажности DHT11.
- Модуль риал тайм DS1302.
- Сервопривод SG-90.
- ИК-Пульт ДУ.
- Матрица клавиатуры на 16 кнопок.
- Микросхема 74HC595N сдвиговый регистр для получения дополнительных выходов.
- Основные небольшие компоненты электроники для составления схемы.
Можно найти и более укомплектованный набор для создания своими руками умного дома на Ардуино с нуля. А для реализации иного проекта, кроме элементов обучающего комплекта, понадобятся дополнительные вещи и модули.
Сенсоры и датчики
Чтобы контролировать температуру и влажность в доме и в подвальном помещении, потребуется датчик измерения температуры и влажности. В конструкторе умного дома это плата, соединяющая в себе датчики температуры, влажности и LCD дисплей для вывода данных.
Плата дополняется совместимыми датчиками движения или иными PIR-сенсорами, которые определяют присутствие или отсутствие человека в зоне действия, и привязывается через реле к освещению.
Датчик Arduino
Газовый датчик позволит быстро отреагировать на задымленность, углекислоту или утечку газа, и позволит при подключении к схеме, автоматически включить вытяжку.
Газовый датчик Arduino
Реле
Компонент схемы «Реле» соединяет друг с другом электрические цепи с разными параметрами. Реле включает и выключает внешние устройства с помощью размыкания и замыкания электрической цепи, в которой они находятся. С помощью данного модуля, управление освещением происходит также, если бы человек стоял и самостоятельно переключал тумблер.
Реле Arduino
Светодиоды могут указывать состояние, в котором реле находится в данным момент времени. Например, красный – освещение выключено, зеленый – освещение есть. Схема подключение к лампе выглядит так.
Для более крупного проекта лучше применять шину реле, например, восьмиканальный модуль реле 5V.
Контроллер
В качестве контроллера выступает плата Arduino UNO. Для монтажа необходимо знать:
описание элементов;
распиновку платы;
принципиальную схему работы платы;
распиновку микроконтролеера ATMega 328.
Программная настройка
Программирование подключенных элементов Ардуино происходит в редакторе IDE. Скачать его можно с официального сайта. Для программирования можно использовать готовые библиотеки.
https://youtube.com/watch?v=OsXFswotVNI
Или воспользоваться готовым скетч решением Ardublock – графический язык программирования, встраиваемый в IDE. По сути, вам нужно только скачать и установить ПО, а затем использовать блоки для создания схемы.
https://youtube.com/watch?v=jVhLUIBYWL8
С чего начать работу с Ардуино
Если вы делаете первые шаги в мире Ардуино, то советуем вам заранее приготовиться к двойному потоку знаний. Во-первых, вам придется разобраться с тем, что такое контроллер Arduino, какие устройства можно к нему подключить и как это сделать. Потребуется разобраться с основами электроники. Во-вторых, придется научиться навыкам программирования в Arduino. Для профессиональной работы нужны знания C++, для начинающих доступны многочисленные графические среды с блочным программированием. Например, mBlock или ArduBlock. При отсутствии реальной платы можно воспользоваться одним из эмуляторов ардуино.
Все это потребует и времени, и знаний, но результатом станет удивительное ощущение восторга от сделанных своими руками умных устройств
Счастья от того, что вы стали почти волшебником, приближаясь шаг за шагом к вершинам технического мастерства. Крайне важно, чтобы теория сочеталась с практикой и вы как можно быстрее переходили от чтения статей к созданию реальных устройств
Дистанционное управление «умным» домом
Для подключения платы к интернету, понадобится:
- Wi-Fi-адаптер, настроенный на прием и передачу сигнала через маршрутизатор;
- или подключенный через Ethernet кабель Wi-Fi роутер.
Также, есть вариант дистанционного управления по блютуз. Соответственно, к плате должен быть подключен Bluetooth модуль.
Есть несколько вариантов управления умным домом Arduino: с помощью приложения для смартфона или через веб. Рассмотрим каждое подробнее.
Приложения управления
Так как данная система-конструктор – не закрытая экосистема, то и приложений, реализованных для нее очень много. Они отличаются друг от друга не только интерфейсом, но и выполнением различных задач.
Blynk
Приложение на андроид и iOS с отличным дизайном, позволяет разрабатывать проекты, имеющие напрямую доступ к триггеру событий, на плате Ардуино. Но для работы приложения нужно интернет подключение, иначе взаимодействовать с ним не возможно.
Virtuino
Крутое бесплатное приложение на Android, позволяющее совмещать проекты в одно целое и управлять с помощью Wi-Fi или Bluetooth сразу несколькими платами.
Разрешает создавать визуальные интерфейсы для светодиодов, переключателей, счетчиков, приборов аналоговой схематехники. В нем есть учебные материалы и библиотека знаний о процессе работы с системой.
Bluino Loader – Arduino IDE
Приложение для телефона, представляет собой программную среду для кодирования Arduino. С его помощью можно быстро и легко скомпилировать код в файл, а затем отправить по OTG-переходнику на плату.
Arduino Bluetooth Control
Приложение контролирует контакты Arduino и управляет основными функциями по Блютузу. Но, программа не направлена на удаленное управление, только мониторинг.
RemoteXY: Arduino Control
С помощью приложения пользователь может создать свой собственный интерфейс управления платой. Подключение происходит с помощью Wi-Fi, Блютуз или интернет, через облачный сервер.
Bluetooth Controller 8 Lamp
Созданное с помощью Bluetooth-модулей HC-05, HC-06 и HC-07 приложение, обеспечивает восьмиканальный контроль. Таким способом достигается контроль и регулирование работы Ардуино, в соответствии с каждым из 8 светодиодов.
BT Voice Control for Arduino
Приложение специально заточено под дистанционное управление данными с ультразвукового датчика, подключенного по блютуз через Arduino. Реализуется подключения через модуль HC-05.
Подключившись, ультразвуковой датчик сможет передавать информацию о расстоянии до объекта, которая отобразится в интерфейсе приложения на телефоне.
IoT Wi-Fi контроллер
Приложение с интерфейсом, информирующем о конфигурации каждого входа/выхода в плате Arduino. В утилите можно переключать в реальном времени GPIO и показывать значение АЦП.
Веб-клиент
Управлять удаленно платой умного дома можно, разместив получение и обработку данных умного дома на веб-сервере. Естественно, сервер для умного дома Ардуино нужно создавать самостоятельно.
Для этих целей понадобится Arduino Ethernet Shield – сетевое расширение для пинов Ардуино Уно, позволяющее добавить разъем RJ-45 для подключения к сети.
При удаленном подключении, необходимо обеспечить внешнее питание платы не от USB.
Затем, подключите по USB плату к компьютеру, а по Ethernet плату к роутеру, которой раздает интернет компьютеру. При правильном установлении соединения, вы увидите зеленый свечение на порту.
После этого, нужно использовать библиотеки шилдов Ethernet и в среде разработки IDE написать код для создания сервера и отправки данных на сервер. Пример самодельного сервера неплохо описан в данной инструкции.
https://youtube.com/watch?v=ByvjWLtpL6o
Уведомления по SMS
С помощью подключаемой библиотеки GSM в Arduino IDE можно:
- Работать с голосовыми вызовами.
- Получать и отправлять СМС.
- Подключаться к Интернету через GPRS.
Работает схема через специальную плату расширения GSM, содержащую специальный модем.
О создании универсальной сигнализации на Arduino, с отправкой СМС уведомления на смартфон можно узнать из соответствующей видеоинструкции.
https://youtube.com/watch?v=WbtQaFot78E
Особенности аппаратуры
Решая, с чего начать стоит разобраться в нюансах аппаратуры. Узнать больше информации можно из видео.
Такая плата представляет собой простой микроконтроллер AVR, который прошивается бутлоадером. Он имеет USB-UART порт.
Микроконтроллер представляет собой устройство, построенное на одной схеме.
Именно в этой части установлена разработанная программа.
Датчики применяются самые разнообразные: температуры, давления, освещения и ускорения.
В качестве механизмов индикации могут применяться как простые детали, в виде пищалок и светодиодов, так и сложные, как графические дисплеи.
Также применяются исполнительные приспособления: клапаны, реле, моторчики. С некоторыми элементами соединение выполняется при помощи соединительных проводов.
А для некоторых механизмов необходимы переходные устройства.
Процесс сборки
Первый шаг – припаять 16-контактные штыревые разъемы на Аrduino display. Затем вы можете использовать либо 16-контактный разъем для подключения к Ардуино, либо просто использовать разъем «женщина-женщина». Если вы впервые подключаетесь к микроконтроллеру, проще всего использовать макет.
Исходные соединения для светодиодного экрана и Arduino
Первое, что вам нужно сделать, прежде чем работать с жидкокристаллическим дисплеем, – проверить его. Для этого выполните соединения, как показано на диаграмме выше.
- Подключите контакт 15 на мониторе к контакту 5V от Arduino 128х64 lcd spi.
- Затем подключите вывод 16 на устройстве к выходу GND.
Эти контакты используются для питания подсветки ЖК-дисплея. Затем вам нужно настроить логические операции для устройства.
- Для этого подключите вывод 1 на мониторе к выходу GND Arduino. Затем подключите контакт 2 на экране к выходу 5V Ардуино.
- Затем вам нужно настроить потенциометр регулировки контрастности.
Возьмите потенциометр 10K и подключите первую клемму к выходу 5V Arduino, а второй – к контакту 3 и третьему терминалу к выходу GND.
Затем включите микропроцессор. Вы заметите, что подсветка на ЖК-дисплее включена. Кроме того, когда вы поворачиваете ручку на потенциометре, блоки символов на ЖК-дисплее становятся яркими/тусклыми. Посмотрите картинку ниже, чтобы узнать, о чем я говорю. Если монитор отображает то, что показано на фотографии ниже, это означает, что ваш экран настроен правильно! Если вы не смогли этого достичь, проверьте свои соединения и потенциометр.
Регулировка контрастности на устройстве
Теперь нам нужно подключить линии передачи данных и другие контакты, которые работают с экраном. Ознакомьтесь с приведенной ниже схемой подключения.
Конечные соединения между Arduino, потенциометром и устройством
Начнем с подключения контрольных проводов для ЖК-дисплея. Подключите контакт 5 (RW) монитора к контакту GND от Arduino. Этот контакт не используется и служит для чтения/записи. Затем подключите контакт 4 (RS) экрана к цифровому выходу 7 Arduino. Штырек RS используется для указания на ЖК-дисплее, отправляем ли мы данные или команды (чтобы изменить положение курсора).
Затем подключите контакт 6 (EN) ЖК-дисплея к цифровому выходу Arduino 8. EN – это контактное гнездо на устройстве, оно используется, чтобы сообщить монитору, что данные готовы для чтения.
Затем мы должны подключить четыре вывода данных на устройстве. Подсоедините контакт 14 (DB7) экрана к цифровому выступу 12 Arduino. Затем подключите контакт 13 (DB6) монитора к цифровому выходу 11 Arduino. Затем вывод 12 на мониторе (DB5) на цифровой вывод 10, затем Вывод LCD № 11 (DB4) на цифровой вывод 9.
Вот и все, вы закончили подключать ЖК-дисплей к Arduino. Вы заметите, что между управляющими выводами и выводами данных на ЖК-дисплее есть четыре несвязанных контакта, как показано ниже.
Паяные 16-контактные разъемы
Самые простые проекты на Ардуино
Вот вы изучили документацию, слегка разобрались в синтаксисе и даже глянули несколько алгоритмов, и начинаете штудировать сеть, ища проекты на микроконтроллерах, которые стоит реализовать в первый раз.
На самом деле, здесь всё достаточно просто, ведь, в первую очередь, люди зачастую берутся за автоматизацию каких-то систем, наподобие «Смарт-хауса» или умного дома, по-русски.
Если вы также хотите создать что-то из этого направления, то здесь у вас выбор крайне широк.
Достоинство такого стартового проекта в том, что он требует минимума по программной части, ведь сложные алгоритмы здесь не нужны, а готовые руководства есть на нашем сайте, посвящённом МК.
Итак, среди Аrduino проектов для начинающих вы, наверняка, отыщете:
- Контроллер для кондиционера, который, в зависимости от температуры в комнате, выбирает оптимальные настройки, чтобы охладить или нагреть её быстрее, а затем приводит в оптимальный режим работы и сам кондиционер.
- Умный выключатель света, работающей по хлопку или от датчика движения. Со вторым стоит быть крайне осторожным, ведь если у вас есть домашнее животное, то модуль лучше размещать на уровне головы, если вы не хотите мигать лампочкой по несколько раз за ночь.
- Датчик движений в чистом виде, отправляющий вам уведомления, если засечет какую-то активность в указанной зоне. Рекомендация к прошлому пункту актуальна и для этого.
Что такое «умный дом»
У этого термина есть более понятный аналог — «домашняя автоматизация». Суть подобных решений состоит в том, чтобы обеспечить автоматическое выполнение различных процессов, происходящих в жилище, офисе или на специализированных объектах. Простейший пример — автоматическое включение освещения в тот момент, когда кто-то из жильцов входит в комнату.
Система «умный дом» от Arduino представляет собой комплект оборудования для управления работой различных устройств с помощью мобильного телефона на базе ОС Android
В любой системе «умный дом» можно выделить следующие составляющие:
Сенсорная часть. Это набор устройств, основная часть которых представлена всевозможными датчиками, позволяющими системе регистрировать события различного характера. Примерами могут служить датчики температуры и движения. Прочие устройства сенсорной части служат для передачи системе команд пользователя. Это выносные кнопки и пульты дистанционного управления с приёмниками.
Исполнительная часть. Это устройства, которыми система может управлять, реагируя таким образом на то или иное событие в соответствии с заданным пользователем сценарием. Прежде всего, это реле, посредством которых контроллер «умного дома» может подавать питание на любой электрический прибор, то есть включать и выключать его. Например, по хлопку в ладони (система «услышит» его при помощи микрофона) можно настроить включение реле, подающего питание на вентилятор
Обратите внимание: в этом примере вентилятор может быть любым. Но можно применить и прибор, специально выпущенный для работы в составе той или иной системы
Например, компания Arduino выпускает для своих систем электромоторчики, при помощи которых можно, допустим, закрывать или открывать форточку, а компания Xiaomi (китайский производитель подобных систем) — устройства управления воздухоочистителем. Такой прибор полностью контролируется системой, то есть она может не только включить его, но и изменить настройки.
Процессор. Может также называться контроллером. Это «мозг» системы, который координирует и согласовывает работу всех её составляющих.
Программное обеспечение. Это набор инструкций, которыми руководствуется процессор. В системах некоторых производителей, в том числе и от Arduino, пользователь может написать программу самостоятельно, в других — используются готовые решения, в которых пользователю доступны лишь типовые сценарии.
Современные системы «умный дом» делятся на несколько разновидностей:
- Оснащённые собственным контроллером.
- Использующие в этом качестве процессор пользовательского компьютера (планшета, смартфона).
- Обрабатывающие информацию при помощи удалённого сервера, принадлежащего компании-разработчику (облачный сервис).
Система может не только активировать тот или иной прибор, но и проинформировать пользователя о происшедшем событии путём отправки сообщения на телефон или каким-то иным способом. Таким образом, на неё можно возложить функции сигнализации, в том числе и противопожарной.
Сценарии могут быть гораздо более сложными, чем мы описали в примерах. Например, можно научить систему включать бойлер и переводить снабжение горячей водой на него при отключении централизованной подачи, если при этом обнаруживается присутствие кого-то из жильцов в доме (помогают инфракрасные, ультразвуковые датчики, а также датчики движения).
Удивительные проекты на Ардуино Уно
Большинство профессионалов в сфере разработки электронных проектов на Аrduino uno любят экспериментировать. Вследствие этого появляются интересные и удивительные устройства, которые рассмотрены ниже:
- Добавление ИК-пульта в акустическую систему. В бытовой электронике пульт дистанционного управления является компонентом электронного устройства, такого как телевизор, DVD-плеер или другой бытовой прибор, используемый для беспроводного управления устройством с короткого расстояния. Пульт дистанционного управления, в первую очередь, удобен для человека и позволяет работать с устройствами, которые не подходят для непосредственной работы элементов управления.
- Будильник. Часы реального времени используются для получения точного времени. Здесь эта система отображает дату и время на ЖК-дисплее, и мы можем установить будильник с помощью кнопок управления. Как только время сигнала тревоги наступит, система подает звуковой сигнал.
-
Шаговый двигатель. Шаговый двигатель означает точный двигатель, который можно поворачивать на один шаг за раз. Такое устройство делают с помощью робототехники, 3D-принтеров и станков с ЧПУ.- Для этого проекта возьмите самый дешевый шаговый двигатель, который вы можете найти. Двигатели доступны в режиме онлайн. В этом проекте используется шагомер 28byj-48, который подходит для большинства других подобных проектов. Его легко подключить к плате Arduino.
— Вам понадобятся 6 кабелей с разъемами типа «женщина-мужчина». Вам просто нужно подключить двигатель к плате, и все! Вы также можете добавить небольшую часть ленты на вращающуюся головку, чтобы увидеть, что она производит вращательные движения. - Ультразвуковой датчик расстояния. В этом проекте используется популярный ультразвуковой датчик HC-SR04, чтобы устройство могло избежать препятствий и двигаться в разных направлениях.
Когда вы закончите работу, на экране появится результат ваших действий. Чтобы все было просто и понятно, рекомендуется использовать ЖК-дисплей с конвертером I2C, поэтому вам нужно всего лишь 4 кабеля для подключения к плате Arduino.
Ардуино. Метеостанция на LCD 1602 и DHT11
Ардуино. Метеостанция с дисплеем LCD 1602 и DHT22
После сборки схемы, загрузите в микроконтроллер следующий скетч (здесь ссылка на скачивание архива со скетчем для метеостанции и необходимыми библиотеками). Информация с датчика DHT22 выводиться будет на монитор порта Arduino IDE и на жидкокристаллический дисплей 1602a, для отображения информации использован русский шрифт для LCD и символы (в скетче есть подробные комментарии).
Скетч для метеостанции с DHT11 на Ардуино
#include <Wire.h> // библиотека для протокола IIC #include <LiquidCrystal_I2C.h> // подключаем библиотеку LCD IIC LiquidCrystal_I2C lcd(0x27,20,2); // присваиваем имя lcd для дисплея #include "DHT.h" // подключаем библиотеку для DHT11 DHT dht(2, DHT11); // к какому порту подключаем датчик // создаем символ градуса и присваиваем имя "gradus" byte gradus = { 0b01100,0b10010,0b10010,0b01100,0b00000,0b00000,0b00000,0b00000 }; // создаем русскую букву "П" byte P = { 0b11111,0b10001,0b10001,0b10001,0b10001,0b10001,0b10001,0b00000 }; // создаем русскую букву "У" byte Y = { 0b10001,0b10001,0b10001,0b01111,0b00001,0b00001,0b01110,0b00000 }; // создаем русскую букву "Л" byte L = { 0b00111,0b01001,0b10001,0b10001,0b10001,0b10001,0b10001,0b00000 }; // создаем русскую букву "Ж" byte ZH = { 0b10101,0b10101,0b10101,0b01110,0b10101,0b10101,0b10101,0b00000 }; // создаем русскую букву "Ь" byte znak = { 0b10000,0b10000,0b10000,0b11110,0b10001,0b10001,0b11110,0b00000 }; void setup() { Serial.begin(9600); // запуск последовательного порта lcd.init(); // инициализация LCD дисплея lcd.backlight(); // включение подсветки дисплея lcd.createChar(1, gradus); lcd.createChar(2, P); lcd.createChar(3, Y); lcd.createChar(4, L); lcd.createChar(5, ZH); lcd.createChar(6, znak); } void loop() { // если нужны точные значение, то используйте float, вместо byte byte h = dht.readHumidity(); // считываем значение температуры byte t = dht.readTemperature(); // считываем значение влажности Serial.print("Temperature: "); Serial.println(t); // отправляем значение температуры на монитор Serial.print("Humidity: "); Serial.println(h); // отправляем значение температуры на монитор Serial.println(" "); // пустая строка lcd.setCursor(0,0); // ставим курсор на 1 символ первой строки lcd.print("TEM"); // используем латинские буквы lcd.print(char(2)); // выводим русскую букву "П" lcd.print("EPAT"); // используем латинские буквы lcd.print(char(3)); // выводим русскую букву "У" lcd.print("PA: "); // используем латинские буквы lcd.print(t); // выводим значение температуры на LCD lcd.print(char(1)); // выводим знак градуса lcd.setCursor(2,1); // ставим курсор на 3 символ второй строки lcd.print("B"); // используем латинские буквы lcd.print(char(4)); // выводим русскую букву "Л" lcd.print("A"); // используем латинские буквы lcd.print(char(5)); // выводим русскую букву "Ж" lcd.print("HOCT"); // используем латинские буквы lcd.print(char(6)); // выводим русскую букву "Ь" lcd.print(": "); // используем латинские буквы lcd.print(h); // выводим значение влажности на LCD lcd.print("%"); // выводим знак процент delay(1000); }
Пояснения к коду:
- в скетче можно использовать до 8 русских букв и символов, при необходимости заменяйте буквы из кириллицы — латинскими буквами;
- скорость обновления данных замените на необходимое значение.
Заключение. Мы рассмотрели, как сделать простую домашнюю метеостанцию на Ардуино c дисплеем 1602а и датчиком температуры и влажности воздуха DHT11. Данный проект можно доработать, добавив к схеме еще больше датчиков для анализа метеоусловий. Также можно сделать беспроводную метеостанцию на Arduino Uno, используя блютуз или радио модули для передачи информации на расстояние.