CONTENUTO ►
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.
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
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:
- 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;
- con setOffset(); è possibile calibrare la distanza del sensore.
Misurazione della distanza con VL53L1X e display OLED
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:
- 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.
Lascia un commento