Somo la 78: Onyesha umbali kutoka VL53L0X kwenye LCD | Kozi ya Hatua kwa Hatua ya Arduino
Mwongozo huu unaonyesha jinsi ya kujenga kipimo cha umbali cha laser sahihi kwa kutumia sensor ya VL53L0X ya muda wa kuruka na onyesho la LCD 16x2 na moduli ya I2C. Mradi huu ni bora kwa watengenezaji wanaotaka kuongeza kipimo sahihi cha umbali kisicho na mgusano kwenye ubunifu wao. VL53L0X hutumia laser kupima umbali, na kuifanya kuwa bora kwa matumizi ambapo sensor za ultrasonic zinaweza kushindwa, kama vile kupima kiwango cha kujaza kwenye tanki au kugundua nafasi halisi ya kitu kwenye mkanda wa conveyor.Hapa kuna njia kadhaa za vitendo za kutumia mradi huu:
- Mlishaji wa Wanyama wa Kiotomatiki: Pima kiwango cha chakula kwenye chombo ili kuanzisha kujaza tena au kutuma taarifa.
- Pipa la Taka la Kisasa: Gundua jinsi pipa lilivyojaa na kukuarifu linapohitaji kutupwa.
- Kipimo cha Urefu cha DIY: Unda chombo sahihi cha kupimia vitu vidogo au kufuatilia ukuaji wa mtoto.
- Msaidizi wa Kuegesha: Jenga mfumo wa sensor kusaidia kuegesha kwa usahihi kwenye karakana au nafasi nyembamba.
- Roboti: Itumie kwenye roboti kugundua vizuizi au kupima umbali hadi ukutani kwa urambazaji.
Vifaa Vinavyohitajika
- Bodi ya Arduino (mfano, Uno)
- Sensor ya Umbali ya Laser VL53L0X
- Onyesho la LCD 1602 na Moduli ya I2C
- Waya za Kurukia
Mwongozo wa Uunganishaji
Uunganishaji wa mradi huu ni rahisi, kutokana na itifaki ya I2C, ambayo inaruhusu onyesho la LCD na sensor kuwasiliana kupitia waya mbili zile zile. Sensor ya VL53L0X inahitaji usambazaji wa nguvu wa 5V, ambao hutolewa moja kwa moja kutoka kwenye pini ya 5V ya Arduino. Ili kuhakikisha sensor ina chanzo thabiti cha nguvu, pini ya ziada inatumiwa kama VCC ya pili. (kwenye video saa 00:27)
Hapa kuna mchoro wa uunganishaji:

Uunganishaji ni kama ifuatavyo:
- VL53L0X VCC -> Arduino 5V na Pini 13 (Pini 13 imewekwa kama pato la dijiti kutoa utulivu wa ziada wa nguvu).
- VL53L0X GND -> Arduino GND.
- VL53L0X SCL -> Arduino SCL (A5).
- VL53L0X SDA -> Arduino SDA (A4).
- LCD I2C VCC -> Arduino 5V.
- LCD I2C GND -> Arduino GND.
- LCD I2C SCL -> Arduino SCL (A5).
- LCD I2C SDA -> Arduino SDA (A4).
Ikiwa unatumia mfano tofauti wa Arduino, pini za I2C zinaweza kuwa mahali pengine. Pini za SDA na SCL mara nyingi huandikwa moja kwa moja kwenye bodi. (kwenye video saa 02:42)
Maelezo ya Msimbo
Msimbo umeundwa kuwa rahisi kusanidi. Sehemu kuu zinazoweza kusanidiwa na mtumiaji ziko juu kabisa ya sketch. (kwenye video saa 04:18)
Kwanza, tunafafanua mara kwa mara kwa pini ya ziada ya nguvu. Hii inatumiwa kutoa usambazaji safi wa 5V kwa sensor.
const int vcc2 = 13; // Pini ya ziada ya VCC kwa sensor ya VL53L0X
Ifuatayo, tunaunda mfano wa maktaba ya LCD na kufafanua anwani yake ya I2C. Unaweza kupata anwani hii kwa kuendesha sketch ya skana ya I2C, kama inavyoonyeshwa kwenye video. (kwenye video saa 03:26)
LiquidCrystal_I2C lcd(0x3F, 16, 2); // Weka anwani ya LCD kuwa 0x3F kwa onyesho la herufi 16 na mistari 2
Hatimaye, kuna kigezo kinachodhibiti kitengo cha kipimo. Unaweza kubadilisha thamani hii kuonyesha umbali kwa milimita au sentimita.
const int type = 1; // Weka 1 kwa milimita, 2 kwa sentimita
Katika kazi ya setup(), pini ya ziada ya VCC inasanidiwa kama pato na kuwekwa kwa HIGH kutoa nguvu kwa sensor. LCD kisha inaanzishwa.
Mantiki kuu katika kazi ya loop() inasoma umbali kutoka kwa sensor, inafuta LCD, na kuchapisha thamani pamoja na kitengo. Wakati type imewekwa kwa 2, umbali hubadilishwa kutoka milimita hadi thamani ya float kwa sentimita kwa usomaji sahihi zaidi. (kwenye video saa 06:47)
Maonyesho ya Mradi wa Moja kwa Moja
Katika maonyesho, sensor inajaribiwa dhidi ya rula kuthibitisha usahihi wake. Video inaonyesha kwamba sensor inatoa usomaji sahihi sana, na kupotoka kwa milimita chache tu. (kwenye video saa 08:32)
Ni muhimu kutambua kwamba sensor ina upeo wa juu wa takriban mita 1.2 katika hali ya kipimo cha kuendelea. Wakati lengo liko nje ya upeo, onyesho litaonyesha thamani ya 8190. (kwenye video saa 09:53)
Uchunguzi mwingine muhimu ni kwamba sensa inaweza kutoa usomaji usio sahihi kwenye nyuso zinazoakisi sana. Kuielekeza kwenye kitu chenye kung'aa kunaweza kusababisha makosa makubwa, huku kuielekeza kwenye uso usio na kung'aa kunatoa matokeo sahihi. (katika video saa 10:42)
Msimbo pia unaoendana na aina mbalimbali za moduli za VL53L0X na LCD kubwa zaidi, kama vile mfano wa 2004, bila mabadiliko yoyote kwenye wiring. (katika video saa 11:30)
Sura za Video
- [00:05] Utangulizi wa mradi wa VL53L0X na LCD
- [00:27] Mchoro wa wiring wa VL53L0X na LCD
- [02:51] Wiring wa kina kwenye bodi halisi ya Arduino
- [03:26] Kuchanganua anwani za I2C
- [04:18] Maelezo ya msimbo na usanidi
- [08:32] Onyesho la moja kwa moja la kipimo cha umbali
- [09:53] Kujaribu upeo na mapungufu ya sensa
- [10:42] Usahihi kwenye nyuso tofauti
- [11:30] Kujaribu kwa moduli tofauti ya sensa na LCD kubwa zaidi
Bilder
/*
* Lesson 76-1: Using One single VL6180 Laser Distance Sensor with Arduino
* Adafruit code modified for this tutorial
* by Ahmad Shamshiri at 22:22 on
* March 10-11, 2021 in Ajax, ON, Canada
Please watch video instruction of this code: https://youtu.be/_H9D0czQpSI
View code for using two or more VL6180X sensors: https://robojax.com/course1/lecture76
This video is part of Arduino Step by Step Course which starts here: https://youtu.be/-6qSrDUA5a8
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact. *
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Wire.h>
#include "Adafruit_VL6180X.h"
Adafruit_VL6180X vl = Adafruit_VL6180X();
void setup() {
Serial.begin(115200);
// wait for serial port to open on native usb devices
while (!Serial) {
delay(1);
}
Serial.println("Adafruit VL6180x test!");
if (! vl.begin()) {
Serial.println("Failed to find sensor");
while (1);
}
Serial.println("Sensor found!");
}
void loop() {
uint8_t range = vl.readRange();
uint8_t status = vl.readRangeStatus();
if (status == VL6180X_ERROR_NONE) {
Serial.print("Range: "); Serial.print(range);
Serial.println("mm");
}
// if(range <=76)
// {
// //do something
// }
// Some error occurred, print it out!
if ((status >= VL6180X_ERROR_SYSERR_1) && (status <= VL6180X_ERROR_SYSERR_5)) {
Serial.println("System error");
}
else if (status == VL6180X_ERROR_ECEFAIL) {
Serial.println("ECE failure");
}
else if (status == VL6180X_ERROR_NOCONVERGE) {
Serial.println("No convergence");
}
else if (status == VL6180X_ERROR_RANGEIGNORE) {
Serial.println("Ignoring range");
}
else if (status == VL6180X_ERROR_SNR) {
Serial.println("Signal/Noise error");
}
else if (status == VL6180X_ERROR_RAWUFLOW) {
Serial.println("Raw reading underflow");
}
else if (status == VL6180X_ERROR_RAWOFLOW) {
Serial.println("Raw reading overflow");
}
else if (status == VL6180X_ERROR_RANGEUFLOW) {
Serial.println("Range reading underflow");
}
else if (status == VL6180X_ERROR_RANGEOFLOW) {
Serial.println("Range reading overflow");
}
delay(50);
}
Tänker att du kanske behöver
-
AmazonPurchase VL53L0X from Amazonamzn.to
-
eBayPurchase VL53l0x from eBayebay.us
Resurser och referenser
-
Extern.Arduino Library (GitHub)github.com
-
Extern.Purchase VL53l0x from eBayebay.us
-
Extern.VL53L0X datasheet (PDF)st.com
Filer📁
Fritzing-fil
-
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