.. note::
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 [|link_sf_facebook|] e unisciti oggi!
.. _py_pi5_pir:
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.
.. image:: ../python_pi5/img/2.2.4_pir_list.png
.. raw:: html
Schema Elettrico
-------------------
.. image:: ../python_pi5/img/2.2.4_pir_schematic.png
Procedure Sperimentali
-------------------------
**Passo 1:** Costruisci il circuito.
.. image:: ../python_pi5/img/2.2.4_pir_circuit.png
**Passo 2:** Vai nella cartella del codice.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/python-pi5
**Passo 3:** Esegui il file eseguibile.
.. raw:: html
.. code-block::
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.
.. image:: ../python_pi5/img/2.2.4_PIR_TTE.png
:width: 400
:align: center
.. warning::
Se compare l'errore ``RuntimeError: Cannot determine SOC peripheral base address``, consulta :ref:`faq_soc`
**Codice**
.. note::
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.
.. raw:: html
.. code-block:: python
#!/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**
#. 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.
.. code-block:: python
#!/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.
.. code-block:: python
# 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
#. 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.
.. code-block:: python
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