پروژه الکترونیکپروژه های آردوینوپروژه های تاریخپروژه های ساعت

راه اندازی ساعت و تاریخ با ماژول GPS و آردوینو + آموزش کامل

سلام. راه اندازی ساعت با ماژول GPS و آردوینو + آموزش کامل را آماده کردیم.

پروژه تاریخ و ساعت با ماژول جی پی اس و Arduino

بسیاری از ماهواره های GPS در اطراف زمین وجود دارند که برای تهیه مکان دقیق هر چیزی استفاده می شوند. این ماهواره ها در کنار مختصات موقعیت مکانی (طول و عرض جغرافیایی)، داده های دیگری مانند زمان ، تاریخ ، ارتفاع ، زاویه و … را نیز در اختیار ما قرار می دهند. در این پروژه آردوینو میخواهیم با استفاده از داده های زمان و تاریخ دریافتی از ماهواره های جی پی اس، یک ساعت مبتنی بر GPS درست کنیم. این نوع ساعت بسیار دقیق است و داده های زمان را دقت میلی ثانیه ارائه میدهد.

یک ماهواره GPS زمان و تاریخ را در زمان (UTC) فراهم می کند، بنابراین ما باید آن را تبدیل کنیم. برای تبدیل به وقت ایران، باید 3:30 به زمان جهانی اضافه کنیم.

ماژول GPS چطور ساعت و تاریخ را به ما میدهد ؟

ماژول GPS داده های مربوط به موقعیت را در به صورت لحظه ای می فرستد، و داده های زیادی را با فرمت NMEA می فرستد (تصویر زیر). فرمت NMEA شامل چند جمله است که ما در آن فقط به یک جمله نیاز داریم. این جمله از $ GPGGA شروع می شود و حاوی مختصات ، زمان و سایر اطلاعات مفید است.

فرمت NMEA

می توانیم با شمارش کاما (,) در رشته ، مختصات را از رشته $ GPGGA استخراج کنیم.

حتما ببینید :  آموزش ساخت ردیاب GPS با برد آردوینو و شیلد LoRa (پروژه IoT ردیابی وسایل و افراد)

فرمت NMEA چیست ؟

در زیر یک رشته GPGGA $ به همراه توضیحات آن آورده شده است :

$GPGGA,104534.000,7791.0381,N,06727.4434,E,1,08,0.9,510.4,M,43.9,M,,*47
$GPGGA,HHMMSS.SSS,latitude,N,longitude,E,FQ,NOS,HDP,altitude,M,height,M,,checksum data
واحدتوضیح
$GPGGAفرمت اطلاعات موقعیت جهانی
HHMMSS.SSSزمان بر حسب ساعت ، دقیقه ، ثانیه و میلی ثانیه
Latitudeعرض جغرافیایی
Nجهت N= شمال و S= جنوب
Longitudeعرض جغرافیایی
Eجهت E= شرق و W= غرب
FQکیفیت اطلاعات
NOSشماره ماهواره های استفاده شده
HDPدقت افقی
Altitudeارتفاع بر حسب متر از سطح دریا
Mمتر
Heightارتفاع
Checksumچک کردن اطلاعات

 

توضیحات مدار پروژه

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

پروژه تاریخ و ساعت با ماژول جی پی اس و Arduino

پین های داده D4، D5، D6، D7 از ال سی دی کاراکتری به پین 5 ، 4 ، 3 ، 2 آردوینو ​​شماره وصل می شوند. و پین فرمان RS و EN از LCD به ترتیب به پین ​​7 و 6 آردوینو وصل شده اند.  در اینجا ما از ماژول GPS SKG13BL استفاده کرده ایم که با سرعت 9800 bps کار می کند. پس آردوینو را با استفاده از عملکرد “Serial.begin (9800)” در نرخ baud 9800 bps تنظیم میکنیم.

قطعات مورد نیاز

  1. برد آردوینو Uno
  2. ماژول GPS SKG13BL
  3. ال سی دی کاراکتری 16*2

توضیحات برنامه نویسی پروژه

کد کامل پروژه در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا قسمت های مهم کد را توضیح میدهیم.

ابتدا کتابخانه ها را فراخوانی میکنیم و پین های ارتبط سریال با ماژول جی پی اس و ارتباط با ال سی دی را تعریف میکنیم. همچنین برخی از متغیر ها را نیز برای ذخیره داده ها تعریف میکنیم. با استفاده از کتابخانه Softwareserial ما ارتباط بین پین های Rx و Tx ماژول GPS و پین های 10 و 11 آردوینو را برقرار میکنیم. به طور پیش فرض از پین 0 و 1 آردوینو برای ارتباط سریال استفاده می شود اما با استفاده از کتابخانه SoftwareSerial می توان ارتباط سریال را روی سایر پین های دیجیتال آردوینو امکان پذیر کرد.

#include<LiquidCrystal.h> // کتابخانه ال سی دی
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // پین های ال سی دی

#include <SoftwareSerial.h> // کتابخانه ارتباط سریال
SoftwareSerial Serial1(10, 11); // RX, TX ارتباط سریال
... ....
.... ....

سپس یک پیام خوش آمد را نمایش میدهیم و مقادیر زمان و تاریخ را دریافت و استخراج میکنیم.

سپس زمان و تاریخ را از رشته دریافت شده استخراج می کنیم.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.
while(x<str_lenth)
    {
     if(str[x]==',')
     comma++;
      if(comma==1)
      {
        x++;
        UTC_hour+=str[x++];
        ... ....
        .... ....

و سپس زمان و تاریخ را به اعشار تبدیل کرده و آن را به زمان تهران تغییر میدهیم. (UTC +3: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();
... ....
.... ....

و در آخر زمان با استفاده از عملکرد lcd.print بر روی LCD نمایش داده شده میشود.

موارد موجود در فایل : سورس کد ، شماتیک پروژه

[post_shop]

دانلود فایل های پروژه

[/post_shop] [lrm_form default_tab=”register” logged_in_message=””]

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن