Общайтесь с Arduino и управляйте им с помощью Google Assistant
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 |
Приложения и онлайн-сервисы
| ||||
|
Об этом проекте
В этом проекте мы узнаем, как установить соединение между интернет-службой и платами Arduino. В конце этой статьи вы:
- знать, как получать данные от Google Assistant
- знать, как использовать протокол IFTTT
- знакомы с веб-перехватчиками и HTTP-запросами.
- иметь возможность разговаривать с вашим Arduino
Google Ассистент и апплеты IFTTT
Google Assistant - это виртуальный помощник на основе искусственного интеллекта, разработанный Google, который в основном доступен на мобильных устройствах и устройствах умного дома. В отличие от предыдущего виртуального помощника компании, Google Now, Google Assistant может поддерживать двусторонний диалог. Он может распознавать ваши слова лучше, чем любые устройства, и быстро и правильно реагировать на ваши команды. Пользователи в основном взаимодействуют с Google Assistant естественным голосом, хотя также поддерживается ввод с клавиатуры. Так же, как и в Google Now, Ассистент может выполнять поиск в Интернете, планировать события и сигналы, настраивать параметры оборудования на устройстве пользователя и отображать информацию из его учетной записи Google. Google также объявил, что Ассистент сможет определять объекты и собирать визуальную информацию с помощью камеры устройства, а также поддерживать покупку продуктов и отправку денег, а также распознавать песни.
If This Then That, также известный как IFTTT, представляет собой бесплатную веб-службу для создания цепочек простых условных операторов, называемых апплетами. Апплет запускается изменениями, которые происходят в других веб-службах, таких как Gmail, Facebook, Telegram, Instagram или Pinterest. Например, апплет может отправлять сообщение электронной почты, если пользователь пишет в Твиттере с использованием хэштега, или копировать фотографию на Facebook в архив пользователя, если кто-то отмечает пользователя на фотографии. Помимо веб-приложения, сервис работает на iOS и Android. В феврале 2015 года IFTTT переименовала свое исходное приложение в IF и выпустила новый набор приложений под названием Do, который позволяет пользователям создавать приложения и действия с ярлыками. По состоянию на 2015 год пользователи IFTTT создавали около 20 миллионов рецептов каждый день. С тех пор все функции пакета приложений Do были интегрированы в переработанное приложение IFTTT.
Веб-перехватчик и содержимое JSON
Веб-перехватчик в веб-разработке - это метод расширения или изменения поведения веб-страницы или веб-приложения с помощью настраиваемых обратных вызовов. Эти обратные вызовы могут поддерживаться, изменяться и управляться сторонними пользователями и разработчиками, которые не обязательно связаны с исходным веб-сайтом или приложением. Термин «веб-перехватчик» был придуман Джеффом Линдси в 2007 году на основе термина «компьютерное программирование».
В вычислениях JavaScript Object Notation (JSON) представляет собой формат файла открытого стандарта, в котором используется читаемый человеком текст для передачи объектов данных, состоящих из пар атрибут-значение и типов данных массива (или любого другого сериализуемого значения). Это очень распространенный формат данных, используемый для асинхронного обмена данными между браузером и сервером, в том числе в качестве замены XML в некоторых системах в стиле AJAX.
Google Ассистент для Arduino
В этом проекте мы хотим управлять различными частями Arduino, такими как контакты ввода-вывода, ШИМ, последовательный порт и т. Д., Отправляя строку из Google Assistant в последовательный порт Arduino. Прежде всего, нам нужно определить некоторые конкретные фразы для Google Assistant, чтобы понять, что мы имеем в виду. Затем мы создадим апплет на веб-сайте IFTTT и установим соединение между Google Assistant и нашей базой данных. После этого мы читаем данные из базы данных модулем ESP8266 и отправляем их в Arduino. Приступим!
Схема
Реализация
Прежде всего, вам понадобится устройство для работы вашего помощника Google. Перейдите на сайт assistant.google.com и посмотрите все устройства, поддерживающие помощника. В этом проекте мы используем телефонное устройство Android. Откройте ifttt.com и создайте учетную запись. После входа в систему нажмите «Мои апплеты», затем нажмите «Новый апплет». Теперь вы можете добавить свою услугу как ЭТО в свой апплет. Нажмите ЭТО и найдите Google Assistant. У вас есть 4 варианта определения фразы для помощи Google. Выберите фразу с числовым ингредиентом. На следующей странице вы можете добавить свою фразу. Например, вы хотите сказать «Установите ШИМ вывода 9 на 255». Просто введите это как свою фразу и замените «255» символом «#». Вы можете добавить больше фраз с таким же значением, как «PWM 9 to 255». Теперь добавьте ответ, чтобы Google Assistant мог сообщить вам, что ваша команда была понята и были предприняты необходимые действия, например, «ШИМ обновлен». Когда вы закончите, нажмите Create Trigger. В «ЭТОЙ» части вашего апплета у вас есть множество сервисов для выбора формы поиска «Webhooks» и ее выбора. Нажмите «Сделать веб-запрос». Добавьте URL-адрес вашего сервера для получения данных. Задайте метод POST и выберите Application / json в качестве типа контента. Теперь вы должны добавить тело контента. Примерно так:{«Number»:»{ {NumberField}} »}. Теперь нажмите« Создать действие ».
Сервер и база данных
Мы пишем пример кода для сервера, чтобы получить данные из IFTTT и сохранить их в базе данных. Вы можете изменять модели, чтобы ваши данные сохранялись в соответствии с вашими интересами. Загрузите отсюда.
Код ESP8266 и Arduino
Сначала мы пишем код для ESP-01, чтобы получить данные из базы данных и отправить их в Arduino через последовательный порт. Затем мы пишем другой код для Arduino, чтобы получить данные от ESP-01 и выполнить команду (например, изменить ШИМ). Вы можете использовать Arduino IDE для компиляции обоих кодов и загрузки их на платы.
Прежде чем вы сможете использовать библиотеку ArduinoJson, вы должны убедиться, что библиотека установлена на вашем компьютере. Чтобы выполнить быструю проверку, перейдите к диспетчеру библиотек в Arduino IDE (Sketch> Include Library> Manage Libraries) и введите «ArduinoJson» в текстовое поле, если вы видите зеленую метку «INSTALLED» рядом с названием библиотека, это означает, что вы все в порядке и можете переходить к следующему шагу. Если вы не видите ярлыка, нажмите на поле / раздел один раз, и вы увидите кнопку «Установить». Нажмите "Установить", и вы готовы к следующему шагу.
Теперь загрузите этот код на ESP-01
#include "ESP8266WiFi.h" #include "ESP8266HTTPClient.h" #include "ArduinoJson.h" // Параметры Wi-Ficonst char * ssid ="YOUR_SSID"; const char * password ="YOUR_PASSWORD"; void setup () {Serial.begin (115200); WiFi.begin (ssid, пароль); в то время как (WiFi.status ()! =WL_CONNECTED) {задержка (1000); Serial.println («Подключение ...»); }} void loop () {// Проверяем статус WiFi if (WiFi.status () ==WL_CONNECTED) {HTTPClient http; // Объект класса HTTPClient http.begin ("http:// yourip / api / Home / GetAllApp"); интервал httpCode =http.GET (); // Проверяем код возврата if (httpCode> 0) {// Получаем полезную нагрузку ответа на запрос String payload =http.getString (); // ЗАДАЧА:Разбор Serial.println (полезная нагрузка); } http.end (); // Закрываем соединение} // Задержка задержки (3000);}
А это код для Arduino, чтобы получать заказы от Google Assistant и выполнять их.
Строка inputString =""; // Строка для хранения входящих данныхString buff; bool stringComplete =false; // является ли строка завершеннойbool id; int f, buf; char x; void setup () {// инициализировать серийный номер:Serial.begin (9600); // резервируем 200 байтов для inputString:inputString.reserve (200);} void loop () {// печатаем строку при появлении новой строки:if (stringComplete) {while (f <100) {if (inputString.substring ( е) =="id") {id =true; ломать; } f ++; } если (id ==true) {x =inputString.charAt (f + 4); } если (x =='4') {f =0; в то время как (f <100) {если (inputString.substring (f) =="число") {f + =9; for (int i =0; i <3; i ++) {if (inputString.charAt (f + i) =='"') i =3; else buff + =inputString.charAt (f + i);} buf =buff.toInt (); analogWrite (9, buf); break;} f ++;}} // очищаем строку:inputString =""; stringComplete =false;}} void serialEvent () {while (Serial.available ()) {// получаем новый байт:char inChar =(char) Serial.read (); // добавляем его в inputString:inputString + =inChar; // если входящий символ является новой строкой, устанавливаем флаг, чтобы основной цикл // можно что-то с этим сделать:if (inChar =='\ n') {stringComplete =true;}}}
Что дальше?
Вы можете улучшать этот проект по своему желанию. Вот несколько предложений:
- Попробуйте добавить свои любимые команды, такие как управление выходными контактами, вы можете использовать модуль реле и управлять освещением в комнатах.
- Попробуйте отправить данные из Arduino в Google Assistant.
Производственный процесс
- Контроль доступа с помощью QR, RFID и проверки температуры
- Универсальный пульт дистанционного управления с использованием Arduino, 1Sheeld и Android
- Управление монетоприемником с помощью Arduino
- Arduino с Bluetooth для управления светодиодом!
- Arduino Nano:управление двумя шаговыми двигателями с помощью джойстика
- Управление серводвигателем с помощью Arduino и MPU6050
- Устройства с голосовым управлением Bluetooth с OK Google
- u-blox LEA-6H 02 GPS-модуль с Arduino и Python
- Распознавание и синтез речи с помощью Arduino
- ThimbleKrox - управление мышью пальцами