Arduino GPS Clock - Internet of Things

Arduino GPS Clock

Arduino GPS Clock

There are many GPS satellites around the Earth which are used to provide the exact location of any place. Along with the location coordinates (Latitude and Longitude), it also provide other data like time, date, altitude, direction tracking angle etc. We have already learned to read this GPS data from Satellite using Arduino. So we are going to make a GPS clock using the Time and Datedata from the GPS satellite. GPS Updated Clock is very accurate and provides the real time data with precision of milliseconds.

Components:
·         Arduino Uno
·         GPS Module
·         16x2 LCD
·         Connecting wires
·         Power supply

Working Explanation: 
GPS module sends the data in NMEA format, see the output of GPS data in below screenshot. NMEA format consist several sentences, in which we need one sentence to extract the Date and Time. This sentence starts from $GPRMC and contains the coordinates, time and other useful information. This $GPRMC is referred to Recommended minimum specific GPS/Transit data, and the length of this string is about 70 characters. We have previously extracted $GPGGA string in Vehicle Tracking System to find the Latitude and Longitude Coordinates. Here is the GPS output:


And $GPRMC string mainly contains velocity, time, date and position

$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
We can extract Time and Date from $GPRMC string by counting the commas in the string. With the help of Arduino and programming, we find $GPRMC string and stores it in an array, then Time (24 hours format) can be found after one comma and Date can be found after nine commas. Time and date are further saved in strings.
A GPS satellite provides Time and date in Coordinated Universal Time (UTC), so we need to convert it accordingly. To convert in according to Indian time, we have added 5:30 in UTC time, as Indian time is 5 and half hours ahead of UTC/GMT.

Circuit Diagram:
Circuit connections of Arduino GPS Clock are simple. Arduino is used to control the whole process, it receives the GPS data from satellite through GPS module, extracts the Date and Time from the $GPRMC string and shows it on LCD.
Data pins D4, D5, D6, D7 of 16x2 LCD are connected to pin no. 5, 4 , 3, 2 of Arduino  and command pin RS and EN of LCD are connected to pin 7 and 6 of Arduino respectively. GPS receiver Module Tx pin is connected to Rx pin 10 of Arduino. Ground PIN of Arduino and GPS are connected with each other. Here we have used SKG13BL GPS module, operating at 9800 bps baud rate. Arduino is also configured at 9800 bps baud rate by using function Serial.begin(9800)”.

Programming Explanation:
In programming part first we include libraries and define pins for LCD & software serial communication. Also define some variable with arrays for storing data. By using Software Serial Library here, we have allowed serial communication on pin 10 and 11, and made them Rx and Tx respectively. By default Pin 0 and 1 of Arduino are used for serial communication but by using SoftwareSerial library, we can allow serial communication on other digital pins of the Arduino
#include<LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

#include <SoftwareSerial.h>
SoftwareSerial Serial1(10, 11); // RX, TX
... ....
.... ....
After it we have initialized serial communication and LCD in setup function and showed a welcome message on LCD.
Then we have extracted time and date form the received string.
while(x<str_lenth)
    {
     if(str[x]==',')
     comma++;
      if(comma==1)
      {
        x++;
        UTC_hour+=str[x++];
        ... ....
        .... ....
And then convert time and date to decimal and modify it to Indian time (UTC +5:30)
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();
... ....
.... ....

  Demo & Code


Arduino GPS Clock Arduino GPS Clock Reviewed by XXX on สิงหาคม 27, 2560 Rating: 5

ไม่มีความคิดเห็น