.. 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 [|link_sf_facebook|] et rejoignez-nous aujourd'hui ! .. _2.2.7_py_pi5: 2.2.7 PIR ========= Introduction ------------ Dans ce projet, nous allons fabriquer un dispositif en utilisant des capteurs pyroelectriques infrarouges pour le corps humain. Lorsque quelqu'un s'approche de la LED, celle-ci s'allume automatiquement. Sinon, la lumière s'éteint. Ce capteur de mouvement infrarouge est un type de capteur qui peut détecter l'infrarouge émis par les humains et les animaux. Composants nécessaires ---------------------- Dans ce projet, nous avons besoin des composants suivants. .. image:: ../python_pi5/img/2.2.7_pir_list.png Il est certainement pratique d'acheter un kit complet, voici le lien : .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nom - ARTICLES DANS CE KIT - LIEN * - Kit Raphael - 337 - |link_Raphael_kit| Vous pouvez également les acheter séparément via les liens ci-dessous. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCTION DU COMPOSANT - LIEN D'ACHAT * - :ref:`cpn_gpio_extension_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` - \- Schéma --------- .. image:: ../python_pi5/img/2.2.7_pir_schematic.png Procédures expérimentales ---------------------------- **Étape 1 :** Construisez le circuit. .. image:: ../python_pi5/img/2.2.7_pir_circuit.png **Étape 2 :** Allez dans le dossier du code. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Étape 3 :** Exécutez le fichier exécutable. .. raw:: html .. code-block:: sudo python3 2.2.7_PIR_zero.py Après l'exécution du code, le PIR détecte les environs et fait briller la LED RVB en jaune s'il détecte quelqu'un passant à proximité. Il y a deux potentiomètres sur le module PIR : l'un pour ajuster la sensibilité et l'autre pour ajuster la distance de détection. Pour que le module PIR fonctionne mieux, vous devez les tourner tous les deux dans le sens antihoraire jusqu'à la fin. .. image:: ../python_pi5/img/2.2.7_PIR_TTE.png :width: 400 :align: center .. warning:: Si vous recevez le message d'erreur ``RuntimeError: Cannot determine SOC peripheral base address``, veuillez consulter :ref:`faq_soc` **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. .. 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 **Explication du code** #. Importe la classe ``RGBLED`` pour contrôler une LED RVB et la classe ``MotionSensor`` pour la détection de mouvement depuis la bibliothèque GPIO Zero. Importe également la fonction ``sleep`` pour créer des délais. .. code-block:: python #!/usr/bin/env python3 from gpiozero import RGBLED, MotionSensor from time import sleep #. Initialise une LED RVB avec les composants rouge, vert et bleu connectés respectivement aux broches GPIO 18, 27 et 22. Initialise également un capteur PIR sur la broche GPIO 17. .. 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 #. Le programme entre dans une boucle infinie, vérifiant continuellement la présence de mouvement à l'aide du capteur PIR. Si un mouvement est détecté, la LED devient jaune (mélange de rouge et vert). Si aucun mouvement n'est détecté, la LED devient bleue. Un court délai de 0,1 seconde réduit la charge du CPU. .. 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