Raspberry Pi – Uso de relé, X10 y detector de movimiento

 

En este documento vamos a poner en marcha una Raspberry Pi con unas funciones muy prácticas que nos pueden hacer pensar en implementar un sistema de domotica en casa, super sencillo y barato. Conectaremos por un lado un relé que nos permitirá conmutar circuitos como las luces de casa, y por el otro un sensor de movimiento que nos permitirá hacer la función que nos interese, como por ejemplo encender esas mismas luces y por lo tanto no tener que dar las luces de la casa nunca más =)

 

raspberry-home-automation-bujarra

 

Controlar un relé con una Raspberry Pi,

En este documento por una parte, veremos cómo conectar un relé a una raspberry para poder controlar circuitos. Pudiendo usarlo como interruptor para controlar ciertas luces de la casa, el termostato de la calefacción… En eBay podremos encontrar relés de 5V para cerrar o abrir circuitos de 220V, por 2€ cada módulo, podemos tener hasta 8 módulos en un relé para controlar 8 circuitos!

 

raspberry-rele-01-bujarra

Os dejo un par de pantallazos con permiso del blog de RSPPI donde se explica también de manera genial cómo configurarlo. Esta imagen nos muestra en la parte derecha los conectores con la Raspberry, el GND lo conectaremos a tierra, con el IN1 controlaremos el canal de K1 (IN2 para el K2…) los conectaremos a un GPIO; El VCC lo conectamos a los 5V de la Raspberry. En la parte izquierda controlaremos el circuito donde conectaremos los cables, si cerramos el circuito entre 1 y 2, el circuito normalmente estará ‘abierto’, si lo cerramos entre el 2 y el 3, el circuito normalmente estará ‘cerrado’.

 

 

raspberry-rele-02-bujarra

Y en esta imagen vemos un circuito de ejemplo de 220V que estará normalmente cerrado, mediante el GPIO 18 de la Pi lo conmutaremos =)

Ahora, instalaremos WiringPi en la Raspbeyry:

wget http://project-downloads.drogon.net/files/wiringPi.tgz
tar xfzv wiringPi-xxx.tar.gz
cd wiringPi-xxx
./build

Podremos utilizar los siguientes comandos de ejemplo:

gpio readall --> Nos saca el status de todos los GPIO.
gpio -g mode 24 out --> Enciende GPIO24.
gpio -g mode 24 in --> Apaga el GPIO24.
gpio -g read 24 --> Saca el status, encendido 0, apagado 1.

 

Conectar un sensor de movimiento en una Raspberry Pi,

Por algo más de 1€ podremos comprar en eBay detectores de movimiento pasivo o PIR que podremos usar para lo que queramos cuando detecten un movimiento, sea poner una cámara a grabar o mismamente decirle al relé anterior que encienda una luz.

 

raspberry-pir-02-bujarra

En esta imagen veremos el conexionado entre los pines del detector PIR y los GPIO de la Raspberry, conectamos el VCC a los 5V de la Pi, GND a tierra y el OUT a un GPIO de control para leer mediante un script de Python su estado. Una vez que se detecte un movimiento, podremos decidir que queremos que pase =)

 

Primero, bajamos el script de Python y lo probamos:

wget http://www.raspberrypi-spy.co.uk/archive/python/pir_1.py

Modificaremos en el fichero ‘GPIO_PIR = ‘ por el número del GPIO correcto donde hayamos conectado el OUT del sensor PIR.

sudo python pir_1.py

Podremos modificar el script a nuestro gusto con el código que nos interese, por ejemplo el siguiente ejecutaría ‘entrada_enciende.sh’ al detectar un movimiento y encendería la luz durante 5 segundos, donde volverá a comprobar si sigue habiendo movimiento para dejar la luz encendida o apagarla:

…
if Current_State==1 and Previous_State==0:
  # PIR is triggered
  print " Movimiento en la entrada! encendemos luz y esperamos 5seg"
  # Record previous state
  Previous_State=1
  import subprocess
  cmd='/home/pi/entrada_enciende.sh'
  subprocess.call(cmd, shell=True)
  # Espera 5 segundos
  time.sleep(5)
elif Current_State==0 and Previous_State==1:
  # PIR has returned to ready state
  Previous_State=0
  print " Listo de nuevo, no hay movimiento"
  import subprocess
  cmd='/home/pi/entrada_apaga.sh'
  subprocess.call(cmd, shell=True)
  # Wait for 10 milliseconds
...

Para arrancar este script por ejemplo todos los días a las 19h y que esté 12h esperando a detectar un movimiento (para encendernos una luz) podremos usar nuestro cron, con ‘crontab -e’ añadiremos la siguiente línea:

00 19 * * * sudo timeout 12h python /home/pi/detector_entrada_enciende.py

 

Protocolo X10,

raspberry-x10-01-bujarra
Si estáis pensando que usar un relé sea quizás muy incomodo por el tema del cableado, lo más sencillo sería usar un sistema inalámbrico basado en X10, un poco menos económico también. Podemos hacernos con un controlador-receptor, por ejemplo el CM15PRO (o el CM15A o CM19A) de Marmitek por unos 75€ que nos servirá para gestionar los interruptores inalámbricos como el AW12 (interruptor on/off) que sale cada uno a 45€ o un dimmer regulable como el LW12 por unos 49€ aún que también podremos usar otros interruptores o dispositivos, claro!

El conexionado del receptor a la raspberry sería mediante USB y la instalación del demonio modchad, los interruptores deberemos configurarlos con un código cada uno además de conectarlos a la red eléctrica como indica en el manual de forma muy sencilla.

Instalamos y compilamos mochad:

sudo apt-get install libusb-1.0-0-dev
wget -O mochad.tgz http://sourceforge.net/projects/mochad/files/latest/download
tar xf mochad.tgz
cd mochad*
./configure
make
sudo make install

Podremos crear un script para apagar o encender un interruptor, pero primero probaremos a encenderlo!

echo "pl a1 on" | nc localhost 1099

En el siguiente documento veremos como manejar desde un interfaz web sencillo para nuestros móviles o tablets el control del rele!!!

 

Héctor Herrero

Autor del blog Bujarra.com
Cualquier necesidad que tengas, no dudes en contactar conmigo, os intentare ayudar siempre que pueda, compartir es vivir 😉 . Disfrutar de los documentos!!!

Últimos Posts de: Héctor Herrero (ver todos)