Il modulo sensore di distanza laser VL53L0X è un sensore basato su LIDAR che misura la distanza (sino a 2metri) tra un oggetto e un sensore.
Questo modulo utilizza un principio del time of flight (ToF) per misurare la distanza. Questo sensore rilascia un raggio laser che colpisce l’oggetto in un campo di rilevamento e riflette indietro. Il dispositivo misura il tempo impiegato dal raggio laser, e utilizzando questo tempo, viene calcolata la distanza tra l’oggetto e il sensore.
Il sensore consiste in un laser ad emissione superficiale a cavità verticale (VCSEL), un regolatore di tensione e alcuni elementi passivi come resistenze e condensatori.
Questo modulo è una scheda breakout che permette il suo interfacciamento diretto con altri microcontrollori. La scheda dispone di un regolatore di tensione a bordo, che gestisce tensioni da 2.8V. La tensione applicata può variare in un range da 2.6V a 5.5V.
Il VL53L0X ha numerose applicazioni come il riconoscimento dei gesti, il rilevamento di prossimità, la robotica, il rilevamento degli ostacoli, i sistemi di prevenzione delle collisioni, i monitor degli interruttori di alimentazione, i droni, i prodotti IoT, i rubinetti automatici, il rilevamento delle mani per i distributori di sapone e così via.
Specifiche
L’indirizzo I2C di default per il VL53L0X è 0x29, ma può essere cambiato, se si usano più sensori. Ogni sensore ha il suo indirizzo I2C dedicato che può essere impostato via software.
Il modulo ha sei pin. La piedinatura è mostrata nell’immagine seguente:
Codice di esempio C per Arduino
Per utilizzare la scheda con Arduino è necessario innanzi tutto caricare la libreria Adafruit_VL53L0X. Per scaricarla e installarla, aprite Arduino IDE e andate su: Strumenti > Gestisci librerie. Quando si apre una nuova finestra, digitate Adafruit_VL53L0X nella casella di ricerca e installate la libreria.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include "Adafruit_VL53L0X.h" Adafruit_VL53L0X lox = Adafruit_VL53L0X(); void setup() { Serial.begin(9600); while (! Serial) { delay(1); } Serial.println("VL53L0X sensor test"); if (!lox.begin()) { Serial.println(F("Failed to boot VL53L0X")); while (1); } } void loop() { VL53L0X_RangingMeasurementData_t measure; Serial.print("Reading measurement - "); lox.rangingTest(&measure, false); if (measure.RangeStatus != 4) { Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter); } else { Serial.println("Out of range!"); } delay(1000); } |
Caricare lo sketch su Arduino e aprire il Monitor Seriale (Strumenti > Monitor Seriale). Il risultato dovrebbe assomigliare all’immagine seguente:
Collegamento con Raspberry PI
Collegare il modulo con il Raspberry Pi come indicato nel seguente schema di collegamento:
Per utilizzare il dispositivo con il Raspberry Pi, si raccomanda di scaricare una libreria Python esterna. La libreria utilizzata in questo eBook si chiama Adafruit_CircuitPython_VL53L0X. Prima di poter utilizzare la libreria, eseguire i seguenti comandi:
1 2 3 |
sudo apt-get update sudo apt-get install python3-pip sudo pip3 install adafruit-circuitpython-vl53l0x |
Successivamente, per scaricare una libreria esterna, eseguire il seguente comando:
1 |
git clone https://github.com/adafruit/Adafruit_CircuitPython_VL53L0X.git |
Per installarla, cambiare prima la directory in Adafruit_VL53L0X, eseguendo il seguente comando:
1 |
cd Adafruit_CircuitPython_VL53L0X |
e installare la libreria con il seguente comando:
1 |
sudo python3 setup.py install |
Nota: Se avete il Python versione 3.x configurato come default, potrebbe essere sufficientescrivere “python” anziché “python3” sulla riga di comando. La nota è ovviamente valida per tutte le chiamate all’interprete Python.
Per poter utilizzare il sensore con Raspberry Pi, l’interfaccia I2C sul Raspberry Pi deve essere abilitata. Per farlo, vai su:
1 |
Menu Applicazione > Preferiti > Configurazione Raspberry Pi |
Quando si apre una nuova finestra, cerca la scheda Interfacce. Attivare quindi il radio button I2C e clicca su OK.
Per rilevare l’indirizzo I2C del modulo, è necessario installare i2ctools. Se non c’è, nella finestra del terminale deve essere eseguito il seguente comando:
1 |
sudo apt-get install i2ctools -y |
Controllare l’indirizzo I2C del modulo eseguendo il seguente comando nel terminale:
1 |
i2cdetect -y 1 |
L’uscita del terminale dovrebbe essere come nell’immagine seguente:
1 |
L'indirizzo I2C del modulo è 0x29. |
Se l’interfaccia I2C del Raspberry Pi non è abilitata, e il comando precedente viene eseguito, viene generato il seguente errore:
Codice di esempio Python per Raspberry PI
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import time import board import busio import adafruit_vl53l0x i2c = busio.I2C(board.SCL, board.SDA) vl53 = adafruit_vl53l0x.VL53L0X(i2c) print('VL53L0X Distance sensor script') print('[Press CTRL + C to end the script!]') try: while True: print("Range: {0}mm".format(vl53.range)) time.sleep(1.0) except KeyboardInterrupt: print('\nScript end!') |
Salvare lo script con il nome vl53l0x.py. Per eseguire lo script, aprire il terminale nella directory in cui è stato salvato lo script ed eseguire il seguente comando:
1 |
python3 vl53l0x.py |
Il risultato dovrebbe assomigliare all’immagine seguente:
Per fermare lo script premere CTRL + C sulla tastiera.
Considerazioni finali
Oggi abbiamo trattato una scheda abbastanza inusuale e poco diffusa, con la dovizia di particolari che ci è congeniale. Abbiamo presentato esempi di programmazione sia in C che in Python, mostrando anche come rticonoscere l’indirizzo I2C della scheda.
Il modulo sensore di distanza VL53L0X viene a costare circa 11 euro, ma con 17 euro è possibile acquistarne ben 3.
Siamo più che sicuri che grazie a questo articolo ed il prezzo accattivante, numerosi Maker tenteranno di sviiluppare qualche progetto interessante.
Nel caso potete presentarcelo, e ne valuteremo la pubblicazione!
Iscriviti ai nostri gruppi Telegram
Link utili