How to Integrate SFA2000B Laser Rangefinder Module into Drone Flight Controllers via ArduPilot (AP) Firmware

كيفية دمج وحدة SFA2000B لجهاز تحديد المدى بالليزر SFA2000B في وحدات التحكم في الطيران بدون طيار عبر البرنامج الثابت ArduPilot (AP)

بالنسبة لعشاق الطائرات بدون طيار والمهندسين ومشغلي الطائرات بدون طيار التجارية، فإن دمج جهاز تحديد المدى عالي الأداء مثل SFA2000B في نظام طيران الطائرة بدون طيار أمر بالغ الأهمية لمهام مثل الهبوط الدقيق وتجنب العوائق وتثبيت الارتفاع. يوفر SFA2000B - بمدى 2000 متر كحد أقصى (ليلاً)، ومصدر طاقة 3.3 فولت-5 فولت، واتصال تسلسلي TTL - فائدة استثنائية، ولكنه يتطلب خطوات محددة للعمل مع البرنامج الثابت ArduPilot (AP) (أشهر البرامج الثابتة مفتوحة المصدر للطائرات بدون طيار).
 
في هذا الدليل، سنقوم بتقسيم العملية إلى إعداد الأجهزة، وتكييف البروتوكول، وتهيئة البرامج الثابتة لنقطة الوصول، والتحقق من الصحة-مع خطوات قابلة للتنفيذ ومخططات ونصائح حول استكشاف الأخطاء وإصلاحها لضمان التكامل السلس. سواء أكنت هاويًا يستخدم وحدة تحكم الطيران Pixhawk أو محترفًا يقوم ببناء طائرة تجارية بدون طيار، ستساعدك هذه المقالة على ربط SFA2000B بعقل الطائرة بدون طيار.

الاستعدادات الرئيسية قبل الاندماج

قبل الغوص في توصيل الأسلاك والترميز، تأكد من أن لديك جميع الأدوات والمكونات اللازمة. غالبًا ما يؤدي تخطي هذه الخطوة إلى أخطاء يمكن تجنبها (مثل الوحدات المقلية أو عدم نقل البيانات).

1.1 المكونات المطلوبة

المكوّن المواصفات والغرض
جهاز تحديد المدى بالليزر
واجهة تسلسلية TTL (3.3 فولت)، موصل 0.8WTB-6Y-2، نطاق 3 أمتار كحد أدنى، معدل الباود الافتراضي 115200 بت في الثانية
وحدة التحكم في الطيران المتوافقة مع AP
Pixhawk 2.4.8/4/6 (الأكثر شيوعًا)، مع منفذ UART واحد مجاني على الأقل (على سبيل المثال، TELEM2 وGPS2)
محول USB-TTLTL (CH340)
لاختبار الاتصال التسلسلي ل SFA2000B قبل التوصيل بوحدة التحكم في الطيران
أسلاك دوبونت المحمية
للحد من التداخل الكهرومغناطيسي (EMI) من محركات الطائرة بدون طيار/مراكز التحكم الإلكتروني الكهرومغناطيسي
وحدة طاقة خارجية 3.3 فولت/1 أمبير (اختياري)
إذا لم يتمكن منفذ 3.3 فولت لوحدة التحكم في الطيران من توفير 500 مللي أمبير (ذروة تيار بدء التشغيل في SFA2000B)

1.2 أدوات البرمجيات

  • مخطط المهام: المحطة الأرضية الرسمية لـ ArduPilot (تنزيل هنا). تُستخدم لتهيئة معلمات وحدة التحكم في الطيران والتحقق من صحة البيانات.
  • SSCOM/SecureCRT: أدوات تصحيح الأخطاء التسلسلية لاختبار بروتوكول SFA2000B (إرسال الأوامر والتحقق من بيانات المسافة).
  • كود مصدر ArduPilot (اختياري): للمستخدمين المتقدمين الذين يحتاجون إلى تجميع البرامج الثابتة المخصصة (على سبيل المثال، النطاق المستمر 10 هرتز).
الخطوة 1: اختبر البروتوكول التسلسلي ل SFA2000B (حاسم!)

يستخدم SFA2000B جهاز SFA2000B بروتوكول سداسي عشري مخصص (وليس MAVLink، لغة ArduPilot الأصلية). أولاً، تأكد من أن الوحدة تعمل بشكل مستقل لاستبعاد عيوب الأجهزة.

1.1 قم بتوصيل SFA2000B بمحول USB-TTL

قم بتوصيل الوحدة بالكمبيوتر باستخدام محول USB-TTL. اتبع تخطيط السنون من ورقة بيانات SFA2000B:

دبوس محول USB-TTL-TTL دبوس SFA2000B الوصف
3.3V
السن 5 (VCC)
قم بتشغيل الوحدة (لا تستخدم أبدًا 5 فولت-خطر الاحتراق!)
GND
الدبوس 6 (GND)
أرضية مشتركة (ضرورية للتواصل المستقر)
TXD
الدبوس 2 (RXD)
يرسل الكمبيوتر الأوامر إلى SFA2000B
RXD
الدبوس 3 (TXD)
يرسل SFA2000B بيانات المسافة إلى الكمبيوتر
Wiring diagram showing SFA2000B laser rangefinder connected to a CH340 USB-TTL adapter, with pin labels for 3.3V, GND, TXD, and RXD.
1.2 إرسال الأوامر والتحقق من البيانات
افتح SSCOM وقم بتكوين المنفذ التسلسلي:
 
  • معدل الباود 115200bps 115200bps
  • بتات البيانات: 8، بتات إيقاف: 1، التماثلية: لا يوجد
  • تحقق من “إرسال سداسي عشري” و “عرض سداسي عشري”

الاختبار 1: أمر تحديد المدى واحد

أرسل أمر الطلقة الواحدة (من ورقة بيانات SFA2000B):
				
					55 AA 88 88 FF FF FF FF FF FF 84
				
			

ستقوم الوحدة النمطية بإرجاع استجابة مثل:

				
					55 AA 88 88 88 01 FF 4E 23 C8
				
			
  • 55 أأ: رأس الإطار (يؤكد البيانات الصالحة)
  • 01: الحالة (1 = نجاح، 0 = فشل)
  • 4E 23: بيانات المسافة (سداسي عشري ← عشري = 20003 ← القسمة على 10 ← 2000.3م)
  • C8: المجموع الاختباري (التحقق من الصحة: مجموع البايتات من 1 إلى 7، مع أخذ آخر 8 بتات)

إذا أظهرت الاستجابة مسافة صالحة (مطابقة للمسافة المستهدفة الفعلية)، فإن الوحدة تعمل. إذا لم يكن الأمر كذلك، تحقق من الأسلاك أو اتصل بالشركة المصنعة (يتمتع SFA2000B بضمان لمدة عام واحد).

الخطوة 2: قم بتوصيل SFA2000B بوحدة التحكم في الطيران

الآن قم بتوصيل الوحدة بمنفذ UART المجاني لوحدة التحكم في الطيران (سنستخدم TELEM2 في هذا المثال).

2.1 مخطط الأسلاك (Pixhawk 4 + SFA2000B)
دبوس Pixhawk 4 TELEM2 دبوس SFA2000B الوصف
3.3V
السن 5 (VCC)
الطاقة (استخدم طاقة خارجية 3.3 فولت/1 أمبير إذا كان منفذ 3.3 فولت أقل من الطاقة المطلوبة)
GND
الدبوس 6 (GND)
أرضية مشتركة
TX (إرسال وحدة التحكم في الطيران)
الدبوس 2 (RXD)
ترسل وحدة التحكم في الطيران أوامر تحديد المدى إلى الوحدة النمطية
RX (استقبال وحدة التحكم في الطيران)
الدبوس 3 (TXD)
تستقبل وحدة التحكم في الطيران بيانات المسافة من الوحدة
Wiring diagram of SFA2000B laser rangefinder connected to Pixhawk 4 flight controller’s TELEM2 port, with labels for power, ground, TX, and RX.
2.2 نصائح الأسلاك الحرجة
  • الأسلاك المحمية: استخدم كبلات محمية لـ TX/RX لتقليل التداخل الكهرومغناطيسي الكهرومغناطيسي من المحركات (الأسلاك غير المحمية تسبب تلف البيانات).
  • عزل الطاقة: إذا لم يتمكن منفذ 3.3 فولت بوحدة التحكم في الطيران من توفير 500 مللي أمبير، فقم بتوصيل وحدة خارجية 3.3 فولت/1 أمبير (على سبيل المثال، منظم خفض التدريج 3.3 فولت من Pololu) لتجنب انقطاع التيار الكهربائي.
  • حماية الدبوس: قم بتغطية الدبابيس غير المستخدمة (على سبيل المثال، الدبوس 1: الطاقة-EN) بشريط كهربائي لمنع حدوث دوائر كهربائية قصيرة.
الخطوة 3: تكوين معلمات البرنامج الثابت ArduPilot (AP)

لا يدعم ArduPilot بروتوكول SFA2000B في الأصل، لذلك سنستخدم بروتوكول مستشعر تسلسلي مخصص ميزة (AP 4.3.0+) لتعيين بيانات الوحدة النمطية إلى وحدة التحكم في الطيران.

3.1 توصيل مخطط المهمة بوحدة التحكم في الطيران
  1. قم بتشغيل وحدة التحكم في الطيران وتوصيلها بالكمبيوتر عبر USB.
  2. افتح مخطط المهمة → حدد منفذ COM الصحيح → انقر فوق “اتصال”.
  3. انتقل إلى التكوين/الضبط → شجرة المعلمات الكاملة (هنا سنقوم بتعديل جميع الإعدادات).
3.2 تكوين منفذ UART (TELEM2)

أولاً، قم بإعداد منفذ TELEM2 لوحدة التحكم في الطيران للاتصال ب SFA2000B:

المعلمة القيمة الوصف
سيرال2_بود
115200
مطابقة معدل البث بالباود الافتراضي ل SFA2000B
المسلسل2_بروتوكول_المتسلسل
23
تمكين وضع “المستشعر المخصص” (حاسم!)
الخيارات_المتسلسلة 2_خيارات
لا توجد خيارات خاصة (تم الضبط على 1024 إذا كان EMI يمثل مشكلة)
3.3 تكوين محدد المدى (RangeFinder1)

بعد ذلك، أخبر ArduPilot أن يتعامل مع SFA2000B كجهاز تحديد المدى:

المعلمة القيمة الوصف
RNGFND1_TYPE
32
حدد “مسلسل مخصص” (للبروتوكولات المخصصة)
RNGFND1_MIN_CMIN_CM
300
الحد الأدنى للنطاق (3 أمتار = 300 سم، تطابق المنطقة العمياء ل SFA2000B)
RNGFND1_MAX_CMX_CM
200000
أقصى مدى (2000 متر = 200000 سم)
مقياس RNGFND1_SCALE
0.1
تحويل بيانات الوحدة (القسمة على 10: 20003 → 2000.3م)
RNGFND1_ORIENT
25
اتجاه التركيب (25 = لأسفل، لتثبيت الارتفاع؛ 0 = للأمام لتجنب العوائق)
3.4 تعريف تنسيق بيانات SFA2000B

أخيراً، علّم ArduPilot كيفية تحليل استجابة SFA2000B السداسية (الإطار 55 aa 88 88 01 ff xx xx xx yy):

المعلمة القيمة الوصف
نوع_حارس_المستشعر
1
نوع المستشعر = محدد المدى
منفذ_الحارس_المتسلسل
2
استخدام TELEM2 (المنفذ 2) للاتصال
CUST_DATA_LEN
8
يبلغ طول استجابة SFA2000B 8 بايت
CUST_HEADER1
0x55
البايت الأول من رأس الإطار
CUST_HEADER2
0xAA
البايت الثاني من رأس الإطار
إزاحة_بيانات_الحارس
5
تبدأ بيانات المسافة عند البايت 5 (XX في الإطار)
cust_data_bytes
2
بيانات المسافة 2 بايت (16 بت)
CUST_ENDIAN
قليل الإندين (تحقق من الوحدة الخاصة بك - معظم وحدات SFA2000B تستخدم الإندين الصغير)
Screenshot of Mission Planner’s Full Parameter Tree showing custom sensor parameters (CUST_HEADER1, CUST_DATA_OFFSET) configured for the SFA2000B rangefinder.
الخطوة 4: إرسال أوامر تحديد المدى من وحدة التحكم في الطيران

لن يرسل SFA2000B البيانات ما لم يتلق أمرًا. سنستخدم ArduPilot's ArduPilot's البرمجة النصية لـ Lua لجعل وحدة التحكم في الطيران ترسل الأوامر تلقائياً.

4.1 إنشاء برنامج نصي للوا
  1. في مخطط المهمة، انتقل إلى التكوين/الضبط → البرامج النصية للوا.
  2. انقر فوق “نص برمجي جديد” والصق الكود أدناه (يرسل أمر نطاق واحد كل ثانية واحدة):
				
					-- البرنامج النصي لأمر تحديد المدى SFA2000B (1 هرتز)
منفذ_مسلسلي محلي = serial.open(2، 115200) -- المنفذ 2 = TELEM2، 115200 بت في الثانية
محلي_نطاق_مفرد_cmd = string.char(0x55, 0xAA, 0xAA, 0x88, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x84) -- أمر نطاق واحد

-- إرسال أمر كل 1000 مللي ثانية (1 هرتز)
الدالة send_command()
    منفذ_مسلسل:اكتب(أمر_نطاق_أحادي_Cmd)
    gcs:إرسال_نص (6, "SFA2000B: تم إرسال الأمر (1 هرتز)") -- السجل إلى المحطة الأرضية
    إرجاع send_command، 1000 - كرر كل 1 ثانية
إنهاء

-- بدء الحلقة
إرجاع send_command ()
				
			
  1. احفظ البرنامج النصي باسم sfa2000b_cmd.lua وانقر على “تحميل البرنامج النصي” (ستقوم وحدة التحكم في الطيران بتشغيله عند بدء التشغيل).
4.2 للنطاق المستمر (5 هرتز/10 هرتز)

لاستخدام الوضع المستمر لجهاز SFA2000B (على سبيل المثال، 10 هرتز للطائرات بدون طيار سريعة الحركة)، استبدل نطاق_فردي_مد بأمر مستمر:

  • أمر 5 هرتز: 55 AA B9 FF FF FF FF D4 (المجموع الاختباري = 0x55+0xAA+0xAA+0xB9+0xFF*4 = 0xD4)
  • أمر 10 هرتز: 55 AA C9 FF FF FF FF C4 (المجموع الاختباري = 0x55+0xAA+0xC9+0xFF*4 = 0xC4)
الخطوة 5: التحقق من صحة التكامل

بمجرد حفظ جميع الإعدادات، أعد تشغيل وحدة التحكم في الطيران وتحقق من تدفق البيانات بشكل صحيح.

5.1 التحقق من البيانات في الوقت الحقيقي في مخطط البعثة
  1. انتقل إلى الحالة علامة التبويب → ابحث عن قيمة “RangeFinder1”.
    • يجب أن تتطابق مع المسافة الفعلية للهدف (على سبيل المثال، 5.2 متر إذا كانت الطائرة بدون طيار على ارتفاع 5.2 متر فوق الأرض).
    • إذا أظهر “0” أو “NaN”، أعد فحص الأسلاك والمعلمات.
  2. للتأكيد المرئي، انتقل إلى بيانات الرحلة علامة التبويب → حدد “القرب” من القائمة المنسدلة.
    • إذا كانت الوحدة مُركّبة لأسفل (RNGFND1_ORIENT=25)، سترى تحديث المسافة “لأسفل” في الوقت الفعلي.
5.2 الاختبار الميداني (حاسم!)
قبل الرحلة:
  1. ضع الطائرة بدون طيار على ارتفاع 5 أمتار فوق سطح مستوٍ (مثل أرضية خرسانية).
  2. تأكد من أن قيمة RangeFinder1 تقرأ حوالي 5.0 م (الخطأ ± 0.5 م، وفقًا لمواصفات SFA2000B).
  3. حرّك الطائرة بدون طيار لأعلى/لأسفل ببطء - تأكد من تحديث المسافة بسلاسة (لا قفزات > 1 متر).

الأسئلة الشائعة: المشكلات الشائعة والحلول

س1: لا تعرض وحدة التحكم في الطيران بيانات RangeFinder، ولكن SFA2000B يعمل مع محول USB-TTL.
A1: على الأرجح خطأ في الأسلاك أو المعلمات:
 
  • تحقق مما إذا كان TX/RX معكوسًا (وحدة التحكم في الطيران TX → SFA2000B RXD؛ وحدة التحكم في الطيران RX → SFA2000B TXD).
  • تحقق مسلسل2_بروتوكول2_بروتوكول=23 (وليس 1 ل MAVLink) و CUST_HEADER1=0x55CUST_HEADER2=0xAA.
  • تأكد من تحميل النص البرمجي Lua (تحقق من علامة التبويب “الرسائل” في مخطط المهمة بحثًا عن “SFA2000B: تم إرسال الأمر”).
س2: بيانات المسافة متقلبة (على سبيل المثال، 5 م ← 12 م ← 3 م).
A2: التداخل الكهرومغناطيسي أو مشاكل الطاقة
 
  • استبدل الأسلاك غير المحمية بأسلاك محمية (قم بتأريض الدرع إلى GND لوحدة تحكم الطيران).
  • استخدم وحدة طاقة خارجية 3.3 فولت/1 أمبير (قد يكون منفذ 3.3 فولت لوحدة التحكم في الطيران غير مستقر تحت الحمل).
  • نظف النافذة البصرية لكاميرا SFA2000B بقطعة قماش خاصة بالعدسة (يتسبب الغبار في حدوث أخطاء في الانعكاس).
س3: يُرجع SFA2000B الحالة 0 (فشل: 55 aa 88 88 00 ff ff ff ff ff yy).
A3: شروط النطاق غير صالحة:
 
  • الهدف في المنطقة العمياء للوحدة النمطية (≤3 م) - قم بتحريك الطائرة بدون طيار بعيدًا.
  • يتمتع الهدف بانعكاسية منخفضة (مثل الأشجار والمياه) - اختبرها بجدار خرساني.
  • يتعرض ضوء الشمس بشكل غير مباشر إلى جهاز الاستقبال الخاص بالوحدة - قم بحماية العدسة أو اختبرها في الظل.
س4: هل يمكنني استخدام SFA2000B لتجنب العوائق (وليس فقط تثبيت الارتفاع)؟
A4: نعم! تغيير اتجاه التركيب:
 
  • مجموعة rngfnd1_orient=0 (إلى الأمام) أو 1 (إلى الوراء) في المعلمات.
  • استخدم أمر تحديد المدى المستمر (5 هرتز/10 هرتز) في نص Lua النصي لتحديثات أسرع.
  • الإقران مع ميزة “تجنب العقبات” في ArduPilot (تمكين التمكين_التفادي_التفادي=1).

الملاحظات الختامية

SFA2000B هو جهاز تحديد مدى قوي للطائرات بدون طيار، ولكن بروتوكوله المخصص يتطلب تكوينًا دقيقًا للعمل مع ArduPilot. من خلال اتباع هذا الدليل - اختبار الوحدة أولاً، وتوصيل الأسلاك بعناية، وتكوين المعلمات خطوة بخطوة - ستحصل على بيانات موثوقة عن المسافة لتثبيت الارتفاع أو تجنب العوائق أو رسم الخرائط.

إذا واجهت مشاكل مستمرة، اتصل بـ

مجتمع ArduPilotالمنتديات (مساعدة الخبراء في البرامج الثابتة/المعلمات).

شاركنا حبك

اترك ردّاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *