آموزش آردوینوپروژه های آردوینو

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

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

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

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

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

پیشنهاد میکنم پروژه ردیاب GPS با آردوینو را مشاهده کنید.

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

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

فرمت NMEA

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

فرمت 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

اتصالات مدار پروژه ساعت 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 نمایش داده شده میشود.

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

5 (7 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

6 نظر

  1. سلام تین پروژه بدون اینتر نت هست؟!؟
    و اینکه برق چند ولت باید استفاده کرد؟!؟

    1. سلام عزیز
      بله بدون اینترنت هست
      میتوانید با کابل USB برد را تغذیه کنید یا یک آداپتور 12 ولت به جک آداپتور برد متصل کنید.

    1. سلام عزیز
      از کتابخانه DateConvLight استفاده کنید

  2. آیا میشه با ال ای دی یک ال‌سی‌دی ساخت و بعد روی آن نمایش داد

    1. مبشه حالت تابلو روان ایجاد کرد

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

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