راه اندازی ساعت و تاریخ با ماژول GPS و آردوینو
محتویات
سلام. راه اندازی ساعت با ماژول GPS و آردوینو + آموزش کامل را آماده کردیم.
پروژه تاریخ و ساعت با ماژول جی پی اس و آردوینو
بسیاری از ماهواره های GPS در اطراف زمین وجود دارند که برای تهیه مکان دقیق هر چیزی استفاده می شوند. این ماهواره ها در کنار مختصات موقعیت مکانی (طول و عرض جغرافیایی)، داده های دیگری مانند زمان ، تاریخ ، ارتفاع ، زاویه و … را نیز در اختیار ما قرار می دهند. در این پروژه آردوینو میخواهیم با استفاده از داده های زمان و تاریخ دریافتی از ماهواره های جی پی اس، یک ساعت مبتنی بر GPS درست کنیم. این نوع ساعت بسیار دقیق است و داده های زمان را دقت میلی ثانیه ارائه میدهد.
یک ماهواره GPS زمان و تاریخ را در زمان (UTC) فراهم می کند، بنابراین ما باید آن را تبدیل کنیم. برای تبدیل به وقت ایران، باید 3:30 به زمان جهانی اضافه کنیم.
پیشنهاد میکنم پروژه ردیاب GPS با آردوینو را مشاهده کنید.
ماژول GPS چطور ساعت و تاریخ را به ما میدهد ؟
ماژول GPS داده های مربوط به موقعیت را در به صورت لحظه ای می فرستد، و داده های زیادی را با فرمت NMEA می فرستد (تصویر زیر). فرمت NMEA شامل چند جمله است که ما در آن فقط به یک جمله نیاز داریم. این جمله از $ GPGGA شروع می شود و حاوی مختصات ، زمان و سایر اطلاعات مفید است.
می توانیم با شمارش کاما (,) در رشته ، مختصات را از رشته $ 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 نشان می دهد.
پین های داده D4، D5، D6، D7 از ال سی دی کاراکتری به پین 5 ، 4 ، 3 ، 2 آردوینو شماره وصل می شوند. و پین فرمان RS و EN از LCD به ترتیب به پین 7 و 6 آردوینو وصل شده اند. در اینجا ما از ماژول GPS SKG13BL استفاده کرده ایم که با سرعت 9800 bps کار می کند. پس آردوینو را با استفاده از عملکرد “Serial.begin (9800)” در نرخ baud 9800 bps تنظیم میکنیم.
قطعات مورد نیاز
- برد آردوینو Uno
- ماژول GPS SKG13BL
- ال سی دی کاراکتری 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 نمایش داده شده میشود.
موارد موجود در فایل : سورس کد ، شماتیک پروژه
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام تین پروژه بدون اینتر نت هست؟!؟
و اینکه برق چند ولت باید استفاده کرد؟!؟
سلام عزیز
بله بدون اینترنت هست
میتوانید با کابل USB برد را تغذیه کنید یا یک آداپتور 12 ولت به جک آداپتور برد متصل کنید.
سلام چطور میشه تاریخ رو شمسی کرد
سلام عزیز
از کتابخانه DateConvLight استفاده کنید
آیا میشه با ال ای دی یک السیدی ساخت و بعد روی آن نمایش داد
مبشه حالت تابلو روان ایجاد کرد