Nota

¡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 [Aquí] y únete hoy mismo!

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.

../_images/2.2.7_pir_list.png

Es definitivamente conveniente comprar un kit completo, aquí tienes el enlace:

Nombre

COMPONENTES EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los siguientes enlaces.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED RGB

COMPRAR

Módulo Sensor de Movimiento PIR

-

Diagrama Esquemático

../_images/2.2.7_pir_schematic.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/2.2.7_pir_circuit.png

Paso 2: Ve a la carpeta del código.

cd ~/raphael-kit/python-pi5

Paso 3: Ejecuta el archivo ejecutable.

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.

../_images/2.2.7_PIR_TTE.png

Advertencia

Si recibe el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulte Si «gpiozero» no funciona.

Código

Nota

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.

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

  1. 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.

    #!/usr/bin/env python3
    from gpiozero import RGBLED, MotionSensor
    from time import sleep
    
  2. 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.

    # 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
    
  3. 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.

    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