Nota
Hola, ¡bienvenido a la comunidad de entusiastas de Raspberry Pi, Arduino y ESP32 de SunFounder en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 con otros aficionados.
¿Por qué unirse?
Soporte de Expertos: Resuelve problemas postventa y desafíos técnicos con ayuda de nuestra comunidad y equipo.
Aprender y Compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.
Previsualizaciones Exclusivas: Accede antes que nadie a los anuncios de nuevos productos y avances.
Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
Promociones Festivas y Sorteos: Participa en sorteos y promociones festivas.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [aquí] ¡y únete hoy!
Lección 49: Sistema de Alerta por Vibración con IFTTT
Este proyecto establece un sistema de detección de vibraciones utilizando una placa Arduino (Uno R4 o R3) con un módulo ESP8266 y un sensor de vibración (SW-420). Cuando se detecta una vibración, el sistema envía una solicitud HTTP a un servidor de IFTTT, lo que puede desencadenar varias acciones como enviar una notificación o un correo electrónico.
Para evitar alertas excesivas en un corto período de tiempo, el sistema ha sido programado para enviar estas solicitudes HTTP con un intervalo mínimo de 2 minutos (120000 milisegundos). Este intervalo podría ajustarse según las necesidades del usuario.
Componentes Requeridos
En este proyecto, necesitamos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ARTÍCULOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit de Sensores Universal para Creadores |
94 |
También puedes comprarlos por separado en los enlaces a continuación.
Introducción al Componente |
Enlace de Compra |
|---|---|
Arduino UNO R3 o R4 |
|
- |
|
- |
Cableado
Configurar IFTTT
IFTTT es una empresa comercial privada fundada en 2011 que opera plataformas de automatización digital en línea que ofrece como servicio. Sus plataformas proporcionan una interfaz visual para realizar declaraciones if cruzadas a sus usuarios, que, a partir de 2020, eran 18 millones de personas.
IFTTT significa «Si Esto Entonces Aquello». Básicamente, si se cumplen ciertas condiciones, entonces sucederá algo más. La parte de «si esto» se llama un disparador, y la parte de «entonces aquello» se llama una acción. Conecta dispositivos inteligentes para el hogar, redes sociales, aplicaciones de entrega y más para que pueda realizar tareas automatizadas.
1) Registrarse en IFTTT
Escribe «https://ifttt.com» en tu navegador y haz clic en el botón «Comenzar» ubicado en el centro de la página. Completa el formulario con tu información para crear una cuenta.
Haz clic en «Atrás» para salir de la introducción rápida, regresa a la página principal de IFTTT, actualiza la página e inicia sesión de nuevo.
2) Crear el Applet
Haz clic en «Crear» para empezar a crear el Applet.
Si Este Disparador
Haz clic en «Agregar» junto a «Si Este» para agregar un disparador.
Busca «webhook» y haz clic en «Webhooks».
Haz clic en «Recibir una solicitud web» en la página mostrada en la siguiente imagen.
Establece el «Nombre del Evento» a «vibration_detected».
Luego Esa Acción
Haz clic en «Agregar» junto a «Luego Esa» para agregar una acción.
Busca «correo electrónico» y haz clic en «Correo electrónico».
Haz clic en «Envíame un correo electrónico» en la página mostrada en la siguiente imagen.
Establece el asunto y el contenido del correo electrónico a enviar cuando se detecte vibración.
Como referencia, el asunto está configurado como «[ESP-01] ¡Vibración detectada!», y el contenido es «Se detectó vibración, ¡confirma la situación prontamente! {{OccurredAt}}». Cuando se envíe un correo electrónico, {{OccurredAt}} se reemplazará automáticamente con la hora en que ocurrió el evento.
De acuerdo con los siguientes pasos, completa la creación del Applet.
Código
Abre el archivo
Lesson_49_Vibration_alert_system.inobajo la ruta deuniversal-maker-sensor-kit\arduino_uno\Lesson_49_Vibration_alert_system, o copia este código en Arduino IDE.Necesitas ingresar el
mySSIDymyPWDdel WiFi que estás usando.String mySSID = "your_ssid"; // SSID del WiFi String myPWD = "your_password"; // Contraseña del WiFi
También necesitas modificar el
URLcon el nombre del evento que configuraste y tu clave API.String URL = "/trigger/vibration_detected/with/key/xxxxxxxxxxxxxxxxxx";
Aquí puedes encontrar tu CLAVE API única que debes mantener privada. Escribe el nombre del evento como
vibration_detected. Tu URL final aparecerá al final de la página web. Copia esta URL.
Después de seleccionar la placa y el puerto correctos, haz clic en el botón Subir.
Abre el monitor Serial(configura la velocidad de transmisión en 9600) y espera a que aparezca un aviso como una conexión exitosa.
Análisis del Código
El módulo ESP8266 que viene con el kit ya viene pregrabado con firmware AT. Por lo tanto, el módulo ESP8266 puede ser controlado a través de comandos AT. En este proyecto, usamos software serial para permitir la comunicación entre la placa Arduino Uno y el módulo ESP8266. La placa Arduino Uno envía comandos AT al módulo ESP8266 para la conexión a la red y el envío de solicitudes. Puedes referirte a ESP8266 AT Instruction Set.
La placa Uno lee los valores del sensor y envía comandos AT al módulo ESP8266. El módulo ESP8266 se conecta a una red y envía solicitudes a los servidores de IFTTT.
Incluye la biblioteca SoftwareSerial para la comunicación serial entre Arduino y ESP8266
#include <SoftwareSerial.h> SoftwareSerial espSerial(2, 3);
Configura las credenciales de WiFi y los detalles del servidor IFTTT
String mySSID = "your_ssid"; String myPWD = "your_password"; String myHOST = "maker.ifttt.com"; String myPORT = "80"; String URL = "/trigger/xxx/with/key/xxxx";
Define variables para el sensor de vibración y control de frecuencia de alerta
unsigned long lastAlertTime = 0; const unsigned long postingInterval = 120000L; const int sensorPin = 7;
En
setup(), inicializa la comunicación serial, el módulo ESP8266 y conéctate a WiFivoid setup() { Serial.begin(9600); espSerial.begin(115200); // Inicializa el módulo ESP8266 sendATCommand("AT+RST", 1000, DEBUG); //Reinicia el módulo ESP8266 sendATCommand("AT+CWMODE=1", 1000, DEBUG); //Establece el modo ESP como modo estación sendATCommand("AT+CWJAP=\"" + mySSID + "\",\"" + myPWD + "\"", 3000, DEBUG); //Conéctate a la red WiFi while (!espSerial.find("OK")) { //Espera la conexión } }
En
loop(), detecta vibración y envía alerta si ha pasado el intervalo de tiempovoid loop() { if (digitalRead(sensorPin)) { if (lastAlertTime == 0 || millis() - lastAlertTime > postingInterval) { Serial.println("Detected vibration!!!"); sendAlert(); //Envía una solicitud HTTP al servidor IFTTT } else { Serial.print("Detected vibration!!! "); Serial.println("Since an email has been sent recently, no warning email will be sent this time to avoid bombarding your inbox."); } } else { if (DEBUG) { Serial.println("Detecting..."); } } delay(500); }
sendAlert() construye la solicitud HTTP y la envía a través de ESP8266
void sendAlert() { String sendData = "GET " + URL + " HTTP/1.1" + "\r\n"; sendData += "Host: maker.ifttt.com\r\n"; sendATCommand("AT+CIPMUX=0",1000,DEBUG); sendATCommand("AT+CIPSTART=...",3000,DEBUG); sendATCommand("AT+CIPSEND=" + String(sendData.length()),1000,DEBUG); espSerial.println(sendData); }
Manejo de Comandos AT sendATCommand()
Esta función envía comandos AT al módulo ESP8266 y recopila respuestas.
void sendATCommand(String command, const int timeout, boolean debug) { // Imprime y envía el comando Serial.print("AT Command ==> "); Serial.print(command); Serial.println(); espSerial.println(command); // Envía el comando AT // Obtiene la respuesta del módulo ESP8266 String response = ""; long int time = millis(); while ((time + timeout) > millis()) { // Espera la respuesta hasta el tiempo de espera while (espSerial.available()) { char c = espSerial.read(); response += c; } } // Imprime la respuesta si el modo de depuración está activado if (debug) { Serial.println(response); Serial.println("--------------------------------------"); }
Referencia