Kupima Umbali kwa Laser VL53L0X Moduli ya Pini 6 kwa Arduino
Katika mafunzo haya, tutajifunza jinsi ya kupima umbali kwa kutumia kihisi cha umbali cha laser cha VL53L0X na moduli ya pini 6. Kihisi hiki kidogo lakini chenye nguvu kinatumia teknolojia ya muda wa safari (time-of-flight) kutoa vipimo sahihi vya umbali hadi sm 200. Kwa kufuata mwongozo huu, utaweza kuunganisha kihisi na Arduino na kusoma thamani za umbali moja kwa moja kutoka kwenye mfuatiliaji wako wa serial.

Kwa mradi huu, tutatumia kihisi cha VL53L0X, ambacho ni kidogo na rahisi kuunganisha katika matumizi mbalimbali. Kihisi kinawasiliana kupitia I2C, na kufanya iwe rahisi kuunganisha kwenye bodi ya Arduino. Katika video, utapata maelezo ya ziada na maonyesho ya mchakato wa usanidi (katika video saa 04:00).
Vifaa Vimeelezwa
VL53L0X ni kihisi cha umbali cha muda wa safari ambacho hutoa mwanga wa laser na kupima muda unaochukua mwanga kurudi baada ya kugonga kitu. Hii inaruhusu kuhesabu umbali wa kitu kwa usahihi. Kihisi hufanya kazi kwa voltage kati ya 2.6 V hadi 3.5 V, lakini kinaweza kuendeshwa kwa 5 V kutokana na mdhibiti wa voltage wa ndani.
Moduli ina pini sita: VCC, GND, SDA (laini ya data), SCL (laini ya saa), GPIO1 (I/O ya jumla), na XSHUT (pini ya kuzima). Pini ya GPIO1 haitumiwi katika usanidi huu lakini inaweza kuachwa bila kuunganishwa. Pini ya XSHUT inakuruhusu kuzima kihisi ili kuokoa nishati wakati haitumiki.
Maelezo ya Datasheet
| Mtengenezaji | STMicroelectronics |
|---|---|
| Nambari ya sehemu | VL53L0X |
| Voltage ya mantiki/IO | 2.6 V hadi 3.5 V (5 V na mdhibiti) |
| Joto la uendeshaji | -20 °C hadi 70 °C |
| Masafa ya kipimo | 30 mm hadi 2000 mm |
| Masafa ya mawasiliano ya I2C | 400 kHz |
| Ukubwa | 4.4 mm x 2.4 mm x 1 mm |
- Hakikisha ugavi wa nishati sahihi (5 V inapendekezwa).
- Unganisha SDA na SCL kwenye pini sahihi za I2C kwenye Arduino.
- Tumia resistors za kuvuta-juu kwenye laini za I2C ikihitajika.
- Usiachie GPIO1 bila kuunganishwa; inaweza kuachwa ikielea.
- Weka pini ya XSHUT juu wakati wa uendeshaji.
- Pima umbali katika mazingira yenye mwanga mzuri kwa usahihi bora.
- Sawazisha kihisi kwa vipimo sahihi.
- Jaribu masafa ya kihisi kwa kuweka vitu katika umbali mbalimbali.
- Fuatilia matokeo ya serial kwa usomaji wa umbali na ujumbe wa muda ulioisha.
Maelekezo ya Uunganishaji

Ili kuunganisha kihisi cha VL53L0X kwenye Arduino yako, anza kwa kuunganisha pini ya VCC ya kihisi kwenye pini ya 5V kwenye Arduino. Ifuatayo, unganisha pini ya GND kwenye GND kwenye Arduino. Pini ya SDA ya kihisi inapaswa kuunganishwa kwenye pini ya A4 kwenye Arduino (au pini ya SDA ikiwa bodi yako ina pini maalum za I2C). Vivyo hivyo, unganisha pini ya SCL ya kihisi kwenye pini ya A5 (au pini ya SCL). Acha pini ya GPIO1 bila kuunganishwa kwani haihitajiki kwa mradi huu.
Hatimaye, unganisha pini ya XSHUT kwenye pini ya dijiti 12 kwenye Arduino. Pini hii itatumika kudhibiti hali ya kuzima ya kihisi. Hakikisha miunganisho yote ni salama ili kuepuka matatizo yoyote ya mawasiliano.
Mifano ya Msimbo na Maelezo
Katika msimbo, tunaanza kwa kujumuisha maktaba muhimu na kuanzisha kihisi cha VL53L0X. Kazi ya setup inasanidi kihisi na kuanza vipimo vya umbali vinavyoendelea. Hapa kuna kipande kutoka kwa kazi ya setup:
void setup() {
pinMode(12, INPUT_PULLUP);
digitalWrite(12, HIGH);
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
sensor.startContinuous();
}
Katika kipande hiki, tunaweka pini 12 kama ingizo na resistor ya kuvuta-juu na kuanzisha mawasiliano ya serial kwa 9600 baud. Pia tunaanzisha kihisi na kuweka muda wa kusubiri kwa usomaji, kuhakikisha kinafanya kazi kwa kuendelea.
Ifuatayo, tunasoma umbali katika kazi ya loop, ambapo thamani iliyopimwa inachapishwa kwenye mfuatiliaji wa serial:
void loop() {
int distance = sensor.readRangeContinuousMillimeters();
Serial.print("Distance: ");
Serial.print(distance);
Serial.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}
Msimbo huu unasoma umbali kwa milimita na kuuchapisha kwenye mfuatiliaji wa serial. Ikiwa muda utaisha, inaonyesha kwamba kihisi hakikupata usomaji halali.
Maonyesho / Nini cha Kutarajia
Unapoendesha programu, unapaswa kuanza kuona vipimo vya umbali kwenye mfuatiliaji wa serial. Matokeo yatabadilika unaposogeza vitu karibu au mbali na kihisi. Unaweza kuona ujumbe wa muda ulioisha mara kwa mara ikiwa kihisi kitashindwa kupata usomaji (katika video saa 10:30). Ili kuboresha usahihi, zingatia kuchukua wastani wa usomaji mbalimbali.
/* 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);
}
Tänker att du kanske behöver
-
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
Resurser och referenser
-
Extern.Purchase 1 to 10 pcs of VL53L0X from AliExpresss.click.aliexpress.com
-
Extern.Purchase 1 to 10 pcs of VL53L0X from Banggoodbanggood.com
-
Extern.Purchase VL53L0X from Amazonamzn.to
-
Extern.Purchase VL53L0X from eBayebay.us
Filer📁
Fritzing-fil
-
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
Andra filer
-
Polou VL53L0X-bibliotek
robojax-VL53L0X-polou-arduino-master.zip0.02 MB -
VL53L0X_Distance_sensor_purple
VL53L0X_Distance_sensor_purple.fzpz0.01 MB