Арқашықтықты лазерлік VL53L0X 6-пиндік модулі және Arduino үшін LCD1602-I2C көмегімен өлшеу
Бұл оқулықта біз VL53L0X лазерлік сенсорының көмегімен қашықтықты өлшеуді және нәтижелерді I2C интерфейсі бар LCD1602 дисплейінде көрсетуді үйренеміз. Бұл жоба миллиметр немесе сантиметрмен дәл қашықтық өлшеулерін алуға мүмкіндік береді, бұл оны Arduino негізіндегі кез келген жобаға әмбебап қосымша етеді. Осы оқулықтың соңында сізде орнатуға және пайдалануға оңай толық функционалды қашықтықты өлшеу жүйесі болады.

Бұған қол жеткізу үшін біз Arduino-мен I2C арқылы байланысатын VL53L0X лазерлік қашықтық сенсорын қолданамыз. LCD1602 дисплейі өлшенген қашықтықтың анық визуалды көрінісін қамтамасыз етеді. Кодтау процесін түсіну үшін бейнені қараңыз (бейнеде 00:00).
Аппараттық құрал түсіндірмесі
Бұл құрылымдағы негізгі компоненттер - VL53L0X лазерлік қашықтық сенсоры және LCD1602 дисплейі. VL53L0X қашықтықты дәл өлшеу үшін лазерді пайдаланады, бұл оны робототехника мен автоматтандыруды қоса алғанда, әртүрлі қолданбаларға жарамды етеді. Ол Arduino-мен оңай интеграциялауға мүмкіндік беретін I2C байланысын пайдаланып жұмыс істейді.
LCD1602 дисплейі - екі жолда 16 таңбаға дейін көрсете алатын I2C қолдауы бар таңба дисплейі. Ол дәстүрлі LCD-ге қарағанда аз түйреуіштерді қажет ететіндіктен, деректерді көрсету процесін жеңілдетеді. Бірге бұл компоненттер қуатты және пайдаланушыға ыңғайлы қашықтықты өлшеу жүйесін жасайды.
Деректер парағының мәліметтері
| Өндіруші | STMicroelectronics |
|---|---|
| Бөлшек нөмірі | VL53L0X |
| Логика/IO кернеуі | 1.8 В - 2.8 В |
| Қоректендіру кернеуі | 2.6 В - 3.5 В |
| Шығыс тогы (арнаға) | … |
| Ең жоғары ток (арнаға) | … |
| PWM жиілігі бойынша нұсқаулық | … |
| Кіріс логикалық шектері | … |
| Кернеудің төмендеуі / RDS(on) / қанығу | … |
| Жылулық шектеулер | … |
| Қаптама | … |
| Ескертулер / нұсқалар | … |
- Тиісті қоректендіру кернеуін қамтамасыз етіңіз (2.6 В - 3.5 В).
- Қажет болса, SDA және SCL желілерінде жоғары тарту резисторларын қолданыңыз.
- Қате көрсеткіштерді болдырмау үшін сенсорды шағылыстыратын беттерден алыс ұстаңыз.
- I2C мекенжайын тексеріңіз (VL53L0X үшін әдепкі мән 0x29).
- Жоғары температуралы ортада қолдансаңыз, жылудың таралуын ескеріңіз.
Сым қосу нұсқаулары

VL53L0X сенсоры мен LCD1602 дисплейін қосу үшін алдымен қуат пен жерді қосыңыз. VL53L0X сенсорының VCC түйреуішін Arduino-дағы 5V түйреуішіне және GND түйреуішін Arduino-ның жеріне қосыңыз. LCD1602 үшін оның VCC түйреуішін сол 5V және GND түйреуішін жерге қосыңыз.
Әрі қарай, I2C байланыс желілерін қосыңыз. VL53L0X сенсорының SDA түйреуіші Arduino-дағы A4 түйреуішіне, ал SCL түйреуіші A5 түйреуішіне қосылуы керек. XSHUT түйреуіші Arduino-дағы D12 түйреуішіне қосылуы мүмкін, бірақ оны қоспай да қалдыруға болады. LCD1602 үшін SDA және SCL түйреуіштерінің VL53L0X сенсорымен бірдей түйреуіштерге қосылғанын қамтамасыз етіңіз.
Код мысалдары мен түсіндірме
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();
}
Орнату функциясында біз сериялық байланыс пен I2C шинасын инициализациялаймыз. sensor.init() VL53L0X сенсорын инициализациялайды, ал lcd.begin() LCD дисплейін инициализациялайды. Дисплейдің артқы жарығы қосылады, бұл оңай көрінуді қамтамасыз етеді.
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);
}
Цикл ішінде біз sensor.readRangeContinuousMillimeters() көмегімен қашықтықты үздіксіз оқып, оны сериялық мониторға шығарамыз. LCD қашықтық өлшеуімен жаңартылып, нақты уақыттағы кері байланысты қамтамасыз етеді. 100 миллисекундтық кідіріс көрсеткіштердің тым жиі жаңартылмауын қамтамасыз етеді, бұл оңай оқуға мүмкіндік береді.
Демонстрация / Не күтуге болады
Қуат қосылғанда, жүйе қашықтықты үздіксіз өлшеп, нәтижелерді LCD-де көрсетеді. Сіз заттарды сенсорға жақындатып немесе алыстатқанда қашықтық мәндерінің өзгергенін көресіз. Сенсорда қандай да бір ақаулар болса, мысалы, уақыт аяқталу қателері, тиісті хабарламалар сериялық мониторға шығарылады (бейнеде 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);
}
Сізге қажет болуы мүмкін нәрселер
-
АмазонкаPurchase 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
Ресурстар мен сілтемелер
-
СыртқыAdafruit download pagelearn.adafruit.com
-
СыртқыPurchase 1 to 10 pcs of VL53L0X from AliExpresss.click.aliexpress.com
-
СыртқыPurchase 1 to 10 pcs of VL53L0X from Banggoodbanggood.com
-
СыртқыPurchase VL53L0X from eBayebay.us
-
СыртқыVL53L0X datasheet (PDF)st.com
Файлдар📁
Fritzing файлы
-
VL53L0X_Distance_sensor_Squares
VL53L0X_Distance_sensor_Squares.fzpz0.02 MB
Басқа файлдар
-
Adafruit VL53L0X кітапханасы Robojax-тан
robojax-VL52L0X_Adafruit_VL53L0X-master.zip0.08 MB -
VL53L0X_Distance_sensor_purple
VL53L0X_Distance_sensor_purple.fzpz0.01 MB