Usar un sensor de puerta magnetico en un Raspberry Pi
Ya ví cómo controlar un relé, ahora le agregaré un sensor de puerta para que cuando ésta se abra pueda ejecutar una acción, como activar un relé.
Materiales
- Raspberry Pi (sigo usando el 2, pero también debería servir el 1)
- Sensor magnético
- Cable para conectar ambas cosas, se necesitarán varios metros dependiendo de la distancia.
Conexión
Por el extremo del sensor se deben conectar los dos cables y se debe instalar junto a la puerta o ventana a monitorear
En el extremo del Raspberry se debe conectar un cable por un pin GND y el otro en cualquier pin GPIO. Para encontrar los pins y su función puedes usar el siguiente esquema
Ésta es la conexión que hice
Como verán tengo conectadas más cosas, así que destaqué en rojo las conexiones del sensor, que corresponden a los pines 7 (GPIO4) y 9 (GND).
Con las conexiones realizadas ahora pasaré a la parte de software
Programación
Aquí usé la librería de GPIO para python con el siguiente código
import time
import RPi.GPIO as ioio.setmode(io.BCM)
door_pin = 4
io.setup(door_pin, io.IN, pull_up_down=io.PUD_UP)
while True:
if io.input(door_pin):
print(«PUERTA ABIERTA!»)
time.sleep(0.5)
La variable door_pin está fijada con el valor del pin BCM
Finalmente basta con ejecutar la aplicación con python nombrescript.py y activar el sensor abriendo la puerta, se mostrará el mensaje “PUERTA ABIERTA!” cada 0,5 segundos mientras la puerta esté abierta, si la cierras dejará de aparecer el mensaje.
Ahora modificaré el código para que además de mostrar ese mensaje active un relé
import time
import RPi.GPIO as ioio.setmode(io.BCM)
door_pin = 4
rele_pin = 21io.setup(door_pin, io.IN, pull_up_down=io.PUD_UP)
io.setup(rele_pin, io.OUT)while True:
if io.input(door_pin):
print(«PUERTA ABIERTA!»)
time.sleep(1.5)
io.output(rele_pin, False)
else:
io.output(rele_pin, True)
time.sleep(0.5)
El relé está configurado para que por defecto esté desactivado, por lo que al activar la puerta enciende el relé y viceversa. En caso de que esté configurado a la inversa el relé basta invertir el valor pasado al pin (io.output(rele_pin, XX) intercambiar False por True y viceversa en las dos veces que aparece en el código)
Aquí están destacados los pines correspondientes al relé en verde
2 = DCC, 39 = GND, 40 = GPIO21
Comentarios recientes