Wíwọ̀n ìjìnnà pẹ̀lú Laser VL53L0X 6-Pin Module àti TM1637 Display fún Arduino
Nínú ẹ̀kọ́ yìí, a óò kọ́ bí a ṣe ń wọn ìjìnnà pẹ̀lú ẹ̀rọ ìwọ̀n ìjìnnà láṣẹ VL53L0X àti láti fi àbájáde rẹ̀ hàn lórí ẹ̀rọ ìfihàn oní nọ́ńbà méje TM1637. Iṣẹ́ yìí darapọ̀ àwọn ẹ̀rọ méjèèjì láti ṣẹ̀dá ohun èlò ìwọ̀n ìjìnnà tí ó rọrùn ṣùgbọ́n tí ó gbéṣẹ́. VL53L0X ń lo ìmọ̀-ẹ̀rọ láṣẹ láti pèsè àwọn ìwọ̀n ìjìnnà tí ó péye, nígbà tí ìfihàn TM1637 fi àwọn ìwọ̀n wọ̀nyí hàn ní ọ̀nà tí ó rọrùn fún olùṣàmúlò.


A óò ṣàlàyé àwọn ẹ̀rọ tí a nílò, àwọn ìtọ́nisọ́nà ìsopọ̀, àti kóòdù tí ó pọn dandan láti mú gbogbo nǹkan ṣiṣẹ́. Ní ìparí ẹ̀kọ́ yìí, ìwọ óò ní ohun èlò ìwọ̀n ìjìnnà tí ó ń ṣiṣẹ́ tí a lè lò nínú ọ̀pọ̀lọpọ̀ àwọn iṣẹ́. Fún ìtọ́sọ́nà ojú-ran, rí i dájú pé o wo fídíò náà (nínú fídíò ní 00:00).
Àlàyé Àwọn Ẹ̀rọ
Àwọn ẹ̀rọ pàtàkì fún iṣẹ́ yìí ni ẹ̀rọ ìwọ̀n ìjìnnà láṣẹ VL53L0X àti ẹ̀rọ ìfihàn TM1637. VL53L0X jẹ́ ẹ̀rọ tí ó ń wọn àkókò ìrìn-àjò tí ó ń wọn ìjìnnà sí ohun kan nípa gbígbé ìtànná láṣẹ jáde àti ṣíṣe ìṣirò àkókò tí ìtànná náà gbà láti padà. Ó ń ṣiṣẹ́ lórí ìwọ̀n foltáìjì 2.6V sí 3.5V ṣùgbọ́n ó tún lè ṣiṣẹ́ pẹ̀lú 5V nípasẹ̀ ẹ̀rọ amúṣe foltáìjì tí a ṣepọ̀.
TM1637 jẹ́ ẹ̀rọ amúṣe ìfihàn tí ó ń darí ẹ̀rọ ìfihàn oní nọ́ńbà méje. Ó ń bára ṣe nípasẹ̀ ọ̀nà ìsopọ̀ 2-wáyì tí ó rọrùn (CLK àti DIO), tí ó mú kí ó rọrùn láti sopọ̀ mọ́ Arduino. Ìfihàn náà lè fi àwọn iye nọ́ńbà hàn àti pé ó pípé fún fífi àwọn ìwọ̀n ìjìnnà láti ẹ̀rọ VL53L0X hàn.
Àwọn Àlàyé Láti Ìwé Ìtọ́kasọ́
| Olùṣe | STMicroelectronics |
|---|---|
| Nọ́ńbà apá | VL53L0X |
| Foltáìjì Logic/IO | 2.6 V - 3.5 V |
| Foltáìjì ìpèsè | 2.6 V - 5 V |
| Ìwọ̀n ìgbóná iṣẹ́ | -20 °C sí 70 °C |
| Ìwọ̀n ìjìnnà tí ó lè wọn | 30 mm sí 2000 mm |
| Ìgbohùnsá I2C | 400 kHz |
| Ìṣètò àkókò ìdúró | 500 ms |
| Àkójọpọ̀ | 6-pin module |
- Rí i dájú pé ìpèsè agbára tí ó tọ́ wà (5V jẹ́ dídárayá).
- So pín XSHUT pọ̀ láti yẹra fún ìjùjọ̀ pẹ̀lú resistor ìfà.
- Lo I2C fún ìbáraṣepọ̀; so SDA àti SCL pọ̀ ní ọ̀nà tí ó tọ́.
- Ṣe àkóso àwọn àkókò ìdúró nínú kóòdù láti yẹra fún ìwà àìròtẹ́lẹ̀.
- Ṣe àfiyèsí ìwọ̀n ìgbóná iṣẹ́ fún ìwọ̀n tí ó péye.
Àwọn Ìtọ́nisọ́nà Ìsopọ̀

Láti so VL53L0X àti ìfihàn TM1637 pọ̀, bẹ̀rẹ̀ nípa sísopọ̀ pín VCC ti VL53L0X sí pín 5V lórí Arduino àti pín GND sí pín ilẹ̀ lórí Arduino. Nígbà tí ó yá, so pín SDA ti VL53L0X sí pín A4 lórí Arduino, èyí tí a sábà máa ń lò fún ìbáraṣepọ̀ dátà I2C. Pín SCL yẹ kí ó sopọ̀ sí pín A5 lórí Arduino, tí a ń lò fún àmì aago.
Fún ìfihàn TM1637, so pín CLK sí pín oní nọ́ńbà 2 lórí Arduino àti pín DIO sí pín oní nọ́ńbà 3. Ní ìparí, so pín XSHUT ti VL53L0X sí pín oní nọ́ńbà 12 lórí Arduino. Rí i dájú pé àwọn pín tí a kò lò, bíi GPIO1 lórí VL53L0X, ni a fi sílẹ̀ láìsopọ̀. Ìṣètò yìí yóò jẹ́ kí Arduino bára ṣe dáradára pẹ̀lú àwọn ẹ̀rọ méjèèjì.
Àwọn Àpẹẹrẹ Kóòdù & Àlàyé
Kóòdù náà ń bẹ̀rẹ̀ ẹ̀rọ ìwọ̀n àti ìfihàn, ń ṣètò ìbáraṣepọ̀ I2C, àti ń ka àwọn ìwọ̀n ìjìnnà nígbà gbogbo. Nísàlẹ̀ ni àpẹẹrẹ kan tí ó fi ìṣẹ́ ìṣètò hàn níbi tí a ti ṣètò àwọn pín àti tí a ti bẹ̀rẹ̀ ẹ̀rọ ìwọ̀n:
void setup() {
pinMode(12, INPUT_PULLUP); // ṣètò pín 12 fún ìfidánílẹ̀
digitalWrite(12, HIGH); // ṣètò pín 12 sí gíga (5V)
Serial.begin(9600);
Wire.begin(); // ìbáraṣepọ̀ I2C ti bẹ̀rẹ̀
sensor.init(); // ẹ̀rọ ìwọ̀n ìjìnnà ti bẹ̀rẹ̀
sensor.setTimeout(500); // àkókò ìdúró ti ṣètò
sensor.startContinuous(); // irú ìwọ̀n tí a ṣètò
}
Nínú ìṣẹ́ ìṣètò yìí, pín fún XSHUT ni a ṣètò gẹ́gẹ́ bí ìfidánílẹ̀ pẹ̀lú resistor ìfà, àti ẹ̀rọ ìwọ̀n náà ti bẹ̀rẹ̀ fún ìwọ̀n ìjìnnà tí ń lọ lọ́wọ́. Ẹ̀rọ ìṣàkóso serial náà tún ti ṣètò láti fi àwọn ìwọ̀n ìjìnnà hàn.
Nígbà tí ó yá, ìṣẹ́ àkọ́kọ́ ń ka ìjìnnà àti ń mú ìfihàn náà ṣe àtúnṣe. Èyí ni àpẹẹrẹ kan láti inú ìṣẹ́ àkọ́kọ́:
void loop() {
int distance = sensor.readRangeContinuousMillimeters(); // ka ìjìnnà ní mm
display.setSegments(clearLED); // yọ iye tí ó wà tẹ́lẹ̀ kúrò lórí ìfihàn LED
display.showNumberDec(distance, false, 4, 0); // fi ìjìnnà hàn
Serial.print("Distance: ");
Serial.print(distance); // tẹ ìjìnnà sílẹ̀ lórí ẹ̀rọ ìṣàkóso serial
}
Ìṣẹ́ àkọ́kọ́ yìí ń ka ìjìnnà láti ẹ̀rọ ìwọ̀n nígbà gbogbo àti ń mú ìfihàn TM1637 ṣe àtúnṣe pẹ̀lú ìwọ̀n tuntun. Ó tún ń tẹ ìjìnnà sílẹ̀ lórí ẹ̀rọ ìṣàkóso serial fún ìwádìí. Bí o bá fẹ́ wo kóòdù kíkún, yóò gbé sílẹ̀ nísàlẹ̀ àpilẹ̀kọ yìí.
Ìfihàn / Ohun Tí O Lè Retí
Nígbà tí o bá parí ìṣètò náà àti tí o ti gbé kóòdù sílẹ̀, ìwọ óò rí ìjìnnà tí VL53L0X wọn tí ó hàn lórí TM1637. Bí o ṣe ń gbé ohun kan súnmọ́ tàbí jìnnà sí ẹ̀rọ ìwọ̀n náà, iye tí ó hàn yóò yípadà ní ìbámu. Bí o bá ní àwọn ìwọ̀n àìròtẹ́lẹ̀, rí i dájú pé kò sí ohun tí ó dí ẹ̀rọ ìwọ̀n náà àti pé ojú ohun náà bọ́gbọ́n mu fún ìtànná láṣẹ láti padà (nínú fídíò ní 09:30).
Àwọn àṣìṣe tí ó wọ́pọ̀ pẹ̀lú ìsopọ̀ tí ó yípadà tàbí bí a kò ṣe bẹ̀rẹ̀ ẹ̀rọ ìwọ̀n náà dáradára, tí ó lè yọrí sí àwọn àṣìṣe àkókò ìdúró. Rí i dájú pé àwọn pín tí ó tọ́ ni a so pọ̀ àti pé ẹ̀rọ ìwọ̀n náà ní agbára tí ó tó fún àwọn ìwọ̀n ìjìnnà tí ó péye.
/* 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);
}
Orisun & itọkasi
Ko si awọn orisun sibẹsibẹ.
Fáìlìs📁
Fọọmu data (pdf)
-
TM1637 Iwe alaye
/download/datasheet/robojax_TM1637_datasheet.pdf0.67 MB
Fayile Fritzing
-
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
Iwe Itọsọna Olumulo
-
TM1637 Ifihan Itọsọna
robojax-TM1637_display_manual.pdf0.31 MB
Awọn faili miiran
-
Polou VL53L0X ile-ika
robojax-VL53L0X-polou-arduino-master.zip0.02 MB -
VL53L0X_Distance_sensor_purple
VL53L0X_Distance_sensor_purple.fzpz0.01 MB