Hace un tiempo estuve en Chile ( MCI Electronics ), obviamente aproveche a comprar unas Raspberry Pi 3 y me tope con un shield interesante:
El mismo tiene 4 Relays que tienen salidas NC ( normal cerrado ), COM ( tensión ), NO ( normal abierto ) y unos puertos OP que te permiten tener una entrada de 5 a 20v.
Acá les dejo el instructivo: http://www.instructables.com/id/4-Relay-Shield-Raspberry-Pi-B-V2-B/
Hay otras opciones como comprar los relays por separados y hacer sus propias placas, pero la ventaja de esto que les estoy mostrando es que se pone sobre la Raspberry Pi o Arduino conectandose por su propio puerto directamente y sin conexiones externas.
El código pegado a continuación ( python ) es el del instructivo, el mismo hace que cuando conectemos una entrada de energía por el puerto OP se active el relay que tiene en relación. Recuerden que el codigo lo tienen que ejecutar con root ( sudo python [nombre_script].py ):
import RPi.GPIO as GPIO # Seleccionar la numeracion de los pines GPIO.setmode(GPIO.BOARD) # En algunos casos si no funciona utilizar GPIO.BCM # Desactivar advertencias GPIO.setwarnings(False) # Selecionar los pines de salida GPIO.setup(7, GPIO.OUT) # Relay 1 GPIO.setup(11, GPIO.OUT) # Relay 2 GPIO.setup(13, GPIO.OUT) # Relay 3 GPIO.setup(15, GPIO.OUT) # Relay 4 # Seleccionar los pines como entrada GPIO.setup(12, GPIO.IN) # OP 1 GPIO.setup(16, GPIO.IN) # OP 2 GPIO.setup(18, GPIO.IN) # OP 3 GPIO.setup(22, GPIO.IN) # OP 4 # Inicializar los pines como apagados GPIO.output(7, False) GPIO.output(11, False) GPIO.output(13, False) GPIO.output(15, False) while 1: if GPIO.input(22): GPIO.output(7, False) else: GPIO.output(7, True) if GPIO.input(18): GPIO.output(11, False) else: GPIO.output(11, True) if GPIO.input(16): GPIO.output(13, False) else: GPIO.output(13, True) if GPIO.input(12): GPIO.output(15, False) else: GPIO.output(15, True)
Este código lo probé y anda, después cada uno realizara sus modificaciónes para lo que necesiten. A continuación les dejo un codigo que realice yo para poder manejar los relay por medio de argumentos ( por ej. “sudo python [nombre_script].py 7 1″ prende el relay 1 ( que esta en el pin 7 ), para apagar es “sudo python [nombre_script].py 7 0” ):
import RPi.GPIO as GPIO import sys relay= str(sys.argv[1:2]) relay= relay.partition('\'')[-1].rpartition('\'')[-3] opt= str(sys.argv[2:]) opt= opt.partition('\'')[-1].rpartition('\'')[0] relay= int(relay) opt= int(opt) #print relay #print opt # Seleccionar la modo de los pines GPIO.setmode(GPIO.BOARD) # Desactivar advertencias GPIO.setwarnings(False) # Seleccionar los pines como salida GPIO.setup(relay, GPIO.OUT) if opt==1: GPIO.output(relay, True) print 'Se prende relay ', relay else: GPIO.output(relay, False) print 'Se apaga relay ', relay #GPIO.cleanup()
Pueden seguir leyendo sobre este tema en mi nuevo post “Zapatilla automatizada”
Cualquier consulta, me escriben !