Tutorial ESP32 21/55 - Detección de humanos con sensor de movimiento PIR | Kit de aprendizaje IoT ESP32 de SunFounder
En este tutorial, aprenderemos a utilizar un sensor de movimiento PIR con el ESP32 para detectar la presencia humana. El ESP32 es un microcontrolador potente que ofrece capacidades tanto de Wi-Fi como de Bluetooth, lo que lo hace ideal para proyectos de IoT. Al integrar un sensor PIR, podemos construir un sistema que activa un LED o un zumbador cada vez que se detecta movimiento, proporcionando una forma simple pero efectiva de monitorear la actividad humana.
El sensor PIR (Infrarrojo Pasivo) detecta el movimiento al captar la radiación infrarroja emitida por los objetos, especialmente aquellos de cuerpo caliente como los humanos. Cuando se detecta movimiento, el sensor envía una señal al ESP32, que puede activar una salida, como encender un LED o hacer sonar un zumbador. Este tutorial te guiará a través de la configuración del hardware, el cableado y el código necesarios para que el sistema funcione correctamente (en el video a las 00:45).
Hardware Explicado
Este proyecto involucra varios componentes clave. El microcontrolador ESP32 actúa como el cerebro de la operación, manejando los datos de los sensores y controlando las salidas. El sensor de movimiento PIR detecta movimiento midiendo cambios en la radiación infrarroja. El LED o el zumbador proporciona una alerta visual o audible cuando se detecta movimiento.
El ESP32 está equipado con Wi-Fi y Bluetooth, lo que permite funciones ampliadas como la conectividad en la nube. El sensor PIR contiene una lente que enfoca la luz infrarroja sobre un sensor piroeléctrico, que genera una señal de voltaje cuando detecta cambios en los niveles de infrarrojos, indicando movimiento.
Detalles de la hoja de datos
| Fabricante | SunFounder |
|---|---|
| Número de pieza | Módulo de Sensor PIR |
| Tensión de lógica/E/S | 3.3 V |
| Tensión de suministro | 3.3 V |
| Corriente de salida (por canal) | 20 mA máx |
| Corriente máxima (por canal) | 50 mA máx |
| Orientación sobre la frecuencia PWM | N/A |
| Umbrales de lógica de entrada | 0.3 V (bajo), 2.0 V (alto) |
| Caída de tensión / RDS(on)/ saturación | N/A |
| Límites térmicos | 0 a 70 °C |
| Paquete | Módulo |
| Notas / variantes | Sensibilidad y retraso ajustables |
- Asegúrese de proporcionar la alimentación adecuada (3.3 V) para evitar daños.
- Usa un resistor para el LED para limitar la corriente.
- Mantenga el cableado adecuado para prevenir cortocircuitos.
- Ajuste las perillas del sensor PIR para la sensibilidad y el retraso según sea necesario.
- Prueba el sensor en diferentes entornos para un rendimiento óptimo.
Instrucciones de cableado

Para cablear el sensor de movimiento PIR y el LED al ESP32, comienza conectando el pin VCC del sensor PIR a la salida de 3.3 V en el ESP32. Luego, conecta el pin de tierra del sensor PIR a un pin de tierra en el ESP32. El pin de señal (a menudo etiquetado comoS) del sensor PIR debe conectarse al pin GPIO 14 en el ESP32.
Para el LED, conecta la pata más larga (ánodo) al pin GPIO 26 a través de una resistencia de 220 Ohmios, y conecta la pata más corta (cátodo) a tierra. Asegúrate de que todas las conexiones estén seguras para garantizar un funcionamiento adecuado. Si estás usando un zumbador en lugar de un LED, conecta un pin del zumbador al pin GPIO 26 y el otro a tierra, reemplazando la configuración del LED.
Ejemplos de Código y Tutorial
En el código, definimos los números de pin para el sensor PIR y el LED. Usamosconst int pirPin = 14;para configurar el pin PIR yconst int ledPin = 26;para el pin LED. Estas constantes aseguran que los números de pin permanezcan sin cambios durante la ejecución del programa.
const int pirPin = 14; // the number of the pir pin
const int ledPin = 26; // LED pinEste fragmento inicializa los pines que utilizaremos. En elsetup()función, configuramos el pin PIR como una entrada y el pin LED como una salida. Esta configuración es crucial para leer el estado del sensor y controlar el LED.
void setup() {
Serial.begin(115200);
pinMode(pirPin, INPUT); // initialize the pir pin as an input
pinMode(ledPin, OUTPUT); // initialize the LED pin as an output
}En elloop()función, leemos continuamente el estado del sensor PIR usandodigitalRead(pirPin);. Si el sensor detecta movimiento (indicado por un estado ALTO), encendemos el LED utilizandodigitalWrite(ledPin, HIGH);De lo contrario, apagamos el LED.
if (pirState == HIGH) {
digitalWrite(ledPin, HIGH); // turn LED on
} else {
digitalWrite(ledPin, LOW); // turn LED off
}Esta lógica permite que el LED responda a los movimientos detectados por el sensor PIR. Asegúrate de cargar el código completo proporcionado al final del artículo para un funcionamiento completo.
Demostración / Qué Esperar
Una vez que todo esté configurado y el código esté cargado, el LED se encenderá cuando el sensor PIR detecte movimiento. Puedes probar el sensor moviéndote frente a él; el LED debería encenderse de inmediato. Si el sensor está configurado con un retraso, permanecerá encendido durante el tiempo especificado antes de apagarse nuevamente (en el video a las 12:15).
Los errores comunes incluyen cableado incorrecto, lo que puede impedir que el sensor funcione. Asegúrese de que el sensor PIR esté correctamente alimentado y de que el pin de señal esté conectado al pin GPIO correcto en el ESP32. Ajustar los controles de sensibilidad y de retardo en el sensor PIR también puede ayudar a optimizar el rendimiento según su entorno.
Marcas de tiempo del video
- 00:00 Comenzar
- 1:54 Introducción al sensor PIR
- 6:38 Explicación del cableado
- 10:21 Código de Arduino explicado
- 12:45 Seleccionando la placa ESP32 y el puerto COM en Arduino IDE
- 14:27 Demostración y calibración del sensor PIR
Common Course Links
Common Course Files
Recursos y referencias
Aún no hay recursos.
Archivos📁
Hoja de datos (pdf)
-
Hoja de datos del sensor de movimiento RE200B_PRI
RE200B_PRI_datasheet.pdf0.02 MB -
Hoja de datos del chip de sensor de movimiento BISS0001
BISS0001_datasheet.pdf0.16 MB
Otros archivos
-
Manual del usuario del sensor de movimiento HC-SR501
robojax-HC-SR501-motion-manual.pdf