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.8 Modulo Sensore Ultrasonico

Introduzione

Il sensore ultrasonico utilizza ultrasuoni per rilevare con precisione gli oggetti e misurare le distanze. Invia onde ultrasoniche e le converte in segnali elettronici.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/2.2.8_ultrasonic_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

Modulo Ultrasuoni

ACQUISTA

Schema Elettrico

../_images/2.2.8_ultrasonic_schematic.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/2.2.8_ultrasonic_circuit.png

Passo 2: Vai alla cartella del codice.

cd ~/raphael-kit/python-pi5

Passo 3: Esegui il file eseguibile.

sudo python3 2.2.8_Ultrasonic_zero.py

Dopo l’esecuzione del codice, il modulo sensore ultrasonico rileva la distanza tra l’ostacolo di fronte e il modulo stesso, e il valore della distanza verrà stampato sullo schermo.

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 DistanceSensor
from time import sleep

# Inizializza il sensore di distanza utilizzando la libreria GPIO Zero
# Il pin di trigger è collegato al GPIO 23, il pin di echo al GPIO 24
sensor = DistanceSensor(echo=24, trigger=23)

try:
    # Ciclo principale per misurare e riportare continuamente la distanza
    while True:
        dis = sensor.distance * 100  # Misura la distanza e converti da metri a centimetri
        print('Distanza: {:.2f} cm'.format(dis))  # Stampa la distanza con due cifre decimali
        sleep(0.3)  # Attendi 0,3 secondi prima della prossima misurazione

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

Spiegazione del Codice

  1. Viene importata la classe DistanceSensor dalla libreria gpiozero per la misurazione della distanza, e la funzione sleep dal modulo time per gestire i ritardi.

    #!/usr/bin/env python3
    from gpiozero import DistanceSensor
    from time import sleep
    
  2. Inizializza il sensore ultrasonico di distanza con il pin Echo collegato al GPIO 24 e il pin Trigger al GPIO 23.

    # Inizializza il sensore di distanza utilizzando la libreria GPIO Zero
    # Il pin di trigger è collegato al GPIO 23, il pin di echo al GPIO 24
    sensor = DistanceSensor(echo=24, trigger=23)
    
  3. Il ciclo principale misura continuamente la distanza, la converte da metri a centimetri e la stampa con due cifre decimali di precisione. Poi attende 0,3 secondi prima di rieseguire la misurazione. Il ciclo viene interrotto correttamente tramite KeyboardInterrupt (ad esempio Ctrl+C) per consentire un’uscita ordinata dallo script.

    try:
        # Ciclo principale per misurare e riportare continuamente la distanza
        while True:
            dis = sensor.distance * 100  # Misura la distanza e converti da metri a centimetri
            print('Distanza: {:.2f} cm'.format(dis))  # Stampa la distanza con due cifre decimali
            sleep(0.3)  # Attendi 0,3 secondi prima della prossima misurazione
    
    except KeyboardInterrupt:
        # Gestisce KeyboardInterrupt (Ctrl+C) per uscire dal ciclo in modo ordinato
        pass