Умный дом (управление с Android-смартфона)
В данной статье речь пойдет о создании системы «Умный дом» на контроллере Arduino UNO с управлением через Android смартфон и Bluetooth модуль HC-05.
Задача — создать Arduino скетч и программу для Android, которые бы соответствовали необходимым требованиям.
Из аппаратной части необходимо:
- Arduino U NO
- Blueto oth модуль HC-05
- Модуль 2-х кан ального реле 5В 10А
- Датчик влажно сти и температуры DHT-22
Затем я занялся созданием скетча для Arduino SMARTHOUSE.ino. В интернете был найден готовый пример но он не подходил по функционалу и я взялся дописывать его. Моя задача, чтобы скетч принимал команду для включения определённого реле и в это же время передавал показания датчика влажности и температуры. Имея минимальные знания программирования у меня всё получилось и программа была написана.
Оставалось самое сложное создать приложения для Android, для этого я использовал программу AppInventor 2.
Особенностями программы являются: возможность автоматически подключаться к выбранному ранее bluetooth-устройству, голосовое распознавание текста, отображение температуры и влажности в реальном времени. Перед началом использования голосовых команд нужно с клавиатуры смартфона вписать саму команду в разноцветные поля и нажать кнопку сохранить (кнопка сохранить также запоминает подключённое устройство).
Далее следовала сборка сборка всех компонентов в единую систему.
Нагрузка подключается к выводам 8, 9, 10. Если вдруг что не понятно с подключением, то вы можете посмотреть все пины по самом скетче. После соединения всех компонентов нужно установить и запустить мою программу SMARTHOUSE.apk
После установки включаем Bluetooth на смартфоне и подключаемся к модулю HC-05, и включаем нашу программу.
После запуска жмем кнопку поиск и видим окно с списком доступных устройств, выбрать нужно HC-05.
Когда выбор сделан нужно нажать кнопку ПОДКЛЮЧИТЬ и СОХРАНИТЬ, в зелёном окне появится адрес bluetooth устройства.
И вот теперь при нажатии на красные выключатели, мы можем подавать сигнал на нужный нам pin (длинное нажатие на кнопку выключателя посылает команду для отключения нагрузки). Под кнопками «enable all» и «switch off all» появятся показания температуры и влажности с датчика DHT-22.
Автоматизация дома на Arduino под управлением смартфона
Автоматизация играет важную роль в жизни современного общества. Процессами автоматизации можно управлять различными способами: с помощью Wi-Fi, инфракрасной связи, GSM, Bluetooth и многих других технологий.
Ранее на нашем сайте мы уже рассматривали различные проекты автоматизации дома:
В этой же статье мы рассмотрим проект автоматизации дома на Arduino под управлением смартфона. Сигналы управления со смартфона будут передаваться с помощью технологии Bluetooth.
Необходимые компоненты
- Плата Arduino Mega (или другая модель) (купить на AliExpress).
- Мобильный телефон на Android (смартфон).
- Bluetooth модуль HC05 (купить на AliExpress).
- Приложение Bluetooth terminal.
- Микросхема (драйвер двигателей) L293D (купить на AliExpress).
- Два реле на 6 В.
- ЖК дисплей 16х2 (купить на AliExpress).
- Две электрические лампочки.
- Адаптер на 12 v,1A.
- Макетная плата.
Работа схемы
Схема устройства представлена на следующем рисунке.
На схеме показаны необходимые соединения платы Arduino с ЖК дисплеем, Bluetooth модулем HC05 и микросхемой L293D (драйвером двигателей).
Два реле подсоединены к микросхеме L293D для управления двумя приборами постоянного тока (в нашем проекте их роль выполняют электрические лампочки). Реле имеют 5 контактов, из которых 2 (вокруг контакта COM) подсоединены к L293D и GND. А общий контакт (COM) соединен с контактами AC приборов.
Микросхема L293D используется для увеличения тока (поскольку контакты платы Arduino не могут обеспечить нужный ток для управления реле). Контакт Vcc2 или VS L293D должен быть подключен к контакту VIN (контакт входного напряжения или Vcc) платы Arduino. Контакты Input 1 и Input 2 L293D подключены к контактам 10 и 11 платы Arduino, а выходные контакты подключены к контактам реле.
Принципы работы проекта
Сначала нам необходимо скачать и установить на наш смартфон приложение Bluetooth Terminal App (можно использовать и другое аналогичное приложение) и подключить смартфон к Bluetooth модулю HC05. Затем сконфигурировать приложение Bluetooth Terminal как в этой статье.
После того, как мы выполним все это, мы сможем передавать данные с нашего смартфона (из приложения Bluetooth Terminal) на Bluetooth модуль HC05, который затем сможет передавать эти данные по последовательному порту плате Arduino Mega. ЖК дисплей 16×2 используется для отображения статуса (включен/выключен) управляемых нами электронных устройств. Микросхема L293D используется для управления двумя реле, к которым подключены электрические лампочки. Адаптер 12v используется для питания платы Arduino и всей схемы. Структурная схема работы устройства представлена на следующем рисунке.
Всегда, когда мы будем передавать данные со смартфона, плата Arduino будет проверять поступивший символ и устанавливать на соответствующих контактах напряжение высокого или низкого уровня. Далее с помощью этих контактов через драйвер L293D управляются реле, которые включают и выключают лампочки.
В целом, наше устройство будет выполнять следующие операции:
- если мы передаем символ ‘a’ через приложение Bluetooth Terminal, то электрическая лампочка № 1 включится, а электрическая лампочка № 2 выключится;
- если мы передаем символ ‘b’ через приложение Bluetooth Terminal, то электрическая лампочка № 1 выключится, а электрическая лампочка № 2 включится;
- если мы передаем символ ‘c’ через приложение Bluetooth Terminal, то обе электрические лампочки включатся;
- если мы передаем символ ‘d’ через приложение Bluetooth Terminal, то обе электрические лампочки выключатся.
Более подробно все эти процессы вы можете посмотреть в видео в конце статьи.
Исходный код программы
Вначале подключим библиотеку LiquidCrystal.h, необходимую для корректной работы с ЖК дисплеем, и укажем контакты Arduino, к которым подключен ЖК дисплей.
#include
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
Сконфигурируем контакты 10 и 11 Arduino для работы на вывод данных и используем функцию Serial.begin(9600) чтобы задействовать последовательный порт для связи между Arduino и Bluetooth модулем HC05.
void setup() <
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print(«**AUTOMATION**»);
>
В функции void loop() будем проверять поступление каких-либо данных по последовательному порту и помещать эти данные в переменную символьного типа (char c).
void loop() <
if (Serial.available() > 0)
<
char c = Serial.read();
if (c == ‘a’)
<
Serial.print(«in a code»);
. .
. .
Затем мы будем сравнивать символ, поступивший из последовательного порта (char c) с заранее определенными символами ‘a’ ,’b’, ’c’, ’d’, которые используются для управления нашими устройствами. После сравнения плата Arduino выдает соответствующие команды на включение/выключение соответствующих устройств.
Далее представлен полный текст программы.