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.
È decisamente conveniente acquistare un kit completo, ecco il link:
Nome |
COMPONENTI NEL KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK PER L’ACQUISTO |
|---|---|
- |
Schema Elettrico
Procedure Sperimentali
Passo 1: Costruisci il circuito.
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.
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
Vengono importate le classi
RGBLEDper il controllo di un LED RGB eMotionSensorper la rilevazione dei movimenti dalla libreria GPIO Zero. Viene importata anche la funzionesleepper creare dei ritardi.#!/usr/bin/env python3 from gpiozero import RGBLED, MotionSensor from time import sleep
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
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