استفاده از فاصله سنج لیزری VL53L0X با آردوینو
در این آموزش، نحوه استفاده از فاصله سنج لیزری VL53L0X با آردوینو را بررسی خواهیم کرد. این دستگاه به شما امکان می دهد فواصل را با استفاده از لیزر به طور دقیق اندازه گیری کنید و آن را برای کاربردهای مختلف مانند رباتیک و اتوماسیون ایده آل می کند. در پایان این آموزش، شما یک تنظیمات عملکردی خواهید داشت که می تواند فواصل را اندازه گیری کرده و آنها را در نمایشگر مسلسل نمایش دهد.

برای پروژه خود، ما از کتابخانه Adafruit VL53L0X استفاده خواهیم کرد که فرآیند ارتباط با حساس(حس کننده) را ساده می کند. این کتابخانه عملکردهای لازم را برای مقداردهی اولیه حساس(حس کننده)، خواندن اندازه گیری ها و رسیدگی به هر گونه خطایی که ممکن است ایجاد شود فراهم می کند. می توانید برای راهنمای بصری در مورد تنظیمات (در ویدیو در ساعت 02:15) به ویدیو مراجعه کنید.
سخت افزار توضیح داده شده است
اجزای اصلی این پروژه شامل فاصله سنج لیزری VL53L0X و برد آردوینو است. VL53L0X یک حساس(حس کننده) زمان پرواز است که از لیزر برای اندازه گیری فواصل تا 2 متر با دقت بالا استفاده می کند. از طریق پروتکل I2C کار می کند و امکان ارتباط آسان با آردوینو را فراهم می کند.
برد آردوینو به عنوان میکروکنترلری عمل می کند که داده های VL53L0X را پردازش می کند. دستورات را به حساس(حس کننده) ارسال می کند و اندازه گیری های فاصله را دریافت می کند، که سپس می تواند نمایش داده شود یا در برنامه های دیگر استفاده شود. سیم کشی مناسب برای اطمینان از قرائت دقیق حساس(حس کننده) بسیار مهم است.
جزئیات برگه داده
| تولید کننده | STMicroelectronics |
|---|---|
| شماره قطعه | VL53L0X |
| ولتاژ عملیاتی | 2.6 ولت تا 3.5 ولت |
| محدوده | 30 میلی متر تا 2000 میلی متر |
| دقت | ±3٪ معمولی |
| رابط | من 2 ج |
| محدوده دما | -40 درجه سانتی گراد تا +85 درجه سانتی گراد |
| مصرف فعلی | <1 میلی آمپر (آماده به کار)، 20 میلی آمپر (فعال) |
| بسته | VFLGA-8 |
- اطمینان حاصل کنید که حساس(حس کننده) به درستی تغذیه می شود (2.6 ولت تا 3.5 ولت).
- تنظیمات آدرس I2C را برای جلوگیری از تداخل صحیح حفظ کنید.
- حساس(حس کننده) را برای اندازه گیری دقیق فاصله تمیز نگه دارید.
- در صورت نیاز از مقاومت های کششی مناسب در خطوط I2C استفاده کنید.
- برای خوانش های قابل اعتماد از تابش مستقیم نور خورشید روی حساس(حس کننده) خودداری کنید.
دستورالعمل سیم کشی

برای سیم کشی حساس(حس کننده) VL53L0X به آردوینو ، پایه VCC حساس(حس کننده) را به پایه 5 ولت آردوینو وصل کنید. پایه GND باید به زمین (GND) آردوینو متصل شود. برای ارتباط I2C، پایه SDA VL53L0X را به پایه A4 روی آردوینو وصل کنید و پایه SCL را به پایه A5 وصل کنید. اگر از مدل آردوینو دیگری استفاده می کنید، به تخصیص پایه SDA و SCL خاص برای آن برد مراجعه کنید.
به عنوان مثال، در آردوینو مگا، SDA را به پایه 20 و SCL را به پایه 21 متصل می کنید. اطمینان حاصل کنید که همه اتصالات ایمن هستند تا از مشکلات ارتباطی جلوگیری شود. اگر حساس(حس کننده) پاسخ نداد، سیم کشی را دوباره بررسی کنید و مطمئن شوید که آردوینو به درستی تغذیه می شود.
مثال های شِفر (کود) و بررسی
در زیر قطعه ای از عملکرد راه اندازی وجود دارد که حساس(حس کننده) VL53L0X را مقداردهی اولیه می کند:
void setup() {
Serial.begin(9600);
while (! Serial) {
delay(1);
}
Serial.println("Robojax Test");
if (!lox.begin()) {
Serial.println(F("Failed to boot VL53L0X"));
while(1);
}
}این شِفر (کود) ارتباط سریال را مقداردهی اولیه می کند و سعی می کند حساس(حس کننده) VL53L0X را راه اندازی کند. اگر حساس(حس کننده) بوت نشود، یک پیام خطا چاپ می کند و برنامه را متوقف می کند.
در مرحله بعد، در اینجا یک قطعه از تابع حلقه وجود دارد که اندازه گیری فاصله را می خواند:
void loop() {
VL53L0X_RangingMeasurementData_t measure;
lox.rangingTest(&measure, false);
if (measure.RangeStatus != 4) {
Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
} else {
Serial.println(" out of range ");
}
delay(100);
}این بلوک به طور مداوم اندازه گیری فاصله از حساس(حس کننده) را می خواند و آن را روی نمایشگر مسلسل چاپ می کند. اگر اندازه گیری خارج از محدوده باشد، بر این اساس این را نشان می دهد.
تظاهرات / چه انتظاری باید داشت
هنگامی که برنامه را اجرا می کنید، باید اندازه گیری فاصله را در نمایشگر مسلسل مشاهده کنید. قرائت ها باید هر 100 میلی ثانیه به روز شوند. اگر حساس(حس کننده) به سمت جسمی باشد، فاصله را بر حسب میلی متر نمایش می دهد. اگر جسم خارج از محدوده باشد، آن را نیز نشان می دهد. مطمئن شوید که حساس(حس کننده) را در محدوده مشخص شده خود برای نتایج بهینه (در ویدیو در ساعت 10:00) آزمایش کنید.
مهرهای زمانی ویدئو
- 00:00-مقدمه
- 02:15- راه اندازی سیم کشی
- 05:30- توضیح شِفر (کود)
- 10:00-تظاهرات
/*
* این مثال نشان میدهد که چگونه میتوان از حالت پیوسته برای انجام اندازهگیریهای محدوده با VL53L0X استفاده کرد.
*
* این شِفر (کود) و سایر کدهای آردوینو را از Robojax.com دریافت کنید.
*
* آموزش آردوینو را مرحله به مرحله در یک دوره سازماندهی شده با تمام مطالب، نمودارهای سیمکشی و کتابخانهها در یک مکان یاد بگیرید.
*
* اگر این آموزش برایتان مفید بود، لطفاً از من حمایت کنید تا بتوانم به تولید محتوایی مشابه ادامه دهم.
*
* یا از طریق PayPal برای کمک مالی استفاده کنید.
*
* این شِفر (کود) به صورت "همانطور که هست" بدون ضمانت یا مسئولیت ارائه شده است. رایگان است که استفاده شود به شرطی که این یادداشت دست نخورده باقی بماند.
* این شِفر (کود) از Robojax.com دانلود شده است.
* این برنامه نرمافزار رایگان است: شما میتوانید آن را مجدداً توزیع کنید و/یا اصلاح کنید تحت شرایط مجوز عمومی GNU که توسط بنیاد نرمافزار آزاد منتشر شده است، نسخه 3 یا (به انتخاب شما) هر نسخه بعدی.
*
* این برنامه به امید اینکه مفید باشد توزیع شده است، اما بدون هیچگونه ضمانتی؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی GNU مراجعه کنید.
*
* شما باید یک نسخه از مجوز عمومی GNU را همراه با این برنامه دریافت کرده باشید. اگر نه، به <https://www.gnu.org/licenses/> مراجعه کنید.
*
* حق نشر (c) 2015، تکنولوژیهای ماژنکو
* همه حقوق محفوظ است.
*
* توزیع و استفاده در اشکال منبع و باینری، با یا بدون اصلاح، مجاز است به شرطی که شرایط زیر رعایت شود:
*
* توزیعهای شِفر (کود) منبع باید یادداشت حق نشر فوق، این لیست از شرایط و بیانیه زیر را حفظ کنند.
*
* توزیعهای باینری باید یادداشت حق نشر فوق، این لیست از شرایط و بیانیه زیر را در مستندات و/یا سایر مواد ارائه شده همراه با توزیع بازتولید کنند.
*
* نه نام ماژنکو تکنولوژیز و نه نامهای همکارانش نباید برای تأیید یا ترویج محصولات مشتق شده از این نرمافزار بدون اجازه کتبی خاص استفاده شود.
*
* این نرمافزار توسط دارندگان حق نشر و همکاران به صورت "همانطور که هست" ارائه شده و هرگونه ضمانت صریح یا ضمنی، از جمله، اما نه محدود به، ضمانتهای ضمنی قابل فروش بودن و مناسب بودن برای یک هدف خاص، رد شده است. در هیچ کجا از کاربر حق نشر یا همکاران بابت هرگونه خسارت مستقیم، غیرمستقیم، تصادفی، ویژه، مثالزدنی یا تبعی (از جمله، اما نه محدود به، تأمین کالاها یا خدمات جانشین؛ از دست دادن استفاده، داده یا سود؛ یا وقفه در کسبوکار) مسئول نیستند، هرچند که بر اساس هر نظریهای از مسئولیت، خواه در قرارداد، مسئولیت سخت، یا خسارت (از جمله اهمال یا غیره) ناشی از هر طریقی از استفاده از این نرمافزار، حتی اگر از احتمال چنین آسیبی مطلع شده باشید.
*/
#include "Adafruit_VL53L0X.h"
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
void setup() {
Serial.begin(9600);
// منتظر بمانید تا پورت سریال برای دستگاههای USB بومی باز شود.
while (! Serial) {
delay(1);
}
Serial.println("Robojax Test");
if (!lox.begin()) {
Serial.println(F("Failed to boot VL53L0X"));
while(1);
}
// قدرت
Serial.println(F("VL53L0X API Simple Ranging example\n\n"));
}
void loop() {
VL53L0X_RangingMeasurementData_t measure;
Serial.print("Reading a measurement... ");
lox.rangingTest(&measure, false); // 'true' را وارد کنید تا چاپ دادههای دیباگ را دریافت کنید!
if (measure.RangeStatus != 4) { // خطاهای فاز دارای دادههای نادرست هستند
Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
} else {
Serial.println(" out of range ");
}
delay(100);
}
منابع و مراجع
-
خارجیورقۀ مشخصات VL53L0X (PDF)st.com
فایلها📁
هیچ فایلی موجود نیست.