رباتیک و هوافضا

ساخت ساعت با استفاده از آردوینو و ماژول جی پی اس

ساخت ساعت با استفاده از آردوینو و ماژول جی پی اس

به نام خدا

پروژه ی ساخت ساعت با استفاده از آردوینو و ماژول جی پی اس

ساخت ساعت با استفاده از آردوینو و ماژول جی پی اس

اطراف زمین تعداد زیادی ماهواره ی جی پی اس وجود دارند. وظیفه ی آن ها تعیین دقیق مختصات هر نقطه از زمین می باشد. این ماهواره ها علاوه بر مختصات ، زمان و تاریخ هر نقطه را نیز در اختیار کاربر قرار می دهند.  ما در این پروژه با استفاده آردوینو و ماژول GPS ساعت دیجیتالی میسازیم که هم زمان و تاریخ را نشان می دهد. این ساعت با دقت بالای یک میلیونیوم ثانیه کار می کند.

قطعات مورد نیاز برای پروژه ی ساخت ساعت با استفاده از آردوینو و ماژول جی پی اس :

آردوینو یونو

ماژول جی پی اس

ال سی دی

سیم برد بورد

منبع تغذیه

 

شرح کار :

ماژول جی پی اس داده ها را به فرمت NMEA ارسال می کند. در زیر یک تصویر از داده های خروجی ماژول را مشاهده می کنید. داده ای به فرمت NMEA دارای چندین جمله است که ما به دقیقا به یک قسمت از آن برای استخراج تاریخ و زمان نیاز داریم. این قسمت با $GPRMC شروع می شود که شامل مختصات ، زمان و دیگر اطلاعات ارزشمند است. این قسمت دارای ۷۰ کاراکتر است. 

بیشتر بخوانید...  راه اندازی سنسور MPU9250

 

 

ساخت ساعت با استفاده از آردوینو و ماژول جی پی اس

 

همانطور که مشاهده می شود این جمله شامل تاریخ ، زمان ، سرعت و … می باشد.

$GPRMC,123519.000,A,7791.0381,N,06727.4434,E,022.4,084.4,230394,003.1,W*6A
$GPRMC,HHMMSS.SSS,A,latitude,N,longitude,E,speed,angle,date,MV,W,CMD

 

 

Identifier

Description

RMC

Recommended Minimum sentence C

HHMMSS.SSS

Time in hour minute seconds and milliseconds format.

A

Status // A=active and V= void

Latitude

Latitude 49 deg. 16.45 min. North

N

Direction N=North, S=South

Longitude

Longitude(Coordinate)

E

Direction E= East, W=West

Speed

speed in knots

Angle

Tracking angle in degrees

Date

DATE in UTC

MV

Magnetic Variation

W

Direction of variation E/W

CMD (*6A)

Checksum Data

ما برای استخراج داده های زمان و تاریخ می توانیم تعداد کاما ها را در رشته ی $GPRMC  بشماریم.  با کمک آردوینو و برنامه نویسی این رشته پیدا  و به صورت آرایه ذخیره می شود. سپس زمان به فرم ۲۴ ساعتی بعد از یک کاما و تاریخ بعد از نه کاما قابل مشاهده است.

ماهواره جی پی اس تاریخ و ساعت را بر اساس ساعت جهانی (UTC)  ارائه می کند که بر اساس موقعیت ما باید مقداری به آن اضافه و یا کم کنیم. در اینجا برای موقعیت هندوستان ۵:۳۰ را به آن اضافه کرده ایم.

شماتیک مدار:

پین Txماژول گیرنده ی جی پی اس به پین ۱۰ آردوینو متصل است. زمین ماژول نیز به زمین آردوینو اتصال داده شده است. پین های ال سی دی مطابق شماتیک زیر به آردوینو وصل شده اند.

بیشتر بخوانید...  آموزش نصب وای فای بر روی رزبری پای به همراه تصویر

ساخت ساعت با استفاده از آردوینو و ماژول جی پی اس

 

دانلود کد پروژه :

دانلود فایل
#include<LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

#include <SoftwareSerial.h>
SoftwareSerial Serial1(10, 11); // RX, TX

char str[70];
char *test="$GPRMC";
int temp,i;

void setup() 
{
  lcd.begin(16,2);
  Serial1.begin(9600);
  lcd.setCursor(0,0);
  lcd.print("GPS Updated Clock");
  lcd.setCursor(0,1);
  lcd.print(" Circuit Digest ");
  delay(300);
}

void loop()
{
  serial1Event();
  if (temp) 
  {
    lcd.clear();
    int str_lenth=i;
    int x=0,comma=0;
    String UTC_hour="";
    String UTC_minut="";
    String UTC_second="";
    String UTC_date="";
    String UTC_month="";
    String UTC_year="";
    String str1="";
    while(x<str_lenth)
    {
     if(str[x]==',')
     comma++;
      if(comma==1)
      {
        x++;
        UTC_hour+=str[x++];
        UTC_hour+=str[x++];
        UTC_minut+=str[x++];
        UTC_minut+=str[x++];
        UTC_second+=str[x++];
        UTC_second+=str[x];
        comma=2;
      }

      if(comma==10)
      {
        x++;
          UTC_date+=str[x++];
          UTC_date+=str[x++];
          UTC_month+=str[x++];
          UTC_month+=str[x++];
          UTC_year+=str[x++];
          UTC_year+=str[x];
      }  
      x++;
    }

    int UTC_hourDec=UTC_hour.toInt();
    int UTC_minutDec=UTC_minut.toInt();
    int Second=UTC_second.toInt();
    int Date=UTC_date.toInt();
    int Month=UTC_month.toInt();
    int Year=UTC_year.toInt();

    int Hour=UTC_hourDec+5;
    if(Hour>23)
    {
     Hour-=24;
     Date+=1;
    }
    int Minut=UTC_minutDec+30;
    if(Minut>59)
    Minut-=60;
    
    
   // UTC_ind_zone_time
    lcd.clear();
    lcd.print("Date: ");
    lcd.print(Date);
    lcd.print("/");
    lcd.print(Month);
    lcd.print("/");
    lcd.print("20");
    lcd.print(Year);
     
     lcd.setCursor(0,1);
     lcd.print("Time: ");
     lcd.print(Hour);
    lcd.print(":");
    lcd.print(Minut);
    lcd.print(":");
    lcd.print(Second);
  //  delay(100);
    temp=0;
//    j=0;
    i=0;
    x=0;
    str_lenth=0;
//    k=0;
  }
 // delay(1000);
}

void serial1Event()
{
  while(1)
  {
   while (Serial1.available())            //checking serial data from GPS
   {
    char inChar = (char)Serial1.read();
     str[i]= inChar;                    //store data from GPS into str[]
     i++;
     if (i < 7)                      
     {
      if(str[i-1] != test[i-1])         //checking for $GPRMC sentence
      {
        i=0;
      }
     }
    if(i>65)
    {
     temp=1;
     break;
    }
  }
   if(temp)
    break;
  }
}

 

دیدگاه‌ها (0)

*
*