Misurare la distanza con un modulo laser VL53L0X a 6 pin e display TM1637 per Arduino

Misurare la distanza con un modulo laser VL53L0X a 6 pin e display TM1637 per Arduino


In questo tutorial impareremo come misurare la distanza utilizzando il sensore di distanza laser VL53L0X e visualizzare le misurazioni su un display a 7 segmenti TM1637. Questo progetto combina entrambi i componenti per creare uno strumento di misurazione della distanza semplice ma efficace. Il VL53L0X utilizza la tecnologia laser per fornire misurazioni della distanza accurate, mentre il display TM1637 mostra queste misurazioni in un formato intuitivo per l'utente.

VL53L0X 200cm range sensor
TM1637 4 digit display module

Passeremo in rassegna l'hardware necessario, le istruzioni di cablaggio e il codice necessari per mettere tutto in funzione. Al termine di questo tutorial avrai un dispositivo funzionante per la misurazione della distanza che potrà essere utilizzato in varie applicazioni. Per una guida visiva, assicurati di guardare il video (nel video a 00:00).

Hardware spiegato

I componenti principali per questo progetto sono il sensore di distanza laser VL53L0X e il modulo display TM1637. Il VL53L0X è un sensore Time-of-Flight che misura la distanza da un oggetto emettendo un raggio laser e calcolando il tempo impiegato dal raggio riflesso per tornare. Opera su un intervallo di tensione da 2.6V a 3.5V, ma può anche funzionare a 5V grazie a un regolatore di tensione integrato.

Il TM1637 è un driver per display che controlla un display LED a 7 segmenti. Comunica tramite una semplice interfaccia a 2 fili (CLK e DIO), rendendo facile il collegamento a un Arduino. Il display può mostrare valori numerici ed è perfetto per visualizzare le misurazioni di distanza dal sensore VL53L0X.

Dettagli della scheda tecnica

ProduttoreSTMicroelectronics
Numero di parteVL53L0X
Tensione logica/IO2.6 V - 3.5 V
Tensione di alimentazione2.6 V - 5 V
Temperatura di esercizio-20 °C a 70 °C
Intervallo di misurada 30 mm a 2000 mm
Frequenza I2C400 kHz
Impostazione del timeout500 ms
Pacchettomodulo a 6 pin

  • Assicurati che l'alimentazione sia corretta (5V è accettabile).
  • Collegare il pin XSHUT mediante una resistenza di pull-up per evitare correnti di fuga.
  • Usa I2C per la comunicazione; collega SDA e SCL in modo appropriato.
  • Gestire i timeout nel codice per evitare comportamenti imprevisti.
  • Tenere presente l'intervallo di temperatura di esercizio per garantire la precisione.

Istruzioni di cablaggio

Arduino wiring for VL53L0X with TM1637 4 digit dispaly
Arduino wiring for VL53L0X with TM1637 4 digit dispaly

Per cablare il VL53L0X e il display TM1637, inizia collegando il pin VCC del VL53L0X al pin 5V dell'Arduino e il pin GND a un pin GND dell'Arduino. Successivamente, collega il pin SDA del VL53L0X al pin A4 dell'Arduino, che viene tipicamente usato per la comunicazione dati I2C. Il pin SCL dovrebbe essere collegato al pin A5 dell'Arduino, usato per il segnale di clock.

Per il display TM1637, collegare il pin CLK al pin digitale 2 dell'Arduino e il pin DIO al pin digitale 3. Infine, collegare il pin XSHUT del VL53L0X al pin digitale 12 dell'Arduino. Assicurarsi che eventuali pin non utilizzati, come GPIO1 del VL53L0X, rimangano non collegati. Questa configurazione permetterà all'Arduino di comunicare efficacemente sia con il sensore sia con il display.

Esempi di codice e guida passo-passo

Il codice inizializza il sensore e il display, configura la comunicazione I2C e legge continuamente le misurazioni di distanza. Di seguito è riportato uno snippet che mostra la funzione setup in cui i pin sono configurati e il sensore è inizializzato:

void setup() {
  pinMode(12, INPUT_PULLUP); // set pin 12 for input
  digitalWrite(12, HIGH); // set pin 12 high (5V)
  Serial.begin(9600);
  Wire.begin(); // I2C communication initialized
  sensor.init(); // distance sensor is initialized
  sensor.setTimeout(500); // time out is set
  sensor.startContinuous(); // type of measurement is set
}

Nella funzione setup, il pin per XSHUT è configurato come ingresso con resistore di pull-up e il sensore viene inizializzato per la misurazione continua della distanza. Anche il monitor seriale viene impostato per visualizzare le letture della distanza.

Successivamente, il ciclo principale legge la distanza e aggiorna il display. Ecco un estratto mirato della funzione loop:

void loop() {
  int distance = sensor.readRangeContinuousMillimeters(); // read the distance in mm
  display.setSegments(clearLED); // remove previous value from LED display
  display.showNumberDec(distance, false, 4, 0); // display the distance
  Serial.print("Distance: ");
  Serial.print(distance); // print distance on serial monitor
}

Questo ciclo legge continuamente la distanza dal sensore e aggiorna il display TM1637 con l'ultima misurazione. Inoltre stampa la distanza sul monitor seriale per scopi di debug. Se vuoi vedere il codice completo, verrà caricato sotto l'articolo.

Dimostrazione / Cosa aspettarsi

Una volta completata la configurazione e caricato il codice, dovresti vedere la distanza misurata dal VL53L0X visualizzata sul TM1637. Se avvicini o allontani un oggetto dal sensore, il valore visualizzato cambierà di conseguenza. Se riscontri letture inattese, assicurati che il sensore non sia ostruito e che la superficie dell'oggetto sia adatta alla riflessione del laser (nel video a 09:30).

Gli errori più comuni includono il cablaggio invertito o la mancata inizializzazione corretta del sensore, che possono causare errori di timeout. Verifica che i pin corretti siano collegati e che il sensore sia alimentato adeguatamente per misurazioni accurate della distanza.

Immagini

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
TM1637 4 digit display module
TM1637 4 digit display module
Arduino wiring for VL53L0X with TM1637 4 digit dispaly
Arduino wiring for VL53L0X with TM1637 4 digit dispaly
104-Measure distance with a Laser VL53L0X 6-pin module and a TM1637 LED display for Arduino
Lingua: C++
Copia!

Risorse e riferimenti

Nessuna risorsa ancora.

File📁

Scheda tecnica (pdf)

File Fritzing

Manuale dell'utente

Altri file