Nota

Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché Unirsi?

  • Supporto Tecnico Esperto: Risolvi i problemi post-vendita e affronta le sfide tecniche con l’aiuto della nostra comunità e del nostro team.

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

  • Anteprime Esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime.

  • Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

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

👉 Sei pronto a esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!

2.2.7 PIR

Introduzione

In questo progetto, realizzeremo un dispositivo utilizzando i sensori piroelettrici a infrarossi per il corpo umano. Quando qualcuno si avvicina al LED, il LED si accenderà automaticamente. Altrimenti, la luce si spegnerà. Questo sensore di movimento a infrarossi è un tipo di sensore che può rilevare l’infrarosso emesso da esseri umani e animali.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/2.2.7_pir_list.png

È decisamente conveniente acquistare un kit completo, ecco il link:

Nome

COMPONENTI NEL KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED RGB

ACQUISTA

Modulo Sensore di Movimento PIR

-

Schema Elettrico

../_images/2.2.7_pir_schematic.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/2.2.7_pir_circuit.png

Passo 2: Vai alla cartella del codice.

cd ~/raphael-kit/python-pi5

Passo 3: Esegui il file eseguibile.

sudo python3 2.2.7_PIR_zero.py

Dopo aver eseguito il codice, il PIR rileva l’ambiente circostante e fa brillare l’RGB LED di giallo se rileva qualcuno che passa nelle vicinanze.

Sul modulo PIR ci sono due potenziometri: uno regola la sensibilità e l’altro la distanza di rilevamento. Per far funzionare al meglio il modulo PIR, è necessario ruotarli entrambi completamente in senso antiorario.

../_images/2.2.7_PIR_TTE.png

Avvertimento

Se viene visualizzato l’errore RuntimeError: Cannot determine SOC peripheral base address, fare riferimento a If gpiozero doesn’t work..

Code

Nota

Puoi Modificare/Resettare/Copiare/Eseguire/Fermare il codice qui sotto. Ma prima, devi andare al percorso sorgente del codice come raphael-kit/python-pi5. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.

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

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

try:
    # Monitora continuamente i movimenti e aggiorna il colore dell'LED
    while True:
        if pir.motion_detected:  # Verifica se il PIR rileva movimenti
            led.color = (1, 1, 0)  # Imposta il colore dell'LED su giallo (Rosso + Verde)
        else:
            led.color = (0, 0, 1)  # Imposta il colore dell'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 ordinato
    pass

Spiegazione del Codice

  1. Vengono importate le classi RGBLED per il controllo di un LED RGB e MotionSensor per la rilevazione dei movimenti dalla libreria GPIO Zero. Viene importata anche la funzione sleep per creare dei 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 RGB LED e sensore di movimento PIR utilizzando la libreria GPIO Zero
    led = RGBLED(red=18, green=27, blue=22)  # RGB LED 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 se ci sono movimenti tramite il sensore PIR. Se viene rilevato un movimento, l’LED si accende di giallo (mix di rosso e verde). Se non viene rilevato alcun movimento, l’LED diventa blu. Un breve ritardo di 0,1 secondi riduce il carico sulla CPU.

    try:
        # Monitora continuamente i movimenti e aggiorna il colore dell'LED
        while True:
            if pir.motion_detected:  # Verifica se il PIR rileva movimenti
                led.color = (1, 1, 0)  # Imposta il colore dell'LED su giallo (Rosso + Verde)
            else:
                led.color = (0, 0, 1)  # Imposta il colore dell'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 ordinato
        pass