Meet afstand met 'n Laser VL53L0X 6-Pen Module vir Arduino
In hierdie tutoriaal gaan ons leer hoe om afstand te meet met behulp van die VL53L0X-laserafstandsensor met 'n 6-penmodule. Hierdie klein dog kragtige sensor gebruik tyd-van-vlug-tegnologie om akkurate afstandmetings tot 200 cm te verskaf. Deur hierdie gids te volg, sal jy die sensor met 'n Arduino kan opstel en afstandwaardes direk vanaf jou reeksmonitor kan lees.

Vir hierdie projek gaan ons die VL53L0X-sensor gebruik, wat kompak is en maklik in verskeie toepassings geïntegreer kan word. Die sensor kommunikeer via I2C, wat dit eenvoudig maak om aan 'n Arduino-bord te koppel. In die video sal jy addisionele verduidelikings en demonstrasies van die opstelproses vind (in video by 04:00).
Hardeware Verduidelik
Die VL53L0X is 'n tyd-van-vlug-afstandsensor wat 'n laserstraal uitstraal en die tyd meet wat dit neem vir die lig om terug te keer nadat dit 'n voorwerp getref het. Dit stel dit in staat om die afstand tot die voorwerp akkuraat te bereken. Die sensor werk by 'n spanning tussen 2.6 V tot 3.5 V, maar dit kan met 5 V aangedryf word danksy 'n interne spanningsreguleerder.
Die module het ses penne: VCC, GND, SDA (datakanaal), SCL (klokkanaal), GPIO1 (algemene doel I/O), en XSHUT (afskakelpen). Die GPIO1-pen word nie in hierdie konfigurasie gebruik nie, maar kan onverbind gelaat word. Die XSHUT-pen laat jou toe om die sensor af te skakel om krag te bespaar wanneer dit nie gebruik word nie.
Datablad Besonderhede
| Vervaardiger | STMicroelectronics |
|---|---|
| Deelnommer | VL53L0X |
| Logika/IO-spanning | 2.6 V tot 3.5 V (5 V met reguleerder) |
| Werkingstemperatuur | -20 °C tot 70 °C |
| Meetreeks | 30 mm tot 2000 mm |
| I2C-kommunikasiefrekwensie | 400 kHz |
| Grootte | 4.4 mm x 2.4 mm x 1 mm |
- Verseker behoorlike kragtoevoer (5 V aanbeveel).
- Koppel SDA en SCL aan die toepaslike I2C-penne op die Arduino.
- Gebruik optrekweerstande op die I2C-lyne indien nodig.
- Moenie GPIO1 onverbind laat nie; dit kan drywend gelaat word.
- Hou die XSHUT-pen hoog tydens werking.
- Meet afstande in 'n goed beligte omgewing vir beter akkuraatheid.
- Kalibreer die sensor vir akkurate metings.
- Toets die sensorreeks deur voorwerpe op verskeie afstande te plaas.
- Monitor die reeksuitset vir afstandlesings en tydverstrek-boodskappe.
Bedradingsinstruksies

Om die VL53L0X-sensor aan jou Arduino te bedraad, begin deur die VCC-pen van die sensor aan die 5V-pen op die Arduino te koppel. Koppel dan die GND-pen aan die GND op die Arduino. Die SDA-pen van die sensor moet aan die A4-pen op die Arduino gekoppel word (of die SDA-pen as jou bord toegewyde I2C-penne het). Koppel eweneens die SCL-pen van die sensor aan die A5-pen (of die SCL-pen). Laat die GPIO1-pen onverbind aangesien dit nie vir hierdie projek nodig is nie.
Laastens, koppel die XSHUT-pen aan digitale pen 12 op die Arduino. Hierdie pen sal gebruik word om die afskakeltoestand van die sensor te beheer. Maak seker alle verbindings is veilig om enige kommunikasieprobleme te vermy.
Kode Voorbeelde & Deurloop
In die kode begin ons deur die nodige biblioteke in te sluit en die VL53L0X-sensor te initialiseer. Die opstelfunksie konfigureer die sensor en begin deurlopende afstandmetings. Hier is 'n uittreksel uit die opstelfunksie:
void setup() {
pinMode(12, INPUT_PULLUP);
digitalWrite(12, HIGH);
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
sensor.startContinuous();
}
In hierdie uittreksel stel ons pen 12 as 'n inset met 'n optrekweerstand en initialiseer die reekskommunikasie teen 9600 baud. Ons initialiseer ook die sensor en stel 'n tydverstrek vir lesings, wat verseker dat dit deurlopend werk.
Volgende lees ons die afstand in die lusfunksie, waar die gemete waarde na die reeksmonitor gedruk word:
void loop() {
int distance = sensor.readRangeContinuousMillimeters();
Serial.print("Afstand: ");
Serial.print(distance);
Serial.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" TYDVERSTREK"); }
Serial.println();
delay(100);
}
Hierdie kode lees die afstand in millimeter en druk dit na die reeksmonitor. As 'n tydverstrek plaasvind, dui dit aan dat die sensor nie 'n geldige lesing ontvang het nie.
Demonstrasie / Wat om te VerwAg
Wanneer jy die program laat loop, behoort jy afstandmetings op die reeksmonitor te sien verskyn. Die uitset sal wissel soos jy voorwerpe nader of verder van die sensor af beweeg. Jy mag af en toe tydverstrek-boodskappe opmerk as die sensor nie 'n lesing kan kry nie (in video by 10:30). Om akkuraatheid te verbeter, oorweeg dit om veelvuldige lesings te gemiddeld.
/* This example shows how to use continuous mode to take
range measurements with the 6-pin VL53L0X module. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.
The range readings are in units of mm.
Original source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com/RJT83
Date modified: May 31, 2018 at 19:25 in Ajax, Ontario, Canada
Watch the instruction video for this code https://youtu.be/S2jaAQEv3Yo
Pin connection
VL53L0X Pin Arduino Pin
VCC 5V
GND GND
SDA A4 or SDA if available
SCL A5 or SCL if available
GPIO1 leave it unconnected
XSHUT D12 (digital 12 or pin 12)
*/
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
void setup()
{
pinMode(12,INPUT_PULLUP);
digitalWrite(12,HIGH);
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
// Start continuous back-to-back mode (take readings as
// fast as possible). To use continuous timed mode
// instead, provide a desired inter-measurement period in
// ms (e.g. sensor.startContinuous(100)).
sensor.startContinuous();
}
void loop()
{
int distance =sensor.readRangeContinuousMillimeters();
//int distance =sensor.startContinuous(100);
//distance = distance;
Serial.print("Distance: ");
Serial.print(distance);
Serial.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}
Goedere wat jy dalk nodig het
-
eBayPurchase VL53L0X from eBayebay.us
-
AliExpressPurchase 1 to 10 pcs of VL53L0X from AliExpresss.click.aliexpress.com
-
BanggoodPurchase 1 to 10 pcs of VL53L0X from Banggoodbanggood.com
Hulpbronne en verwysings
-
BuitenburgPurchase 1 to 10 pcs of VL53L0X from AliExpresss.click.aliexpress.com
-
BuitenburgPurchase 1 to 10 pcs of VL53L0X from Banggoodbanggood.com
-
BuitenburgPurchase VL53L0X from Amazonamzn.to
-
BuitenburgPurchase VL53L0X from eBayebay.us
Lêers📁
Fritzing-lêer
-
VL53L0X_Distance_sensor_Squares
VL53L0X_Distance_sensor_Squares.fzpz0.02 MB -
Adafruit VL6180X Time of Flight Distance SensorFritzing part for the Adafruit VL6180X Time of Flight distance sensor. This sensor measures absolute distance up to 100mm and ambient light, communicating via I2C. Includes the sensor breakout board and pin connections for use in Fritzing projects.
Adafruit VL6180X Time of Flight Distance Sensor-1.fzpz0.02 MB
Ander lêers
-
Polou VL53L0X library
robojax-VL53L0X-polou-arduino-master.zip0.02 MB -
VL53L0X_Distance_sensor_purple
VL53L0X_Distance_sensor_purple.fzpz0.01 MB