- Принципиальная схема домашней автоматизации, управляемой Google Assistant
- Настройка приложения Blynk
- Настройка IFTTT с помощью Google Assistant и Blynk для чтения строки
- Программирование Arduino для Blynk Home Automation
- Изготовление печатной платы с использованием PCBGoGo
- Сборка печатной платы
- Подключение платы к блокам питания переменного тока / платам расширения
С развитием виртуальных помощников, таких как Google Assistant и Alexa, приложения для домашней автоматизации и голосового управления становятся нормой. Сейчас мы сами создали множество проектов домашней автоматизации, от простых автоматических лестничных светильников до домашней автоматизации на основе Интернета вещей с использованием Raspberry Pi. Но этот проект здесь другой, здесь идея состоит в том, чтобы создать практичную плату домашней автоматизации, которая может вписаться в наши блоки питания переменного тока на наших стенах и оставаться скрытой внутри нее. Плата не должна прерывать нормальную работу наших переключателей блока питания, то есть они также должны включаться или выключаться с помощью ручных переключателей. И, не говоря уже о том, что он также должен иметь возможность управлять той же нагрузкой с помощью голоса с помощью помощника Google, а также устанавливать таймер, чтобы любая нагрузка могла автоматически включаться или выключаться в заданное время дня.
Этот проект очень похож на наш ESP8266 Smart Wi-Fi plug, но здесь, поскольку мы будем использовать ESP12, у нас будет больше контактов GPIO, что позволит нам управлять четырьмя нагрузками переменного тока одновременно. Кроме того, поскольку мы интегрировали Blynk и Google Assistant, проект становится интересным и практичным в использовании. Для этого проекта мы построили печатные платы, используя службу изготовления печатных плат PCBGOGO. В последнем разделе статьи мы предоставили файл Gerber, разработанный для схемы, а также объяснили полную процедуру заказа печатных плат в PCBGOGO.
Предупреждение: Этот проект предполагает работу с сетевым напряжением переменного тока. Имейте в виду, что при работе с высокими напряжениями переменного тока следует соблюдать особую осторожность. Если вы новичок, убедитесь, что за вами наблюдает опытный человек.
Принципиальная схема домашней автоматизации, управляемой Google Assistant
Полную принципиальную схему домашней автоматизации можно найти ниже.
Как видите, схема очень проста, давайте начнем объяснение с модуля ESP12E Wi-Fi. Вы также можете посмотреть видео ниже с подробным описанием проекта. Модуль может быть запрограммирован так же, как платы разработки nodeMCU, и это уменьшает много места. По умолчанию при включении ESP12E переходит в рабочий режим. Чтобы его запрограммировать, мы должны использовать кнопки Reset и Flash. То есть, чтобы перевести ESP12 в режим программирования, нажмите и удерживайте кнопки сброса и вспышки, затем отпустите кнопку сброса. Это загрузит ESP12E с нажатой кнопкой вспышки, теперь отпустите кнопку вспышки, и ESP12E войдет в режим программирования. После программирования вам нужно снова нажать кнопку сброса, чтобы загрузить ESP12E в нормальном рабочем режиме и выполнить загруженную программу. Контакты программирования Rx, Rx,и земля расширены, чтобы иметь возможность подключаться к плате FTDI или преобразователю USB в TTL. Обязательно подключите вывод Tx ESP12 к выводу Rx программатора и наоборот.
Остальные флажковые контакты с I1 по I4 и с R1 по R4 используются для подключения переключателей и реле. Контакты с I1 по I4 обозначают входные контакты. Все эти контакты поддерживают внутренний подтягивающий резистор, поэтому нам просто нужно подключить переключатели на блоке расширения к нашему входному контакту через подтягивающий резистор, как показано ниже.
Точно так же выходные контакты реле с R1 по R4 используются для управления реле. Мы использовали стандартную схему драйвера реле с диодом BC547 и IN4007, как показано ниже. Обратите внимание, что реле должны срабатывать при 5 В, но на выходных контактах ESP12E всего 3,3 В. Таким образом, для управления реле обязательно использовать транзистор. Мы также поместили светодиод в базовый путь транзистора, чтобы при срабатывании транзистора он также включался.
Наконец, для питания всех наших цепей мы использовали преобразователь Hi-Link AC-DC, чтобы преобразовать наши 220 В переменного тока в 5 В постоянного тока. Затем эти 5 В постоянного тока преобразуются в 3,3 В с помощью регулятора напряжения AMS117–3,3 В. 5 В используется для включения реле, а 3,3 В используется для питания модуля Wi-Fi ESP21.
Настройка приложения Blynk
Ранее мы создавали множество проектов Blynk, таких как Wi-Fi Controlled Arduino Robot, поэтому мы не будем вдаваться в подробности настройки приложения blynk. Но, проще говоря, просто установите приложение, создайте новый проект для NodeMCU и начните размещать свои виджеты, как показано ниже.
В нашем проекте я использовал виртуальные контакты V1 - V4 для управления реле с 1 по 4. Обязательно измените тип кнопки для переключения. Опцию таймера также можно использовать для автоматического запуска виртуальных контактов в заданное время, даже если телефон выключен. Например, я использовал таймер только для виртуального контакта V1, но при необходимости вы можете использовать его для всех четырех контактов.
Обязательно получите значение токена аутентификации blynk со страницы проекта. Просто нажмите на значок ореха (обведен красным на картинке выше) и скопируйте токен аутентификации с помощью опции «Копировать все» и вставьте его в безопасное место, которое нам понадобится при программировании платы Arduino.
Настройка IFTTT с помощью Google Assistant и Blynk для чтения строки
Самый простой способ использовать Google Assistant для домашней автоматизации - использовать IFTTT. Мы также ранее создали множество проектов IFTTT с помощью NodeMCU и Raspberry Pi. В этом проекте мы будем использовать приложение Blynk для запуска веб-перехватчика с помощью Google Assistant. Это очень похоже на наш проект домашней автоматизации с голосовым управлением и FM-радио с голосовым управлением. Кроме того, здесь мы будем использовать blynk с IFTTT для отправки строки, что делает его намного проще и интереснее.
По сути, мы будем использовать виртуальные выводы V5 и V6 на blynk для отправки команды запуска. V5 будет использоваться для команд включения, а V6 будет использоваться для команд выключения. Например, если мы говорим включите телевизор и лампу. Строковая команда здесь «TV and Lamp» будет отправлена в NodeMCU с помощью API. Синтаксис API следующий.
http://188.166.206.43//update/V5?value=TV и лампы
Теперь все, что нам нужно сделать в IFTTT, - это использовать помощника Google в качестве IF и веб-перехватчиков в качестве THAT, поэтому слушайте эту команду и отправляйте информацию в NodeMCU, используя вышеупомянутый API. Форма апплета включения такая же, как показано ниже.
Обратите внимание, что при создании рецепта для Google Assistant вам нужно выбрать вариант произнесения фразы с текстовым ингредиентом. Точно так же вы должны повторить то же самое для виртуального контакта V6, чтобы выключить реле. Вы можете посмотреть видео внизу этой страницы для получения подробной информации.
Программирование Arduino для Blynk Home Automation
Полный код Arduino для этого проекта можно найти внизу этой страницы. Объяснение того же заключается в следующем. Перед этим убедитесь, что вы можете использовать Blynk и программу NodeMCU из Arduino IDE. Если нет, следуйте инструкциям по началу работы со статьей ESP12. Также добавьте библиотеку blynk в Arduino IDE с помощью менеджера плат.
Как всегда, мы начинаем наш код с определения входных и выходных контактов, здесь вход будет с переключателей, а выход будет с реле. Мы определили имена контактов для всех четырех переключателей как sw и реле как rel, как вы можете видеть ниже.
#define sw1 13 #define sw2 12 #define sw3 14 #define sw4 16 #define rel1 4 #define rel2 5 #define rel3 9 #define rel4 10
На следующем этапе вам нужно ввести некоторые учетные данные, такие как токен аутентификации blynk, а также имя пользователя и пароль для маршрутизатора Wi-Fi, к которому должен подключаться ваш nodeMCU. Токен аутентификации blink можно получить из приложения blynk. Подробнее об этом мы узнаем в разделе о настройке приложения blynk.
char auth = "Fh3tm0ZSrXQcROYl_lIYwOIuVu-E"; // получить из приложения blynk char ssid = "home_wifi"; char pass = "fakepass123";
Далее мы дали определение функции с именем read_switch_toggle () . В этой функции мы сравним текущее состояние и предыдущее состояние наших переключателей. Если переключатель был включен или выключен, т.е. если переключатель был переключен. Произойдет изменение состояния переключателя, функция будет отслеживать это изменение и возвращать номер переключателя. Если изменений не обнаружено, возвращается 0.
int read_switch_toggle () {int результат = 0; // Обратите внимание на все предыдущие значения для (int i = 0; i <= 3; i ++) pvs_state = crnt_state; // Считываем текущий статус переключателей crnt_state = digitalRead (sw1); crnt_state = digitalRead (sw2); crnt_state = digitalRead (sw3); crnt_state = digitalRead (sw4); // сравниваем текущее состояние и состояние pvs для (int i = 0; i <= 3; i ++) {if (pvs_state! = crnt_state) {result = (i + 1); // если какой-либо переключатель включен, мы получаем номер переключателя в качестве результата return result; } иначе результат = 0; // если результат не изменился 0} return result; // возвращаем результат}
Далее у нас есть код для приложения blynk. Мы будем использовать виртуальный вывод V1 - V6 для управления нашей интеллектуальной распределительной коробкой. Контакты V1 - V4 будут использоваться для управления реле с 1 по 4 соответственно непосредственно из приложения blynk. В приведенном ниже коде показано, что происходит, когда V1 запускается из приложения blynk. Мы просто считываем статус (ВЫСОКИЙ или НИЗКИЙ) и соответственно управляем реле.
BLYNK_WRITE (V1) {digitalWrite (rel1, param.asInt ()); Serial.println ("V1"); }
Точно так же виртуальные контакты также можно использовать для чтения строки из приложения blynk. Позже мы узнаем, как отправить строку из помощника Google в NodeMCU с помощью IFTTT и помощника Google, а пока давайте посмотрим, как код NodeMCU считывает эту строку, ищет определенное ключевое слово и соответственно запускает реле.
В приведенном ниже коде вы можете видеть, что при срабатывании виртуального вывода V5 мы получаем строку, переданную им, в строковую переменную ON_message . Затем, используя эту строковую переменную и метод inderOf, мы ищем, присутствуют ли какие-либо ключевые слова, такие как «лампа», «светодиод», «музыка», «ТВ». Если да, мы включаем эту конкретную нагрузку. Если обнаружено ключевое слово «все», мы включаем все. То же самое можно сделать и для V6, чтобы выключить реле. Мы поймем больше об этом, когда перейдем к разделу IFTTT.
BLYNK_WRITE (V5) {String ON_message = param.asStr (); Serial.println (ON_message); если (ON_message.indexOf ("лампа")> = 0) digitalWrite (rel1, HIGH); если (ON_message.indexOf ("LED")> = 0) digitalWrite (rel2, HIGH); если (ON_message.indexOf ("музыка")> = 0) digitalWrite (rel3, HIGH); если (ON_message.indexOf ("TV")> = 0) digitalWrite (rel4, HIGH); если (ON_message.indexOf ("все")> = 0) {digitalWrite (rel1, HIGH); digitalWrite (rel2, HIGH); digitalWrite (rel3, HIGH); digitalWrite (rel4, HIGH); }}
Наконец, внутри функции цикла нам нужно только проверить, не изменилось ли положение переключателя каких-либо кнопок. Если да, то мы используем корпус переключателя, как показано ниже, для переключения положения этого конкретного реле.
переключатель (toggle_pin) {case 0: break; случай 1: Serial.println («Переключение реле 1»); digitalWrite (rel1, relay_state); сломать; случай 2: Serial.println («Переключение реле 2»); digitalWrite (rel2, relay_state); сломать; случай 3: Serial.println («Переключение реле 3»); digitalWrite (rel3, relay_state); сломать; случай 4: Serial.println («Переключение реле 4»); digitalWrite (rel4, relay_state); сломать; }}
Изготовление печатной платы с использованием PCBGoGo
Теперь мы понимаем, как работают схемы, и можем приступить к созданию печатной платы для нашего проекта домашней автоматизации. Компоновку печатной платы для указанной выше схемы также можно загрузить как Gerber по ссылке.
- Загрузите GERBER для домашней автоматизации с голосовым управлением с помощью Google Assistant
Теперь наш дизайн готов, пришло время изготовить их с помощью файла Gerber. Сделать печатную плату из PCBGOGO довольно просто, просто выполните следующие действия:
Шаг 1. Зайдите на сайт www.pcbgogo.com, зарегистрируйтесь, если вы впервые. Затем на вкладке прототипа печатной платы введите размеры вашей печатной платы, количество слоев и количество требуемых печатных плат. Предполагая, что размер печатной платы составляет 80 см × 80 см, вы можете установить размеры, как показано ниже.
Шаг 2: Продолжите, нажав кнопку Цитировать сейчас . Вы попадете на страницу, где при необходимости установите несколько дополнительных параметров, например, используемый материал, интервал между дорожками и т. Д. Но в большинстве случаев значения по умолчанию будут работать нормально. Единственное, что мы должны здесь учитывать, - это цена и время. Как видите, время сборки составляет всего 2-3 дня, а наша плата стоит всего 5 долларов. Затем вы можете выбрать предпочтительный способ доставки в зависимости от ваших требований.
Шаг 3: Последний шаг - загрузить файл Gerber и продолжить оплату. Чтобы убедиться, что процесс проходит гладко, PCBGOGO проверяет, действителен ли ваш файл Gerber, прежде чем продолжить платеж. Таким образом, вы можете быть уверены, что ваша печатная плата удобна для изготовления и будет доставлена к вам в соответствии с требованиями.
Сборка печатной платы
После того, как плата была заказана, она пришла ко мне через несколько дней через курьера в аккуратно помеченной, хорошо упакованной коробке, и, как всегда, качество печатной платы было потрясающим. Печатная плата, которую я получил, показана ниже. Как видите, и верхний, и нижний слой получились как положено.
Переходные отверстия и контактные площадки были подходящего размера. На сборку печатной платы и получение работающей схемы у меня ушло около 15 минут. Собранная плата показана ниже.
Подключение платы к блокам питания переменного тока / платам расширения
Плата предназначена для установки в розетки переменного тока в наших домах. Но для этого проекта мы будем использовать коробку расширения. Если вам нужно более надежное решение, подключите его к розеткам переменного тока, как вы можете видеть ниже, длина печатной платы достаточно компактна, чтобы ее можно было разместить внутри розетки переменного тока.
Убедитесь, что вы соблюдаете меры безопасности при работе с сетью переменного тока. Следуйте приведенной ниже принципиальной схеме, чтобы понять, как подключить реле и переключатели к нашей печатной плате.
Схема подключения не работает только для одного реле и коммутатора, но вы можете просто воспроизвести то же самое и для остальных трех. После подключения ваша плата должна выглядеть так
После выполнения соединений убедитесь, что вы надежно закрепили их с помощью винтовых клемм, а также используйте горячий клей для дополнительной безопасности. Упакуйте все обратно в коробку, и мы будем готовы к тестированию. Вы можете найти полную работу этого проекта в видео ниже.
Надеюсь, вам понравилась статья и вы узнали что-то полезное. Если у вас есть какие-либо вопросы, оставьте их в разделе комментариев ниже или воспользуйтесь нашим форумом.