كود البحث

استخدام مقياس مسافة الليزر VL53L0X مع Arduino

استخدام مقياس مسافة الليزر VL53L0X مع Arduino

في هذا البرنامج التعليمي ، سوف نستكشف كيفية استخدام مقياس مسافة الليزر VL53L0X مع اردوينو. يتيح لك هذا الجهاز قياس المسافات بدقة باستخدام الليزر ، مما يجعله مثاليا لمختلف التطبيقات مثل الروبوتات والأتمتة. بنهاية هذا البرنامج التعليمي ، سيكون لديك إعداد وظيفي يمكنه قياس المسافات وعرضها في الشاشة التسلسلية.

VL53L0X 200cm range sensor-blue

بالنسبة لمشروعنا ، سنستخدم مكتبة Adafruit VL53L0X ، والتي تبسط عملية التفاعل مع المستشعر. توفر هذه المكتبة الوظائف اللازمة لتهيئة المستشعر وقراءة القياسات والتعامل مع أي أخطاء قد تنشأ. يمكنك الرجوع إلى الفيديو للحصول على دليل مرئي حول الإعداد (في الفيديو الساعة 02:15).

شرح الأجهزة

تشمل المكونات الرئيسية لهذا المشروع مقياس مسافة الليزر VL53L0X ولوحة Arduino. VL53L0X عبارة عن مستشعر لوقت الرحلة يستخدم الليزر لقياس مسافات تصل إلى 2 متر بدقة عالية. يعمل عبر بروتوكول I2C ، مما يسمح بسهولة الاتصال ب Arduino.

تعمل لوحة Arduino كمتحكم دقيق يعالج البيانات من VL53L0X. يرسل الأوامر إلى المستشعر ويستقبل قياسات المسافة ، والتي يمكن بعد ذلك عرضها أو استخدامها في تطبيقات أخرى. الأسلاك المناسبة أمر بالغ الأهمية لضمان قراءات دقيقة من المستشعر.

تفاصيل ورقة البيانات

الشركه المصنعهSTMicroelectronics
رقم الجزءVL53L0X
جهد التشغيل2.6 فولت إلى 3.5 فولت
نطاق30 مم إلى 2000 مم
دقة±3٪ نموذجي
واجههط2 ج
نطاق درجة الحرارة-40 درجة مئوية إلى +85 درجة مئوية
الاستهلاك الحالي<1 مللي أمبير (وضع الاستعداد)، 20 مللي أمبير (نشط)
حزمةVFLGA-8

  • تأكد من تشغيل المستشعر بشكل صحيح (2.6 فولت إلى 3.5 فولت).
  • حافظ على إعدادات عنوان I2C الصحيحة لتجنب التعارضات.
  • حافظ على نظافة المستشعر لقياسات المسافة بدقة.
  • استخدم مقاومات السحب المناسبة على خطوط I2C إذا لزم الأمر.
  • تجنب أشعة الشمس المباشرة على المستشعر للحصول على قراءات موثوقة.

تعليمات الأسلاك

Arduino Wiring for VL53L0X
Arduino Wiring for VL53L0X

لتوصيل مستشعر VL53L0X ب Arduino ، قم بتوصيل دبوس VCC الخاص بالمستشعر بدبوس 5V الموجود على Arduino. يجب توصيل دبوس GND بالأرض (GND) من Arduino. بالنسبة للاتصال I2C ، قم بتوصيل دبوس SDA الخاص ب VL53L0X بدبوس A4 على Arduino ، وقم بتوصيل دبوس SCL بدبوس A5. إذا كنت تستخدم نموذج Arduino مختلفا ، فراجع تعيينات دبوس SDA و SCL المحددة لتلك اللوحة.

على سبيل المثال ، في Arduino Mega ، يمكنك توصيل SDA بالدبوس 20 و SCL بالدبوس 21. تأكد من أن جميع الاتصالات آمنة لتجنب مشكلات الاتصال. إذا لم يستجب المستشعر ، فتحقق جيدا من الأسلاك وتأكد من تشغيل Arduino بشكل صحيح.

أمثلة على التعليمات البرمجية والإرشادات التفصيلية

يوجد أدناه مقتطف من وظيفة الإعداد التي تقوم بتهيئة مستشعر 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 200cm range sensor-blue
VL53L0X 200cm range sensor-blue
Arduino Wiring for VL53L0X
Arduino Wiring for VL53L0X
15-Using a VL53L0X laser distance meter in Arduino
اللغة: C++
/*
 * هذا المثال يوضح كيفية استخدام وضع الاستمرارية لأخذ قياسات المدى باستخدام VL53L0X.  
 * احصل على هذا الكود وأكواد Arduino الأخرى من Robojax.com  
 * تعلم Arduino خطوة بخطوة في دورة منظمة مع جميع المواد، مخططات الأسلاك، والمكتبات كلها في مكان واحد.  
 * 
 * إذا وجدت هذا الدرس مفيدًا، يرجى دعمي حتى أتمكن من الاستمرار في إنشاء محتوى مثل هذا.  
 * 
 * أو قم بعمل تبرع باستخدام PayPal http://robojax.com/L/?id=64  
 * 
 * هذا الكود هو "كما هو" بدون ضمان أو مسؤولية. يمكن استخدامه مجانًا طالما أن هذه الملاحظة تظل intact.*  
 * هذا الكود قد تم تنزيله من Robojax.com  
 * هذا البرنامج هو برنامج مجاني: يمكنك إعادة توزيعه و/أو تعديله وفقًا لشروط الرخصة العامة GNU كما نشرتها مؤسسة البرمجيات الحرة، إما الإصدار 3 من الترخيص، أو (حسب اختيارك) أي إصدار لاحق.  
 * 
 * هذا البرنامج يتم توزيعه على أمل أن يكون مفيدًا، لكن دون أي ضمان؛ بدون حتى ضمان ضمني للتسويق أو ملاءمة لغرض معين. راجع الرخصة العامة GNU للحصول على مزيد من التفاصيل.  
 * 
 * يجب أن تكون قد تلقيت نسخة من الرخصة العامة GNU مع هذا البرنامج. إذا لم يكن الأمر كذلك، انظر <https://www.gnu.org/licenses/>.  
 * 
 * حقوق الطبع والنشر (c) 2015، Majenko Technologies  
 * جميع الحقوق محفوظة.  
 * 
 * إعادة التوزيع والاستخدام في الأشكال المصدرية والرقمية، مع أو بدون تعديل، مسموح به بشرط أن يتم استيفاء الشروط التالية:  
 * 
 * يجب أن تحتفظ إعادة توزيع الكود المصدري بإشعار حقوق الطبع والنشر المذكور أعلاه، وهذه القائمة من الشروط والتنبيه التالي.  
 * 
 * يجب أن تتم إعادة توزيع الشكل الثنائي بإعادة إنتاج إشعار حقوق الطبع والنشر المذكور أعلاه، وهذه القائمة من الشروط والتنبيه التالي في الوثائق و/أو المواد الأخرى المقدمة مع التوزيع.  
 * 
 * لا يجوز استخدام اسم Majenko Technologies أو أسماء مساهميها في تأييد أو ترويج المنتجات المستمدة من هذا البرنامج دون إذن كتابي محدد مسبقًا.  
 * 
 * هذا البرنامج موفر من قبل مالكي حقوق الطبع والنشر والمساهمين "كما هو" وأي ضمانات صريحة أو ضمنية، بما في ذلك، على سبيل المثال لا الحصر، الضمانات الضمنية للتسويق وملاءمة لغرض معين، يتم التنصل منها. في أي وقت، لن يكون مالك حقوق الطبع والنشر أو المساهمون مسؤولين عن أي أضرار مباشرة، غير مباشرة، عرضية، خاصة، نموذجية، أو تبعية (بما في ذلك، على سبيل المثال لا الحصر، الحصول على بضائع أو خدمات بديلة؛ فقدان الاستخدام، البيانات، أو الأرباح؛ أو انقطاع العمل) مهما كان السبب وعلى أي نظرية للمسؤولية، سواء في العقد، المسؤولية الصارمة، أو خطأ (بما في ذلك الإهمال أو غير ذلك) التي تنشأ بأي شكل من الأشكال من استخدام هذا البرنامج، حتى لو تم إخطارهم بإمكانية حدوث مثل هذه الأضرار.
 */
#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);
}

الموارد والمراجع

ملفات📁

لا توجد ملفات متاحة.