Nota

Ciao, benvenuto nella community SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 con 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 suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni l’accesso anticipato agli annunci di nuovi prodotti e anteprime.

  • Sconti speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e concorsi: Partecipa a concorsi e promozioni speciali durante le festività.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

6. Gioca con il Modulo Ultrasonico

Nel progetto 5. Gioca con il Modulo di Evitamento degli Ostacoli, i 2 moduli a infrarossi vengono utilizzati per l’evitamento degli ostacoli, ma la distanza di rilevamento del modulo IR è corta, il che potrebbe far sì che l’auto reagisca troppo tardi agli ostacoli.

In questo progetto, utilizziamo il modulo ultrasonico per eseguire un rilevamento a lunga distanza, in modo che l’auto possa percepire gli ostacoli da una distanza maggiore e prendere decisioni di conseguenza.

Componenti necessari

Per questo progetto, avremo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Kit Starter 3 in 1

380+

3 in 1 Starter Kit

Puoi anche acquistarli separatamente dai link qui sotto.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda SunFounder R3

ACQUISTA

Modulo Driver Motore L9110

-

Motore TT

-

Modulo Ultrasonico

ACQUISTA

Collegamenti

Un modulo sensore ultrasonico è uno strumento che misura la distanza di un oggetto utilizzando onde sonore ultrasoniche. Ha due sonde. Una invia onde ultrasoniche e l’altra riceve le onde, trasformando il tempo di invio e ricezione in una distanza, rilevando così la distanza tra il dispositivo e un ostacolo.

Ora costruisci il circuito secondo il seguente schema.

Modulo Ultrasonico

Scheda R3

Vcc

5V

Trig

3

Echo

4

Gnd

GND

../_images/car_6.png

Codice

Nota

  • Apri il file 6.ultrasonic_module.ino nel percorso 3in1-kit\car_project\6.ultrasonic_module.

  • Oppure copia questo codice nell”IDE di Arduino.

  • Oppure carica il codice tramite Arduino Web Editor.

Dopo che il codice sarà caricato con successo, gira l’auto verso il muro. Se la distanza è troppo grande, l’auto avanzerà; se è troppo vicina, arretrerà; se si trova a una distanza di sicurezza, si fermerà.

Come funziona?

Questo progetto si basa sulla distanza letta dal modulo ultrasonico per far muovere l’auto di conseguenza.

  1. Aggiungi la definizione dei pin per il modulo ultrasonico, trigPin viene utilizzato per trasmettere l’onda ultrasonica, quindi impostalo su OUTPUT; echoPin è impostato su INPUT per ricevere l’onda ultrasonica.

    ...
    const int trigPin = 3;
    const int echoPin = 4;
    
    void setup() {
    ...
    
    //ultrasonic
        pinMode(echoPin, INPUT);
        pinMode(trigPin, OUTPUT);
    }
    
  2. Leggi il valore della distanza ottenuto dal modulo ultrasonico: se la distanza è maggiore di 25, fai avanzare l’auto; se la distanza è compresa tra 2 e 10 cm, fai arretrare l’auto; altrimenti (tra 10 e 25) fermati.

    void loop() {
        float distance = readSensorData();
        if (distance > 25) {
            moveForward(200);
        }
        else if (distance < 10 && distance > 2) {
            moveBackward(200);
        } else {
            stopMove();
        }
    }
    
  3. A proposito della funzione readSensorData().

    Il trasmettitore del modulo ultrasonico trasmette un segnale a onda quadra da 10us ogni 2us, e il ricevitore riceve un segnale di livello alto se c’è un ostacolo entro il raggio di rilevamento. Utilizza la funzione pulseIn() per registrare il tempo dall’invio alla ricezione, dividi per la velocità del suono 340m/s, e poi dividi per 2; il risultato è la distanza tra il modulo e l’ostacolo in cm.

    float readSensorData() {
        digitalWrite(trigPin, LOW);
        delayMicroseconds(2);
        digitalWrite(trigPin, HIGH);
        delayMicroseconds(10);
        digitalWrite(trigPin, LOW);
        float distance = pulseIn(echoPin, HIGH) / 58.00; //Equivalent to (340m/s*1us)/2
        return distance;
    }
    
  • pulseIn(pin, value)

    • pin: il numero del pin di Arduino da cui vuoi leggere l’impulso. Tipi di dati ammessi: int.

    • value: tipo di impulso da leggere: HIGH o LOW. Tipi di dati ammessi: int.

    Legge un impulso (HIGH o LOW) su un pin. Ad esempio, se il valore è HIGH, pulseIn() attende che il pin passi da LOW a HIGH, avvia il conteggio del tempo, poi attende che il pin torni a LOW e ferma il conteggio.