Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

2.2.5 IR-Hindernisvermeidungssensor

Einführung

In diesem Projekt werden wir den IR-Hindernisvermeidungssensor kennenlernen, ein Sensormodul, das zur Erkennung von Hindernissen auf kurze Distanzen verwendet werden kann. Es zeichnet sich durch geringe Störungen, einfache Montage und Benutzerfreundlichkeit aus und findet breite Anwendung in der Roboter-Hindernisvermeidung, Hindernisvermeidungswagen, Montagelinienzählung usw.

Benötigte Komponenten

Für dieses Projekt benötigen wir folgende Komponenten.

../_images/2.2.5_ir_obstacle_list.png

Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM SET

LINK

Raphael Kit

337

Raphael Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Hindernisvermeidungsmodul

KAUFEN

Schaltplan

../_images/2.2.5_ir_obstacle_list_schematic.png

Experimentelle Verfahren

Schritt 1: Baue die Schaltung

../_images/2.2.5_ir_obstacle_circuit.png

Schritt 2: Wechsle das Verzeichnis.

cd ~/raphael-kit/python-pi5

Schritt 3: Ausführen.

sudo python3 2.2.5_IrObstacle_zero.py

Nachdem der Code ausgeführt wurde, leuchtet die Ausgangsanzeige auf dem Modul auf, und „Detected Barrier!“ wird wiederholt auf dem Bildschirm gedruckt, solange Ihre Hand vor dem Sensor des Moduls ist.

Warnung

Wenn die Fehlermeldung RuntimeError: Cannot determine SOC peripheral base address angezeigt wird, lesen Sie bitte If gpiozero doesn’t work.

Code

Bemerkung

Sie können den untenstehenden Code modifizieren/zurücksetzen/kopieren/ausführen/stoppen. Bevor Sie das tun, müssen Sie jedoch zum Quellcodepfad wie raphael-kit/python-pi5 wechseln. Nachdem Sie den Code modifiziert haben, können Sie ihn direkt ausführen, um den Effekt zu sehen.

#!/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

Code-Erklärung

  1. Diese Zeile legt fest, dass das Skript mit Python 3 ausgeführt wird. Sie importiert die Klasse Button von gpiozero (verwendet für den Hindernissensor) und das Modul time für Verzögerungen.

    #!/usr/bin/env python3
    from gpiozero import Button
    import time
    
  2. Initialisiert einen Hindernissensor, verbunden mit GPIO Pin 17 mit einem internen Pull-up-Widerstand.

    # 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. In einer fortlaufenden Schleife überprüft das Programm, ob der Hindernissensor aktiviert ist (is_pressed). Wenn ein Hindernis erkannt wird, druckt es „Detected Barrier!“ und wartet dann eine Sekunde (um wiederholte Nachrichten zu vermeiden). Die try-except-Struktur wird verwendet, um eine KeyboardInterrupt für einen sauberen Ausstieg zu behandeln.

    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