Note

Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

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

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.

  • Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.

  • Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.

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

2.2.5 Capteur d’évitement d’obstacles IR

Introduction

Dans ce projet, nous allons apprendre à utiliser le module d’évitement d’obstacles IR, qui est un module capteur pouvant être utilisé pour détecter des obstacles à courte distance, avec une petite interférence, facile à assembler, facile à utiliser, etc. Il peut être largement utilisé dans l’évitement d’obstacles pour robots, chariots d’évitement d’obstacles, comptage sur ligne de production, etc.

Composants nécessaires

Dans ce projet, nous avons besoin des composants suivants.

../_images/2.2.5_ir_obstacle_list.png

Il est certainement pratique d’acheter un kit complet, voici le lien :

Nom

ARTICLES DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

INTRODUCTION DU COMPOSANT

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Module d’évitement d’obstacles

ACHETER

Schéma

../_images/2.2.5_ir_obstacle_list_schematic.png

Procédures expérimentales

Étape 1 : Construisez le circuit

../_images/2.2.5_ir_obstacle_circuit.png

Étape 2 : Changez de répertoire.

cd ~/raphael-kit/python-pi5

Étape 3 : Exécutez.

sudo python3 2.2.5_IrObstacle_zero.py

Après l’exécution du code, lorsque vous placez votre main devant la sonde du module, l’indicateur de sortie sur le module s’allume et « Detected Barrier! » sera imprimé de manière répétée à l’écran jusqu’à ce que votre main soit retirée.

Avertissement

Si vous recevez le message 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, vous devez vous rendre au chemin du code source comme raphael-kit/python-pi5. Après avoir modifié le code, vous pouvez l’exécuter directement pour voir l’effet.

#!/usr/bin/env python3
from gpiozero import Button
import time

# Initialize the obstacle sensor connected to GPIO pin 17
# The sensor is configured with a pull-up resistor
obstacle_sensor = Button(17, pull_up=True)

try:
   # Continuously monitor for obstacles
   while True:
      if obstacle_sensor.is_pressed:  # Check if the sensor is triggered
            print("Detected Barrier!")  # Print a message when an obstacle is detected
            time.sleep(1)  # Delay for 1 second to avoid repetitive messages

except KeyboardInterrupt:
   # Handle KeyboardInterrupt (Ctrl+C) for a clean and safe exit
   pass

Explication du code

  1. Cette ligne configure le script pour qu’il s’exécute en utilisant Python 3. Elle importe la classe Button de gpiozero (utilisée pour le capteur d’obstacles) et le module time pour les délais.

    #!/usr/bin/env python3
    from gpiozero import Button
    import time
    
  2. Initialise un capteur d’obstacles connecté à la broche GPIO 17 avec une résistance pull-up interne.

    # Initialize the obstacle sensor connected to GPIO pin 17
    # The sensor is configured with a pull-up resistor
    obstacle_sensor = Button(17, pull_up=True)
    
  3. Dans une boucle continue, le programme vérifie si le capteur d’obstacles est activé (is_pressed). Si un obstacle est détecté, il affiche « Detected Barrier! » puis attend une seconde (pour éviter les messages répétitifs). La structure try-except est utilisée pour gérer un KeyboardInterrupt pour une sortie propre.

    try:
       # Continuously monitor for obstacles
       while True:
          if obstacle_sensor.is_pressed:  # Check if the sensor is triggered
                print("Detected Barrier!")  # Print a message when an obstacle is detected
                time.sleep(1)  # Delay for 1 second to avoid repetitive messages
    
    except KeyboardInterrupt:
       # Handle KeyboardInterrupt (Ctrl+C) for a clean and safe exit
       pass