اندازهگیری فاصله با ماجیول لیزری VL53L0X 6 پایه و نمایشگر TM1637 برای آردوینو
در این آموزش یاد میگیریم چگونه با استفاده از حساس(حس کننده) فاصلهسنج لیزری VL53L0X فاصله را اندازهگیری کرده و مقادیر را روی نمایشگر 7-segment TM1637 نمایش دهیم. این پروژه هر دو مؤلفه را ترکیب میکند تا یک ابزار اندازهگیری فاصله ساده اما مؤثر ایجاد کند. VL53L0X از فناوری لیزری برای ارائه خوانشهای دقیق فاصله استفاده میکند، در حالی که نمایشگر TM1637 این خوانشها را در قالبی کاربرپسند نشان میدهد.


ما سختافزار مورد نیاز، دستورالعملهای سیمکشی و کدی را که برای راهاندازی همهچیز لازم است بررسی خواهیم کرد. تا پایان این آموزش، شما یک دستگاه اندازهگیری فاصلهٔ عملی خواهید داشت که میتوان از آن در کاربردهای مختلف استفاده کرد. برای راهنمای تصویری، حتماً ویدیو را در 00:00 تماشا کنید.
توضیح سختافزار
اجزای اصلی این پروژه حساس(حس کننده) فاصله لیزری VL53L0X و ماجیول نمایشگر TM1637 هستند. VL53L0X یک حساس(حس کننده) زمان پرواز است که فاصله تا یک جسم را با انتشار یک پرتو لیزری و محاسبهٔ مدت زمانی که طول میکشد تا بازتاب بازگردد اندازهگیری میکند. این حساس(حس کننده) در محدودهٔ ولتاژ 2.6V تا 3.5V کار میکند اما بهخاطر وجود یک رگولاتور ولتاژ داخلی میتواند با 5V نیز کار کند.
TM1637 یک درایور نمایشگر است که نمایشگر LED هفتسگمنت را کنترل میکند. این درایور از طریق یک رابط سادهٔ دو سیمه (CLK و DIO) ارتباط برقرار میکند که اتصال آن به آردوینو را آسان میسازد. نمایشگر میتواند مقادیر عددی را نشان دهد و برای نمایش بصری اندازهگیریهای فاصله از حساس(حس کننده) VL53L0X ایدهآل است.
جزئیات مشخصات فنی
| تولیدکننده | استی میکروالکترونیکس |
|---|---|
| شماره قطعه | VL53L0X |
| ولتاژ منطق/ورودی-خروجی | 2.6 ولت - 3.5 ولت |
| ولتاژ تغذیه | ۲٫۶ ولت - ۵ ولت |
| دمای عملیاتی | -20 °C تا 70 °C |
| دامنه اندازهگیری | 30 میلیمتر تا 2000 میلیمتر |
| فرکانس I2C | 400 کیلوهرتز |
| تنظیم زمان انتظار | 500 میلیثانیه |
| بسته | ماجیول ۶ پایه |
- از تأمین منبع تغذیه مناسب اطمینان حاصل کنید (5V قابل قبول است).
- پایه XSHUT را با یک مقاومت پولآپ برای جلوگیری از نشتی متصل کنید
- برای ارتباط از I2C استفاده کنید؛ SDA و SCL را بهطور مناسب متصل کنید.
- تایماوتها را در شِفر (کود) مدیریت کنید تا از بروز رفتارهای غیرمنتظره جلوگیری شود.
- برای دقت، به محدوده دمای کاری توجه کنید.
دستورالعملهای سیمکشی

برای سیمکشی ماجیول VL53L0X و نمایشگر TM1637، ابتدا پایه VCC ماجیول VL53L0X را به پایه 5V آردوینو و پایه GND را به یک پایه زمین (GND) آردوینو متصل کنید. سپس پایه SDA ماجیول VL53L0X را به پایه A4 آردوینو که معمولاً برای ارتباط دادهای I2C استفاده میشود، متصل کنید. پایه SCL نیز باید به پایه A5 آردوینو که برای سیگنال کلاک استفاده میشود، متصل شود.
برای نمایشگر TM1637، پایه CLK را به پایه دیجیتال 2 آردوینو و پایه DIO را به پایه دیجیتال 3 متصل کنید. در نهایت، پایه XSHUT حساس(حس کننده) VL53L0X را به پایه دیجیتال 12 آردوینو وصل کنید. مطمئن شوید هر پایه بلااستفاده مانند GPIO1 روی VL53L0X بدون اتصال باقی بماند. این تنظیم به آردوینو اجازه میدهد تا بهطور مؤثر هم با حساس(حس کننده) و هم با نمایشگر ارتباط برقرار کند.
مثالهای شِفر (کود) و راهنمای گامبهگام
شِفر (کود) حساس(حس کننده) و نمایشگر را مقداردهی اولیه میکند، ارتباط I2C را راهاندازی میکند و بهطور مداوم اندازهگیریهای فاصله را میخواند. در ادامه قطعهکدی آمده که تابع setup را نشان میدهد که در آن پایهها پیکربندی شده و حساس(حس کننده) مقداردهی اولیه میشود:
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
sensor.startContinuous(); // type of measurement is set
}در این تابع راهاندازی، پایه مربوط به XSHUT بهعنوان ورودی با مقاومت پول-آپ پیکربندی شده است و حساس(حس کننده) برای اندازهگیری پیوستهٔ فاصله مقداردهی اولیه شده است. نمایشگر مسلسل نیز تنظیم شده است تا خوانشهای فاصله را نمایش دهد.
سپس، حلقهٔ اصلی فاصله را میخواند و نمایشگر را بهروز میکند. در اینجا یک گزیدهٔ متمرکز از تابع loop آمده است:
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
Serial.print("Distance: ");
Serial.print(distance); // print distance on serial monitor
}این حلقه بهطور مداوم فاصله را از حساس(حس کننده) میخواند و نمایشگر TM1637 را با آخرین اندازهگیری بهروزرسانی میکند. همچنین برای اشکالزدایی فاصله را روی نمایشگر مسلسل چاپ میکند. اگر میخواهید شِفر (کود) کامل را ببینید، آن در پایینِ مقاله بارگذاری خواهد شد.
تظاهرات / آنچه باید انتظار داشته باشید
پس از تکمیل تنظیمات و آپلود کردن شِفر (کود)، باید فاصلهای که توسط VL53L0X اندازهگیری شده را روی نمایشگر TM1637 ببینید. وقتی جسمی را به حساس(حس کننده) نزدیکتر یا دورتر میکنید، مقدار نمایشدادهشده متناسب با آن تغییر میکند. اگر خوانشهای غیرمنتظرهای مشاهده کردید، مطمئن شوید که حساس(حس کننده) مسدود نشده و سطح جسم برای بازتاب لیزر مناسب است (در ویدیو در 09:30).
اشتباهات رایج شامل سیمکشی معکوس یا راهاندازی نادرست حساس(حس کننده) است که میتواند منجر به خطاهای تایماوت شود. مطمئن شوید که پایههای صحیح متصل شدهاند و حساس(حس کننده) تغذیهٔ کافی دریافت میکند تا اندازهگیریهای فاصله دقیق باشند.
منابع و مراجع
هنوز هیچ منبعی موجود نیست.
فایلها📁
برگه مشخصات (pdf)
-
دیتاشیت TM1637
/download/datasheet/robojax_TM1637_datasheet.pdf0.67 MB
فایل Fritzing
-
TM1637 Seven Segment module
application/zip0.01 MB -
TM1637 4 digit seven segment display
application/zip0.01 MB
راهنمای کاربر
-
راهنمای نمایش TM1637
robojax-TM1637_display_manual.pdf0.31 MB
سایر فایلها
-
VL53L0X_Distance_sensor_purple
application/zip0.01 MB