الخميس، 18 يونيو، 2015

نظام التموضع العالمي NEO-6M

NEO-6M GPS 




 NEO-6M  هو موديول ينتمي لعائلة الدارات المستقبلة لبيانات الأقمار الصناعية الخاصة بنظام التموضع العالمي GPS تتميز بسهولة استخدامها و برمجتها اضافة لزمن تشغيل سريع .

تتميز هذه الدارة بوجود بطارية احتياطية , و ذاكرة فير قابلة للمسح كهربائياً EEPROM لتخزين الأعدادات الخاصة بال GPS , وتتميز بتقنية تمنع التشويش المقصود عليها Anti jamming technology , بالأضافة لدعمها اخراج البيانات ببروتوكولات مختلفه (UART , USB , SPI ) .



ما سنقوم به بهذه التجربة هي الحصول على بيانات المتعلقة بالاحداثيات الجغرافية , الوقت و التاريخ .



سنحتاج لتنفيذ هذه التجربة إلى : 

لوحة أردوينو 
الموديول NEO-6M 
اسلاك توصيل Jumper
لوحة توصيل BreadBoard



يجب الأنتباه لموضوع التغذية لمثل هذه الدارات اذ انها تعتمد على تغذية 3.3 فولت و اي فولتية أعلى من هذه الفولتية , سواءاً فولتية التغذية vcc او الفولتية المطبقة على المداخل و المخارج I/O 



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



سأقسم هذه التجربة إلى قسمين : 

1) سيتم برمجته بواسطة الحاسوب مع برمجية مخصصة من الشركة المصنعه لهذه القطعه 

2) برمجته بواسطة الأردوينو .

القسم الأول : 

1) نفتح برنامج الأردوينو و نحمل فيه برنامج فارغ Blank code كما يلي  : 
// Blank Code
//Mohannad Rawashdeh
void setup() 
{
}

void loop() 
{
}


2) نقوم بتوصيل ال GPS بالأردوينو كما يلي  :





3) نذهب لبرنامج U Center و نختار رقم المنفذ التسلسلي الخاص بالأردوينو .






4) تأكد من ضبط سرعه الاتصال عند 9600 و من اختيار NEO 6 كما في الصورة . 





5) بعدها نضغط Connect و نرى تحديث البيانات من الGPS على الشاشة  .



الجزء الثاني : البرمجة بواسطة الأردوينو :
1)سنقوم باغلاق البرنامج السابق " مهم جداً " .
2)نقوم بتغيير التوصيل كما يلي : 


3) نفتح برنامج الأردوينو و نتأكد من وجود مكتبه TinyGPS و وضعها بشكل صحيح في مسار المكتبات الخاصة بالأردوينو  - يمكنك تحميلها من الرابط -

4) استخدام المثال التالي وحمله على الأردوينو 








5) بعد تحميل البرنامج , تأكد من أن الضوء LED في الGPS يتوهج ببطء و افتح نافذة السيريال سترى بيانات ال GPS كما يلي  .







طريقة كتابة البرنامج سهلة , بالبداية الجزء الخاص بالتحقق من وجود بيانات اتصال مع القمر الصناعي هو :


 if (NEO6M.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 
    NEO6M.f_get_position(&fLat, &fLon, &age);

يتم تخزين الوقت و التاريخ كلاً حسب وحدته من خلال هذا الأمر:



 NEO6M.crack_datetime(&year, &month, &day,&hour, &minute, &second, &hundredth






13 التعليقات :

  1. عمل رائع تشكر عليه وبكامل السورس كود الخاص به

    وفقك الله اخي الغالي .... والى الامام

    ردحذف
  2. االسلام عليكم .
    اخي المبرمجة وين نجيبها او شو مبدئها

    ردحذف
    الردود
    1. اولاً حمّل المكتبه موجو الرابط بالمقال .
      الكود موجود عند النقطه 4
      يرجى قراءة المقال جيداص فالكود المصدري واضح

      حذف
  3. اتمنى اخباريةوامنى ارفاق رابط البرنامج وشكرا

    ردحذف
  4. السلام عليكم
    اخي عندي الموديول اول ما اوصل له الفولت يومض ومضه واحدة و بعدها ينطفئ شو المشكلة لو سمحت ؟

    ردحذف

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.