Nota

Ciao e benvenuto nella Community di Appassionati di SunFounder per Raspberry Pi, Arduino ed ESP32 su Facebook! Approfondisci il mondo di Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché Unirsi?

  • Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Ottieni accesso anticipato agli annunci dei nuovi prodotti e a contenuti esclusivi.

  • Sconti Speciali: Approfitta di sconti esclusivi sui nostri nuovi prodotti.

  • Promozioni Festive e Giveaway: Partecipa a concorsi e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi!

2.2.4 PIR

Introduzione

In questo progetto, costruiremo un dispositivo utilizzando sensori piroelettrici a infrarossi per il rilevamento del corpo umano. Quando una persona si avvicina al LED, questo si accenderà automaticamente; altrimenti, la luce si spegnerà. Questo sensore di movimento a infrarossi è in grado di rilevare la radiazione infrarossa emessa da persone e animali.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/2.2.4_pir_list.png

Schema Elettrico

../_images/2.2.4_pir_schematic.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/2.2.4_pir_circuit.png

Passo 2: Vai nella cartella del codice.

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

Passo 3: Esegui il file eseguibile.

sudo python3 2.2.4_PIR.py

Dopo l’avvio del codice, il PIR rileva i movimenti circostanti e fa illuminare di giallo il LED RGB se rileva qualcuno che passa.

Sul modulo PIR ci sono due potenziometri: uno per regolare la sensibilità e l’altro per la distanza di rilevamento. Per far funzionare al meglio il modulo PIR, ruotali entrambi in senso antiorario fino alla fine.

../_images/2.2.4_PIR_TTE.png

Avvertimento

Se compare l’errore RuntimeError: Cannot determine SOC peripheral base address, consulta Se gpiozero non funziona.

Codice

Nota

Puoi Modificare/Reimpostare/Copiare/Eseguire/Interrompere il codice qui sotto. Prima di farlo, però, vai al percorso del codice sorgente, come davinci-kit-for-raspberry-pi/python-pi5. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere il risultato.

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

# Inizializza LED RGB e sensore di movimento PIR con GPIO Zero
led = RGBLED(red=18, green=27, blue=22)  # LED RGB collegato ai pin GPIO 18 (Rosso), 27 (Verde), 22 (Blu)
pir = MotionSensor(17)  # Sensore PIR collegato al pin GPIO 17

try:
    # Monitoraggio continuo per rilevare movimenti e aggiornare il colore del LED
    while True:
        if pir.motion_detected:  # Controlla se il sensore PIR rileva movimento
            led.color = (1, 1, 0)  # Imposta il colore del LED su giallo (Rosso + Verde)
        else:
            led.color = (0, 0, 1)  # Imposta il colore del LED su blu (solo Blu)
        sleep(0.1)  # Breve ritardo per ridurre il carico della CPU

except KeyboardInterrupt:
    # Gestisce KeyboardInterrupt (Ctrl+C) per uscire dal ciclo in modo sicuro
    pass

Spiegazione del Codice

  1. Importa la classe RGBLED per controllare un LED RGB e la classe MotionSensor per il rilevamento del movimento dalla libreria GPIO Zero. Importa anche la funzione sleep per creare ritardi.

    #!/usr/bin/env python3
    from gpiozero import RGBLED, MotionSensor
    from time import sleep
    
  2. Inizializza un LED RGB con componenti rosso, verde e blu collegati rispettivamente ai pin GPIO 18, 27 e 22. Inizializza anche un sensore PIR sul pin GPIO 17.

    # Inizializza LED RGB e sensore di movimento PIR con GPIO Zero
    led = RGBLED(red=18, green=27, blue=22)  # LED RGB collegato ai pin GPIO 18 (Rosso), 27 (Verde), 22 (Blu)
    pir = MotionSensor(17)  # Sensore PIR collegato al pin GPIO 17
    
  3. Il programma entra in un ciclo infinito, controllando continuamente la presenza di movimento tramite il sensore PIR. Se viene rilevato un movimento, il LED diventa giallo (miscela di rosso e verde); in assenza di movimento, il LED si colora di blu. Un breve ritardo di 0,1 secondi riduce il carico della CPU.

    try:
        # Monitoraggio continuo per rilevare movimenti e aggiornare il colore del LED
        while True:
            if pir.motion_detected:  # Controlla se il sensore PIR rileva movimento
                led.color = (1, 1, 0)  # Imposta il colore del LED su giallo (Rosso + Verde)
            else:
                led.color = (0, 0, 1)  # Imposta il colore del LED su blu (solo Blu)
            sleep(0.1)  # Breve ritardo per ridurre il carico della CPU
    
    except KeyboardInterrupt:
        # Gestisce KeyboardInterrupt (Ctrl+C) per uscire dal ciclo in modo sicuro
        pass