В этом уроке разберемся как управлять устройствами с помощью голосовых команд, приложения на смартфоне и NodeMCU.
О проекте
Управление устройствами с помощью голосовых команд в настоящее время не является чем-то особенным. Вы можете купить контроллер у Google или Amazon, которые предоставляют множество функций и возможностей. Но сделать что-то свое - обычно интереснее и дешевле.
В этом уроке разберемся как управлять устройствами с помощью голоса, приложения на смартфоне и NodeMCU.
По сути, вам нужно будет запустить приложение Android на смартфоне, то даст нам возможность управлять другими устройствами с его помощью. В этом приложении вы сможете включать или выключать устройства с помощью кнопок и/или голосовых команд.
Комплектующие
Комплектующие, которые вам понадобятся, перечислены ниже. Все это можно купить на Aliexpress или в любом другом интернет-магазине.
- NodeMcu V3 ESP8266 китайская версия LoL1n v3.
- Релейный модуль с 8 реле (или отдельными релейными модулями).
- Смартфон на Android.
Также нам пригодятся сопутствующие детали - вентилятор, лампочки и т.п., которые мы будем включать или выключать со смартфона через приложение кнопками или голосом.
Описание
Если вы знакомы с Arduino (или NodeMCU) и реле, то вы можете пропустить этот шаг. Для тех, кто не в теме, мы постараемся объяснить вкратце как эти вещи работают.
Во-первых, NodeMCU можно считать микроконтроллером с поддержкой Wi-Fi благодаря чипу ESP8266. На следующем шаге мы покажем вам как мы можем использовать Arduino IDE для работы с NodeMCU.
Во-вторых, релейный модуль используется для отделения управляющего сигнала низкого напряжения постоянного тока от NodeMCU и вашей линии переменного тока. Для каждого реле есть 3 выходных контакта. Обычно COM-контакт подключается к NC (нормально замкнутому) контакту. Когда подается управляющий сигнал, катушка реле переворачивается, так что контакт COM подключается к контакту NO.
На релейном модуле опто-транзисторы используются для защиты NodeMCU от нежелательного перепада от линии переменного тока при переключении реле. Сигнал LOW входа на модуле реле активирует соответствующее реле. И наоборот, логика HIGH отключит реле.
Вы должны убрать перемычку между VCC и JDVCC на плате реле, чтобы отделить источник питания.
Подготовка программного обеспечения
NodeMCU в данном проекте из Китая, поэтому используется USB-чип CH341. Нужно установить драйвер для CH341. Драйвер вы сможете скачать ниже, распаковать и установить на свой компьютер.
Далее, для использования с Arduino IDE нам нужно добавить библиотеку плат. Откройте Arduino IDE:
- Инструменты -> Плата -> Менеджер (Tools --> Board --> Board manager).
- Найдите "esp8266 by ESP8266 Community" и установите.
- Файлы -> Настройки (Files --> Preferences).
- Заполните поле Additional Board Manager URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json - Инструменты -> Плата -> NodeMCU 1.0 (Tools --> Board --> NodeMCU 1.0).
В прикрепленном файле Arduino измените параметры соответствующим образом:
- SSID к вашему Wi-Fi
- пароль к вашему Wi-Fi
Вы также можете изменить контрольный пин на NodeMCU.
Скачать код проекта:
Приложение для смартфона
Мы используем MIT App Inventor (ссылка) для создания приложения для телефона на Android. Вы можете зарегистрироваться бесплатно с помощью учетной записи Gmail. Если вы просто хотите использовать приложение, скачайте zip-файл, разархивируйте и установите home3.apk на свой телефон.
Команда для каждого выходного контакта очень проста:
- включить красный / выключить красный
- включить зеленый / выключить зеленый
- включить синий / выключить синий
- включить желтый / выключить желтый
- включить оранжевый / выключить оранжевый
- включить коричневый / выключить коричневый
И если вы хотите изменить команды - войдите в MIT App Inventor и измените home3.aiaas, согласно картинкам ниже:
- Проект -> Импорт проекта (.aia) (Project --> Import project).
- Переключиться на "Блокировать и изменить команду" (lock and modify command).
- После внесения изменений выберите: Build -> App (сохранить .apk).
- Установите ваше приложение
Собираем проект
Как вы можете видеть на картинке, NodeMCU работает с напряжением 3.3В. Так что на борту есть регулятор напряжения. Вы можете включить его через USB-порт для подачи постоянного тока 5 В или подключить VIN-контакт NodeMCU к источнику питания с диапазоном максимум от 6 до 20 В.
На плате реле снимите перемычку между VCC - JDVCC. Поскольку реле 5В, вам необходимо подать на него напряжение 5В или ниже, но не ниже 3,3В. Если нет, реле не будет активировано.
В первом сценарии используется внешний источник питания 5 В. Для работы NodeMCU и всех реле одновременно должно быть не менее 1,5 А.
- Подключите источник питания к JD-VCC и контакту GND на плате реле.
- Подключите источник питания к VIN и GND NodeMCU
- Подключите выходные контакты от NodeMCU к плате реле (D0 D1 D2 D5 D6 D7)
- Подключите 3,3 В NodeMCU к VCC релейной платы (для меня это работает, но в некоторых случаях 3,3 В недостаточно для активации реле; вы можете использовать VIN NodeMCU для VCC платы реле, но разделение питания больше не доступно; это не будет проблемой, если вы используете только реле для управления лампочкой).
Во втором сценарии NodeMCU получает питание через USB-кабель от батареи. Внешний источник питания используется для релейной платы. Вместо 3,3 В вы можете подключить VIN NodeMCU к VCC релейной платы.
Итоговый результат
Откройте приложение, которое вы только что установили на смартфон - Home DL (название можно задавать самому). Вы можете изменить это имя с помощью MIT App Inventor.
-
- Откройте программу в Arduino IDE.
- Измените Wi-Fi ssid и пароль на ваши данные.
- Загрузить её в NodeMCU.
- Откройте Serial Monitor и дождитесь показа значения локального IP, запомните значение.
- Пока приложение на вашем телефоне открыто, нажмите кнопку «Установить IP».
- Запишите IP-адрес в текстовое поле и нажмите «Сохранить».
- Перезапустите приложение.
Теперь вы можете нажать на любую кнопку для управления соответствующими устройствами или нажать на значок динамика и произнести свою команду.