جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
وحدة Benewake TFmini LiDAR عبارة عن مستشعر LiDAR صغير وخفيف الوزن للغاية مقابل 50 دولارًا كنديًا. كان التوثيق جيدًا ، لكنه غير مكتمل. قدمت تفاصيل حول تلقي البيانات من المستشعر ، لكنها نسيت أن تذكر الإشارة اللازمة لوضع المستشعر في الوضع الافتراضي بحيث يرسل البيانات بالفعل. لحسن الحظ كان ذلك في مستند التصحيح.
لذلك هذا ما نجح معي ، وهو حقًا جهاز سهل التعامل معه.
اخترت استخدام Teensy 3.5 نظرًا لأنه يحتوي على العديد من منافذ HW التسلسلية ، فهو أكثر من سريع بما يكفي لتلقي البيانات ومعالجتها دون السماح بتراكم البيانات. فقط من أجل المتعة ، استخدمت مكتبة Teensy Threading لفصل الحصول على البيانات عن باقي الكود.
الخطوة 1: توصيل 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
يمكنك استخدام أي طريقة تريدها ، ولكن IDE الخاص بـ Arduino سوف يرسم النتائج بشكل جيد.
اتصل بـ Teensy ، وافتح Serial Monitor. تأكد من ضبط Baudrate على 115200.