.. note:: 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 [|link_sf_facebook|] und treten Sie heute bei! .. _2.2.7_py_pi5: 2.2.7 PIR ============ Einführung ------------ In diesem Projekt werden wir ein Gerät unter Verwendung von pyroelektrischen Infrarotsensoren für den menschlichen Körper herstellen. Wenn sich jemand dem LED nähert, wird das LED automatisch eingeschaltet. Andernfalls wird das Licht ausgeschaltet. Dieser Infrarot-Bewegungssensor ist eine Art Sensor, der die von Menschen und Tieren ausgestrahlte Infrarotstrahlung erkennen kann. Benötigte Komponenten ------------------------------ Für dieses Projekt benötigen wir folgende Komponenten. .. image:: ../python_pi5/img/2.2.7_pir_list.png Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Name - ARTIKEL IN DIESEM SET - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Sie können diese auch einzeln über die untenstehenden Links kaufen. .. list-table:: :widths: 30 20 :header-rows: 1 * - KOMPONENTENVORSTELLUNG - KAUF-LINK * - :ref:`cpn_gpio_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_rgb_led` - |link_rgb_led_buy| * - :ref:`cpn_pir` - \- Schaltplan ----------------- .. image:: ../python_pi5/img/2.2.7_pir_schematic.png Experimentelle Verfahren ------------------------------------ **Schritt 1:** Baue die Schaltung. .. image:: ../python_pi5/img/2.2.7_pir_circuit.png **Schritt 2:** Gehe zum Ordner des Codes. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Schritt 3:** Führe die ausführbare Datei aus. .. raw:: html .. code-block:: sudo python3 2.2.7_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 am PIR-Modul: eines zur Einstellung der Empfindlichkeit und das andere zur Einstellung der Erkennungsdistanz. Um das PIR-Modul besser zu nutzen, müssen Sie beide im Uhrzeigersinn bis zum Anschlag drehen. .. image:: ../python_pi5/img/2.2.7_PIR_TTE.png :width: 400 :align: center .. warning:: Wenn die Fehlermeldung ``RuntimeError: Cannot determine SOC peripheral base address`` angezeigt wird, lesen Sie bitte :ref:`faq_soc` **Code** .. note:: 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. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import RGBLED, MotionSensor from time import sleep # Initialize RGB LED and PIR motion sensor using GPIO Zero library led = RGBLED(red=18, green=27, blue=22) # RGB LED connected to GPIO pins 18 (Red), 27 (Green), 22 (Blue) pir = MotionSensor(17) # PIR sensor connected to GPIO pin 17 try: # Continuously monitor for motion and update LED color while True: if pir.motion_detected: # Check for motion detected by PIR sensor led.color = (1, 1, 0) # Set LED color to yellow (Red + Green) else: led.color = (0, 0, 1) # Set LED color to blue (only Blue) sleep(0.1) # Short delay to reduce CPU load except KeyboardInterrupt: # Handle KeyboardInterrupt (Ctrl+C) to exit the loop gracefully pass **Code-Erklärung** #. Importiert die Klasse ``RGBLED`` für die Steuerung einer RGB-LED und die Klasse ``MotionSensor`` für die Bewegungserkennung aus der GPIO Zero Bibliothek. Außerdem wird die Funktion ``sleep`` für Verzögerungen importiert. .. code-block:: python #!/usr/bin/env python3 from gpiozero import RGBLED, MotionSensor from time import sleep #. Initialisiert eine RGB-LED mit den Komponenten Rot, Grün und Blau, die jeweils mit den GPIO-Pins 18, 27 und 22 verbunden sind. Ebenfalls wird ein PIR-Sensor am GPIO-Pin 17 initialisiert. .. code-block:: python # Initialize RGB LED and PIR motion sensor using GPIO Zero library led = RGBLED(red=18, green=27, blue=22) # RGB LED connected to GPIO pins 18 (Red), 27 (Green), 22 (Blue) pir = MotionSensor(17) # PIR sensor connected to GPIO pin 17 #. Das Programm tritt in eine unendliche Schleife ein und überwacht kontinuierlich die Bewegung mit dem PIR-Sensor. Wird eine Bewegung erkannt, wird die LED gelb (Mischung aus Rot und Grün) eingestellt. Wird keine Bewegung erkannt, wird die LED blau. Eine kurze Schlafzeit von 0,1 Sekunden verringert die CPU-Last. .. code-block:: python try: # Continuously monitor for motion and update LED color while True: if pir.motion_detected: # Check for motion detected by PIR sensor led.color = (1, 1, 0) # Set LED color to yellow (Red + Green) else: led.color = (0, 0, 1) # Set LED color to blue (only Blue) sleep(0.1) # Short delay to reduce CPU load except KeyboardInterrupt: # Handle KeyboardInterrupt (Ctrl+C) to exit the loop gracefully pass