جدول المحتويات:
- الخطوة 1: كيف يعمل
- الخطوة 2: المكونات
- الخطوة 3: توصيل الوحدات الكهربائية
- الخطوة 4: الكود
- الخطوة 5: قاعدة البيانات وصفحة الويب
- الخطوة السادسة: اختبارات التنقل
- الخطوة 7: النهائي
فيديو: ☠WEEDINATOR☠ الجزء 2: الملاحة عبر الأقمار الصناعية: 7 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:41
ولد نظام الملاحة Weedinator!
روبوت زراعي متجول يمكن التحكم فيه عن طريق الهاتف الذكي.
… وبدلاً من مجرد الخوض في العملية المنتظمة لكيفية تجميعها ، اعتقدت أنني سأحاول شرح كيفية عملها بالفعل - من الواضح أنه ليس كل شيء ولكن الأجزاء الأكثر أهمية وإثارة للاهتمام. يرجى إعفاء التورية ، ولكن هذه هي الطريقة التي تتدفق بها البيانات بين الوحدات الفردية التي أجدها مثيرة للاهتمام ومقسمة إلى قاسمها الأدنى ، ينتهي بنا المطاف بـ "بتات" فعلية - أصفار وآحاد. إذا كنت مرتبكًا بشأن وحدات البت والبايت والأحرف والسلاسل ، فقد يكون الوقت الآن هو الوقت المناسب لتصبح غير مرتبك؟ سأحاول أيضًا عدم إرباك مفهوم مجرد قليلاً يسمى "إلغاء الخطأ".
يتميز النظام نفسه بما يلي:
- GPS / GNSS: Ublox C94 M8M (روفر وقاعدة)
- 9DOF Razor IMU MO بوصلة رقمية
- Fona 800H 2G GPRS خلوي
- شاشة TFT مقاس 2.2 بوصة
- اردوينو ديو "ماجستير"
- مختلف العبيد الأردوينو.
الغريب أن الكثير من أجهزة الملاحة الفضائية لا تحتوي على بوصلة رقمية مما يعني أنك إذا كنت متوقفًا وخسرًا ، فيجب عليك المشي أو القيادة في أي اتجاه عشوائي قبل أن يتمكن الجهاز من إظهار الاتجاه الصحيح من الأقمار الصناعية. إذا تاهت في غابة كثيفة أو موقف سيارات تحت الأرض ، فأنت محشو!
الخطوة 1: كيف يعمل
في الوقت الحاضر ، يتم تحميل زوج بسيط من الإحداثيات من هاتف ذكي أو كمبيوتر ، ثم يقوم برنامج Weedinator بتنزيله. ثم يتم تفسيرها إلى عنوان بالدرجات ومسافة للسفر بالملليمتر.
يتم استخدام GPRS fona للوصول إلى قاعدة بيانات عبر الإنترنت من خلال الشبكة الخلوية 2G واستقبال ونقل الإحداثيات إلى Arduino Due عبر Arduino Nano. The Due هو السيد ويتحكم في مجموعة من Arduinos مثل Slaves عبر I2C والحافلات التسلسلية. يمكن لـ Due أن يتفاعل مع البيانات الحية من Ublox و Razor ويعرض عنوانًا محسوبًا بواسطة أحد عبيد Arduino.
يعد جهاز تعقب الأقمار الصناعية Ublox ذكيًا بشكل خاص لأنه يستخدم إلغاء الأخطاء للحصول على إصلاحات دقيقة للغاية - انحراف إجمالي اسمي نهائي يبلغ حوالي 40 مم. تتكون الوحدة من زوج متطابق ، أحدهما ، "العربة الجوالة" ، يتحرك مع Weedinator ، والآخر ، "القاعدة" مثبتة على عمود في مكان ما بالخارج. يتم إلغاء الخطأ من خلال قدرة القاعدة على تحقيق إصلاح دقيق حقًا باستخدام كمية كبيرة من العينات بمرور الوقت. ثم يتم حساب متوسط هذه العينات للتعويض عن الظروف الجوية المتغيرة. إذا كان الجهاز يتحرك ، فمن الواضح أنه لن يكون قادرًا على الحصول على أي نوع من المتوسط وسيكون تحت رحمة البيئة المتغيرة تمامًا. ومع ذلك ، إذا كان الجهاز الثابت والمتحرك يعملان معًا ، طالما أنهما يستطيعان التواصل فيما بينهما ، فيمكنهما الاستفادة من كليهما. في أي وقت ، لا تزال الوحدة الأساسية بها خطأ ولكن لديها أيضًا إصلاحًا فائق الدقة محسوبًا مسبقًا حتى تتمكن من حساب الخطأ الفعلي عن طريق طرح مجموعة من الإحداثيات من مجموعة أخرى. ثم يرسل الخطأ المحسوب إلى العربة الجوالة عبر رابط راديو ، والذي يضيف الخطأ بعد ذلك إلى إحداثياته الخاصة ومرحبا المعزوفة ، لدينا إلغاء خطأ! من الناحية العملية ، يُحدث إلغاء الخطأ الفرق بين الانحراف الكلي 3 أمتار و 40 مم.
يبدو النظام الكامل معقدًا ، ولكنه في الواقع سهل البناء إلى حد ما ، سواء كان فضفاضًا على سطح غير موصل أو باستخدام ثنائي الفينيل متعدد الكلور الذي صممته ، والذي يسمح بتثبيت جميع الوحدات بإحكام. تم بناء التطوير المستقبلي على PCB ، مما يسمح بدمج مجموعة واسعة من Arduinos للتحكم في محركات التوجيه والحركة الأمامية وآلة CNC على متن الطائرة. سيتم دعم التنقل أيضًا من خلال نظام واحد على الأقل للتعرف على الأشياء باستخدام الكاميرات لاستشعار الأشياء الملونة ، على سبيل المثال كرات الغولف الفلورية ، والتي يتم وضعها بعناية في نوع من الشبكة - شاهد هذه المساحة!
الخطوة 2: المكونات
- Ublox C94 M8M (روفر وقاعدة) × 2 من
- 9DOF Razor IMU MO بوصلة رقمية
- Fona 800H 2G GPRS خلوي 1946
- اردوينو ديو
- اردوينو نانو × 2 من
- SparkFun Pro Micro
- Adafruit 2.2 "TFT IL1940C 1480
- PCB (انظر ملفات Gerber المرفقة) × 2 من
- مقاومات 1206 SMD صفر أوم × 12 من
- 1206 المصابيح × 24 من
يتم فتح ملف PCB ببرنامج "Design Spark".
الخطوة 3: توصيل الوحدات الكهربائية
هذا هو الجزء السهل - وهو سهل بشكل خاص مع ثنائي الفينيل متعدد الكلور الذي صنعته - ما عليك سوى اتباع الرسم التخطيطي أعلاه. يجب توخي الحذر لتجنب توصيل وحدات 3 فولت بـ 5 فولت ، حتى على الخطوط التسلسلية وخطوط I2C.
الخطوة 4: الكود
يهتم معظم الكود بالحصول على البيانات للتنقل في النظام بطريقة منظمة وغالبًا ما تكون هناك حاجة لتحويل تنسيقات البيانات من الأعداد الصحيحة إلى العوامات إلى السلاسل وإلى الأحرف ، الأمر الذي قد يكون مربكًا للغاية! سيتعامل البروتوكول "التسلسلي" فقط مع الأحرف وأثناء تشغيل I2سيتعامل بروتوكول C مع الأعداد الصحيحة الصغيرة جدًا ، ووجدت أنه من الأفضل تحويلها إلى أحرف ثم التحويل مرة أخرى إلى أعداد صحيحة في الطرف الآخر من خط النقل.
وحدة التحكم Weedinator هي أساسًا نظام 8 بت مع الكثير من Arduinos الفردية ، أو 'MCU's. عندما يتم وصف 8 بت على أنها أصفار ثنائية فعلية وأصفار ، يمكن أن تبدو كما يلي: B01100101 والتي ستساوي:
(1 × 2) + (2 ×)2+ (1 × 2)3+ (0x2)4+ (0x2)5+ (1 × 2)6+ (1 × 2)7+ (0x2)8 =
قيمة الرقم العشري | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
قيمة رقم ثنائي | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
= 101
والقيمة القصوى الممكنة هي 255…. لذا فإن أقصى عدد صحيح "بايت" يمكننا نقله عبر I2C تساوي 255 ، وهو أمر محدود للغاية!
على Arduino ، يمكننا نقل ما يصل إلى 32 حرف ASCII ، أو بايت ، في وقت واحد باستخدام I2C ، وهو أكثر فائدة ، وتشمل مجموعة الأحرف الأرقام والحروف وأحرف التحكم بتنسيق 7 بت على النحو التالي:
لحسن الحظ ، يقوم مترجم Arduino بكل أعمال التحويل من حرف إلى ثنائي في الخلفية ، لكنه لا يزال يتوقع النوع الصحيح من الأحرف لنقل البيانات ولن يقبل "سلاسل".
الآن عندما تصبح الأمور مربكة. يمكن التعبير عن الأحرف كأحرف مفردة باستخدام تعريف char أو كمصفوفة ذات بعد واحد من 20 حرفًا باستخدام char [20]. سلسلة Arduino تشبه إلى حد كبير مصفوفة الأحرف وهي حرفياً سلسلة من الأحرف غالبًا ما يفسرها الدماغ البشري على أنها "كلمات".
// يبني الحرف "مسافة الحرف":
بادئ السلسلة = "" ؛ DistanceString = البادئ + DistanceString ؛ int n = DistanceString.length () ؛ لـ (int aa = 0؛ aa <= n؛ aa ++) {DistanceCharacter [aa] = DistanceString [aa] ؛ }
يمكن للكود أعلاه تحويل سلسلة طويلة من الأحرف إلى مجموعة أحرف من الأحرف التي يمكن بعد ذلك نقلها عبر I2C أو المسلسل.
في الطرف الآخر من خط النقل ، يمكن تحويل البيانات مرة أخرى إلى سلسلة باستخدام الكود التالي:
DistanceString = DistanceString + c ؛ // سلسلة = سلسلة + حرف
لا يمكن تحويل مصفوفة الأحرف مباشرة إلى عدد صحيح ويجب أن تنتقل إلى تنسيق السلسلة أولاً ، ولكن الكود التالي سيتحول من سلسلة إلى عدد صحيح:
نتيجة int = (DistanceString).toInt () ؛
مسافة intMetres = نتيجة ؛
الآن لدينا عدد صحيح يمكننا استخدامه لإجراء العمليات الحسابية. يجب تحويل العوامات (الأرقام ذات الفاصلة العشرية) إلى أعداد صحيحة في مرحلة الإرسال ثم تقسيمها على 100 لمنزلتين عشريتين ، على سبيل المثال:
تعويم مسافةأمتريس = مسافة Mm / 1000 ؛
أخيرًا ، يمكن إنشاء سلسلة من مزيج من الأحرف والأعداد الصحيحة ، على سبيل المثال:
// هذا هو المكان الذي يتم فيه تجميع البيانات في حرف:
dataString = البادئ + "BEAR" + zbearing + "DIST" + zdistance ؛ // محدود بـ 32 حرفًا // سلسلة = سلسلة + أحرف + مجموعة أحرف + أحرف + عدد صحيح.
باقي الكود عبارة عن عناصر قياسية من Arduino يمكن العثور عليها في الأمثلة المختلفة في مكتبات Arduino. تحقق من مثال "أمثلة >>>> السلاسل النصية وأمثلة مكتبة" wire ".
إليك العملية الكاملة لإرسال واستقبال عدد عشري:
تحويل Float ➜ Integer ➜ String ➜ Character array….. ثم TRANSMIT character array from Master ➜➜
➜➜ استلم الشخصيات الفردية على Slave…. ثم تحويل الحرف سلسلة عدد صحيح ➜ تعويم
الخطوة 5: قاعدة البيانات وصفحة الويب
يظهر أعلاه هيكل قاعدة البيانات ويتم إرفاق ملفات كود php و html. تم إفراغ أسماء المستخدمين وأسماء قواعد البيانات وأسماء الجداول وكلمات المرور للأمان.
الخطوة السادسة: اختبارات التنقل
تمكنت من توصيل أداة تسجيل البيانات بلوحة التحكم في Weedinator عبر I2C والحصول على فكرة عن أداء تحديد المواقع عبر القمر الصناعي Ublox M8M:
في "البداية الباردة" ، التي يظهرها الرسم البياني الأخضر ، بدأت الوحدة مع الكثير من الأخطاء ، تشبه إلى حد بعيد نظام تحديد المواقع العالمي "العادي" ، وتناقص الخطأ تدريجيًا حتى ، بعد حوالي ساعتين ، حصلت على إصلاح RTK بين العربة الجوالة والقاعدة (تظهر على شكل الصليب الأحمر). خلال فترة الساعتين تلك ، تعمل الوحدة الأساسية باستمرار على بناء وتحديث متوسط قيمة لخط العرض وخط الطول وبعد الفاصل الزمني المبرمج مسبقًا تقرر أن لديها إصلاحًا جيدًا. يوضح الرسمان البيانيان التاليان السلوك بعد "بداية ساخنة" حيث حسبت الوحدة الأساسية بالفعل متوسطًا جيدًا. يزيد الرسم البياني العلوي عن فترة 200 دقيقة وفي بعض الأحيان يتم فقد الإصلاح وترسل العربة الجوالة رسالة NMEA إلى Weedinator بأن الإصلاح أصبح غير موثوق به مؤقتًا.
الرسم البياني الأزرق السفلي عبارة عن "تكبير" على المربع الأحمر في الرسم البياني العلوي ويظهر لقطة تمثيلية جيدة لأداء Ublox ، مع انحراف كلي قدره 40 مم ، وهو أكثر من كافٍ لتوجيه Weedinator إلى موقعه ، ولكن ربما ليس جيدًا بما يكفي لزراعة التربة حول النباتات الفردية؟
يُظهر الرسم البياني الثالث البيانات التي تم جمعها مع المسافة بين العربة الجوالة والقاعدة 100 متر - لم يتم اكتشاف أي خطأ إضافي - لم تؤثر المسافة الفاصلة على الدقة.
الخطوة 7: النهائي
موصى به:
محطة الطقس بمساعدة الأقمار الصناعية: 5 خطوات
محطة الطقس بمساعدة الأقمار الصناعية: هذا المشروع مخصص للأشخاص الذين يرغبون في جمع بيانات الطقس الخاصة بهم. يمكنه قياس سرعة الرياح واتجاهها ودرجة الحرارة ورطوبة الهواء. كما أنه قادر على الاستماع إلى الأقمار الصناعية الخاصة بالطقس التي تدور حول الأرض مرة كل 100 دقيقة. سأفعل
قرصنة موالف التلفزيون لقراءة صور الأرض من الأقمار الصناعية: 7 خطوات (بالصور)
قرصنة موالف التلفزيون لقراءة صور الأرض من الأقمار الصناعية: هناك الكثير من الأقمار الصناعية فوق رؤوسنا. هل تعلم أنه باستخدام جهاز الكمبيوتر الخاص بك ، وموالف التلفزيون ، وانتينا DIY البسيط ، يمكنك تلقي الإرسال منها؟ على سبيل المثال صور الأرض في الوقت الحقيقي. سأريك كيف. سوف تحتاج: - 2 ث
☠WEEDINATOR☠ الجزء 4: كود هندسة التوجيه التفاضلي: 3 خطوات
☠WEEDINATOR☠ الجزء 4: كود هندسة التوجيه التفاضلي: إذا كان لديك الوقت لمشاهدة الفيديو أعلاه ، فستلاحظ وجود بعض الأصوات الغريبة التي تسببها المحركات في توقف التوجيه بين الحين والآخر حيث يتنقل WEEDINATOR في 3 نقطة تحول. المحركات تتشويش بشكل أساسي ضد
☠WEEDINATOR☠ الجزء 3: بناء الهيكل: 8 خطوات (بالصور)
☠WEEDINATOR☠ الجزء 3: بناء الهيكل: الشتاء هو الوقت المثالي لبناء آلات ، خاصة عندما يتعلق الأمر باللحام والقطع بالبلازما حيث يوفر كلاهما قدرًا معقولاً من الدفء. إذا كنت تتساءل عن ماهية قاطع البلازما ، فاقرأ الإجراءات المتعمقة. إذا كنت
هوائي طبق الأقمار الصناعية المعاد توجيهه يلتقط إشارات Wi-Fi والهاتف الخلوي: 4 خطوات
هوائي طبق الأقمار الصناعية المعاد استخدامه يلتقط إشارات Wi-Fi والهاتف الخلوي: عندما انتقلت من سان أنطونيو إلى ولاية كارولينا الشمالية الريفية ، وجدت نفسي غير قادر تمامًا على الحصول على إشارة واي فاي أو هاتف خلوي حيث كنت أعيش. كانت الطريقة الوحيدة بالنسبة لي للحصول على إشارة خلوية هي القيادة لمسافة ميل في أي من الاتجاهين من حيث