هناك العديد من أقمار GPS الصناعية حول الأرض والتي تُستخدم لتحديد الموقع الدقيق لأي مكان. إلى جانب إحداثيات الموقع (خطوط الطول والعرض) ، فإنه يوفر أيضًا بيانات أخرى مثل الوقت والتاريخ والارتفاع وزاوية تتبع الاتجاه وما إلى ذلك. لقد تعلمنا بالفعل قراءة بيانات GPS هذه من القمر الصناعي باستخدام Arduino. لذلك سنقوم بعمل ساعة GPS باستخدام بيانات "الوقت والتاريخ" من القمر الصناعي GPS. ساعة GPS المحدثة دقيقة للغاية وتوفر بيانات الوقت الحقيقي بدقة تصل إلى أجزاء من الثانية.
المكونات:
- اردوينو اونو
- وحدة GPS
- 16x2 LCD
- توصيل الأسلاك
- مزود الطاقة
شرح العمل:
وحدة GPS ترسل البيانات بتنسيق NMEA ، راجع إخراج بيانات GPS في لقطة الشاشة أدناه. يتكون تنسيق NMEA من عدة جمل نحتاج فيها إلى جملة واحدة لاستخراج التاريخ والوقت. تبدأ هذه الجملة من $ GPRMC وتحتوي على الإحداثيات والوقت والمعلومات المفيدة الأخرى. هذا $ GPRMC يشار إلى الحد الأدنى الموصى به تحديدا بيانات النقل GPS /، وطول هذه السلسلة حوالي 70 حرفا. لقد استخرجنا مسبقًا سلسلة GPGGA $ في نظام تتبع المركبات للعثور على إحداثيات خطوط الطول والعرض. هنا هو إخراج GPS:
و $ GPRMC سلسلة يحتوي أساسا السرعة والوقت والتاريخ والموقف
GPRMC، 123519.000، A، 7791.0381، N، 06727.4434، E، 022.4،084.4،230394،003.1، W * 6 A $ GPRMC، HHMMSS.SSS، A ، خطوط العرض ، N ، خط الطول ، E ، السرعة ، الزاوية ، التاريخ ، MV ، W ، CMD
المعرف |
وصف |
RMC |
أوصى الحد الأدنى الجملة ج |
HHMMSS.SSS |
الوقت بتنسيق ساعة دقيقة ثانية وميلي ثانية. |
أ |
الحالة // A = نشط و V = باطل |
خط العرض |
خط العرض 49 درجة. 16.45 دقيقة شمال |
ن |
الاتجاه N = الشمال ، S = الجنوب |
خط الطول |
خط الطول (الإحداثيات) |
ه |
الاتجاه E = الشرق ، W = الغرب |
سرعة |
السرعة في عقدة |
زاوية |
زاوية التتبع بالدرجات |
تاريخ |
التاريخ بالتوقيت العالمي المنسق |
MV |
الاختلاف المغناطيسي |
دبليو |
اتجاه الاختلاف E / W |
CMD (* 6A) |
بيانات المجموع الاختباري |
يمكننا استخراج الوقت والتاريخ من سلسلة $ GPRMC عن طريق حساب الفواصل في السلسلة. بمساعدة Arduino والبرمجة ، نجد سلسلة $ GPRMC ونخزنها في مصفوفة ، ثم يمكن العثور على الوقت (تنسيق 24 ساعة) بعد فاصلة واحدة ويمكن العثور على التاريخ بعد تسع فاصلات. يتم حفظ الوقت والتاريخ في السلاسل.
يوفر القمر الصناعي لنظام تحديد المواقع العالمي (GPS) الوقت والتاريخ بالتوقيت العالمي المنسق (UTC) ، لذلك نحتاج إلى تحويله وفقًا لذلك. للتحويل وفقًا للتوقيت الهندي ، أضفنا 5:30 بتوقيت UTC ، حيث أن التوقيت الهندي يسبق التوقيت العالمي المنسق (UTC / GMT) بخمس ساعات ونصف الساعة.
مخطط الرسم البياني:
اتصالات الدوائر في Arduino GPS Clock بسيطة. يستخدم Arduino للتحكم في العملية برمتها ، حيث يتلقى بيانات GPS من القمر الصناعي من خلال وحدة GPS ، ويستخرج التاريخ والوقت من سلسلة $ GPRMC ويعرضها على شاشة LCD.
تتصل دبابيس البيانات D4 و D5 و D6 و D7 من شاشة LCD مقاس 16 × 2 بالدبوس رقم. يتم توصيل 5 و 4 و 3 و 2 من Arduino ودبوس الأمر RS و EN من LCD بالدبوس 7 و 6 من Arduino على التوالي. وحدة استقبال نظام تحديد المواقع العالمي (GPS) متصل بـ Rx pin 10 من Arduino. يرتبط رقم التعريف الشخصي الأرضي الخاص بـ Arduino و GPS ببعضهما البعض. هنا استخدمنا وحدة GPS SKG13BL ، تعمل بمعدل الباود 9800 بت في الثانية. تم تكوين Arduino أيضًا بمعدل 9800 bps للباود باستخدام الوظيفة "Serial.begin (9800)".
شرح البرمجة:
في جزء البرمجة أولاً ، نقوم بتضمين المكتبات وتحديد دبابيس للاتصال التسلسلي لشاشات الكريستال السائل والبرامج. حدد أيضًا بعض المتغيرات باستخدام المصفوفات لتخزين البيانات. باستخدام Software Serial Library هنا ، سمحنا بالاتصال التسلسلي على الدبوس 10 و 11 ، وجعلناهما Rx و Tx على التوالي. بشكل افتراضي ، يتم استخدام Pin 0 و 1 من Arduino للاتصال التسلسلي ولكن باستخدام مكتبة SoftwareSerial ، يمكننا السماح بالاتصال التسلسلي على دبابيس رقمية أخرى في Arduino
#تضمن
بعد ذلك ، قمنا بتهيئة الاتصال التسلسلي وشاشات الكريستال السائل في وظيفة الإعداد وأظهرنا رسالة ترحيب على شاشة LCD.
ثم قمنا باستخراج الوقت والتاريخ من السلسلة المستلمة.
بينما (x
ثم قم بتحويل الوقت والتاريخ إلى رقم عشري وتعديله إلى التوقيت الهندي (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt () ، int UTC_minutDec = UTC_minut.toInt () ، int الثانية = UTC_second.toInt () ، تاريخ int = UTC_date.toInt () ، شهر int = UTC_month.toInt () ،……………
ثم أخيرًا تم عرض الوقت والتاريخ على شاشة LCD باستخدام وظيفة lcd.print ، تحقق من الكود الكامل أدناه.