جدول المحتويات:

Benewake TFmini - LiDAR غير مكلف مع Teensy 3.5: 3 خطوات
Benewake TFmini - LiDAR غير مكلف مع Teensy 3.5: 3 خطوات

فيديو: Benewake TFmini - LiDAR غير مكلف مع Teensy 3.5: 3 خطوات

فيديو: Benewake TFmini - LiDAR غير مكلف مع Teensy 3.5: 3 خطوات
فيديو: Vl53l0x a time of flight sensor and its application in LIDAR 2024, يوليو
Anonim
Benewake TFmini - LiDAR غير مكلف مع Teensy 3.5
Benewake TFmini - LiDAR غير مكلف مع Teensy 3.5

وحدة Benewake TFmini LiDAR عبارة عن مستشعر LiDAR صغير وخفيف الوزن للغاية مقابل 50 دولارًا كنديًا. كان التوثيق جيدًا ، لكنه غير مكتمل. قدمت تفاصيل حول تلقي البيانات من المستشعر ، لكنها نسيت أن تذكر الإشارة اللازمة لوضع المستشعر في الوضع الافتراضي بحيث يرسل البيانات بالفعل. لحسن الحظ كان ذلك في مستند التصحيح.

لذلك هذا ما نجح معي ، وهو حقًا جهاز سهل التعامل معه.

اخترت استخدام Teensy 3.5 نظرًا لأنه يحتوي على العديد من منافذ HW التسلسلية ، فهو أكثر من سريع بما يكفي لتلقي البيانات ومعالجتها دون السماح بتراكم البيانات. فقط من أجل المتعة ، استخدمت مكتبة Teensy Threading لفصل الحصول على البيانات عن باقي الكود.

الخطوة 1: توصيل TFmini بـ Teensy 3.5 (مشابه لـ Arduino Mega)

توصيل TFmini بـ Teensy 3.5 (مشابه لـ Arduino Mega)
توصيل TFmini بـ Teensy 3.5 (مشابه لـ Arduino Mega)

يتطلب هذا المثال اتصالين تسلسليين: أحدهما إلى TFmini والآخر لعرض النتائج على جهاز الكمبيوتر الخاص بك. لهذا السبب ، وبقدر ما أستطيع أن أقول ، هذا السبب فقط ، لن يعمل هذا المثال المحدد على أي شيء أقل من Arduino Mega أو Teensy 3.x.

ومع ذلك ، بالنسبة للتطبيقات التي لا تتطلب إخراجًا تسلسليًا للطباعة على شاشة الكمبيوتر ، يجب أن يكون نفس المشروع قابلاً للتكيف.

باستخدام تسخير الأسلاك المضمنة:

1) قم بتوصيل السلك الأسود بـ Teensy GND (في حالة استخدام مصدر اختلاف VDC ، تأكد من انتقال الأرض أيضًا إلى GND على Teensy)

2) قم بتوصيل السلك الأحمر بمصدر Teensy Vin (أو مصدر 5VDC)

3) قم بتوصيل السلك الأبيض (TFmini RX) بالدبوس 1 على Teensy (Serial1 TX)

4) قم بتوصيل السلك الأخضر (TFmini TX) بالدبوس 0 على Teensy (Serial RX)

كان تسخير الأسلاك المضمن صغيرًا جدًا بالنسبة لي للعمل على لوح الخبز ، لذلك قطعت الطرف المقابل لـ TFmini ، ولحمت الأسلاك بلوح التجارب ، وأضفت موصل JST إلى لوح التكسير ، وصنعت JST للعبور الذكر تسخير الأسلاك.

الخطوة 2: كود لتشغيله

استخدم الكود التالي (لـ Teensy 3.5) أو قم بتنزيل الملف المرفق:

بالنسبة إلى Arduino Mega ، من المحتمل ألا تعمل خيوط المعالجة. انقل الكود من وظيفة readLiDAR إلى الحلقة الرئيسية ، وأزل أي شيء متعلق بالخيوط.

# تضمين # تضمين "TeensyThreads.h"

// استخدام الكبل المصاحب:

// - أسود = GND (متصل بـ GND) // - أحمر = 5 فولت (4.5 - 6.0 فولت) (متصل بـ Vin على Teensy 3.5 ، أو 5V على Arduino) // - أبيض = TFmini RX (المعروف أيضًا باسم. ، pin1 on Teensy 3.5) // - Green = TFmini TX (المعروف أيضًا باسم. الاتصال بالمتحكم الدقيق RX ، pin0 على Teensy 3.5) // ملاحظة: لهذا الرسم تحتاج إلى متحكم مع منافذ تسلسلية إضافية تتجاوز المنفذ المتصل بكابل USB / / يتضمن هذا Arduino MEGA (استخدم Serial1) ، Teensy (3.x) (استخدم أحد اتصالات HW التسلسلية المتوفرة)

متقلبة int liDARval = 0 ؛

قراءة باطلة

// تنسيق البيانات لـ Benewake TFmini // ================================ // إجمالي 9 بايت لكل رسالة: // 1) 0x59 // 2) 0x59 // 3) Dist_L (منخفض 8 بت) // 4) Dist_H (مرتفع 8 بت) // 5) Strength_L (منخفضة 8 بت) // 6) Strength_H (عالية 8 بت) // 7) بايت محجوز // 8) درجة جودة الإشارة الأصلية // 9) بت تماثل المجموع الاختباري (منخفضة 8 بت) ، المجموع الاختباري = بايت 1 + بايت 2 + … + بايت 8. هذه ليست سوى 8 بت منخفضة بالرغم من ذلك (1) {// استمر إلى الأبد بينما (Serial1.available ()> = 9) // عندما يتوفر 9 بايت على الأقل من البيانات (العدد المتوقع للبايت لإشارة واحدة) ، إذن اقرأ {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // بايت 1 والبايت 2 {unsigned int t1 = Serial1.read ()؛ // بايت 3 = Dist_L unsigned int t2 = Serial1.read () ؛ // بايت 4 = Dist_H t2 << = 8 ؛ t2 + = t1 ؛ liDARval = t2 ؛ t1 = Serial1.read () ، // بايت 5 = Strength_L t2 = Serial1.read () ؛ // بايت 6 = Strength_H t2 << = 8 ؛ t2 + = t1 ؛ لـ (int i = 0 ؛ i <3 ؛ i ++) Serial1.read () ؛ // بايت 7 ، 8 ، 9 يتم تجاهلها}}}}

الإعداد باطل()

{Serial1.begin (115200) ؛ // HW المسلسل لـ TFmini Serial.begin (115200) ؛ // إخراج المسلسل من خلال USB إلى تأخير الكمبيوتر (100) ؛ // امنح بعض الوقت لبدء الأشياء // تعيين إلى وضع الإخراج القياسي Serial1.write (0x42) ؛ Serial1.write (0x57) ؛ Serial1.write (0x02) ؛ Serial1.write (0x00) ؛ Serial1.write (0x00) ؛ Serial1.write (0x00) ؛ Serial1.write (0x01) ؛ Serial1.write (0x06) ؛ // إعداد الموضوع لقراءة الإدخال التسلسلي من سلاسل TFmini.addThread (readLiDAR) ؛ }

حلقة فارغة()

{تأخير (10) ؛ // لا ترغب في القراءة كثيرًا كعينات TFmini بتردد 100 هرتز Serial.println (liDARval) ؛ }

الخطوة 3: استخدام Arduino IDE عرض النتائج في Serial Plotter

استخدام Arduino IDE عرض النتائج في Serial Plotter
استخدام Arduino IDE عرض النتائج في Serial Plotter

يمكنك استخدام أي طريقة تريدها ، ولكن IDE الخاص بـ Arduino سوف يرسم النتائج بشكل جيد.

اتصل بـ Teensy ، وافتح Serial Monitor. تأكد من ضبط Baudrate على 115200.

موصى به: