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.5 Sensore IR per Evitamento Ostacoli

Introduzione

In questo progetto, impareremo a conoscere il modulo a infrarossi per l’evitamento degli ostacoli, un modulo sensore che può essere utilizzato per rilevare ostacoli a breve distanza, con poche interferenze, facile da assemblare e utilizzare. Può essere ampiamente utilizzato in robot per l’evitamento di ostacoli, carrelli con funzione di evitamento ostacoli, conteggio su linee di montaggio, ecc.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/2.2.5_ir_obstacle_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 di evitamento ostacoli

ACQUISTA

Schema Elettrico

../_images/2.2.5_ir_obstacle_list_schematic.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/2.2.5_ir_obstacle_circuit.png

Passo 2: Cambia directory.

cd ~/raphael-kit/python-pi5

Passo 3: Esegui.

sudo python3 2.2.5_IrObstacle_zero.py

Dopo aver eseguito il codice, quando metti la mano davanti alla sonda del modulo, l’indicatore di uscita del modulo si accenderà e la scritta «Ostacolo Rilevato!» verrà stampata ripetutamente sullo schermo fino a quando non rimuoverai la mano.

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 Button
import time

# Inizializza il sensore ostacoli collegato al pin GPIO 17
# Il sensore è configurato con una resistenza di pull-up
obstacle_sensor = Button(17, pull_up=True)

try:
   # Monitora continuamente la presenza di ostacoli
   while True:
      if obstacle_sensor.is_pressed:  # Controlla se il sensore è attivato
            print("Detected Barrier!")  # Stampa un messaggio quando viene rilevato un ostacolo
            time.sleep(1)  # Ritardo di 1 secondo per evitare messaggi ripetitivi

except KeyboardInterrupt:
   # Gestisce l'interruzione da tastiera (Ctrl+C) per una chiusura pulita e sicura
   pass

Spiegazione del Codice

  1. Questa linea imposta lo script per essere eseguito con Python 3. Importa la classe Button da gpiozero (utilizzata per il sensore ostacoli) e il modulo time per i ritardi.

    #!/usr/bin/env python3
    from gpiozero import Button
    import time
    
  2. Inizializza un sensore ostacoli collegato al pin GPIO 17 con una resistenza di pull-up interna.

    # Inizializza il sensore ostacoli collegato al pin GPIO 17
    # Il sensore è configurato con una resistenza di pull-up
    obstacle_sensor = Button(17, pull_up=True)
    
  3. In un ciclo continuo, il programma verifica se il sensore ostacoli è attivato (is_pressed). Se viene rilevato un ostacolo, stampa «Ostacolo Rilevato!» e poi attende un secondo (per evitare messaggi ripetitivi). La struttura try-except viene utilizzata per gestire un’Interruzione da Tastiera (KeyboardInterrupt) per una chiusura pulita del programma.

    try:
       # Monitora continuamente la presenza di ostacoli
       while True:
          if obstacle_sensor.is_pressed:  # Controlla se il sensore è attivato
                print("Detected Barrier!")  # Stampa un messaggio quando viene rilevato un ostacolo
                time.sleep(1)  # Ritardo di 1 secondo per evitare messaggi ripetitivi
    
    except KeyboardInterrupt:
       # Gestisce l'interruzione da tastiera (Ctrl+C) per una chiusura pulita e sicura
       pass