ESP8266 - Sensor de movimiento
¿Alguna vez te has preguntado, “¿Cómo puede hacer eso?” cuando te encuentras con lugares con puertas que se abren y cierran automáticamente, bombillas que se encienden y apagan, o escaleras mecánicas que se activan sin intervención humana? Si es así, este tutorial no solo responderá a tu pregunta, sino que también te mostrará cómo hacerlo mediante el uso de ESP8266 y un sensor de movimiento. ¡Comencemos!
Este tutorial te enseña cómo usar ESP8266 con un sensor de movimiento. En detalle, aprenderemos:
- Cómo funciona el sensor de movimiento HC-SR501
- Cómo conectar el sensor de movimiento HC-SR501 al ESP8266
- Cómo programar el ESP8266 para leer el estado del sensor de movimiento HC-SR501
- Cómo usar el ESP8266 y HC-SR501 para detectar la presencia humana y actuar en consecuencia.
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 módulo que puede detectar el movimiento de personas (o animales). A menudo se utiliza en muchas aplicaciones para detectar la presencia de personas, como encender/apagar automáticamente una bombilla, abrir/cerrar una puerta, activar/desactivar una escalera mecánica o detectar a un intruso.
Esquema de pines del sensor de movimiento
El sensor de movimiento HC-SR501 tiene tres pines:
- Pin GND: Este pin debe conectarse a GND (0 V)
- Pin VCC: Este pin debe conectarse a VCC (5 V)
- Pin de salida: Este es un pin de salida. Estará bajo cuando no se detecte movimiento y alto cuando se detecte movimiento. Este pin debe conectarse al pin de entrada de un ESP8266.
El HC-SR501 tiene un jumper y dos potenciómetros que se utilizan para ajustar la configuración del sensor.

Cómo funciona
El sensor HC-SR501 es capaz de detectar movimiento basándose en cambios en la radiación infrarroja procedente de un objeto en movimiento. Para que el sensor HC-SR501 identifique el objeto, deben cumplirse dos criterios:
- El objeto debe estar en movimiento o vibrando
- El objeto debe emitir radiación infrarroja
En consecuencia:
- Si un objeto se está moviendo pero no emite rayos infrarrojos (p. ej., un robot o un coche de juguete), no será detectado por el sensor.
- Si un objeto emite rayos infrarrojos pero no se está moviendo (p. ej., una persona de pie), no será detectado por el sensor.
Los humanos y los animales son la fuente de radiación infrarroja. Por lo tanto, el sensor puede detectar sus movimientos.
El estado del pin de salida del sensor:
- Cuando no hay humano (o animal) presente en el rango detectado, está en BAJO.
- Cuando un humano (o animal) entra en el rango detectado, el pin pasará de BAJO a ALTO, indicando que se ha detectado movimiento.
- Cuando un humano (o animal) sale del rango detectado, el pin pasará de ALTO a BAJO, mostrando que el movimiento se ha detenido.
El video de arriba muestra la forma en que el sensor de movimiento funciona en teoría. En la práctica, el sensor de movimiento funciona de forma ligeramente diferente según los ajustes del sensor (los cuales se detallan en la sección Usos avanzados).
Detección de la presencia humana
El sensor no detecta directamente la presencia de humanos. Solo detecta movimiento. Usamos ESP8266 para inferir si hay humanos presentes o no basándonos en el movimiento detectado por el sensor, siguiendo esta regla:
- Si se detecta movimiento, implica que hay personas presentes
- Si no se detecta movimiento, implica que no hay personas presentes
Esta regla no es perfecta y no funciona en un escenario en el que las personas están dentro del alcance del sensor, pero no se mueven; no se detecta movimiento y el ESP8266 concluye que la persona no está presente. Sin embargo, sigue siendo aceptable porque las personas suelen hacer pequeños movimientos.
Por ejemplo, en la sala de reuniones, el sensor de movimiento se utiliza para encender y apagar la luz. Cuando las personas entran en la sala, se iluminará automáticamente. Sin embargo, si todos permanecen inmóviles durante la reunión, el sensor no detectará ningún movimiento, lo que indica que nadie está presente, y la luz se apagará. Para volver a encender la luz, alguien debe moverse.
Sin embargo, este problema NO es grave y el sensor es económico. Por lo tanto, se utiliza ampliamente para detectar personas en muchas aplicaciones.
ESP8266 - Sensor de Movimiento HC-SR501
Conecta el pin de entrada digital del Arduino al pin de salida del sensor HC-SR501. Usando el código ESP8266, verifica el valor del pin de salida para detectar movimiento.
Diagrama de Cableado

This image is created using Fritzing. Click to enlarge image
Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.
Configuración inicial
| Time Delay Adjuster | Screw it in anti-clockwise direction fully. |
| Detection Range Adjuster | Screw it in clockwise direction fully. |
| Repeat Trigger Selector | Put jumper as shown on the image. |

Cómo programar para un sensor de movimiento
- Configura una entrada digital en el pin de un Arduino utilizando la función pinMode().
- Lee el estado del pin de salida del sensor con la función digitalRead().
- Identifica cuándo el pin cambia de bajo a alto, indicando el inicio del movimiento.
- Identifica cuando el pin cambia de un estado ALTO a un estado BAJO, lo que indica que el movimiento se ha detenido.
Código ESP8266
Pasos R\u00e1pidos
Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:
- Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
- Conecta los componentes como se muestra en el diagrama.
- Conecta la placa ESP8266 a tu computadora mediante un cable USB.
- Abre el IDE de Arduino en tu computadora.
- Elige la placa ESP8266 correcta, por ejemplo (NodeMCU 1.0 (Módulo ESP-12E)), y su puerto COM correspondiente.
- Copia el código y ábrelo con el IDE de Arduino.
- Haz clic en el Subir botón en el IDE de Arduino para enviar el código al ESP8266.
- Abre el Monitor Serial.
- Mueve tu mano frente al rango del sensor.
- Revisa 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.
Usos Avanzados
Como se indicó anteriormente, podemos modificar la configuración del sensor utilizando un puente y dos potenciómetros.
Ajuste del rango de detección
Este potenciómetro se utiliza para cambiar la distancia a la que se puede detectar algo (aproximadamente entre 3 y 7 metros):
- Si lo giras todo hacia la derecha, solo puede detectar cosas a una distancia de 3 metros.
- Si lo giras todo hacia la izquierda, puede detectar cosas a una distancia de hasta 7 metros.

Ajuste de retardo de tiempo
Este potenciómetro se utiliza para modificar el tiempo de retardo:
- Cuando se gira completamente en sentido horario, el retraso es aproximadamente 5 minutos.
- Cuando se gira completamente en sentido antihorario, el retraso es aproximadamente 3 segundos.
La sección siguiente explica el concepto de retardo temporal junto con Repeat Trigger.

Selector de disparadores de repetición
Existe un puente que se utiliza para seleccionar los modos de disparo: ya sea disparo único o disparo repetible.

Llamemos a la configuración de retardo de tiempo (que se establece mediante Time Delay Adjuster) como time_delay. Si sigues moviéndote dentro del rango del sensor durante un largo periodo de tiempo (llamado motion_time) (muchas veces más largo que time_delay):
- Modo de disparo único: el estado del pin de salida se alternará entre bajo y alto varias veces. La duración del nivel alto será igual a time_delay, mientras que la duración del nivel bajo será fija a 3 segundos.

- Modo de disparo repetible: el estado del pin de salida permanecerá en alto durante la duración de (motion_time más time_delay).

Pruebas
- Modo de disparo único:
- Coloque el puente para seleccionar el modo de disparo único
- Mueva su mano frente al sensor durante aproximadamente 10 segundos
- Retire su mano del alcance del sensor
- Espere 3 segundos y observará la salida en el monitor serial como sigue:
- Coloque el puente para seleccionar el modo de disparo repetible
- Mueva su mano frente al sensor durante aproximadamente 10 segundos
- Aleje su mano del alcance del sensor
- Espere 3 segundos; verá la salida en el monitor serie como se muestra a continuación:
- En el sensor de movimiento: el mínimo es de 3 segundos y el máximo es de 5 minutos, lo cual se realiza mediante el ajustador de retardo de tiempo.
- En el código del ESP8266: se puede establecer cualquier valor, lo cual se hace mediante la programación.
Modo de disparo repetible:
Podemos observar que, en el modo de disparo único, el sensor se dispara dos o tres veces. En cambio, en el modo de disparo repetible, solo se dispara una vez.
※ Nota:
Durante el tiempo LOW (3 segundos), que es fijo e inajustable, el sensor no puede detectar ningún movimiento. Esto no provoca problemas en la práctica.
Se recomienda usar el modo de disparo repetible.
En muchas aplicaciones del mundo real, encendemos o activamos máquinas/dispositivos cuando hay una persona presente, y no los apagamos ni desactivamos de inmediato cuando la persona ya no está presente. En su lugar, esperamos a que expire un tiempo de espera antes de apagarlos o desactivarlos.
Cómo usar el retraso temporal
Si no se detecta a ninguna persona, el sistema de automatización esperará un período de tiempo antes de iniciar la acción.
El retardo de tiempo se puede ajustar en el sensor de movimiento y en el código ESP8266:
Si no especificamos un tiempo de espera en el código del ESP8266, el valor de espera será el mismo que el retardo de la configuración del sensor.
Si especificamos un tiempo de espera en el código ESP8266, el retraso total será la suma del retardo establecido en el sensor y del retardo especificado en el código ESP8266.
Configurar el retardo en el código ESP8266
Si se habilita el modo de disparo repetible, el retardo se establecerá en 30 segundos más time_delay, que puede ajustarse en la configuración del sensor utilizando el Ajustador de Retardo de Tiempo.
Desafíate a ti mismo
Utilice el sensor de movimiento para realizar alguno de los siguientes proyectos:
- Enciende las luces cuando entras en tu habitación y apágalas 30 segundos después de salir. Consejo: Consulta ESP8266 - Relay.
- Activa una alarma cuando alguien se acerque a tus objetos de valor. Consejo: Consulta ESP8266 - Piezo Buzzer.