Utilizzando un sensore di distanza laser VL53L1X per misurare distanze fino a 4 metri

Utilizzando un sensore di distanza laser VL53L1X per misurare distanze fino a 4 metri

Il VL53L1X è un sensore di distanza laser a tempo di volo in grado di misurare distanze fino a 4 metri con alta precisione. Questo sensore comunica tramite I2C ed è versatile per varie applicazioni, come la robotica e l'automazione. In questo tutorial, esploreremo come configurare il sensore VL53L1X con un Arduino e leggere i valori di distanza in modo efficace.

VL53L1X_modulo

Il sensore è alimentato da 3,3V o 5V e ha più pin per la comunicazione I2C, inclusi SDA e SCL. Il sensore può misurare distanze a una frequenza di 50Hz, consentendo letture di distanza rapide. Questo tutorial ti guiderà attraverso il processo di cablaggio e il codice necessario per far funzionare il sensore senza problemi. Per ulteriori chiarimenti, puoi controllare il video (nel video a 00:00).

Hardware spiegato

Il componente principale di questo progetto è il sensore di distanza laser VL53L1X, che utilizza una tecnologia nota come tempo di volo (ToF) per misurare le distanze. Questo significa che calcola la distanza da un oggetto misurando quanto tempo impiega un impulso laser a tornare dopo aver colpito un oggetto. Il sensore presenta una comunicazione I2C, che consente un'integrazione semplice con microcontrollori come Arduino. Oltre al sensore, avrai bisogno di una scheda Arduino per l'elaborazione. L'Arduino gestirà la comunicazione con il VL53L1X e visualizzerà le distanze misurate. Il setup è semplice, poiché il sensore può essere alimentato direttamente dai pin di uscita dell'Arduino.

Dettagli del datasheet

Produttore STMicroelectronics
Numero di parte VL53L1X
Tensione Logica/Io 3,3 - 5 V
Tensione di alimentazione 2,6 - 5,5 V
Corrente di uscita (per canale) Non applicabile
Corrente di picco (per canale) Non applicabile
indicazioni sulla frequenza PWM Non applicabile
Soglie di logica d'ingresso 0,3 × VCC (basso), 0,7 × VCC (alto)
Caduta di tensione / RDS(on)/ saturazione Non applicabile
Limiti termici 0 a 85 °C
Pacchetto 4,9 x 2,5 x 1,6 mm
Note / varianti Sensore a tempo di volo per lunghe distanze

  • Alimenta il sensore con 3,3 V o 5 V secondo necessità.
  • Usa i pin I2C, SDA e SCL, per la comunicazione.
  • Imposta la modalità di distanza in base alle tue esigenze (breve, media, lunga).
  • Assicurati che il sensore sia calibrato per letture di distanza accurate.
  • Gestisci con attenzione le condizioni di luce ambientale poiché possono influire sulle misurazioni.

Istruzioni per il cablaggio

VL53L1X_wiring

Per collegare il sensore VL53L1X a un Arduino, connetti il pin VCC del sensore al pin 5V dell'Arduino utilizzando un filo rosso. Collega il pin di massa (GND) del sensore al GND dell'Arduino utilizzando un filo marrone. Per la comunicazione I2C, collega il pin SDA del sensore al pin A4 dell'Arduino utilizzando un filo giallo e il pin SCL al pin A5 utilizzando un filo verde. Se desideri utilizzare i pin di interruzione e spegnimento opzionali, collega il pin di spegnimento al pin digitale 2 e il pin di interruzione al pin digitale 3, ma questi non sono necessari per il funzionamento di base.

Esempi di codice e guida passo passo

Nel codice, prima includiamo le librerie necessarie e definiamo i pin per il sensore. Creiamo un'istanza del sensore con la riga:

SFEVL53L1X distanceSensor;

Questa linea inizializza il sensore, permettendoci di chiamare i suoi metodi successivamente nel programma. Successivamente, impostiamo la comunicazione I2C e inizializziamo il sensore:

void setup(void)
{
  Wire.begin();
  Serial.begin(9600);
  Serial.println("VL53L1X Qwiic Test");

  if (distanceSensor.begin() == 0) //Begin returns 0 on a good init
  {
    Serial.println("Sensor online!");
  }
}

In questo estratto, iniziamo la comunicazione I2C conWire.begin()e controlla se il sensore è stato inizializzato con successo. Infine, per leggere la distanza, utilizziamo il seguente codice nel ciclo:

void loop(void)
{
  int distance = distanceSensor.getDistance(); // Get distance
  Serial.print("Distance: ");
  Serial.println(distance);
}

Questo codice recupera la misura della distanza e la stampa sul monitor seriale. Il ciclo legge continuamente la distanza, consentendo aggiornamenti in tempo reale. Per un esempio completo di codice, si prega di fare riferimento al codice completo caricato sotto l'articolo.

Dimostrazione / Cosa Aspettarsi

Quando il sensore è impostato correttamente, puoi aspettarti che fornisca misurazioni di distanza accurate fino a 4 metri. Potresti notare lievi fluttuazioni nelle letture, specialmente in condizioni di illuminazione variabili (nel video alle 10:30). È essenziale assicurarsi che il sensore sia pulito e non ostruito per ottenere risultati precisi. Se incontri letture insolite, verifica che il sensore sia alimentato correttamente e che le connessioni I2C siano sicure. Le prestazioni del sensore possono essere influenzate dall'ambiente, in particolare in presenza di luce intensa o superfici riflettenti.

Timestamp video

  • 00:00 Inizio
  • 00:40 Introduzione
  • 03:42 Scheda Tecnica Visitata
  • 06:48 Soldato Pin header
  • 08:22 Cablaggi spiegati
  • 09:06 Codice spiegato
  • 11:53 Dimostrazione
  • 16:03 Dimostrazione nel Completo Buio

Immagini

VL53L1X Distance Sensor
VL53L1X Distance Sensor
VL53L1X_module
VL53L1X_module
VL53L1X_wiring
VL53L1X_wiring
259-code example using the VL53L1X Laser Range Sensor
Lingua: C++
Copia!

Risorse e riferimenti

File📁

Nessun file disponibile.