Sensore di distanza GY-VL53L0XV2 VL53L0X Time-of-Flight Distance Sensor

Sensore di distanza GY-VL53L0XV2 VL53L0X Time-of-Flight Distance Sensor

Il sensore VL53L0X è un sensore di distanza laser a 940 nm laser VCSEL.

Il modulo ha un funzionamento simile ad una fotocellua, il corpo ha un piccolo Emettitore Laser ed un Ricevitore. Viene emesso un impulso luminoso e misurato il tempo di ritorno della luce. Questo permette di calcolare la distanza tra il sensore e l’oggetto.

I principali campi di utilizzo sono:
– Rilevamento utente per personal computer / laptop / tablet e IoT (risparmio energetico)
– Robotica (rilevamento ostacoli)
– Prodotti bianchi (rilevamento delle mani in rubinetti automatici, distributori di sapone, ecc.)
– Riconoscimento gestuale 1D.
– Autofocus laser assistito. Migliora e accelera le prestazioni del sistema di messa a fuoco automatica della fotocamera, specialmente in scene difficili (livelli di scarsa luminosità, basso contrasto), o modalità video in rapido movimento.

Range di misura 20 – 200 mm.

Il dadasheet completo è scaricabile da qui.

Per comunicare utilizza il protocollo i2c.

ll sensore VL53L0X si può acquistare, già assemblato e dotato di tutti i componenti necessari all’utilizzo direttamente con Arduino, sui vari siti e-commerce con la sigla GY-VL53L0XV2:

UTILIZZO CON ARDUINO

Con Arduino Uno si può utilizzare il seguente schema:

I piedini i2c possono variare a seconda del modello di Arduino, clicca qui per ulteriori dettagli.

Per prima cosa andiamo a scoprire l’indirizzo i2c del sensore tramite lo Sketch i2c_scan che troveremo nella sezione “File” –> “Esempi” –> “Wire”–> “i2c_scaner” dell’IDE di Arduino.

Carichiamolo sulla nostra scheda ed apriamo il monitor seriale con il tasto Il risultato sarà simile al seguente:

Quindi il suo indirizzo sarà 0x29 (più avanti verderemo come poterlo cambiare nel caso si utilizzino più sensori, o si abbiano altre periferiche i2c con lo stesso indirizzo).

Per utilizzare con semplicità il sensore ci viene incontro la libreria creata da Adafruit la Adafruit_VL53L0X che può essere scaricata dal loro github da qui, oppure una copia dal nostro sito da qui.

Aggiungiamo la libreria appena scaricata all’IDE di Arduino andando su “Sketch” –> “#include libreria” –> “Aggiungi libreria da file .ZIP…” e selezioniamo la libreria scaricata.

NOTA: in alcune versioni dell’IDE di Arduino, per poter attivare la libreria appena installata, deve essere riavviato.

Ora andiamo su “File” –> “Esempi” –> “Adafruit_VL53L0X” –> “vl53l0x” e avremo il seguente codice:

Carichiamolo sulla nostra scheda ed apriamo il monitor seriale con il tasto ed impostiamo la velocità di comunicazione a 115200 baudIl risultato sarà simile al seguente:

CAMBIO INDIRIZZO I2C DEL SENSORE VL53L0X

NOTE PRELIMINARI: il cambio dell’indirizzo non è permanente, infatti se si toglie l’alimentazione al sensore verrà automaticamente reimpostato il valore 0x29.
Se si utilizza più di un sensore VL53L0X si dovrà utilizzare anche il piedino XSHUT. Questo piedino è internamente collegato a VCC e protetto da un diodo. Se non utilizzato è quindi internamente impostato a livello ALTO ed il sensore è attivo. Se collegato ad un pin di OUTPUT di Arduino e posto basso, il sensore viene disattivato.

Se si utilizza un unico sensore e si vuole cambiare indirizzo i2c basta utilizzare il seguente codice:

Basterà quindi modificare la stringa:

lox.begin(0x29);

Sostituendo a 0x29, l’indirizzo scelto, la gamma degli indirizzi utilizzabili vanno da 0x30 a 0x3F.

Se si utilizzano più sensori VL53L0X:

Se si adottano più sensori si dovrà utilizzare anche il pin XSHUT.

La procedura sarà la seguente:

1) Si inizia settando tutti i pin connessi ai vari XSHUT a LOW per un tempo di 10 millisecondi.
2) Settare tutti i pin XSHUT a HIGH per uscire dalla modalità reset.
3) Settare tutti i pin XSHUT tranne quello del sensore n.1 a LOW
4) Inizializza il sensore n.1 con lox1.begin (new_i2c_address) Scegliere qualsiasi indirizzo tranne 0x29 (il range è da 0x30 a 0x7E).
5) Mantenere il sensore n. 1 attivo lasciando il suo pin XSHUT HIGH, ora attivare il sensore n.2 impostando il suo pin XSHUT a HIGH.
6) Inizializza il sensore n.2 con lox2.begin (new_i2c_address) Scegliere qualsiasi numero tranne 0x29 e qualunque altro numero già utilizzato precedentemente per altri sensori.
7) Ripetere le operazioni precedenti per ciascun sensore, lasciando i pin XSHUT a HIGH per tutti i sensori già inizializzati e accendendo ciascuno sensore ed impostando un indirizzo univoco.

Lo sketch sarà il seguente:

Carichiamolo sulla nostra scheda ed apriamo il monitor seriale con il tasto ed impostiamo la velocità di comunicazione a 9600 baudIl risultato sarà simile al seguente: