.. note:: ¡Hola, bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook! Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas. **¿Por qué unirse?** - **Soporte Experto**: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo. - **Aprende y Comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades. - **Avances Exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos exclusivos. - **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes. - **Promociones y Sorteos Festivos**: Participa en sorteos y promociones durante las festividades. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo! .. _2.2.7_py_pi5: 2.2.7 PIR ============== Introducción ------------------ En este proyecto, haremos un dispositivo utilizando sensores piroeléctricos de infrarrojos del cuerpo humano. Cuando alguien se acerque al LED, este se encenderá automáticamente. Si no hay nadie, la luz se apagará. Este sensor de movimiento infrarrojo es un tipo de sensor que puede detectar el infrarrojo emitido por humanos y animales. Componentes Necesarios -------------------------- En este proyecto, necesitamos los siguientes componentes. .. image:: ../python_pi5/img/2.2.7_pir_list.png Es definitivamente conveniente comprar un kit completo, aquí tienes el enlace: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nombre - COMPONENTES EN ESTE KIT - ENLACE * - Kit Raphael - 337 - |link_Raphael_kit| También puedes comprarlos por separado en los siguientes enlaces. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCCIÓN DEL COMPONENTE - ENLACE DE COMPRA * - :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` - \- Diagrama Esquemático -------------------------- .. image:: ../python_pi5/img/2.2.7_pir_schematic.png Procedimientos Experimentales ---------------------------------- **Paso 1:** Construir el circuito. .. image:: ../python_pi5/img/2.2.7_pir_circuit.png **Paso 2:** Ve a la carpeta del código. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Paso 3:** Ejecuta el archivo ejecutable. .. raw:: html .. code-block:: sudo python3 2.2.7_PIR_zero.py Después de ejecutar el código, el PIR detectará el entorno y hará que el LED RGB brille en amarillo si detecta a alguien pasando. Hay dos potenciómetros en el módulo PIR: uno para ajustar la sensibilidad y otro para ajustar la distancia de detección. Para que el módulo PIR funcione mejor, necesitas girar ambos completamente en sentido contrario a las agujas del reloj. .. image:: ../python_pi5/img/2.2.7_PIR_TTE.png :width: 400 :align: center .. warning:: Si recibe el mensaje de error ``RuntimeError: Cannot determine SOC peripheral base address``, consulte :ref:`faq_soc` **Código** .. note:: Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como ``raphael-kit/python-pi5``. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import RGBLED, MotionSensor from time import sleep # Inicializar el LED RGB y el sensor de movimiento PIR usando la biblioteca GPIO Zero led = RGBLED(red=18, green=27, blue=22) # LED RGB conectado a los pines GPIO 18 (Rojo), 27 (Verde), 22 (Azul) pir = MotionSensor(17) # Sensor PIR conectado al pin GPIO 17 try: # Monitorear continuamente el movimiento y actualizar el color del LED while True: if pir.motion_detected: # Verificar si el sensor PIR detecta movimiento led.color = (1, 1, 0) # Establecer el color del LED a amarillo (Rojo + Verde) else: led.color = (0, 0, 1) # Establecer el color del LED a azul (solo Azul) sleep(0.1) # Breve retraso para reducir la carga de la CPU except KeyboardInterrupt: # Manejar la interrupción del teclado (Ctrl+C) para salir del bucle de manera ordenada pass **Explicación del Código** #. Importa la clase ``RGBLED`` para controlar un LED RGB y la clase ``MotionSensor`` para la detección de movimiento de la biblioteca GPIO Zero. También importa la función ``sleep`` para crear retrasos. .. code-block:: python #!/usr/bin/env python3 from gpiozero import RGBLED, MotionSensor from time import sleep #. Inicializa un LED RGB con componentes rojo, verde y azul conectados a los pines GPIO 18, 27 y 22, respectivamente. También inicializa un sensor PIR en el pin GPIO 17. .. code-block:: python # Inicializar el LED RGB y el sensor de movimiento PIR usando la biblioteca GPIO Zero led = RGBLED(red=18, green=27, blue=22) # LED RGB conectado a los pines GPIO 18 (Rojo), 27 (Verde), 22 (Azul) pir = MotionSensor(17) # Sensor PIR conectado al pin GPIO 17 #. El programa entra en un bucle infinito, verificando continuamente si hay movimiento con el sensor PIR. Si se detecta movimiento, el LED se pone amarillo (mezcla de rojo y verde). Si no se detecta movimiento, el LED se pone azul. Un breve retraso de 0.1 segundos reduce la carga de la CPU. .. code-block:: python try: # Monitorear continuamente el movimiento y actualizar el color del LED while True: if pir.motion_detected: # Verificar si el sensor PIR detecta movimiento led.color = (1, 1, 0) # Establecer el color del LED a amarillo (Rojo + Verde) else: led.color = (0, 0, 1) # Establecer el color del LED a azul (solo Azul) sleep(0.1) # Breve retraso para reducir la carga de la CPU except KeyboardInterrupt: # Manejar la interrupción del teclado (Ctrl+C) para salir del bucle de manera ordenada pass