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.
È 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: 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
Questa linea imposta lo script per essere eseguito con Python 3. Importa la classe
Buttonda gpiozero (utilizzata per il sensore ostacoli) e il modulotimeper i ritardi.#!/usr/bin/env python3 from gpiozero import Button import time
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)
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 strutturatry-exceptviene 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