Habla con Arduino y contrólalo con el Asistente de Google
Componentes y suministros
| × | 1 | ||||
| × | 1 |
Aplicaciones y servicios en línea
| ||||
|
Acerca de este proyecto
En este proyecto, aprenderemos cómo hacer una conexión entre un servicio de Internet y placas Arduino. Al final de este artículo:
- saber cómo obtener datos del Asistente de Google
- saber cómo utilizar el protocolo IFTTT
- estar familiarizado con los webhooks y las solicitudes http
- poder hablar con tu Arduino
Asistente de Google y subprogramas IFTTT
El Asistente de Google es un asistente virtual impulsado por inteligencia artificial desarrollado por Google que está disponible principalmente en dispositivos móviles y domésticos inteligentes. A diferencia del asistente virtual anterior de la empresa, Google Now, el Asistente de Google puede participar en conversaciones bidireccionales. Puede reconocer sus palabras mejor que cualquier dispositivo y responder rápida y correctamente a sus comandos. Los usuarios interactúan principalmente con el Asistente de Google a través de la voz natural, aunque también se admite la entrada de teclado. De la misma manera que Google Now, el Asistente puede buscar en Internet, programar eventos y alarmas, ajustar la configuración del hardware en el dispositivo del usuario y mostrar información de la cuenta de Google del usuario. Google también ha anunciado que el Asistente podrá identificar objetos y recopilar información visual a través de la cámara del dispositivo, y respaldará la compra de productos y el envío de dinero, así como la identificación de canciones.
If This Then That, también conocido como IFTTT, es un servicio gratuito basado en web para crear cadenas de declaraciones condicionales simples, llamadas applets. Un subprograma se activa por cambios que ocurren dentro de otros servicios web como Gmail, Facebook, Telegram, Instagram o Pinterest. Por ejemplo, un subprograma puede enviar un mensaje de correo electrónico si el usuario tuitea usando un hashtag, o copiar una foto en Facebook al archivo de un usuario si alguien etiqueta a un usuario en una foto. Además de la aplicación basada en web, el servicio se ejecuta en iOS y Android. En febrero de 2015, IFTTT cambió el nombre de su aplicación original a IF y lanzó un nuevo conjunto de aplicaciones llamado Do, que permite a los usuarios crear aplicaciones y acciones de acceso directo. A partir de 2015, los usuarios de IFTTT crearon alrededor de 20 millones de recetas cada día. Desde entonces, todas las funcionalidades del conjunto de aplicaciones Do se han integrado en una aplicación IFTTT rediseñada.
Webhook y contenido JSON
Un webhook en el desarrollo web es un método para aumentar o alterar el comportamiento de una página web, o aplicación web, con devoluciones de llamada personalizadas. Estas devoluciones de llamada pueden ser mantenidas, modificadas y administradas por usuarios y desarrolladores de terceros que pueden no estar necesariamente afiliados al sitio web o la aplicación de origen. El término "webhook" fue acuñado por Jeff Lindsay en 2007 a partir del término de programación informática hook.
En informática, JavaScript Object Notation (JSON) es un formato de archivo de estándar abierto que utiliza texto legible por humanos para transmitir objetos de datos que consisten en pares de valores de atributo y tipos de datos de matriz (o cualquier otro valor serializable). Es un formato de datos muy común que se utiliza para la comunicación asincrónica entre navegador y servidor, incluso como reemplazo de XML en algunos sistemas de estilo AJAX.
Asistente de Google para Arduino
En este proyecto, queremos controlar diferentes partes de un Arduino como pines de E / S, PWM, puerto serie, etc. enviando una cadena desde el Asistente de Google al puerto serie Arduino. En primer lugar, necesitamos definir algunas frases específicas para que el Asistente de Google descubra a qué nos referimos. Luego crearemos un applet en el sitio web de IFTTT y estableceremos una conexión entre el Asistente de Google y nuestra base de datos. Después de eso, leemos los datos de la base de datos mediante el módulo ESP8266 y los enviamos al Arduino. ¡Empecemos!
Circuito
Implementación
En primer lugar, necesita un dispositivo para ejecutar su asistente de Google. Vaya a assistant.google.com y vea todos los dispositivos compatibles con el asistente. En este proyecto, usamos un dispositivo de teléfono Android. Abra ifttt.com y cree una cuenta. Después de iniciar sesión, haga clic en Mis subprogramas y luego haga clic en Nuevo subprograma. Ahora puede agregar su servicio como ESTO en su subprograma. Haga clic en ESTO y busque Asistente de Google. Tiene 4 opciones para definir su frase para la asistencia de Google. Elija una frase con un ingrediente numérico. En la página siguiente puede agregar su frase. Por ejemplo, quiere decir "Establecer PWM del pin 9 en 255". Simplemente escríbalo como su frase y reemplace "255" con un símbolo "#". Puede agregar más frases con el mismo significado como "PWM 9 a 255". Ahora agregue una respuesta para que el Asistente de Google pueda hacerle saber que se entendió su comando y se tomó la acción necesaria, por ejemplo, "El PWM está actualizado". Cuando haya terminado, haga clic en Crear activador. En "ESO" parte de su subprograma tiene muchos servicios para elegir la forma de búsqueda de "Webhooks" y elegir eso. Haga clic en "Realizar una solicitud web". Agregue la URL de su servidor para recibir datos. Configure el método en POST y seleccione Aplicación / json para el tipo de contenido. Ahora debe agregar un cuerpo de contenido. Algo como esto:{“Número”:”{ {NumberField}} ”}. Ahora haga clic en" Crear acción ".
Servidor y base de datos
Escribimos un código de muestra para que el servidor obtenga datos de IFTTT y los almacene en la base de datos. Puede cambiar los modelos para que sus datos se almacenen como su interés. Descarga desde aquí.
ESP8266 y código Arduino
Primero escribimos un código para ESP-01 para obtener datos de la base de datos y enviarlos al Arduino a través del puerto serie. Luego escribimos otro código para Arduino para obtener datos de ESP-01 y ejecutar el comando (por ejemplo, cambiar el PWM). Puede usar Arduino IDE para compilar ambos códigos y cargarlos en las placas.
Antes de poder usar la biblioteca ArduinoJson, debe asegurarse de que la biblioteca esté instalada en su computadora. Para hacer una verificación rápida, diríjase al administrador de la biblioteca en el IDE de Arduino (Sketch> Incluir biblioteca> Administrar bibliotecas) y escriba "ArduinoJson" en el cuadro de texto, si ve una etiqueta de color verde "INSTALADO" al lado del nombre del library, eso significa que está listo para comenzar y puede continuar con el siguiente paso. Si no ve la etiqueta, haga clic en el cuadro / división una vez y verá el botón "Instalar". Presione instalar y estará listo para el siguiente paso.
Ahora, cargue este código en ESP-01
#include "ESP8266WiFi.h" #include "ESP8266HTTPClient.h" #include "ArduinoJson.h" // WiFi Parametersconst char * ssid ="YOUR_SSID"; const char * password ="YOUR_PASSWORD"; configuración vacía () {Serial.begin (115200); WiFi.begin (ssid, contraseña); while (WiFi.status ()! =WL_CONNECTED) {retraso (1000); Serial.println ("Conectando ..."); }} void loop () {// Verifique el estado de WiFi si (WiFi.status () ==WL_CONNECTED) {HTTPClient http; // Objeto de clase HTTPClient http.begin ("http:// yourip / api / Home / GetAllApp"); int httpCode =http.GET (); // Verifique el código de retorno si (httpCode> 0) {// Obtiene la carga útil de respuesta a la solicitud String payload =http.getString (); // TODO:Analizando Serial.println (payload); } http.end (); // Cerrar conexión} // Retardo de retardo (3000);}
Y este es el código para que Arduino reciba órdenes del Asistente de Google y las ejecute.
String inputString =""; // una cadena para contener la mejora de la cadena de datos entrante; bool stringComplete =false; // si la cadena está completabool id; int f, buf; char x; void setup () {// inicializar serial:Serial.begin (9600); // reserva 200 bytes para inputString:inputString.reserve (200);} void loop () {// imprime la cadena cuando llega una nueva línea:if (stringComplete) {while (f <100) {if (inputString.substring ( f) =="id") {id =verdadero; descanso; } f ++; } si (id ==verdadero) {x =inputString.charAt (f + 4); } si (x =='4') {f =0; while (f <100) {if (inputString.substring (f) =="número") {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 ++;}} // borrar la cadena:inputString =""; stringComplete =false;}} void serialEvent () {while (Serial.available ()) {// obtener el nuevo byte:char inChar =(char) Serial.read (); // agregarlo a inputString:inputString + =inChar; // si el carácter entrante es una nueva línea, establezca una bandera para que el bucle principal puedo // hacer algo al respecto:if (inChar =='\ n') {stringComplete =true;}}}
¿Qué sigue?
Puedes mejorar este proyecto como desees. Aquí hay algunas sugerencias:
- Intente agregar sus comandos favoritos, como controlar sus pines de salida, puede usar un módulo de relé y controlar la luz de su habitación.
- Intente enviar datos desde Arduino al Asistente de Google.
Proceso de manufactura
- Control de acceso con QR, RFID y verificación de temperatura
- Control remoto universal usando Arduino, 1Sheeld y Android
- Controlar el aceptador de monedas con Arduino
- ¡Arduino con Bluetooth para controlar un LED!
- Arduino Nano:Controla 2 motores paso a paso con joystick
- Control del servomotor con Arduino y MPU6050
- Dispositivos Bluetooth controlados por voz con OK Google
- Módulo GPS u-blox LEA-6H 02 con Arduino y Python
- Reconocimiento y síntesis de voz con Arduino
- ThimbleKrox - Control del mouse con los dedos
- Sistema de asistencia basado en Arduino y hoja de cálculo de Google