استخراج خط العرض وخط الطول من إشارة GPS في أردوينو

استخراج خط العرض وخط الطول من إشارة GPS في أردوينو

في هذا الدرس سنتعلّم كيفية استخراج بيانات خط العرض وخط الطول من إشارة GPS باستخدام أردوينو ووحدة GPS Ublox NEO-6M. هذا المشروع مفيد بشكل خاص للتطبيقات التي تتطلب تتبّع الموقع، مثل الروبوتات أو الملاحة في الهواء الطلق. بنهاية هذا الدرس سيكون لديك برنامج عملي يقرأ بيانات GPS ويطبع الإحداثيات على المنفذ التسلسلي.

قبل أن نتعمق في التفاصيل، قد ترغب في الرجوع إلى الفيديو المرفق لمزيد من التوضيح حول التوصيلات وتنفيذ الكود (في الفيديو عند 00:00).

شرح الأجهزة

المكوّن الرئيسي لهذا المشروع هو وحدة GPS Ublox NEO-6M. صُمِّمت هذه الوحدة لتوفير بيانات تحديد المواقع الدقيقة باستخدام إشارات من أقمار نظام GPS. يمكنها استقبال إشارات من عدة أقمار اصطناعية في آنٍ واحد، مما يتيح تتبّع الموقع بدقة. تتواصل الوحدة مع لوحة Arduino عبر الاتصال التسلسلي، مما يجعل دمجها في مشاريع متنوعة أمراً يسيراً.

بالإضافة إلى وحدة GPS، ستحتاج إلى لوحة أردوينو لمعالجة بياناتها. ستقرأ لوحة الأردوينو البيانات المرسلة من وحدة GPS وتستخرج قيم خط العرض وخط الطول لاستخدامها لاحقًا. تعمل وحدة GPS عادةً بجهد 5V، وتوفر خرجًا تسلسليًا يمكن للأردوينو قراءته عبر دبوس RX الخاص به.

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

الشركة المصنعةيو-بلوكس
رقم القطعةNEO-6M
جهد المنطق/الإدخال والإخراج3.3 فولت
جهد التغذية3.0 إلى 5.5 فولت
تيار الإخراجأقل من أو يساوي 50 mA
حساسية GPS-165 ديسيبل ميلي واط
درجة حرارة التشغيل-40 إلى 85 °C
معدل التحديث1 هرتز (افتراضي)
حزمة25 × 35 × 4 مم
ملاحظات / متغيراتتتوفر تكوينات متنوعة

  • تأكد من توصيل وحدة GPS بمصدر طاقة مستقر (3.0 إلى 5.5 فولت).
  • استخدم مكتبة مناسبة لتحليل بيانات GPS
  • احرص على إبقاء الهوائي خالٍ من العوائق لتحسين استقبال القمر الصناعي.
  • تحقق من معدل البود لوحدة GPS؛ عادةً ما تعمل بسرعة 9600 بود.
  • ضع في اعتبارك استخدام مكثف لتنعيم الطاقة إذا كانت وحدة GPS غير مستقرة.

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

Arduino wiring for Neo-6M GPS module
Arduino wiring for Neo-6M GPS module

لتوصيل وحدة GPS NEO-6M بأردوينو، ابدأ بتوصيل دبوس VCC في وحدة GPS بدبوس 5V على الأردوينو. بعد ذلك، وصل دبوس GND في وحدة GPS بدبوس الأرضي (GND) في الأردوينو. ستتواصل وحدة GPS مع الأردوينو باستخدام دبابيس TX وRX. وصل دبوس TX في وحدة GPS بدبوس RX (عادةً الدبوس 0) على الأردوينو.

إذا كنت تستخدم لوحة أردوينو ذات دبابيس مخصصة لـ I2C، فتأكد من توصيل دبوسي SDA وSCL بشكل مناسب (عادةً A4 لـ SDA وA5 لـ SCL على لوحات أردوينو القياسية). بعد التوصيل، تحقق مرة أخرى من جميع الوصلات للتأكد من أنها محكمة وموجهة بشكل صحيح.

أمثلة على الشيفرة وشرح تفصيلي

إليك مقتطف قصير من الشيفرة لتهيئة الاتصال التسلسلي وإعداد سلسلة الإدخال لبيانات GPS:

void setup() {
    Serial.begin(9600);
    inputString.reserve(200);
}

يقوم هذا الكود بتهيئة الاتصال التسلسلي بمعدل البود 9600 ويخصص مساحة لسلسلة بيانات GPS الواردة.

بعد ذلك، دعونا نلقي نظرة على الجزء من الكود الذي يعالج بيانات GPS الواردة ويستخرج خط العرض وخط الطول:

if (BB == signal) {
    String LAT = inputString.substring(7, 17);
    String LON = inputString.substring(20, 31);
    Serial.println(LAT);
    Serial.println(LON);
}

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

أخيرًا، يتضمن الكود قسمًا للتعامل مع البيانات الجديدة الواردة عبر الاتصال التسلسلي:

void serialEvent() {
    while (Serial.available()) {
        char inChar = (char) Serial.read();
        inputString += inChar;
        if (inChar == '\\n') {
            stringComplete = true;
        }
    }
}

تقرأ هذه الدالة الأحرف الواردة من المنفذ التسلسلي وتضيفها إلىinputString. بمجرد اكتشاف حرف السطر الجديد، يقوم بتعيين الـstringCompleteتعيين العلم إلى true، مما يشير إلى أنه تم استلام سلسلة بيانات كاملة.

عرض توضيحي / ما المتوقع

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

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

الطوابع الزمنية للفيديو

  • 00:00- مقدمة
  • 02:30- تعليمات الأسلاك
  • 05:00- شرح الكود
  • 08:15- عرض توضيحي لوظائف نظام تحديد المواقع العالمي (GPS)

الصور

GPS antenna
GPS antenna
GPS module with antenna
GPS module with antenna
GPS modules
GPS modules
Arduino wiring for Neo-6M GPS module
Arduino wiring for Neo-6M GPS module
3-Extract latitude and longitude from a GPS signal in an Arduino NEO-6M
اللغة: C++
تم النسخ!

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

لا توجد موارد حتى الآن.

ملفات📁

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