ESP32 - Sensor de Movimiento
Este tutorial explica cómo usar ESP32 con el sensor de movimiento HC-SR501. En detalle, aprenderemos:
- Cómo funciona un sensor de movimiento HC-SR501
- Cómo conectar un sensor de movimiento HC-SR501 al ESP32
- Cómo leer el valor de un sensor de movimiento HC-SR501 para detectar la presencia humana
Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca del sensor de movimiento HC-SR501

El sensor PIR HC-SR501 es un sensor que puede detectar el movimiento de las personas (o de los animales). Se utiliza ampliamente para detectar la presencia de personas en muchas aplicaciones (encender/apagar automáticamente la bombilla, activar/desactivar la escalera mecánica, detectar a un intruso, abrir/cerrar la puerta...)
Pinout del sensor de movimiento HC-SR501
El sensor de movimiento HC-SR501 tiene 3 pines:
- Pin VCC: conecta este pin a VCC (5V)
- Pin GND: conecta este pin a GND (0V)
- Pin de salida: conecta este pin al pin de entrada del ESP32. Esta salida genera la señal correspondiente a la detección de movimiento:
- Bajo si no se detecta movimiento
- Alto si se detecta movimiento.
- El objeto está emitiendo radiación infrarroja.
- El objeto se está moviendo o temblando.
- Si un objeto está emitiendo el rayo infrarrojo pero NO se mueve (por ejemplo, una persona permanece inmóvil sin moverse), no es detectado por el sensor.
- Si un objeto se está moviendo pero NO emite el rayo infrarrojo (por ejemplo, un robot o un vehículo), no es detectado por el sensor.
- Si se detecta movimiento, los humanos están presentes
- Si no se detecta movimiento, los humanos no están presentes
También hay dos potenciómetros y un jumper en el sensor de movimiento HC-SR501. Estos potenciómetros y el jumper se utilizan para ajustar la configuración del sensor. Las instrucciones detalladas se describen en la Usos Avanzados.

Cómo funciona el sensor de movimiento HC-SR501
El principio de funcionamiento del sensor HC-SR501 se basa en el cambio de la radiación infrarroja en el objeto en movimiento. Para ser detectado por el sensor HC-SR501, el objeto debe cumplir dos requisitos:
Así:
Los animales y los humanos emiten radiación infrarroja de forma natural. Por lo tanto, los animales y los humanos pueden ser detectados por el sensor HC-SR501 si se están moviendo.
El video anterior muestra el principio de funcionamiento del sensor de movimiento. En la práctica, el sensor de movimiento puede funcionar de manera diferente según la configuración del sensor (descrita en la sección Usos Avanzados).
Detección de la presencia humana
El propio sensor no detecta directamente la presencia de personas, el sensor solo detecta el movimiento. Y entonces la presencia de personas se infiere a partir de la detección del movimiento:
Hay un problema con esta regla en la práctica, los humanos están en el alcance del sensor pero NO se están moviendo. El movimiento NO se detecta. El ESP32 (o MCU) deduce que el humano NO está presente.
Sin embargo, el sensor se utiliza ampliamente para detectar al ser humano en muchas aplicaciones porque este problema no es grave y el precio del sensor es barato.
ESP32 y HC-SR501 Sensor de Movimiento
Cuando el pin de un ESP32 está configurado como entrada digital, puede leer el estado (bajo o alto) de cualquier cosa a la que esté conectado.
Al conectar el pin del ESP32 al pin de salida del sensor HC-SR501, podemos usar el código del ESP32 para leer el valor del pin de salida y luego inferir el movimiento.
Diagrama de cableado entre el sensor de movimiento HC-SR501 y el ESP32
- Cómo conectar ESP32 y sensor de movimiento usando placa de pruebas (alimentada mediante un cable USB)

This image is created using Fritzing. Click to enlarge image
Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.
- Cómo conectar ESP32 y sensor de movimiento usando placa de pruebas (alimentado a través del pin Vin)

This image is created using Fritzing. Click to enlarge image
- Cómo conectar el ESP32 y el sensor de movimiento usando placa breakout con terminales de tornillo (alimentada mediante un cable USB)

- Cómo conectar el ESP32 y un sensor de movimiento utilizando la placa breakout con bloque de terminales de tornillo (alimentada a través del pin Vin)

Configuración inicial
| Detection Range Adjuster | Fully screw it in the clockwise direction. |
| Time Delay Adjuster | Fully screw it in the anti-clockwise direction. |
| Repeat Trigger Selector | Put jumper like the below image. |

Cómo programar el sensor de movimiento
- Configura el pin de un ESP32 en modo de entrada digital utilizando la función pinMode()
- Lee el estado del pin de salida del sensor usando la función digitalRead().
- Detectar el inicio del movimiento (cambio de estado del pin de BAJO a ALTO)
- Detección de la detención del movimiento (cambio de estado del pin de ALTO a BAJO)
Código ESP32
Pasos R\u00e1pidos
- Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
- Copia el código anterior y pégalo en el IDE de Arduino.
- Compila y carga el código en la placa ESP32 haciendo clic en el botón Subir en el IDE de Arduino
- Abre el Monitor Serial en el IDE de Arduino

- Mueve tu mano frente al rango del sensor
- Mira la salida en el Monitor Serial
Video Tutorial
Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.