Kupima Umbali kwa Laser VL53L0X Moduli ya Pini 6 na Onyesho la TM1637 kwa Arduino
Katika mafunzo haya, tutajifunza jinsi ya kupima umbali kwa kutumia kihisi cha umbali cha laser cha VL53L0X na kuonyesha usomaji kwenye onyesho la TM1637 la sehemu 7. Mradi huu unachanganya vipengele vyote viwili kuunda kifaa rahisi lakini chenye ufanisi cha kupima umbali. VL53L0X hutumia teknolojia ya laser kutoa usomaji sahihi wa umbali, wakati onyesho la TM1637 linaonyesha usomaji huu kwa muundo rahisi kwa mtumiaji.


Tutapitia vifaa vinavyohitajika, maagizo ya wiring, na msimbo unaohitajika ili kuweka kila kitu kifanye kazi. Kufikia mwisho wa mafunzo haya, utakuwa na kifaa cha kupima umbali kinachofanya kazi ambacho kinaweza kutumika katika matumizi mbalimbali. Kwa mwongozo wa kuona, hakikisha umeangalia video kwenye (kwenye video saa 00:00).
Vifaa Vimeelezwa
Vipengele vikuu vya mradi huu ni kihisi cha umbali cha laser cha VL53L0X na moduli ya onyesho ya TM1637. VL53L0X ni kihisi cha muda wa safari ambacho hupima umbali wa kitu kwa kutoa mwanga wa laser na kuhesabu muda unaochukua kwa mwanga huo kurudi. Kinafanya kazi kwa voltage ya 2.6V hadi 3.5V lakini kinaweza pia kufanya kazi na 5V kutokana na mdhibiti wa voltage uliojengwa ndani.
TM1637 ni kiendesha onyesho kinachodhibiti onyesho la LED la sehemu 7. Kinawasiliana kupitia kiolesura rahisi cha waya 2 (CLK na DIO), na kufanya iwe rahisi kuunganisha kwenye Arduino. Onyesho linaweza kuonyesha nambari na linafaa kwa kuonyesha vipimo vya umbali kutoka kwa kihisi cha VL53L0X.
Maelezo ya Datasheet
| Mtengenezaji | STMicroelectronics |
|---|---|
| Nambari ya sehemu | VL53L0X |
| Voltage ya Logic/IO | 2.6 V - 3.5 V |
| Voltage ya usambazaji | 2.6 V - 5 V |
| Joto la kufanya kazi | -20 °C hadi 70 °C |
| Kiwango cha kupima | 30 mm hadi 2000 mm |
| Mzunguko wa I2C | 400 kHz |
| Muda wa kuisha | 500 ms |
| Kifurushi | Moduli ya pini 6 |
- Hakikisha usambazaji wa umeme unatosha (5V inakubalika).
- Unganisha pini ya XSHUT ili kuepuka uvujaji na kontena la kuvuta juu.
- Tumia I2C kwa mawasiliano; unganisha SDA na SCL ipasavyo.
- Shughulikia muda wa kuisha kwenye msimbo ili kuepuka tabia zisizotarajiwa.
- Zingatia kiwango cha joto cha kufanya kazi kwa usahihi.
Maagizo ya Wiring

Ili kuunganisha VL53L0X na onyesho la TM1637, anza kwa kuunganisha pini ya VCC ya VL53L0X kwenye pini ya 5V kwenye Arduino na pini ya GND kwenye pini ya ardhi kwenye Arduino. Ifuatayo, unganisha pini ya SDA ya VL53L0X kwenye pini ya A4 kwenye Arduino, ambayo kwa kawaida hutumika kwa mawasiliano ya data ya I2C. Pini ya SCL inapaswa kuunganishwa kwenye pini ya A5 kwenye Arduino, inayotumika kwa ishara ya saa.
Kwa onyesho la TM1637, unganisha pini ya CLK kwenye pini ya dijiti 2 kwenye Arduino na pini ya DIO kwenye pini ya dijiti 3. Hatimaye, unganisha pini ya XSHUT ya VL53L0X kwenye pini ya dijiti 12 kwenye Arduino. Hakikisha pini zozote zisizotumika, kama GPIO1 kwenye VL53L0X, zimeachwa bila kuunganishwa. Mpangilio huu utaruhusu Arduino kuwasiliana kwa ufanisi na kihisi na onyesho.
Mifano ya Msimbo na Maelezo
Msimbo huanzisha kihisi na onyesho, huweka mawasiliano ya I2C, na husoma vipimo vya umbali kila mara. Hapa kuna sehemu inayoonyesha kazi ya setup ambapo pini zinaundwa na kihisi kinaanzishwa:
void setup() {
pinMode(12, INPUT_PULLUP); // weka pini 12 kwa ajili ya kuingiza
digitalWrite(12, HIGH); // weka pini 12 juu (5V)
Serial.begin(9600);
Wire.begin(); // mawasiliano ya I2C yameanzishwa
sensor.init(); // kihisi cha umbali kimeanzishwa
sensor.setTimeout(500); // muda wa kuisha umewekwa
sensor.startContinuous(); // aina ya kipimo imewekwa
}
Katika kazi hii ya setup, pini ya XSHUT inaundwa kama ingizo na kontena la kuvuta juu, na kihisi kinaanzishwa kwa kipimo cha kuendelea. Monitor ya serial pia imewekwa kuonyesha usomaji wa umbali.
Ifuatayo, kitanzi kikuu husoma umbali na kusasisha onyesho. Hapa kuna sehemu iliyolenga kutoka kwenye kazi ya loop:
void loop() {
int distance = sensor.readRangeContinuousMillimeters(); // soma umbali kwa mm
display.setSegments(clearLED); // ondoa thamani ya awali kwenye onyesho la LED
display.showNumberDec(distance, false, 4, 0); // onyesha umbali
Serial.print("Distance: ");
Serial.print(distance); // chapisha umbali kwenye monitor ya serial
}
Kitanzi hiki husoma umbali kutoka kwa kihisi kila mara na kusasisha onyesho la TM1637 na kipimo cha hivi karibuni. Pia kinachapisha umbali kwenye monitor ya serial kwa madhumuni ya kutatua matatizo. Ikiwa unataka kuona msimbo kamili, utapakiwa chini ya makala hii.
Maonyesho / Nini cha Kutarajia
Baada ya kukamilisha mpangilio na kupakia msimbo, unapaswa kuona umbali unaopimwa na VL53L0X ukionyeshwa kwenye TM1637. Unaposogeza kitu karibu au mbali zaidi na kihisi, thamani inayoonyeshwa itabadilika ipasavyo. Ikiwa unapata usomaji usiotarajiwa, hakikisha kihisi hakijazuiwa na kwamba uso wa kitu unafaa kwa kuakisi laser (kwenye video saa 09:30).
Makosa ya kawaida ni pamoja na wiring iliyogeuzwa au kutoanzisha kihisi vizuri, ambayo inaweza kusababisha makosa ya muda wa kuisha. Hakikisha pini sahihi zimeunganishwa na kihisi kina nguvu ya kutosha kwa vipimo sahihi vya umbali.
/* This example shows how to use continuous mode to take readings.
This is Arduino code to measure distance with VL53L0X and display it on a TM1637 LED 7-segment display.
Original Laser Sensor source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com
Date modified: May 31, 2018 at 19:25 in Ajax, Ontario, Canada
You have to watch 1 video before using this code:
1- Watch VL53L0X video and get code https://youtu.be/1n9eJ9HaYpE
2- Watch TM1637 video and get code https://robojax.com?vid=robojax-TM1637
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)
*/
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
/////// start of TM1637 Display
#include <Arduino.h>
#include <TM1637Display.h>
#define CLK 2
#define DIO 3
#define TEST_DELAY 500
TM1637Display display(CLK, DIO);
uint8_t clearLED[] = { 0x0, 0x0, 0x0, 0x0 }; // value for clearing the LEDs
////// End of TM1637 Display
void setup()
{
pinMode(12,INPUT_PULLUP);// set pin 12 for input
digitalWrite(12,HIGH);// set pin 12 high (5V)
Serial.begin(9600);
Wire.begin();// I2C communication initialized
sensor.init();// distance sensor is initialized
sensor.setTimeout(500); // time out is set
// 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();// type of measurement is set
Serial.println("VL53L0X with MAX6675 test");
delay(500);
display.setBrightness(0x0f);// set brightness for display
}
void loop()
{
int distance =sensor.readRangeContinuousMillimeters();// read the distance in mm
display.setSegments(clearLED);// remove previous value from LED display
display.showNumberDec(distance, false, 4, 0);// display the distance
//distance = distance;
Serial.print("Distance: ");
Serial.print(distance);// print distance on serial monitor
Serial.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}
Resurser och referenser
Inga resurser än.
Filer📁
Datablad (pdf)
-
TM1637 Datablad
/download/datasheet/robojax_TM1637_datasheet.pdf0.67 MB
Fritzing-fil
-
TM1637 Seven Segment module
TM1637.fzpz0.01 MB -
TM1637 4 digit seven segment display
TM1637-1.fzpz0.01 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
Användarhandbok
-
TM1637 Display Manual
robojax-TM1637_display_manual.pdf0.31 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