Misurazione della distanza con il modulo laser VL53L0X a 6 pin per Arduino

Misurazione della distanza con il modulo laser VL53L0X a 6 pin per Arduino

In questo tutorial impareremo come misurare la distanza utilizzando il sensore di distanza laser VL53L0X con un modulo a 6 pin. Questo piccolo ma potente sensore utilizza la tecnologia time-of-flight per fornire misurazioni di distanza accurate fino a 200 cm. Seguendo questa guida, sarai in grado di configurare il sensore con un Arduino e leggere i valori di distanza direttamente dal tuo monitor seriale.

VL53L0X 200cm range sensor

Per questo progetto useremo il sensore VL53L0X, che è compatto e facile da integrare in varie applicazioni. Il sensore comunica tramite I2C, il che lo rende semplice da collegare a una scheda Arduino. Nel video troverai spiegazioni aggiuntive e dimostrazioni del processo di configurazione (nel video al 04:00).

Hardware spiegato

Il VL53L0X è un sensore di distanza a tempo di volo che emette un raggio laser e misura il tempo impiegato dalla luce per tornare dopo aver colpito un oggetto. Questo gli permette di calcolare con precisione la distanza dall'oggetto. Il sensore funziona a una tensione tra 2.6 V e 3.5 V, ma può essere alimentato con 5 V grazie a un regolatore di tensione interno.

Il modulo ha sei pin: VCC, GND, SDA (linea dati), SCL (linea di clock), GPIO1 (I/O a uso generale) e XSHUT (pin di spegnimento). Il pin GPIO1 non è utilizzato in questa configurazione, ma può essere lasciato scollegato. Il pin XSHUT consente di spegnere il sensore per risparmiare energia quando non è in uso.

Dettagli della scheda tecnica

ProduttoreSTMicroelectronics
Numero di parteVL53L0X
Tensione logica/I/O2,6 V a 3,5 V (5 V con regolatore)
Temperatura di esercizioda -20 °C a 70 °C
Intervallo di misurada 30 mm a 2000 mm
Frequenza di comunicazione I2C400 kHz
Dimensione4.4 mm x 2.4 mm x 1 mm

  • Assicurarsi di fornire un'alimentazione adeguata (5 V consigliati).
  • Collega SDA e SCL ai pin I2C appropriati sull'Arduino.
  • Usare resistenze pull-up sulle linee I2C se necessario.
  • Non lasciare GPIO1 scollegato; può essere lasciato in stato flottante.
  • Tenere il pin XSHUT alto durante il funzionamento.
  • Misura le distanze in un ambiente ben illuminato per una maggiore precisione.
  • Calibrare il sensore per misurazioni accurate.
  • Verifica la portata del sensore posizionando oggetti a varie distanze.
  • Monitora l'output seriale per le letture della distanza e i messaggi di timeout.

Istruzioni per il cablaggio

Arduino wiring VL53L0X laser distance sensor
Arduino wiring VL53L0X laser distance sensor

Per collegare il sensore VL53L0X al tuo Arduino, inizia collegando il pin VCC del sensore al pin 5V dell'Arduino. Successivamente collega il pin GND al GND dell'Arduino. Il pin SDA del sensore deve essere collegato al pin A4 dell'Arduino (o al pin SDA se la tua scheda ha pin I2C dedicati). Allo stesso modo, collega il pin SCL del sensore al pin A5 (o al pin SCL). Lascia il pin GPIO1 scollegato, poiché non è necessario per questo progetto.

Infine, collega il pin XSHUT al pin digitale 12 dell'Arduino. Questo pin verrà utilizzato per controllare lo stato di spegnimento del sensore. Assicurati che tutte le connessioni siano ben salde per evitare problemi di comunicazione.

Esempi di codice e guida passo passo

Nel codice, iniziamo includendo le librerie necessarie e inizializzando il sensore VL53L0X. La funzione setup configura il sensore e avvia misurazioni continue della distanza. Ecco un frammento della funzione setup:

void setup() {
  pinMode(12, INPUT_PULLUP);
  digitalWrite(12, HIGH);
  Serial.begin(9600);
  Wire.begin();
  sensor.init();
  sensor.setTimeout(500);
  sensor.startContinuous();
}

In questo frammento di codice impostiamo il pin 12 come ingresso con resistenza di pull-up e inizializziamo la comunicazione seriale a 9600 baud. Inizializziamo inoltre il sensore e impostiamo un timeout per le letture, assicurandone il funzionamento continuo.

Successivamente, leggiamo la distanza nella funzione loop, dove il valore misurato viene stampato sul monitor seriale:

void loop() {
  int distance = sensor.readRangeContinuousMillimeters();
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.print("mm");
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
  Serial.println();
  delay(100);
}

Questo codice legge la distanza in millimetri e la stampa sul monitor seriale. Se si verifica un timeout, indica che il sensore non ha ricevuto una lettura valida.

Dimostrazione / Cosa aspettarsi

Quando esegui il programma, dovresti iniziare a vedere le misurazioni di distanza sul monitor seriale. L'output varierà mentre sposti gli oggetti più vicino o più lontano dal sensore. Potresti notare messaggi di timeout occasionali se il sensore non riesce a ottenere una lettura (nel video a 10:30). Per migliorare l'accuratezza, considera di calcolare la media di più letture.

Immagini

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
Arduino wiring VL53L0X laser distance sensor
Arduino wiring VL53L0X laser distance sensor
103-Measureing distance using VL53L0X TOF range sensor
Lingua: C++
Copia!

Cose di cui potresti avere bisogno

Risorse e riferimenti

File📁

File Fritzing

Altri file