¿Alguna vez has querido crear tu propio sistema de seguridad en casa? En este artículo te enseñaremos cómo hackear un sensor de movimiento PIR utilizando un ESP8266. Descubre cómo puedes personalizar y mejorar la funcionalidad de este sensor para proteger tu hogar de manera creativa y económica. ¡Sigue leyendo para descubrir todos los detalles!
En este proyecto modificamos un sensor de movimiento comercial (alimentado por red eléctrica) con un ESP8266 para registrar datos cuando se detecta movimiento. Los datos se envían a Node-RED mediante el protocolo de comunicación MQTT. El ESP8266 se alimenta desde el cable de salida de fase del sensor de movimiento mediante el convertidor CA/CC HLK-PM03.
requisitos
Antes de seguir adelante con este proyecto, te recomendamos echar un vistazo a los siguientes recursos:
- Primeros pasos con el transceptor WiFi ESP8266 (revisión)
- Suministre ESP8266 con voltaje de red a través de Hi-Link HLK-PM03
- ¿Qué es MQTT y cómo funciona?
- Debes tener instalado en tu Raspberry Pi: Node-RED, Node-RED Dashboard y Mosquitto MQTT Broker
- ESP8266 GPIO y referencia de pinout
Piezas necesarias:
Aquí hay una lista de las piezas necesarias para este proyecto:
- Sensor de movimiento PIR 220V (o sensor de movimiento PIR de 110V)
- ESP8266-01 – leer Las mejores placas de desarrollo Wi-Fi ESP8266
- Adaptador serie ESP8266-01 (para cargar el código al ESP8266)
- Hola enlace HLK-PM03 (para convertir la tensión de red a DC 3,3 V)
- pequeño protoboard
- Fusible lento (200 mA)
- Condensador electrolítico 47uF
- Frambuesa Pi (para alojar el corredor Node-RED y MQTT) – leer Los mejores kits de Raspberry Pi
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Descripción del proyecto
Este proyecto se divide en tres partes:
- Estructura del circuito
- Escribir y cargar código ESP8266
- Creando el flujo Node-RED
La siguiente imagen muestra una descripción general del proyecto que crearemos.
Sensor de movimiento
Hackeamos un sensor de movimiento disponible comercialmente que tiene suficiente espacio para acomodar un ESP-01 y el módulo convertidor CA/CC HLK-PM03. Compramos nuestro sensor de movimiento por $5 en una tienda local.
Cuando el sensor PIR detecta movimiento, el cable incandescente libera electricidad, que puede encender una lámpara o un dispositivo. Debería haber un diagrama de cableado similar en la cubierta de su sensor de movimiento o en el manual del usuario.
En nuestro proyecto, la carga de salida del sensor de movimiento es la HLK-PM03 CA/CC Módulo convertidor que suministra energía al ESP8266.
Relacionado: Suministre energía CA a ESP8266 a través del convertidor HLK-PM03
El convertidor CA/CC del módulo HLK-PM03 entrega 3,3 V a 110 VCA o 220 VCA. Esto lo hace perfecto para alimentar el ESP8266 a través de la tensión de red.
En resumen, el ESP8266 se enciende cuando se detecta movimiento. El ESP8266 puede realizar tareas siempre que el sensor de movimiento esté activado.
Es posible que deba ajustar la cantidad de tiempo que el sensor permanece encendido para que su ESP8266 tenga tiempo suficiente para completar sus tareas. El sensor debería tener un botón para ajustar la hora (y otro para ajustar el brillo).
En nuestro ejemplo, el ESP8266 ejecuta un boceto cada vez que se enciende, enviando información a Node-RED a través de MQTT para registrar la fecha y hora de la detección de movimiento.
En lugar de enviar información a Node-RED, puedes realizar otras tareas como:
- Registrar datos en una hoja de cálculo de Google.
- Enviar una alerta por correo electrónico de que se ha detectado movimiento;
- Envía notificaciones a tu teléfono inteligente.
Estas tareas se pueden completar fácilmente utilizando IFTTT.
1. Estructura del circuito
El siguiente diagrama esquemático muestra el circuito de este proyecto.
Retire la cubierta de su sensor de movimiento PIR. Dentro debe haber tres cables: fase en, neutralY Salida. Sigue estos pasos:
- cable fase en (marrón) y neutral (azul) al sensor de movimiento
- cable neutral (azul) y Salida (rojo) a la entrada HLK-PM03
Se recomienda agregar un fusible de acción lenta justo antes del convertidor HKL-PM03 y un capacitor en la salida.
Nota: Si está utilizando un ESP8266 que siempre está encendido con el HLK-PM03, le recomendamos utilizar este circuito de protección.
El HLK-PM03 genera 3,3 V y GND. Estos están conectados al pin VCC y GND del ESP8266 para fuente de alimentación.
Construimos el circuito HLK-PM03 y ESP8266 en un pequeño protoboard para ahorrar espacio. También agregamos algunos encabezados de pines para colocar el ESP8266-01. Esto le permite conectar y desconectar la placa cada vez que necesite cargar un código nuevo.
Recomendaciones de literatura: Guía de referencia de configuración de pines y GPIO de ESP8266
2. Escriba y cargue el código ESP8266
Programamos el ESP8266 con el IDE de Arduino. Para cargar código en su ESP8266, primero debe instalar el complemento ESP8266 si aún no lo ha hecho (instale la placa ESP8266 en el IDE de Arduino).
Usted también debe PubSubCliente Biblioteca para crear un cliente MQTT con ESP8266. La biblioteca PubSubClient proporciona un cliente para mensajes simples de publicación/suscripción con un servidor que admite MQTT (básicamente permite que su ESP8266 se comunique con Node-RED).
- Haga clic aquí para descargar la biblioteca PubSubClientdeberías tener uno .Cremallera Carpeta en su carpeta de Descargas
- Descomprime eso .Cremallera carpeta y deberías recibir maestro pubsubcliente Carpeta
- Cambie el nombre de su carpeta de
maestro pubsubclienteA pubsubcliente - mueve eso pubsubcliente Carpeta a su instalación Arduino IDE Bibliotecas Carpeta
Luego copie el siguiente código en su IDE de Arduino, pero no lo cargue todavía. Deberá realizar algunos cambios para que funcione para usted.
Debe editar el código con su propio SSID, contraseña y dirección IP del agente MQTT (dirección IP de Raspberry Pi).
/*********
Rui Santos
Complete project details at https://randomnerdtutorials.com
*********/
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// Replace with your SSID, password and MQTT broker IP address
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
const char* mqtt_server = "REPLACE_WITH_YOUR_MQTT_BROKER_IP";
//For example
//const char* mqtt_server = "192.168.1.144";
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
randomSeed(micros());
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Create a random client ID
String clientId = "ESP8266Client-";
clientId += String(random(0xffff), HEX);
// Attempt to connect
if (client.connect(clientId.c_str())) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void setup() {
pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output
digitalWrite(BUILTIN_LED, HIGH);
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
while (!client.connected()) {
reconnect();
}
Serial.print("Motion Detected");
// Publish MQTT message
String mqttMessage = "Motion Detected";
client.publish("esp/pir", mqttMessage.c_str());
}
void loop() {
client.loop();
}
Proporcione sus credenciales de red
Debe pegar sus credenciales de red en las siguientes líneas.
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
Pegue la dirección IP de su corredor MQTT
También debe proporcionar la dirección IP de su corredor MQTT.
const char* mqtt_server = "REPLACE_WITH_YOUR_MQTT_BROKER_IP";
Para encontrar la dirección IP de su corredor MQTT, primero debe configurarlo. Usamos el broker Mosquitto alojado en una Raspberry Pi. Siga los siguientes recursos si aún no lo ha hecho:
- Cómo instalar Mosquitto Broker en Raspberry Pi
- Prueba de Mosquitto Broker y Client en Raspbbery Pi
Así es como funciona el código
El código es muy simple. Simplemente publica un mensaje sobre un tema. Para fines de prueba, también encendemos el LED integrado cada vez que se enciende el ESP8266. Esto sucede en el configuración() porque solo se ejecuta una vez (cuando se detecta movimiento y mientras el ESP8266 está encendido).
void setup() {
pinMode(BUILTIN_LED, OUTPUT); // BUILTIN_LED pin as an output
digitalWrite(BUILTIN_LED, HIGH);
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
while (!client.connected()) {
reconnect();
}
Serial.print("Motion Detected");
// Publish MQTT message
String mqttMessage = "Motion Detected";
client.publish("esp/pir", mqttMessage.c_str());
}
Sube el código
Después de modificar el código con tus credenciales de red, puedes subirlo a tu tablero. Para cargar el código al ESP8266-01 necesitas uno adaptador serie o un programador FTDI.
3. Creando el flujo Node-RED
Antes de crear el flujo, debes tener instalado lo siguiente en tu Raspberry Pi:
- Nudo-ROJO
- Panel de control del nodo RED
- corredor de mosquitos
Importando el flujo Node-RED
Para importar el flujo Node-RED implementado, vaya a repositorio de GitHub o haga clic en la imagen a continuación para ver el archivo sin formato y copiar el código proporcionado.
A continuación, en la ventana Node-RED, seleccione el menú en la parte superior derecha y vaya a Importar > Portapapeles.
Luego pegue el código proporcionado y haga clic Importar.
Aquí está el flujo importado. Recibe los mensajes ESP8266 MQTT y registra el tiempo en que se detecta movimiento.
También agregamos dos botones para borrar y actualizar el registro.
Panel de control del nodo RED
Después de realizar todos los cambios necesarios, haga clic en el Insertar Botón para guardar todos los cambios.
Ahora su aplicación Node-RED está lista. Para acceder al panel de Node-RED y ver cómo se ve su aplicación, abra cualquier navegador en su red local y escriba:
http://Your_RPi_IP_address:1880/ui
demostración
Ahora puedes probar tu proyecto. Siempre que se detecta movimiento, el ESP8266 se enciende y envía un mensaje a Node-RED a través de MQTT.
Si va a su panel de Node-RED, puede ver todos los registros de cuándo se detectaron movimientos. Su aplicación debería verse como la siguiente imagen.
El panel muestra la hora de la última detección de movimiento, así como todos los registros anteriores. También tiene la opción de actualizar y eliminar el registro. Tenga en cuenta que la eliminación del registro no se puede deshacer.
Envolver
Este proyecto mostró cómo se puede piratear un sensor de movimiento disponible en el mercado con un ESP8266 para hacerlo más inteligente. Puede alimentar fácilmente el ESP8266 desde la tensión de red utilizando el HLK-PM03 y crear un circuito compacto que encaje en el sensor de movimiento.
Siempre que se detecta movimiento, el ESP8266 se enciende y realiza una tarea. En este caso, publica un mensaje MQTT para registrar el tiempo de detección de movimiento. Sin embargo, puedes escribir código fácilmente para realizar cualquier otra tarea.
Esperamos que este proyecto le haya resultado útil. Si disfrutó de este proyecto, es posible que también le interese uno de los siguientes recursos:
- Suministre ESP8266 con voltaje de red a través del convertidor Hi-Link HLK-PM03
- MicroPython: introducción a MQTT en ESP32/ESP8266
- Escudo multisensor ESP8266 con Nodo-RED
- [eBook] Domótica con ESP8266
Preguntas Frecuentes sobre cómo hackear un sensor de movimiento PIR con un ESP8266
¿Qué es un sensor de movimiento PIR?
Un sensor de movimiento PIR es un dispositivo que utiliza un sensor pasivo infrarrojo para detectar cambios en el ambiente, como movimientos. Estos sensores son comúnmente utilizados en sistemas de seguridad para activar alarmas o luces cuando se detecta movimiento.
¿Qué es un ESP8266?
El ESP8266 es un microcontrolador de bajo costo y alto rendimiento que integra capacidades de Wi-Fi. Es ampliamente utilizado en proyectos de IoT debido a su facilidad de programación y conectividad inalámbrica.
¿Qué es Node-RED?
Node-RED es una herramienta de programación visual basada en JavaScript que permite la creación de flujos de trabajo para el IoT. Se utiliza para integrar dispositivos y servicios, como en este caso, para recibir datos del ESP8266 a través de MQTT.
¿Cómo se puede hackear un sensor de movimiento PIR con un ESP8266?
Para hackear un sensor de movimiento PIR con un ESP8266, es necesario modificar el sensor comercial para que pueda alimentar el ESP8266 cuando detecte movimiento. Se debe realizar una conexión eléctrica adecuada y programar el ESP8266 para enviar datos a Node-RED a través de MQTT.
¿Se necesita experiencia previa en electrónica para llevar a cabo este proyecto?
Se recomienda tener conocimientos básicos en electrónica y programación para realizar este proyecto con éxito. Es importante seguir las instrucciones detalladas y tener cuidado al trabajar con corriente eléctrica.
¿Cuáles son los materiales necesarios para este proyecto?
- Sensor de movimiento PIR 220V
- ESP8266-01
- Adaptador serial ESP8266-01
- Convertidor AC/DC HLK-PM03
- Protoboard pequeño
- Fusible lento de 200mA
- Condensador electrolítico de 47uF
- Raspberry Pi
Estos son solo algunos de los materiales necesarios para el proyecto. Se pueden encontrar todos los componentes en tiendas especializadas o en línea.
¿Qué otras aplicaciones se pueden realizar con este proyecto?
Además de enviar datos a Node-RED, el ESP8266 puede ejecutar diversas tareas al detectar movimiento, como enviar correos electrónicos, notificaciones a dispositivos móviles o almacenar datos en una hoja de cálculo. Las posibilidades son casi ilimitadas.
Esperamos que estas preguntas frecuentes hayan aclarado tus dudas sobre cómo hackear un sensor de movimiento PIR con un ESP8266. Si deseas obtener más información detallada, te recomendamos revisar los recursos mencionados en este artículo.
¡Qué interesante! Nunca se me habría ocurrido aprovechar un ESP8266 para hackear un sensor de movimiento PIR. Definitivamente voy a intentarlo en casa. ¡Gracias por la idea!
¡Genial! Me encanta la idea de sacarle el máximo provecho a un sensor de movimiento PIR con un ESP8266. ¡Muy útil y creativo! ¡Gracias por la info!
¡Vaya, nunca se me habría ocurrido hackear un sensor de movimiento PIR con un ESP8266! ¡Qué ingenioso! Definitivamente tengo que probarlo en casa. ¡Gracias por el artículo!
¡Interesante tutorial! ¡Nunca se sabe cuándo podrías necesitar hackear un sensor de movimiento PIR! ¡Gracias por compartir!