Collegamento del telemetro laser VL53L0X, VL53L1X

Il telemetro laser VL53L1X di Arduino è un sensore che misura la distanza da un ostacolo fino a 4 metri di distanza con una lunghezza d’onda di 940 nm (adatta agli occhi). I moduli telemetro laser VL53L0X, più economici, hanno una portata di soli 2 metri. In questa recensione vedremo come collegare il VL53L1X / VL53LOX (GY-53-L1X) a un microcontrollore Arduino e utilizzare il sensore laser per misurare la distanza da un ostacolo.




Per questa attività sono necessari:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • sensore VL53L1X (GY-53-L1X)
  • display OLED i2c 128×64
  • cavi di collegamento
  • libreria SparkFun_VL53L1X.h, OLED_I2C.h

Sensore VL53L0X, VL53L1X datasheet, pinout

I sensori GY-53-L1X e VL53LOX hanno 6 connettori, ma solo 4 pin sono necessari per il collegamento. Due connettori sono utilizzati per l’alimentazione del modulo e altri due per la comunicazione I2C. Per impostazione predefinita, il VL53L1X è configurato in modalità “long range” fino a 4 metri. Utilizzando la libreria SparkFun_VL53L1X, è possibile configurare una modalità di misurazione “a corto raggio” più precisa, con una portata di circa 2 metri.

Sensore VL53L0X, VL53L1X Arduino pinout, datasheet
Sensore laser VL53L0X, VL53L1X Arduino pinout, datasheet

Caratteristiche del telemetro laser VL53L0X Arduino:

  • Tensione di alimentazione: 3,3 o 5 V
  • Indirizzo I2C: 0x29
  • Campo visivo: 27
  • Campo di misura: da 4 a 400 cm
  • Precisione: ± 25 mm (± 20 al buio)

Il sensore ha un angolo di visione predefinito di 27°. In alcuni casi, gli ostacoli presenti in periferia possono compromettere la precisione del sensore. L’angolo di visione può essere ridotto controllando la ROI (regione di interesse). Il sensore è costituito da una matrice di 16 X 16 elementi e il controllo della ROI consiste nell’attivare una parte degli elementi. Il fascio più stretto si ottiene attivando una parte della matrice composta da 4 X 4 elementi.

Come collegare telemetro laser VL53L1X ad Arduino

Collegamento del sensore VL53L0X, VL53L1X Arduino
Collegamento del sensore VL53L0X, VL53L1X Arduino Uno
VL53LOX / VL53L1X Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VDD 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

Nel primo esempio, il sensore misura e visualizza regolarmente la distanza da un ostacolo in millimetri sul monitor della porta IDE di Arduino. Il programma viene eseguito in background utilizzando le librerie Wire e VL53L1X, pertanto il programma presentato è molto breve. Collegare il sensore di distanza laser vl53l1x al microcontrollore Arduino Uno come mostrato nello schema e scaricare lo sketch per il sensore di distanza laser.

Programma Arduino per utilizzare sensore telemetro laser VL53L1X




#include "Wire.h"
#include "SparkFun_VL53L1X.h"
SFEVL53L1X vl;

void setup () {
  Serial.begin(9600);
  vl.setOffset(0);  // calibrazione

  // vl.setDistanceModeShort(); // modalità a breve distanza
  // vl.setROI(4,4,199); // ridurre al minimo il campo visivo
}

void loop() {
  vl.startRanging();
  while (!vl.checkForDataReady()) { delay(1); }
  int dist = vl.getDistance();
  vl.stopRanging();
 
  Serial.print("Distance: ");
  Serial.print(dist);
  Serial.println(" mm");
 
  delay(1000);
}

Spiegazione del codice per utilizzare sensore telemetro laser VL53L1X:



  1. con setROI(4,4,199); è possibile definire gli elementi attivi della matrice, dove il primo e il secondo argomento sono la larghezza e l’altezza della matrice in pixel;
  2. con setOffset(); è possibile calibrare la distanza del sensore.

Misurazione della distanza con VL53L1X e display OLED

Collegare il sensore remoto VL53LOX e l'OLED i2c ad Arduino
Collegare il sensore remoto VL53LOX e l’OLED i2c ad Arduino
OLED i2c 0,96 Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VDD 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

Nell’esempio seguente, il risultato della misurazione della distanza dall’ostacolo viene visualizzato sullo schermo OLED i2c 128×64. Se la distanza dell’oggetto misurata dal sensore GY-53-L1X non è precisa, è possibile correggere i dati utilizzando la funzione setOffset. Ad esempio, se la distanza misurata è inferiore di 10 millimetri rispetto alla distanza reale, è necessario specificare setOffset(10) per aggiungere 10 mm al risultato finale.

Programma Arduino per misurazione distanza con VL53L0X

#include "Wire.h"
#include "OLED_I2C.h"
OLED myOLED(SDA, SCL, 8);
 
extern uint8_t BigNumbers[];
extern uint8_t SmallFont[];

#include "SparkFun_VL53L1X.h"
SFEVL53L1X vl;

void setup () {
  Serial.begin(9600);
  myOLED.begin();
  vl.setOffset(0);  // calibrazione

  // vl.setDistanceModeShort(); // modalità a breve distanza
  // vl.setROI(4,4,199); // ridurre al minimo il campo visivo
}

void loop() {
  vl.startRanging();
  while (!vl.checkForDataReady()) { delay(1); }
  int dist = vl.getDistance();
  vl.stopRanging();
 
  Serial.print("Distance: ");
  Serial.print(dist);
  Serial.println(" mm");

  myOLED.setFont(BigNumbers);
  myOLED.print(String(dist), CENTER, 20);
  myOLED.setFont(SmallFont);
  myOLED.print("MILLIMETRES", CENTER, 50);
  myOLED.update();

  delay(1000);
}

Spiegazione del codice per misurazione distanza con VL53L0X:

  1. il sensore VL53L3CX (GY-53-L1X) è in grado di fornire la misura della distanza più accurata possibile, indipendentemente dalla riflettanza dell’oggetto.

Conclusione. Il sensore telemetro laser VL53L3CX (GY-53-L1X) è in grado di fornire la misura di distanza più accurata possibile, indipendentemente dalla riflettività dell’oggetto. L’accuratezza del sensore è meno dipendente dalla temperatura ambiente, a differenza del sensore a ultrasuoni HC-SR04. Un altro aspetto positivo dell’utilizzo di questo sensore è la possibilità di regolare l’angolo del campo visivo per ridurre l’errore di misurazione.

5/5 - (1 vote)


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.