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.

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
| Produttore | STMicroelectronics |
|---|---|
| Numero di parte | VL53L0X |
| Tensione logica/I/O | 2,6 V a 3,5 V (5 V con regolatore) |
| Temperatura di esercizio | da -20 °C a 70 °C |
| Intervallo di misura | da 30 mm a 2000 mm |
| Frequenza di comunicazione I2C | 400 kHz |
| Dimensione | 4.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

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.
Cose di cui potresti avere bisogno
-
eBayAcquista VL53l0x da eBayebay.us
-
AliExpressAcquista da 1 a 10 pezzi di VL53L0X da AliExpresss.click.aliexpress.com
-
BanggoodAcquista da 1 a 10 pezzi di VL53L0X da Banggoodbanggood.com
Risorse e riferimenti
-
EsternoAcquista da 1 a 10 pezzi di VL53L0X da AliExpresss.click.aliexpress.com
-
EsternoAcquista da 1 a 10 pezzi di VL53L0X da Banggoodbanggood.com
-
EsternoAcquista VL53l0x da eBayebay.us
-
EsternoAcquista VL53L0X su Amazonamzn.to
File📁
File Fritzing
-
VL53L0X_Sensore_di_distanza_Squares
VL53L0X_Distance_sensor_Squares.fzpz0.02 MB
Altri file
-
VL53L0X_Sensore_di_distanza_porpora
VL53L0X_Distance_sensor_purple.fzpz0.01 MB