36

Cómo construir un detector de movimiento con Arduino y sensor PIR

 

¡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:

 

N4n0

Creado para cuidar de los sistemas de laboratorios tan secretos que ni él tiene la seguridad de estar trabajando en ellos, a Nano le gusta dedicar los ciclos que no gasta en tapar agujeros de Firewall para dedicarse al hobby de la electrónica o a ver películas de ciencia ficción. Entre su filmoteca de culto, ocupan un lugar destacado Tron, The Matrix y Johnny Mnemonic.

guest
36 Comments
más nuevos primero
más antiguos primero
Inline Feedbacks
Ver todos los comentarios
benja
16 días

podrias mostrar el codigo con una foto de bloques porfa

Laura
Laura
1 mes

Hola! Quisiera saber si el lente blaquesino del sensor (fresnel) fue pintado por fuera con pintura. ¿Sigue funcionando?

jose
jose
3 meses

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?

Alejandro
Alejandro
5 días
En respuesta a  jose

Hola amigo, podrías verificar que la tierra – negativo del circuito. Sea el mismo de la alimentación y raspberry.

aless
4 meses

alguien me ayudariahacer un diagrma sobre este proyecto o tenga un diagrama

Gl4r3
Admin
4 meses
En respuesta a  aless

Tienes el diagrama al principio del tutorial…

Walter
Walter
5 meses

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.

Gl4r3
Admin
4 meses
En respuesta a  Walter

¡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.

Rgonzalez
Rgonzalez
6 meses

Quisiera saber cómo se hace el código para 3sensores por en arduino visualizarlo en un display

Marcelo D. TALLON
Marcelo D. TALLON
8 meses

Excelente el Tutorial. Muchas gracias. Saludos. Que Dios lo bendiga!!!

luis
luis
10 meses

con que proveedores se pueden adquirir sensores y módulos.

Tr4nsduc7or
Admin
10 meses
En respuesta a  luis

Puedes encontrarlos a menos de un euro por Amazon, o en cualquier tienda local de electrónica de tu ciudad.

Keros
Keros
10 meses
En respuesta a  luis

Aliexpress super barato!!

luis
luis
10 meses

con que proveedor puedo adquirir sensores y módulos

memi
memi
11 meses

cómo se hace para que al detectar movimiento el led se quede encendido cierta cantidad de segundos?

Gl4r3
Admin
11 meses
En respuesta a  memi

La forma más fácil es añadir un delay justo después de encender el led.

uriel
uriel
1 año

como puedo imprimir la distancia que me detecta el sensor pir

Santi21
Santi21
1 año

hola, de casualidad ¿no habra un video con informacion mas detallada de como montar el circuito?

Dave
Dave
1 año

La sensibilidad y el delay de activación se pueden programar desde el Arduino (código)?

Ismael
Ismael
1 año
En respuesta a  N4n0

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

Sebastián
Sebastián
1 año

tendran una imagen indicando esto mismo pero pasando por un protoboard?

Alex
Alex
1 año

Como seria con pir comercial de 12v y porque esa resistencia que une corriente con output.

Max Arte
Max Arte
1 año

I N T E R E S A N T E ! !

emmanuel
1 año

como seria para la activación de un sistema de lamparas que se encienden cuando detecta a alguien y se apagan cuando no detectan

Gl4r3
Admin
1 año
En respuesta a  emmanuel

¡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.

extraterrestre
extraterrestre
1 año

buen tuto

Martín lopez
Martín lopez
1 año

Muy bueno lo puedo aplicar en seguridad de mi auto

Martín lopez
Martín lopez
1 año
En respuesta a  Martín lopez

Gracias muy buen tutorial

Zahir Raya
Zahir Raya
2 años

tonks k mami es muy buen tutorial pero me reprobaron en arduino por andar copiando de la web
gracias por hacerme reprobar

alets
alets
1 año
En respuesta a  Zahir Raya

bueno, fue tu culpa

lucas
2 años

aggg

Devin
Devin
2 años

Ojo pq hay algunos pir que funcionan con 3,3v en vez de 5v. Por lo demás buen tuto 🙂