Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Управление Arduino через Google Assistant — пошаговое руководство

Компоненты и расходники

Arduino UNO × 1
ESP8266 ESP-01 × 1

Приложения и сервисы

О проекте

В этом проекте мы научимся соединять интернет-сервисы с Arduino. В итоге вы:

Управление Arduino через Google Assistant — пошаговое руководство

Google Assistant и IFTTT

Google Assistant — ИИ-ассистент Google для мобильных и умных устройств. Поддерживает диалоги, распознаёт речь лучше аналогов, умеет искать в интернете, ставить напоминания, управлять устройствами, показывать данные из аккаунта Google. Анонсированы функции: распознавание объектов камерой, покупки, переводы, поиск песен.

IFTTT (If This Then That) — бесплатный веб-сервис для создания цепочек «если это, то то» (апплеты). Триггеры: Gmail, Facebook, Telegram, Instagram, Pinterest и др. Пример: если твит с хэштегом — отправить email. Есть приложения для iOS/Android. В 2015 г. пользователи создавали ~20 млн рецептов в день.

Управление Arduino через Google Assistant — пошаговое руководство

Вебхуки и JSON

Вебхук — метод изменения поведения веб-страницы через пользовательские колбэки. Термин ввёл Джефф Линдсей (2007).

JSON — открытый формат обмена данными (пары ключ-значение, массивы). Стандарт для асинхронного браузер-сервер обмена, замена XML в AJAX.

Управление Arduino через Google Assistant — пошаговое руководство

От Google Assistant к Arduino

Цель: управлять пинами Arduino (I/O, PWM, Serial) строкой от Google Assistant. План:

  1. Определить фразы для Google Assistant.
  2. Создать апплет IFTTT: связать Assistant с базой данных.
  3. ESP8266 опрашивает базу, отправляет команду в Serial Arduino.

Схема

Управление Arduino через Google Assistant — пошаговое руководство

Реализация

1. Устройство с Google Assistant — телефон на Android. Зайдите на assistant.google.com для списка поддерживаемых устройств.

2. IFTTT: зарегистрируйтесь на ifttt.com. My Applets → New Applet.

Управление Arduino через Google Assistant — пошаговое руководство

Сервер и база данных

Пример серверного кода (C# / ASP.NET) для приёма вебхука от IFTTT и записи в БД. Скачайте здесь (ссылка в оригинале). Модели можно адаптировать под свои данные.

Код для ESP8266 и Arduino

Сначала код для ESP-01: опрашивает сервер, парсит JSON, шлёт в Serial Arduino. Затем код Arduino: читает Serial, выполняет команду (например, меняет PWM).

Понадобится библиотека ArduinoJson. Установите через Library Manager (Sketch → Include Library → Manage Libraries → поиск «ArduinoJson» → Install).

Управление Arduino через Google Assistant — пошаговое руководство

Код для ESP-01

#include "ESP8266WiFi.h"
#include "ESP8266HTTPClient.h"
#include "ArduinoJson.h"

const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting...");
  }
}

void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;
    http.begin("https://yourip/api/Home/GetAllApp"); // ваш endpoint
    int httpCode = http.GET();
    if (httpCode > 0) {
      String payload = http.getString();
      // TODO: парсинг JSON с ArduinoJson
      Serial.println(payload); // пока просто пробрасываем в Serial
    }
    http.end();
  }
  delay(3000);
}

Код для Arduino

String inputString = "";
String buff;
bool stringComplete = false;
bool id;
int f, buf;
char x;

void setup() {
  Serial.begin(9600);
  inputString.reserve(200);
}

void loop() {
  if (stringComplete) {
    // Ищем "id" в строке
    f = 0;
    while (f < 100) {
      if (inputString.substring(f) == "id") {
        id = true;
        break;
      }
      f++;
    }
    if (id) {
      x = inputString.charAt(f + 4); // символ после "id"
    }
    if (x == '4') { // пример: команда для пина 9
      f = 0;
      while (f < 100) {
        if (inputString.substring(f) == "number") {
          f += 9; // пропуск "number\":"
          buff = "";
          for (int i = 0; i < 3; i++) {
            char c = inputString.charAt(f + i);
            if (c == '"') break;
            buff += c;
          }
          buf = buff.toInt();
          analogWrite(9, buf); // PWM на пине 9
          break;
        }
        f++;
      }
    }
    inputString = "";
    stringComplete = false;
  }
}

void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    inputString += inChar;
    if (inChar == '\n') stringComplete = true;
  }
}
Управление Arduino через Google Assistant — пошаговое руководство

Куда двигаться дальше

Производственный процесс

  1. Интегрированная система контроля доступа с QR, RFID и верификацией температуры
  2. Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
  3. Умная копилка: управление монетоприёмником на Arduino Nano
  4. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  5. Управление двумя шаговыми двигателями через джойстик на Arduino Nano — простой урок (Visuino)
  6. Точное управление сервоприводом через MPU6050 (Arduino, SG90, MG996R)
  7. Голосовое управление бытовыми приборами: Bluetooth-управление через Google Assistant
  8. Модуль GPS u-blox LEA-6H 02: Интеграция с Arduino и Python
  9. Освоение распознавания и синтеза речи на Arduino Due
  10. ThimbleKrox: управление мышью с пальца на Arduino Micro и MPU-6050