Kupima Umbali kwa Laser VL53L0X Moduli ya Pini 6 na LCD1602-I2C kwa Arduino
Katika mafunzo haya, tutajifunza jinsi ya kupima umbali kwa kutumia sensor ya laser ya VL53L0X na kuonyesha matokeo kwenye LCD1602 yenye kiolesura cha I2C. Mradi huu unakuruhusu kupata vipimo sahihi vya umbali kwa milimita au sentimita, na kuifanya kuwa nyongeza yenye matumizi mengi kwa mradi wowote unaotegemea Arduino. Kufikia mwisho wa mafunzo haya, utakuwa na mfumo kamili wa kupima umbali ambao ni rahisi kusanidi na kutumia.

Ili kufikia hili, tutatumia sensor ya umbali ya laser ya VL53L0X, ambayo inawasiliana na Arduino kupitia I2C. Onyesho la LCD1602 litatoa uwakilishi wazi wa kuona wa umbali uliopimwa. Kwa uwazi zaidi kuhusu mchakato wa kuandika msimbo, tafadhali rejea video kwenye (katika video saa 00:00).
Vifaa Vimeelezwa
Vipengele vikuu katika mradi huu ni sensor ya umbali ya laser ya VL53L0X na onyesho la LCD1602. VL53L0X hutumia laser kupima umbali kwa usahihi, na kuifanya kufaa kwa matumizi mbalimbali, ikiwa ni pamoja na robotiki na otomatiki. Inafanya kazi kwa kutumia mawasiliano ya I2C, ambayo inaruhusu ujumuishaji rahisi na Arduino.
Onyesho la LCD1602 ni onyesho la herufi linalotumia I2C ambalo linaweza kuonyesha hadi herufi 16 kwenye mistari miwili. Inarahisisha mchakato wa kuonyesha data, kwani inahitaji pini chache kuliko LCD za kawaida. Kwa pamoja, vipengele hivi vinaunda mfumo wenye nguvu na rafiki kwa mtumiaji wa kupima umbali.
Maelezo ya Datasheet
| Mtengenezaji | STMicroelectronics |
|---|---|
| Nambari ya sehemu | VL53L0X |
| Voltage ya mantiki/IO | 1.8 V hadi 2.8 V |
| Voltage ya usambazaji | 2.6 V hadi 3.5 V |
| Mkondo wa pato (kwa kila chaneli) | … |
| Mkondo wa kilele (kwa kila chaneli) | … |
| Mwongozo wa mzunguko wa PWM | … |
| Viwango vya mantiki ya kuingiza | … |
| Kushuka kwa voltage / RDS(on) / kueneza | … |
| Mipaka ya joto | … |
| Kifurushi | … |
| Vidokezo / lahaja | … |
- Hakikisha voltage sahihi ya usambazaji (2.6 V hadi 3.5 V).
- Tumia resistors za kuvuta-juu kwenye mistari ya SDA na SCL ikihitajika.
- Weka sensor mbali na nyuso zinazoakisi ili kuepuka usomaji usio sahihi.
- Thibitisha anwani ya I2C (chaguo-msingi ni 0x29 kwa VL53L0X).
- Zingatia utoaji wa joto ikiwa unatumia katika mazingira ya joto la juu.
Maagizo ya Uunganishaji wa Waya

Ili kuunganisha sensor ya VL53L0X na onyesho la LCD1602, anza kwa kuunganisha nguvu na ardhi. Unganisha pini ya VCC ya VL53L0X kwenye pini ya 5V kwenye Arduino na pini ya GND kwenye ardhi ya Arduino. Kwa LCD1602, unganisha VCC yake kwenye 5V sawa na GND kwenye ardhi pia.
Ifuatayo, unganisha mistari ya mawasiliano ya I2C. Pini ya SDA ya VL53L0X inapaswa kuunganishwa kwenye pini ya A4 kwenye Arduino, na pini ya SCL inapaswa kwenda kwenye A5. Pini ya XSHUT inaweza kuunganishwa kwenye D12 kwenye Arduino, lakini pia inaweza kuachwa bila kuunganishwa. Kwa LCD1602, hakikisha SDA na SCL pia zimeunganishwa kwenye pini sawa na sensor ya VL53L0X.
Mifano ya Msimbo na Maelezo
VL53L0X sensor;
#include
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
sensor.startContinuous();
lcd.begin();
lcd.backlight();
}
Katika kazi ya setup, tunaanzisha mawasiliano ya serial na basi ya I2C. sensor.init() inaanzisha sensor ya VL53L0X, wakati lcd.begin() inaanzisha onyesho la LCD. Mwangaza wa nyuma wa onyesho unawashwa, kuruhusu kuonekana kwa urahisi.
void loop() {
int distance = sensor.readRangeContinuousMillimeters();
Serial.print("Distance: ");
lcd.clear();
lcd.print("Robojax VL53L0X");
lcd.setCursor(0,1);
lcd.print("Dist.: ");
lcd.setCursor(7,1);
lcd.print(distance);
Serial.println();
delay(100);
}
Ndani ya kitanzi, tunasoma umbali kila mara kwa kutumia sensor.readRangeContinuousMillimeters() na kuuchapisha kwenye mfuatiliaji wa serial. LCD inasasishwa na kipimo cha umbali, ikitoa maoni ya wakati halisi. Ucheleweshaji wa milisekunde 100 unahakikisha kwamba usomaji hausasishwi mara kwa mara sana, kuruhusu usomaji rahisi.
Maonyesho / Nini cha Kutarajia
Wakati imewashwa, mfumo utapima umbali kila mara na kuonyesha matokeo kwenye LCD. Unaweza kutarajia kuona maadili ya umbali yakibadilika unaposogeza vitu karibu au mbali zaidi na sensor. Ikiwa kuna matatizo yoyote na sensor, kama vile makosa ya muda, ujumbe unaofaa utachapishwa kwenye mfuatiliaji wa serial (katika video saa 03:15).
/*
This is Arduino code to measure distance with VL53L0X and display it on LCD1602 with I2C module.
Distance is displayed in mm (millimeter) or cm (centimeter).
Original Laser Sensor source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com
Date modified: Jun 28, 2018 at 19:06 in Ajax, Ontario, Canada
Watch the video instruction for this code: https://youtu.be/t14ly7Y09oI
You can get this code from RoboJax.com.
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)
LCD1602 Pin
*/
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int type = 1;// 1=mm , 2= cm
String unit;// variable for unit, mm or cm
void setup()
{
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();
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
}
void loop()
{
int distance =sensor.readRangeContinuousMillimeters();
//int distance =sensor.startContinuous(100);
//distance = distance;
Serial.print("Distance: ");
//start of loop Robojax code for LCD with I2C
lcd.clear();
lcd.print("Robojax VL53L0X");
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print("Dist.: ");
lcd.setCursor (7,1); // go to start of 2nd line
if(type ==2){
float distanceCM = (float) (distance/10.0);
unit ="cm";
lcd.print(distanceCM);
Serial.print(distanceCM);
Serial.print(unit);
}else{
unit ="mm";
lcd.print(distance);
Serial.print(distance);
Serial.print(unit);
}
lcd.print(unit);
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}
Tänker att du kanske behöver
-
AmazonPurchase VL53L0X from Amazonamzn.to
-
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.Adafruit download pagelearn.adafruit.com
-
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 eBayebay.us
-
Extern.VL53L0X datasheet (PDF)st.com
Filer📁
Fritzing-fil
-
VL53L0X_Distance_sensor_Squares
VL53L0X_Distance_sensor_Squares.fzpz0.02 MB
Andra filer
-
Adafruit VL53L0X-bibliotek från Robojax
robojax-VL52L0X_Adafruit_VL53L0X-master.zip0.08 MB -
VL53L0X_Distance_sensor_purple
VL53L0X_Distance_sensor_purple.fzpz0.01 MB