نظام التموضوع العالمي SKYLAB SKM53
SKYLAB SKM53 هو موديول ينتمي لعائلة الدارات المستقبلة لبيانات الأقمار الصناعية الخاصة بنظام التموضع العالمي GPS تتميز بسهولة استخدامها و برمجته .
سنقوم بهذه التجربة بتوصيله للاردوينو و أخذ البيانات الرئيسية القادمة من الأقمار الصناعية و عرضها على شاشة الحاسوب .
سنحتاج في هذه التجربة إلى :
1)بطاقة أردوينو
2) SKYLAB SKM53 GPS
3)لوحة توصيل BreadBoard
4)اسلاك توصيل jumper
بالغالب لا يعمل ال GPS داخل الأماكن المغلقه لذلك يفضل تجربته في مكان مفتوح حتى تحصل على نتائج صحيحة .
لا يوجد على هذا الموديول ضوء LED لاظهار ما اذا تم التزامن مع الاقمار الصناعية ام لا .
سأقسم هذه التجربة إلى قسمين :
1) سيتم برمجته بواسطة الحاسوب مع برمجية مخصصة من الشركة المصنعه لهذه القطعه
2) برمجته بواسطة الأردوينو .
القسم الأول :
1) نفتح برنامج الأردوينو و نحمل فيه برنامج فارغ Blank code كما يلي :
// Blank Code
//Mohannad Rawashdeh
void setup()
{
}
void loop()
{
}
2) نقوم بتوصيل ال GPS بالأردوينو كما يلي :
4) تأكد من ضبط سرعه الاتصال عند 9600 و من اختيار NEO 6 كما في الصورة .
الجزء الثاني : البرمجة بواسطة الأردوينو :
1)سنقوم باغلاق البرنامج السابق " مهم جداً " .
1)سنقوم باغلاق البرنامج السابق " مهم جداً " .
2)نقوم بتغيير التوصيل كما يلي :
3) يجب عليك امتلاك مكتبة TinyGPS لاستخدام هذا الموديول , لتحميله من هنا .
4) نحمل البرنامج التالي :
3) يجب عليك امتلاك مكتبة TinyGPS لاستخدام هذا الموديول , لتحميله من هنا .
4) نحمل البرنامج التالي :
بعدها تستطيع فتح نافذة السيريال و قراءة البيانات الخاصة بنظام التموضع العالمي .
ِشرح البرنامج :
طريقة كتابة البرنامج سهلة , بالبداية الجزء الخاص بالتحقق من وجود بيانات اتصال مع القمر الصناعي هو :
if (SKM53.encode(c)) // Did a new valid sentence come in?
newData = true;
في حالة وجود بيانات سيتم جعل المتغير newData صحيحياً و يتحقق الشرط الخاص بقراءة البيانات الخاصة بال gps
في هذه المتغيرات يتم حفظ القيم المطلوبة مثل الاحداثيات , الوقت , التاريخ :
float fLat, fLon; unsigned long age; int year; byte month, day, hour, minute, second, hundredths;
هنا هذين الأمرين يقومان بتخزين قيم الأحداثيات بالمتغيرات المخصصة لهما fLat,fLon
SKM53.f_get_position(&fLat, &fLon, &age);
يتم تخزين الوقت و التاريخ كلاً حسب وحدته من خلال هذا الأمر:
SKM53.crack_datetime(&year, &month, &day,&hour, &minute, &second, &hundredth