Arduino Nano ESP32 - Sensor de movimiento
Este tutorial proporciona instrucciones sobre cómo usar Arduino Nano 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 Arduino Nano 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 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 personas (o de 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...)
Disposición de pines 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 OUTPUT: conecta este pin a la entrada del ESP32. Este pin emite 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 la radiación infrarroja pero NO se está moviendo (p. ej., una persona que permanece inmóvil), NO es detectado por el sensor.
- Si un objeto se está moviendo pero NO emite la radiación infrarroja (p. ej., un robot o un vehículo), NO es detectado por el sensor.
- Si se detecta el movimiento, los humanos están presentes
- Si no se detecta el 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 los 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 sobre 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 humanos; el sensor solo detecta el movimiento. Y luego la presencia de humanos se infiere a partir de la detección del movimiento:
Hay un problema con esta regla en la práctica: los humanos están dentro del alcance del sensor pero no se están moviendo. El movimiento no se detecta. El Arduino Nano ESP32 (o MCU) deduce que no hay un humano presente.
Sin embargo, los sensores se utilizan ampliamente para detectar a las personas en muchas aplicaciones porque este problema no es grave y el precio de los sensores es barato.
Arduino Nano ESP32 y Sensor de Movimiento HC-SR501
Cuando un pin del ESP32 se configura como entrada digital, puede leer el estado (bajo o alto) de cualquier cosa a la que esté conectado.
Conectando el pin del ESP32 al pin de salida del sensor HC-SR501, podemos usar el código Arduino Nano ESP32 para leer el valor del pin de salida y, así, inferir el movimiento.
Diagrama de cableado entre el sensor de movimiento HC-SR501 y Arduino Nano ESP32
- El diagrama de cableado al alimentar la placa Arduino Nano ESP32 a través del puerto USB.

This image is created using Fritzing. Click to enlarge image
- El diagrama de cableado cuando se alimenta la placa Arduino Nano ESP32 a través del pin Vin.

This image is created using Fritzing. Click to enlarge image
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 un 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 utilizando la función digitalRead().
- Detectar el inicio del movimiento (cambio de estado del pin de bajo a alto)
- Detectar la detención del movimiento (cambio de estado del pin de ALTO a BAJO)
Código de Arduino Nano ESP32
Pasos R\u00e1pidos
- Si es la primera vez que usas Arduino Nano ESP32, consulta cómo configurar el entorno para Arduino Nano ESP32 en el IDE de Arduino.
- Copia el código anterior y pégalo en el IDE de Arduino.
- Compila y carga el código en la placa Arduino Nano 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 delante del rango del sensor
- Ver 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.