2.2.3 PIR

Einführung

In diesem Projekt werden wir ein Gerät mit Hilfe von Infrarotsensoren für den menschlichen Körper herstellen. Wenn sich jemand der LED nähert, schaltet sich die LED automatisch ein. Wenn nicht, erlischt das Licht. Dieser Infrarot-Bewegungssensor ist eine Art Sensor, der die von Menschen und Tieren abgegebene Infrarotstrahlung erkennen kann.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

../_images/2.2.4_pir_list.png

Schaltplan

../_images/2.2.4_pir_schematic.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis auf.

../_images/2.2.4_pir_circuit.png

Schritt 2: Wechseln Sie in den Ordner des Codes.

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

Schritt 3: Führen Sie die ausführbare Datei aus.

sudo python3 2.2.4_PIR_zero.py

Nachdem der Code ausgeführt wurde, erkennt der PIR die Umgebung und lässt die RGB-LED gelb leuchten, wenn er jemanden vorbeigehen spürt.

Es gibt zwei Potentiometer auf dem PIR-Modul: eines zur Einstellung der Empfindlichkeit und das andere zur Einstellung der Erfassungsentfernung. Um das PIR-Modul optimal zu nutzen, sollten Sie beide gegen den Uhrzeigersinn bis zum Anschlag drehen.

../_images/2.2.4_PIR_TTE.png

Code

Bemerkung

Sie können den unten stehenden Code Modifizieren/Zurücksetzen/Kopieren/Ausführen/Stoppen. Aber bevor Sie das tun, müssen Sie zum Quellcode-Pfad wie davinci-kit-for-raspberry-pi/python-pi5 gehen. Nachdem Sie den Code geändert haben, können Sie ihn direkt ausführen, um die Auswirkungen zu sehen.

#!/usr/bin/env python3
from gpiozero import RGBLED, MotionSensor
from time import sleep

# Initialisieren Sie die RGB-LED und den PIR-Bewegungssensor mit der GPIO Zero-Bibliothek
led = RGBLED(red=18, green=27, blue=22)  # RGB-LED an GPIO-Pins 18 (Rot), 27 (Grün), 22 (Blau) angeschlossen
pir = MotionSensor(17)  # PIR-Sensor an GPIO-Pin 17 angeschlossen

try:
    # Kontinuierlich auf Bewegungen achten und die LED-Farbe aktualisieren
    while True:
        if pir.motion_detected:  # Überprüfen auf vom PIR-Sensor erkannte Bewegung
            led.color = (1, 1, 0)  # LED-Farbe auf Gelb einstellen (Rot + Grün)
        else:
            led.color = (0, 0, 1)  # LED-Farbe auf Blau einstellen (nur Blau)
        sleep(0.1)  # Kurze Verzögerung zur Reduzierung der CPU-Last

except KeyboardInterrupt:
    # Behandeln Sie KeyboardInterrupt (Ctrl+C) zum eleganten Beenden der Schleife
    pass

Code-Erklärung

  1. Importiert die Klasse RGBLED für die Steuerung einer RGB-LED und die Klasse MotionSensor für die Bewegungserkennung aus der GPIO Zero-Bibliothek. Importiert auch die sleep-Funktion für Verzögerungen.

    #!/usr/bin/env python3
    from gpiozero import RGBLED, MotionSensor
    from time import sleep
    
  2. Initialisiert eine RGB-LED mit roten, grünen und blauen Komponenten, die an die GPIO-Pins 18, 27 und 22 angeschlossen sind. Außerdem wird ein PIR-Sensor am GPIO-Pin 17 initialisiert.

    # Initialisieren Sie die RGB-LED und den PIR-Bewegungssensor mit der GPIO Zero-Bibliothek
    led = RGBLED(red=18, green=27, blue=22)  # RGB-LED an GPIO-Pins 18 (Rot), 27 (Grün), 22 (Blau) angeschlossen
    pir = MotionSensor(17)  # PIR-Sensor an GPIO-Pin 17 angeschlossen
    
  3. Das Programm betritt eine Endlosschleife, in der es kontinuierlich nach Bewegungen sucht und die PIR-Sensordaten verwendet. Wenn eine Bewegung erkannt wird, wird die LED auf Gelb (Mischung aus Rot und Grün) eingestellt. Wenn keine Bewegung erkannt wird, wird die LED auf Blau umgestellt. Eine kurze Schlafphase von 0,1 Sekunden reduziert die CPU-Last.

    try:
        # Kontinuierlich auf Bewegungen achten und die LED-Farbe aktualisieren
        while True:
            if pir.motion_detected:  # Überprüfen auf vom PIR-Sensor erkannte Bewegung
                led.color = (1, 1, 0)  # LED-Farbe auf Gelb einstellen (Rot + Grün)
            else:
                led.color = (0, 0, 1)  # LED-Farbe auf Blau einstellen (nur Blau)
            sleep(0.1)  # Kurze Verzögerung zur Reduzierung der CPU-Last
    
    except KeyboardInterrupt:
        # Behandeln Sie KeyboardInterrupt (Ctrl+C) zum eleganten Beenden der Schleife
        pass