Note

Bonjour et bienvenue dans la communauté SunFounder Raspberry Pi, Arduino & ESP32 Enthusiasts sur Facebook ! Plongez plus profondément dans le monde du Raspberry Pi, de l’Arduino et de l’ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Assistance d’experts : Résolvez les problèmes après-vente et les défis techniques grâce à l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour perfectionner vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux nouvelles annonces de produits et aux avant-goûts des nouveautés.

  • Réductions spéciales : Profitez de réductions exclusives sur nos derniers produits.

  • Promotions festives et concours : Participez à des concours et à des promotions spéciales pour les fêtes.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !

1.3.4 Relais

Introduction

Dans ce projet, nous allons apprendre à utiliser un relais. C’est l’un des composants les plus couramment utilisés dans les systèmes de contrôle automatique. Lorsque la tension, le courant, la température, la pression, etc., atteignent, dépassent ou sont inférieurs à une valeur prédéterminée, le relais va connecter ou interrompre le circuit pour contrôler et protéger l’équipement.

Composants nécessaires

Pour ce projet, nous aurons besoin des composants suivants.

../_images/1.3.4_relay_list.png

Schéma de circuit

../_images/1.3.4_relay_schematic.png

Procédure expérimentale

Étape 1 : Construire le circuit.

../_images/1.3.4_relay_circuit.png

Étape 2 : Ouvrir le fichier de code.

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

Étape 3 : Exécuter.

sudo python3 1.3.4_Relay.py

Pendant l’exécution du code, la LED s’allume. De plus, vous entendrez un bruit de « tic-tac » provoqué par l’ouverture et la fermeture des contacts du relais.

Avertissement

En cas d’erreur « RuntimeError: Cannot determine SOC peripheral base address », veuillez consulter Si gpiozero ne fonctionne pas.

Code

Note

Vous pouvez modifier/réinitialiser/copier/exécuter/arrêter le code ci-dessous. Mais avant cela, assurez-vous de vous rendre dans le répertoire source, par exemple davinci-kit-for-raspberry-pi/python-pi5. Après avoir modifié le code, vous pouvez l’exécuter directement pour observer le résultat.

#!/usr/bin/env python3
from gpiozero import OutputDevice  # Importer la classe pour contrôler les broches GPIO
from time import sleep  # Importer la fonction sleep pour les temporisations

# Initialiser le relais connecté à la broche GPIO 17
relais = OutputDevice(17)

try:
    # Boucle pour basculer continuellement l'état du relais toutes les secondes
    while True:
        print('Relay open...')  # Indiquer que le relais est activé
        relais.on()  # Allumer le relais (configuration active low présumée)
        sleep(1)   # Maintenir le relais en position allumée pendant 1 seconde

        print('...Relay close')  # Indiquer que le relais est désactivé
        relais.off()  # Éteindre le relais
        sleep(1)   # Maintenir le relais en position éteinte pendant 1 seconde

except KeyboardInterrupt:
    # Gérer une interruption clavier (Ctrl+C) pour quitter la boucle
    relais.off()  # S'assurer que le relais est éteint avant de quitter
    pass

Explication du code

  1. Cela importe OutputDevice de la bibliothèque gpiozero pour contrôler les broches GPIO et sleep de la bibliothèque time pour ajouter des temporisations.

    #!/usr/bin/env python3
    from gpiozero import OutputDevice  # Importer la classe pour contrôler les broches GPIO
    from time import sleep  # Importer la fonction sleep pour les temporisations
    
  2. Initialise un objet OutputDevice pour le relais connecté à la broche GPIO 17.

    # Initialiser le relais connecté à la broche GPIO 17
    relais = OutputDevice(17)
    
  3. À l’intérieur du bloc try, une boucle while True bascule continuellement l’état du relais. Le relais est allumé et éteint avec un délai de 1 seconde entre chaque état, accompagné de messages imprimés dans la console.

    try:
        # Boucle pour basculer continuellement l'état du relais toutes les secondes
        while True:
            print('Relay open...')  # Indiquer que le relais est activé
            relais.on()  # Allumer le relais (configuration active low présumée)
            sleep(1)   # Maintenir le relais en position allumée pendant 1 seconde
    
            print('...Relay close')  # Indiquer que le relais est désactivé
            relais.off()  # Éteindre le relais
            sleep(1)   # Maintenir le relais en position éteinte pendant 1 seconde
    
  4. Capture une interruption clavier (comme Ctrl+C) pour permettre une terminaison propre du script. Le relais est éteint avant de quitter le script.

    except KeyboardInterrupt:
    # Gérer une interruption clavier (Ctrl+C) pour quitter la boucle
    relais.off()  # S'assurer que le relais est éteint avant de quitter
    pass