Shield de relays ( reles ) para RPI ( Raspberry Pi )

por | 04/29/2016

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 !

Gracias por compartir :)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *