Cerca codice

Lezione 7 di 10: Inseguimento della linea, Rilevamento del precipizio Calibrare il sensore in scala di grigi Auto Raspberry Pi Pico

Questa lezione fa parte di: Raspberry Pi Pico 4WD Smart Car

Lezione 7 di 10: Inseguimento della linea, Rilevamento del precipizio Calibrare il sensore in scala di grigi Auto Raspberry Pi Pico

In questa settima lezione del corso Raspberry Pi Pico Smart Car, esploriamo le funzioni cruciali del rilevamento della linea e del rilevamento del precipizio utilizzando un modulo sensore in scala di grigi. Questo modulo funge da "occhi" della tua auto, permettendole di seguire un percorso predeterminato in modo autonomo ed evitare cadute pericolose. Il progetto dimostra come calibrare il sensore per letture accurate e implementare una logica che mantiene l'auto in pista, con una divertente funzione "Don't Push Me" che simula il rilevamento del precipizio. Questa guida è perfetta per chiunque voglia andare oltre il controllo remoto di base e immergersi nel mondo della robotica guidata da sensori.

Questa tecnologia ha numerose applicazioni pratiche oltre a essere un divertente progetto fai-da-te. I principi che imparerai qui sono fondamentali per costruire sistemi autonomi nel mondo reale. Ecco alcune idee per ispirarti:

  • Robot di consegna automatizzati: Costruisci un piccolo robot che possa navigare in un magazzino o in un ufficio seguendo linee marcate per consegnare oggetti.
  • Risolutore di labirinti da tavolo: Crea un robot che possa navigare in un labirinto complesso disegnato con nastro isolante nero.
  • Robot di sicurezza e protezione: Implementa un robot di pattuglia che segue un percorso prestabilito e usa il rilevamento del precipizio per evitare di cadere dalle scale o da superfici elevate.
  • Piattaforma educativa: Usa l'auto per insegnare i fondamenti del controllo PID, della fusione dei sensori e della navigazione autonoma.

Hardware e componenti

Questo progetto si basa sul kit auto 4WD SunFounder Raspberry Pi Pico. Il componente chiave per questa lezione è il modulo sensore in scala di grigi, essenziale sia per il rilevamento della linea che per il rilevamento del precipizio. Il modulo presenta tre sensori indipendenti che misurano la quantità di luce riflessa dalla superficie sottostante. Questi dati vengono utilizzati per distinguere tra una linea nera, una superficie bianca e un "precipizio" o spazio aperto. Il kit completo include anche il telaio dell'auto Pico, i motori e un pacco batterie per alimentare il sistema.

Guida al cablaggio

Un cablaggio corretto è il primo passo per far funzionare il tuo sensore. Il modulo in scala di grigi si collega al Raspberry Pi Pico utilizzando quattro fili. Il cablaggio è semplice ed è dimostrato chiaramente nel video.

Ecco la configurazione del cablaggio come mostrato nel video (nel video a 03:01):

  • Filo nero: Collega a un pin GND sul Pico.
  • Filo rosso: Collega al pin 3.3V sul Pico.
  • Filo giallo (sensore destro): Collega al pin GPIO 28.
  • Filo marrone (sensore centrale): Collega al pin GPIO 27.
  • Filo bianco/grigio (sensore sinistro): Collega al pin GPIO 26.

Calibrazione del sensore in scala di grigi

Prima che l'auto possa seguire in modo affidabile una linea, devi calibrare il sensore per comprendere le diverse letture per bianco, nero e spazio vuoto. Questo è un passaggio critico per garantire che la tua auto prenda le giuste decisioni. La sensibilità del sensore può essere regolata con un piccolo potenziometro sul modulo.

Il video dimostra il processo di calibrazione (nel video a 04:39). Il sensore dovrebbe essere posizionato a un'altezza ottimale dal suolo—circa 11 millimetri o un centimetro—per ottenere letture chiare. Regolando il potenziometro e osservando i valori, puoi trovare il punto ottimale. L'obiettivo è avere una differenza significativa tra le letture per una superficie bianca (che riflette molta luce) e una linea nera (che riflette pochissima luce).

Ecco un riepilogo di cosa significano le letture:

  • Superficie bianca: Alta riflessione, con valori del sensore elevati (ad esempio, circa 20.000).
  • Linea nera: Bassa riflessione, con valori del sensore bassi (ad esempio, circa 3.000).
  • Precipizio (spazio vuoto): Nessuna riflessione, con i valori del sensore più bassi (ad esempio, circa 1.200).

Spiegazione del codice

Poiché non è stato fornito alcun codice per questa lezione, ci concentreremo sulla logica concettuale e sulle funzioni chiave della libreria Robojax utilizzate per far funzionare l'auto. Il video spiega le due funzioni principali che userai dalla libreria fornita.

Test del sensore

Il primo passo è testare il tuo sensore con un semplice script. Questo script utilizza una funzione chiamata get_grayscale_value() per leggere i valori grezzi dai tre sensori. Stampa questi valori sul monitor seriale così puoi vedere come cambiano quando il sensore è sopra diverse superfici. Questo è utile per verificare il cablaggio ed eseguire il passaggio di calibrazione.


# Questo è un esempio concettuale della funzione di test
from machine import Pin, ADC
import time

# Definisci i pin ADC per i sensori in scala di grigi
grayscale_pins = [26, 27, 28]
sensors = [ADC(Pin(pin)) for pin in grayscale_pins]

while True:
    # Leggi i valori grezzi a 16 bit dai sensori
    values = [sensor.read_u16() for sensor in sensors]
    print("Sinistro: {} Centrale: {} Destro: {}".format(values[0], values[1], values[2]))
    time.sleep_ms(100)

Logica del rilevamento della linea

Per il rilevamento della linea, il codice non usa i valori analogici grezzi. Invece, li converte in un semplice stato digitale: 1 se il sensore è sopra la linea nera e 0 se è sopra la superficie bianca. Questo è gestito da una funzione che restituisce una lista di tre valori (ad esempio, [0, 1, 0]). Il ciclo di controllo principale usa poi questa lista per determinare le azioni dell'auto.

La logica si basa sul confronto dello stato del sensore con condizioni predefinite. Ad esempio, se lo stato è [0, 1, 0], l'auto è perfettamente sulla linea e dovrebbe andare dritta. Se lo stato è [1, 0, 0], l'auto è deviata a sinistra e deve correggere la traiettoria verso destra. Il video spiega queste condizioni in dettaglio (nel video al minuto 13:05), mostrando come diverse combinazioni delle letture del sensore corrispondano a diversi comandi motore, come girare a sinistra, girare a destra o effettuare una correzione brusca.


# Questo è un esempio concettuale della logica di inseguimento della linea
# Supponiamo che 'status' sia una lista come [0, 1, 0] proveniente dal sensore in scala di grigi

if status == [0, 1, 0]:  # Sensore centrale sulla linea
    # Vai dritto
    pass
elif status == [1, 0, 0]:  # Sensore sinistro sulla linea
    # Gira a destra
    pass
elif status == [0, 0, 1]:  # Sensore destro sulla linea
    # Gira a sinistra
    pass
# ... altre condizioni per curve più strette

Dimostrazione dal Vivo del Progetto

Nella dimostrazione del video, l'auto è posizionata su una pista stampata con una spessa linea nera. L'auto segue con successo la linea, effettuando curve e correzioni mentre si muove lungo il percorso. Il video evidenzia un problema comune in cui le ruote possono allentarsi durante le curve strette, e mostra una soluzione semplice: aggiungere un piccolo pezzo di nastro adesivo all'asse della ruota per una migliore aderenza. Una volta risolto questo, l'auto percorre l'intera pista senza intoppi, dimostrando l'efficacia della calibrazione e della logica di inseguimento della linea.

Capitoli del Video

  • [00:00] Introduzione all'Inseguimento della Linea e al Rilevamento dei Bordi
  • [03:01] Cablaggio del Modulo Sensore in Scala di Grigi
  • [04:39] Calibrazione del Sensore in Scala di Grigi
  • [13:05] Comprensione della Logica di Inseguimento della Linea
  • [19:43] Test del Codice di Inseguimento della Linea
  • [24:50] Dimostrazione dal Vivo su una Pista di Prova
Nessun codice allegato.

Risorse e riferimenti

Nessuna risorsa ancora.

File📁

Nessun file disponibile.