الجمعة، 26 يونيو، 2015

VK16E SRIF 3 Gmouse GPS


نظام التموضوع العالمي VK16E gps




VK16E  هو موديول ينتمي لعائلة الدارات المستقبلة لبيانات الأقمار الصناعية الخاصة بنظام التموضع العالمي GPS تتميز بسهولة استخدامها و برمجته .

من أهم مميزاته هو سعره المنخفض و زمن تشغيل في أقل من دقيقة واحدة .


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

سنحتاج في هذه التجربة إلى :
1)بطاقة أردوينو
2) GPS 
VK16E
3)لوحة توصيل BreadBoard
4)اسلاك توصيل jumper






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


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

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

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

القسم الأول : 
يمكنك استخدام لوحة أردوينو "كما سأفعل انا ادناه " او بأمكانك استخدام Serial Adapter مثل FTDI232 , CP2102 و غيرها , في حال استعمال Serial Adapter يمكنك الأنتقال مباشرة للخطوة الثالثة مع توصيل Serial Adapter بنفس الطريقة التي سنوصل فيها الأردوينو و ال GPS في هذا القسم.

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

void loop() 
{
}


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


في حال استخدام Serial adapter مثل FTDI يجب توصيله بنفس الطريقة اعلاه .



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






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





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





الجزء الثاني : البرمجة بواسطة الأردوينو :

في هذا الجزء سيقوم الأردوينو بعمل تحليل للبيانات القادمة من ال gps دون الحاجة لاستخدام الحاسوب كما في القسم الأول من التجربة 

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




3) يجب عليك امتلاك مكتبة TinyGPS لاستخدام هذا الموديول , لتحميله من هنا .




4) نحمل البرنامج التالي :
#include <SoftwareSerial.h>
#include <TinyGPS.h>
/* 
VK-16E Gmouse GPS module test 
Connect :
VK-16E     ARDUINO
VCC    >>>  5V
Tx     >>>  D3
Rx     >>>  D4
GND    >>>  GND
written By : Mohannad Rawashdeh
http://www.genotronex.com
*/
TinyGPS VK16E;
const int RXpin = 3 ;// Connect with TX pin in GPS
const int TXpin = 4 ;// Connect with RX pin in GPS
SoftwareSerial Genotronex(RXpin,TXpin);
unsigned int  buadRateGPS= 9600 ; 
unsigned long buadRateUART= 115200 ; 
const unsigned int DelayGPStime = 1000 ; 
void setup()
{
  Serial.begin(buadRateUART);
  Genotronex.begin(buadRateGPS);
  Serial.println("VK16E GPS Test");
  Serial.print("TinyGPS library version :");
  Serial.println(TinyGPS::library_version());
  Serial.print("Mohannad Rawashdeh , ");
  Serial.println("www.genotronex.com");
}

void loop()
{
  bool newData = false;
  for (unsigned long start = millis(); millis() - start < DelayGPStime;)
  {
    while (Genotronex.available())
    {
      char c = Genotronex.read();
      // Serial.write(c); // uncomment this line if you want to see the GPS data flowing
      if (VK16E.encode(c)) // Did a new valid sentence come in?
        newData = true;
    }
  }

  if (newData)
  {
    float fLat, fLon;
    unsigned long age;
    VK16E.f_get_position(&fLat, &fLon, &age);
    int year;
    byte month, day, hour, minute, second, hundredths; 
    VK16E.crack_datetime(&year, &month, &day,&hour, &minute, &second, &hundredths);
    Serial.println("Latitude \t longitude \t SATELLITE \t   date \t    time");
    Serial.print(fLat,6);
    Serial.print("\t ");
    Serial.print(fLon, 6);
    Serial.print(" \t");
    Serial.print(VK16E.satellites());
    Serial.print("\t \t");
    Serial.print(day);
    Serial.print("/");
    Serial.print(month);
    Serial.print("/");
    Serial.print(year);
    Serial.print(" \t");
    Serial.print(hour);
    Serial.print(":");
    Serial.print(minute);
    Serial.print(":");
    Serial.println(second);
  }  
}




بعدها تستطيع فتح نافذة السيريال و قراءة البيانات الخاصة بنظام التموضع العالمي . 



ِشرح البرنامج : 

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


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

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


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





7 التعليقات :

  1. أزال المؤلف هذا التعليق.

    ردحذف

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