Sesión 5: Sensor de movimiento (PIR)

En esta sesión veremos cómo podemos encender o apagar una luz según un sensor de movimiento. El rey de la fiesta aquí va a ser este:
Este sensor detecta en una área cónica si algo ha cruzado su campo de visión. Cuando eso ocurre, transmite voltaje HIGH por su pin out, y con un pequeño delay, vuelve a transmitir LOW.
Este componente está presente continuamente en nuestro día a día. Alguna vez os habéis ido a secar las manos en un lugar público y el secador se ha encendido solo? Es este amiguete quien os ha detectado :)

Tiene un campo de detección de casi 180º y detecta a un máximo aproximado de 10m de distancia; pero hay que pensar bien dónde ponerlo.
Una mala instalación del circuito nos puede llevar a entrar en un baño de restaurante, que se enciendan las luces solas al detectar nuestra presencia, pero que al cabo de un rato se apaguen; lo cual nos lleva a terminar moviendo los brazos de arriba a abajo cuál rito tribal durante un eclipse para volver a encender la luz.

Extra: Si además queremos saber a qué distancia del sensor está la persona, debemos pasar a usar un sensor ultrasónico

En el mundo real este componente iría conectado a una bombilla de 220V alimentada por corriente alterna y controlada por un relé, pero por ahora nos familiarizaremos con el componente usando un LED para hacer las pruebas.

Nuestro objetivo será que cuando el PIR detecte movimiento, se encienda el LED y que cuando deje de haber presencia, se apague.

Sin más dilación, estos son los componentes que necesitaremos:
- 1 Sensor PIR
- 1 LED
- 2 Resistencias (220 Ω).

#1 - Circuito

Este circuito es bastante sencillito, solamente debemos tener en cuenta 2 cosas:
- Ver qué pata del PIR tiene qué función.
- Añadir las resistencias a cada toma de tierra del PIR y el LED.

Recordad que el LED lo controlaremos según el estado del sensor, así que su pata positiva debe ir conectada a un PIN de control de la Arduino.

#2 - Código

Para leer el estado del PIR haremos parecido como con el sensor de temperatura, pero esta vez al ser digital, usaremos digitalRead(pin). Puesto que el valor que nos da el PIR solo tiene 2 estados, HIGH o LOW, no necesitaremos transformar el valor resultante de su lectura.

También sabemos cómo configurar el LED de nuestra primera lección, así que adelante!

Ojo! El sensor PIR necesita de un tiempo inicial para que sus componentes empiecen a funcionar correctamente de aproximadamente 1 o hasta 2 minutos. Si nos hace lecturas extrañas al principio no tiene porqué significar un error en el código.
Idealmente podemos añadir un pequeño loop de 1 minuto al inicio del código para dejar que el PIR se caliente y funcione correctamente.

Ver código

Ya está el proyecto listo y funcionando correctamente? De ser así, enhorabuena! Este pequeño circuito nos será útil para aplicarlo en muchísimas situaciones y proyectos distintos.
Para mejorar aún más, podemos ampliarlo con el apartado a continuación.

#3 - Extensión

Realmente nos interesa que cuando haya alguien la luz se encienda siempre? Si queremos usarlo para habitaciones o lugares iluminados durante el día, no queremos que ilumine cuando ya hay luz pues sería un desperdicio de energía.

Para gestionar esto simplemente hay que añadirle un sensor de luz, también llamado Fotoresistencia LDR
Este pequeño componente nos permitirá saber si hay mucha o poca luz, según el rango de valores obtenidos en su lectura analógica.
Tendremos que hacer pruebas con él para ver qué valor es el máximo que empezaremos a considerar oscuridad y aplicarlo en nuestro código con un if para evitar que el sensor de proximidad pueda encender la luz.
Por ahora podemos simular la falta de luz tapando el sensor y viendo si así disminuye su valor.

El LDR solo tiene 2 patas, así que la positiva irá directa al voltaje, y la negativa deberá ir a un pin analógico y a su vez pasar por una resistencia de 10kΩ* hasta la tierra (negativo).
*Consejo: Tinkercad nos muestra los colores exactos de la resistencia cuando le asignamos el valor. En cualquier caso podemos también descifrarlo con este gráfico.



Para el código simplemente haremos un analogRead(pin) del PIN analógico donde hayamos conectado el fotoresistor. Podemos imprimir en la consola sus valores para ver cómo cambia cuando lo tapamos hasta encontrar el valor que queramos. Luego un simple if por encima del código del PIR nos va a permitir ejecutar su código únicamente si se cumple la condición de luz que queremos.

# Próximos pasos

- Muchos sensores PIR tienen reguladores de sensibilidad (distancia) y apagado (delay) que nos permitirán configurar en el propio componente cuán lejos debe ver y cuánto debe tardar para volver a emitir LOW después de una detección.
Debemos usarlos para calibrarlo y conseguir una detección limpia y lo más acertada posible.

- Qué más usos le podemos dar al sensor de movimiento? Se os ocurren ideas para aplicarlo en casa o incluso comercialmente? Qué tal una tira de LEDs debajo de la cama?

Más adelante veremos cómo conectarlo a una bombilla real para ponerlo, por ejemplo, en nuestro recibidor? Sin duda los visitantes se quedarán boquiabiertos; aunque para los que tienen perro, puede que genere un consumo extra de luz esperando detrás de la puerta!


Muchas gracias por seguir el hilo y comentad en los comentarios abajo para ver como ha ido la sesión :)

Comments

Popular posts from this blog

Sesión 1: Llavero 3D

Sesión 2: Sensor de temperatura

Sesión 1: Introducción a Raspberry Pi