MotionSense: Detección inteligente de intrusos con Arduino y ESP8266
Componentes y suministros
| Arduino Mega | × | 1 |
| Espressif ESP8266 ESP-01 | × | 1 |
| Sensor PIR HC-SR501 | × | 1 |
| Condensador 1000 µF | × | 1 |
| Resistencias y cables jumper | × | 1 |
Herramientas necesarias
- Cortaalambres
Aplicaciones y servicios en línea
- Pushbullet (para notificaciones push)
Sobre el proyecto





Introducción
En este tutorial explico cómo crear un sistema que notifique cualquier actividad no autorizada o intrusión. Utilicé Arduino y un sensor PIR para la detección de movimiento, y un ESP8266 para la conectividad WiFi. Mi smartphone (Xperia Z1) recibe las notificaciones mediante la popular app Pushbullet y sus APIs para enviar notificaciones desde Arduino.
Conocimientos previos
- Conocimientos de Arduino y hardware básico – www.arduino.cc
- Idea sobre comandos AT – Introducción a comandos AT
- Funcionamiento del sensor PIR – Sensor infrarrojo pasivo
Componentes utilizados
- Arduino Mega 2560
- Módulo WiFi ESP8266 serie ESP-01
- Sensor PIR HC-SR501
- Condensador electrolítico 1000 µF, varias resistencias (condensador para alimentación del WiFi, resistencias para regulación de voltaje)
- Cables de hilo simple 0,5 mm (terminales de conexión)
- Cables jumper hembra-hembra (conectores)
- Smartphone (para app Pushbullet, cualquier modelo sirve)
- Portátil (para programar en Arduino IDE)
- Arduino IDE [v1.6.4]
Qué hacer
Configuración del entorno
Si no tienes Arduino instalado, descárgalo de la web oficial.
Configuración del sensor PIR
Para máxima sensibilidad y ciclo de alerta mínimo, ajusta los potenciómetros del PIR como se muestra. Abre la esfera blanca del sensor y verás la descripción de pines: GND | OUT | VCC. Conecta jumpers hembra a GND, VCC y OUT. Luego conéctalos al Arduino:
- PIR GND → Arduino GND
- PIR VCC → Arduino 5V
- PIR OUT → Pin digital 2 (puedes elegir otro pin y modificarlo en el código)
Para probar el PIR puedes usar este código de Arduino Playground. Tu sensor PIR ya está LISTO.
Habilitar Arduino para conectarse a internet vía WiFi
Usé el módulo ESP8266 (variante ESP-01) que es bastante barato. Hay otras variantes y firmwares; usé el firmware AT por defecto. Consulta las imágenes de referencia para las conexiones.
Conecta el ESP8266 al Arduino con jumpers:
- ESP8266 GND → Arduino GND
- ESP8266 UXTX (TX) → Arduino RX2 (pin receptor del Mega, Serial2 en código)
- ESP8266 CH_PD (HIGH) → Arduino 5V (añade regulador de 3,3V; usé una resistencia por no tener regulador, pero se prefiere regulador)
- Deja RST, GPIO2 y GPIO0 sin conectar
- ESP8266 URXD (RX) → Arduino TX2 (pin transmisor del Mega, Serial2)
- ESP8266 VCC → 3,3V de Arduino
Problema de alimentación: El ESP8266 consume mucha corriente al transmitir y puede reiniciar el Arduino si este se alimenta por USB. Se recomienda alimentación externa para el ESP8266. Como solución rápida y barata usé un condensador electrolítico de 1000 µF:
- Pata larga → VCC del ESP8266 conectado a 3,3V
- Pata corta → GND del ESP8266 conectado a GND de Arduino
Tu módulo WiFi ESP8266 ya está LISTO.
Notificador Pushbullet
Pushbullet permite notificar tus dispositivos mediante push notifications. Usaremos su API para notificaciones del sensor PIR.
- Ve a PushBullet, regístrate, descarga la app de Chrome y la app para smartphone.
- Inicia sesión en Pushbullet en tus dispositivos.
- Prueba enviando algunos mensajes push desde la app o la extensión de Chrome.
- Ve a la sección API.
- NOTA: La documentación de Pushbullet usa HTTPS, pero Arduino no puede manejar HTTPS. Usaremos la versión HTTP (no documentada oficialmente) referenciada en GitHub. Añade
/pushbulletantes de la ruta REST. - Ejemplo: para notificación a todos los dispositivos, la doc dice
/v2/pushes; nosotros usaremos/pushbullet/v2/pushes. - URL base:
173.17.168.19, puerto:8181. - Obtén tu Access Token en tu cuenta (Configuración → Access Token) y guárdalo de forma segura.
Pushbullet ya está LISTO para enviar y recibir notificaciones.
Hora de programar
Abre este proyecto de GitHub, ve a la carpeta Experiments y busca MotionSense.ino. Copia el código al Arduino IDE y conecta tu Arduino (ya configurado con WiFi y PIR).
Modifica estos parámetros:
#define SSID "TU_SSID" // Reemplaza con tu nombre de red WiFi
#define PASS "TU_PASSWORD" // Reemplaza con tu contraseña WiFi
#define PIRPIN 2 // Cambia al pin digital deseado
#define AUTH_TOKEN "TU_TOKEN" // Reemplaza con tu Access Token de Pushbullet
Compila y sube. Tardará un poco en calibrar el sensor, inicializar el módulo WiFi y conectar al punto de acceso. Verás los mensajes en el Monitor Serie. Cuando todo esté listo, aparecerá continuamente:
"Everything fine | No intrusion"
Al pasar frente al sensor PIR, detectará movimiento y enviará notificación push a tus dispositivos.
Entendiendo el código brevemente
#define: parámetros predefinidos a modificar.setup(): inicializa Serial y Serial2 (WiFi).- Funciones clave:
sensor_calibration(): calibra el sensor (apaga pin PIR antes).check_WiFi_radio(): verifica si el módulo WiFi está OK.reset_wifi(): reinicia el módulo WiFi.set_wifi_mode(): configura el WiFi como cliente para conectar al AP.check_wifi_stat(): comprueba si está conectado al AP.connect_ssid(): conecta con tus credenciales si no lo está.pirRead(): lee valor del PIR (0 o 1). Si 1 → movimiento detectado.server_connect(): conecta al servidor Pushbullet.post(): envía notificación push.server_disconnect(): cierra conexión.
El bucle principal repite estos pasos.
Código
Código MotionSense
Consulta el README del repositorio para la explicación del código:
https://github.com/anupam19/ESP8266-experiments
Esquemáticos

Proceso de manufactura
- Tarjeta de visita PCB 4×4 Tic Tac Toe personalizada – Guía de diseño, construcción y código
- Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente
- Controlador DIY para soldador 862D+ — Precisión y fiabilidad
- Prevención de Incendios en Impresoras 3D: Sistema de Seguridad con Sensor Inteligente
- Crear un medidor IoT web con Arduino, Yaler e IFTTT
- Levitación magnética repulsiva con Arduino: Circuito simple y guía DIY
- Robot pinza controlado remotamente para manipulación de precisión
- Registrador de Datos de Alto Rendimiento para Globo Meteorológico con Arduino
- ArduFarmBot Parte 2: Estación de Control IoT Remota para Cultivos
- Reloj flip Arduino con matriz LED 8×8: proyecto DIY de reloj en tiempo real
- CoroFence: Detector Térmico Avanzado con Sensor PIR e Integración IoT