¡Hola humanos! En este tutorial vamos a aprender cómo hacer funcionar un sensor PIR con Arduino y construiremos un detector de movimiento. Los Sensores PIR son pequeños dispositivos que permiten detectar movimiento mediante infrarrojos (a lo Predator). Normalmente se utilizan en sistemas de seguridad para detectar el movimiento de personas o animales dentro de habitaciones cerradas o en zonas controladas.
Debido a su bajo coste y facilidad de uso son utilizados tanto para proyectos personales como para sistemas de seguridad de instalaciones.
Materiales
Para este tutorial necesitaremos:
- Una placa Arduino y un cable USB compatible.
- Un sensor PIR
- Cables y protoboard
- Resistencia de 220Ω y LED (si queremos seguir el ejemplo extra del final).
¿Cómo funciona un sensor PIR?
Los sensores PIR en realidad están compuestos de un sensor piroeléctrico. Estos sensores tienen dos minúsculas ranuras llenas de un material que produce electricidad cuándo detecta radiación infrarroja.

Un sensor piroeléctrico
Cuándo un objeto caliente (una persona o un animal) entra en el campo de visión del sensor, se produce una diferencia de potencial entre las dos mitades del sensor piroeléctrico. Esta diferencia de potencial nos sirve para saber cuándo hay movimiento delante del dispositivo.
El problema que tienen los sensores piroeléctricos es que su rango de visión es muy limitado, pero nos interesa tener un campo de visión lo más amplio posible. Para conseguirlo, el sensor piroeléctrico se cubre con una lente, normalmente hecha de un plástico blanquecino. Esta lente a su vez está compuesta de varias sub-lentes, cada una de las cuáles es una Lente de Fresnel. Estas lentes tienen la peculiaridad de condensar toda la luz que le llega en un único punto, en este caso el sensor piroeléctrico.

Lente de Fresnel individual
Todas las lentes de Fresnel de la cúpula apuntan al centro del sensor piroeléctrico. Esto hace que el campo de visión sea mucho mayor que si dejásemos el sensor sin cubrir.
Partes del módulo
Para facilitar su uso, el sensor está montado encima de un pequeño módulo que contiene varios componentes y circuitos integrados. El módulo tiene tres pines (VCC, GND y OUTPUT). Los sensores PIR son digitales y por tanto cuándo el sensor detecte movimiento, el pin de OUTPUT se pondrá a HIGH hasta que el movimiento cese. Hay que tener en cuenta que por lo general estos sensores no son perfectos y pueden tener un pequeño retraso o ignorar algunos movimientos.
También tiene dos potenciómetros. El primero es para regular la sensibilidad del sensor. El segundo marca el tiempo que el pin de OUTPUT estará activo cuándo se detecte movimiento. Normalmente este tiempo puede ajustarse de 0.3 segundos hasta 5 minutos, pero dependerá del modelo que tengamos.
Por último, el módulo tiene tres pines más, dos de ellos conectados con un puente. Estos tres pines nos permiten elegir el modo de activación: “Repeatable Trigger” y “Non-Repeatable Trigger”. En el primer modo, el OUTPUT permanece a HIGH cuando el sensor detecta movimiento. En el segundo modo el ouput se pone a HIGH y después a LOW cuándo se detecta movimiento. En este último caso, si se detecta mucho movimiento, el sensor enviará pulsos HIGH/LOW repetidamente. En ambos modos de activación el output estará a LOW cuándo no se detecte ningún movimiento.

Nota: dependiendo del modelo de PIR puede ser que los pines VCC y GND estén al revés. ¡Hay que mirar la documentación del sensor antes de usarlo!
Conexiones con Arduino
Montar el circuito de hoy va a ser muy rápido 🙂
- Sensor VCC – Arduino 5V
- Sensor OUTPUT – Arduino D4
- Sensor GND – Arduino GND
Con el voltaje del cable USB tendremos suficiente para alimentar la placa Arduino y el sensor, por tanto no neceitamos ninguna batería.
Código
Para este ejemplo solamente vamos a leer el Pin Digital 4 en el que tenemos conectado el sensor PIR y encenderemos el LED 13 si se ha detectado algún movimiento.
/* Sensor PIR con Arduino * * Escrito por Nano en beneficio de los seres humanos * www.robologs.net */ int sensor = 4; int led = 13; void setup() { pinMode(led, OUTPUT); pinMode(sensor, INPUT); } void loop() { int lectura = digitalRead(sensor); digitalWrite(led, lectura); }
Una vez cargado el código, tendremos que esperar unos 60 segundos para que el sensor se estabilice. Si todo ha funcionado bien, veremos como el LED se enciende cada vez que pasamos por delante del campo de visión del sensor.
Extra: PIR sin Arduino
Conecar un sensor PIR a Arduino cuándo lo único que queremos es encender y apagar un LED si hay movimiento es un poco como matar moscas a cañonazos. El sensor PIR puede funcionar sin necesidad de conectarse a ningún microcontrolador, sólo hay que montar este esquema:
Hola, podrías explicar el armado porfavor?
Tienes el esquema detallado en el tutorial, no sé que más puedo explicar.
podrias mostrar el codigo con una foto de bloques porfa
Hola! Quisiera saber si el lente blaquesino del sensor (fresnel) fue pintado por fuera con pintura. ¿Sigue funcionando?
hola gracias por el tutorial, estoy intentando conectar un sensor pir a una raspberry pero alimentarlo a la corriente por medio de un cargador para telefono pero no me funciona, detecta todo el tiempo, manda señal de movimiento pero si lo conecto directo a la Pi si funciona, que puede ser?
Hola amigo, podrías verificar que la tierra – negativo del circuito. Sea el mismo de la alimentación y raspberry.
alguien me ayudariahacer un diagrma sobre este proyecto o tenga un diagrama
Tienes el diagrama al principio del tutorial…
Buen día. Estamos diseñando un dosificador de alcohol 70% mediante sensor de movimiento. La distancia que necesitamos controlar es entre 2 y 30 cm. Qué sensor nos pueden sugerir??. Muchas gracias por los contenidos.
¡Hola, Walter! Lo mejor será utilizar un sensor de distancia por ultrasonidos o por infrarrojos (como el sensor ping de paralax o el IR Sharp), que son más precisos y funcionan muy bien a esta distancia.
Quisiera saber cómo se hace el código para 3sensores por en arduino visualizarlo en un display
Sólo tienes que conectar los sensores a pines digitales diferentes y leer cada uno con DigitalRead().
Para saber cómo utilizar un display con arduino léete este tutorial: https://www.arduino.cc/en/Tutorial/HelloWorld
Excelente el Tutorial. Muchas gracias. Saludos. Que Dios lo bendiga!!!
con que proveedores se pueden adquirir sensores y módulos.
Puedes encontrarlos a menos de un euro por Amazon, o en cualquier tienda local de electrónica de tu ciudad.
Aliexpress super barato!!
con que proveedor puedo adquirir sensores y módulos
cómo se hace para que al detectar movimiento el led se quede encendido cierta cantidad de segundos?
La forma más fácil es añadir un delay justo después de encender el led.
como puedo imprimir la distancia que me detecta el sensor pir
El sensor PIR sólo detecta movimiento, no distancia.
hola, de casualidad ¿no habra un video con informacion mas detallada de como montar el circuito?
La sensibilidad y el delay de activación se pueden programar desde el Arduino (código)?
Que yo sepa estos parámetros sólo pueden modificarse físicamente.
Hola, nose porque lo he hecho tal cual y no para de notar que algo se mueve y no se esta moviendo nada… he probado con 3 sensores por si uno estaba roto y los tres me hace lo mismo :S
Hola, Ismael! Primero mira que tu sensor PIR no tenga los pines VCC y GND al revés que la imagen del tutorial. Si no funciona, intenta cambiar los valores de la sensibilidad y el delay de activación.
tendran una imagen indicando esto mismo pero pasando por un protoboard?
Como seria con pir comercial de 12v y porque esa resistencia que une corriente con output.
I N T E R E S A N T E ! !
como seria para la activación de un sistema de lamparas que se encienden cuando detecta a alguien y se apagan cuando no detectan
¡Hola emmanuel! Ya es lo que hace el tutorial, únicamente tienes que adaptar el circuito para que encienda una lámpara en vez de un led.
buen tuto
Muy bueno lo puedo aplicar en seguridad de mi auto
Gracias muy buen tutorial
tonks k mami es muy buen tutorial pero me reprobaron en arduino por andar copiando de la web
gracias por hacerme reprobar
bueno, fue tu culpa
aggg
Ojo pq hay algunos pir que funcionan con 3,3v en vez de 5v. Por lo demás buen tuto 🙂