Controla tu Arduino con Google Assistant – Tutorial Completo Paso a Paso
Componentes y materiales
| Componente | Cantidad | |
|---|---|---|
| Arduino UNO | 1 | |
| Espressif ESP8266 ESP-01 | 1 | Módulo WiFi |
Aplicaciones y servicios online
- Arduino IDE
- Microsoft Visual Studio 2017
Sobre el proyecto
En este proyecto aprenderemos a crear una conexión entre un servicio de internet y placas Arduino. Al final podrás:
- Obtener datos de Google Assistant
- Usar el protocolo IFTTT
- Entender webhooks y peticiones HTTP
- Hablar con tu Arduino

Google Assistant & IFTTT Applets
Google Assistant es un asistente virtual potenciado por IA, disponible en móviles y dispositivos smart home. A diferencia de Google Now, mantiene conversaciones bidireccionales, reconoce mejor el habla y responde rápido y correctamente. Interacción principal por voz natural (también teclado). Puede buscar en Internet, programar eventos/alarmas, ajustar hardware, mostrar info de tu cuenta Google. Google anunció que podrá identificar objetos, recopilar info visual via cámara, compras, envío de dinero, identificar canciones.
IFTTT (If This Then That) es un servicio web gratuito para crear cadenas de declaraciones condicionales simples llamadas applets. Un applet se dispara por cambios en otros servicios (Gmail, Facebook, Telegram, Instagram, Pinterest). Ejemplo: enviar email si tuiteas con hashtag, copiar foto de Facebook a archivo si te etiquetan. Disponible en iOS y Android. En 2015, usuarios creaban ~20 millones de "recetas" al día.

Webhook & JSON
Un webhook en desarrollo web es un método para aumentar o alterar el comportamiento de una página/app web con callbacks personalizados. Estos callbacks pueden ser mantenidos por terceros no afiliados al origen. Término acuñado por Jeff Lindsay en 2007.
JSON (JavaScript Object Notation) es un formato estándar abierto que usa texto legible para transmitir objetos de datos con pares atributo-valor y arrays. Muy común en comunicación asíncrona navegador-servidor, reemplazo de XML en algunos sistemas AJAX.

Google Assistant → Arduino
Objetivo: controlar pines I/O, PWM, puerto serie, etc. del Arduino enviando una cadena desde Google Assistant al puerto serie del Arduino.
- Definir frases específicas para Google Assistant
- Crear applet en IFTTT conectando Google Assistant con nuestra base de datos
- Leer datos de la base de datos con ESP8266 y enviarlos al Arduino por Serial
Circuito

Implementación
- Dispositivo para Google Assistant: Ve a assistant.google.com para ver dispositivos compatibles. Usamos un teléfono Android.
- Crear cuenta en IFTTT: ifttt.com → My Applets → New Applet.
- THIS (Disparador): Buscar "Google Assistant" → Elegir "Say a phrase with a number ingredient".
Ejemplo de frase: "Set PWM of pin 9 to 255" → reemplazar "255" por#.
Añadir más frases equivalentes: "PWM 9 to 255".
Respuesta del Assistant: "The PWM is updated".
Click "Create Trigger". - THAT (Acción): Buscar "Webhooks" → "Make a web request".
URL: tu servidor para recibir datos.
Method: POST
Content Type: application/json
Body:{"Number":"{{NumberField}}"}
Click "Create action".

Servidor y Base de Datos
Código de ejemplo para servidor que recibe datos de IFTTT y almacena en BD. Puedes modificar modelos según tus necesidades. Descargar desde aquí (enlace original).
Código ESP8266 & Arduino
Primero: código para ESP-01 que lee datos de la BD y los envía al Arduino por Serial.
Segundo: código para Arduino que recibe órdenes y las ejecuta (ej. cambiar PWM).
Librería ArduinoJson: Verificar instalación en Arduino IDE → Sketch → Include Library → Manage Libraries → buscar "ArduinoJson". Si no está, instalar.

Código para ESP-01:
#include "ESP8266WiFi.h"
#include "ESP8266HTTPClient.h"
#include "ArduinoJson.h"
// Parámetros WiFi
const char* ssid = "TU_SSID";
const char* password = "TU_PASSWORD";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando...");
}
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin("https://tu-ip/api/Home/GetAllApp"); // Tu endpoint
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
// TODO: Parsear JSON
Serial.println(payload);
}
http.end();
}
delay(3000); // Consultar cada 3 segundos
}
Código para 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) {
// Buscar "id" en el string recibido
while (f < 100) {
if (inputString.substring(f) == "id") {
id = true;
break;
}
f++;
}
if (id == true) {
x = inputString.charAt(f + 4);
}
// Si id corresponde a comando PWM pin 9
if (x == '4') {
f = 0;
while (f < 100) {
if (inputString.substring(f) == "number") {
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); // Ejecutar PWM en pin 9
break;
}
f++;
}
}
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n') stringComplete = true;
}
}

¿Qué sigue?
Puedes mejorar el proyecto:
- Añadir tus comandos favoritos: controlar pines de salida, usar módulo relé para luces de casa.
- Enviar datos desde Arduino a Google Assistant (bidireccional).
Proceso de manufactura
- Sistema de control de acceso integrado con QR, RFID y verificación de temperatura
- Mando universal Android con Arduino, 1Sheeld y control IR
- Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
- Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
- Controla Dos Motores Paso a Paso con Arduino Nano y Joystick - Tutorial Sencillo
- Control Preciso de Servo con Arduino y MPU6050 (SG90 / MG996R)
- Electrodomésticos activados por voz: Control Bluetooth con Google Assistant
- Módulo GPS u-blox LEA‑6H 02: Guía de integración con Arduino y Python
- Dominando reconocimiento y síntesis de voz en Arduino Due
- ThimbleKrox: Control de ratón montado en el dedo con Arduino Micro y MPU-6050
- Sistema de control de asistencia RFID en tiempo real con Arduino y Google Sheets