Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.

¿Por qué unirse?

  • Soporte Experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Avances Exclusivos: Accede anticipadamente a anuncios de nuevos productos y adelantos exclusivos.

  • Descuentos Especiales: Aprovecha descuentos exclusivos en nuestros productos más recientes.

  • Promociones Festivas y Sorteos: Participa en sorteos y promociones especiales.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.

1.3.4 Relé

Introducción

En este proyecto, aprenderemos a utilizar un relé, uno de los componentes más comunes en los sistemas de control automático. Cuando la tensión, corriente, temperatura, presión, etc., alcanza, supera o está por debajo de un valor predeterminado, el relé conecta o interrumpe el circuito para controlar y proteger el equipo.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/1.3.4_relay_list.png

Diagrama de Conexiones

../_images/1.3.4_relay_schematic.png

Procedimientos del Experimento

Paso 1: Construye el circuito.

../_images/1.3.4_relay_circuit.png

Paso 2: Abre el archivo de código.

cd ~/davinci-kit-for-raspberry-pi/python-pi5

Paso 3: Ejecuta el código.

sudo python3 1.3.4_Relay.py

Al ejecutar el código, el LED se encenderá. Además, podrás escuchar un tic-tac producido por la apertura del contacto normalmente cerrado y el cierre del contacto normalmente abierto.

Advertencia

Si aparece el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulta Si gpiozero no funciona.

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Antes de eso, asegúrate de estar en la ruta del código fuente, como davinci-kit-for-raspberry-pi/python-pi5. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.

#!/usr/bin/env python3
from gpiozero import OutputDevice  # Importa la clase para controlar pines GPIO
from time import sleep  # Importa la función sleep para añadir retardo

# Inicializa el relé conectado al pin GPIO 17
relay = OutputDevice(17)

try:
    # Bucle para alternar continuamente el estado del relé cada segundo
    while True:
        print('Relay open...')  # Informa que el relé está activado
        relay.on()  # Enciende el relé (suponiendo configuración activa baja)
        sleep(1)   # Mantén el relé encendido durante 1 segundo

        print('...Relay close')  # Informa que el relé está desactivado
        relay.off()  # Apaga el relé
        sleep(1)   # Mantén el relé apagado durante 1 segundo

except KeyboardInterrupt:
    # Maneja una interrupción de teclado (Ctrl+C) para salir del bucle
    relay.off()  # Asegura que el relé esté apagado antes de salir
    pass

Explicación del Código

  1. Se importan OutputDevice de gpiozero para el control de pines GPIO y sleep de time para añadir retardos.

    #!/usr/bin/env python3
    from gpiozero import OutputDevice  # Importa la clase para controlar pines GPIO
    from time import sleep  # Importa la función sleep para añadir retardo
    
  2. Inicializa un objeto OutputDevice para el relé conectado al pin GPIO 17.

    # Inicializa el relé conectado al pin GPIO 17
    relay = OutputDevice(17)
    
  3. Dentro del bloque try, un bucle while True alterna continuamente el estado del relé. El relé se enciende y apaga con un retardo de 1 segundo entre cada estado, acompañado de mensajes en la consola.

    try:
        # Bucle para alternar continuamente el estado del relé cada segundo
        while True:
            print('Relay open...')  # Informa que el relé está activado
            relay.on()  # Enciende el relé (suponiendo configuración activa baja)
            sleep(1)   # Mantén el relé encendido durante 1 segundo
    
            print('...Relay close')  # Informa que el relé está desactivado
            relay.off()  # Apaga el relé
            sleep(1)   # Mantén el relé apagado durante 1 segundo
    
  4. Captura una interrupción de teclado (como Ctrl+C) para permitir una finalización del script de forma segura. El relé se apaga antes de salir del script.

    except KeyboardInterrupt:
    # Maneja una interrupción de teclado (Ctrl+C) para salir del bucle
    relay.off()  # Asegura que el relé esté apagado antes de salir
    pass