- مطلوبہ اجزاء:
- سرکٹ ڈایاگرام اور وضاحت: -
- GPS سے مقام کا ڈیٹا حاصل کرنا:
- پی آئی سی مائکروکانٹرولر کے ساتھ انٹرفیس GPS کے اقدامات: -
- کوڈ کی وضاحت:
GPS عالمی پوزیشننگ سسٹم کی شارٹ فارم ہے۔ یہ ایک ایسا نظام ہے جو درست بلندی ، طول بلد ، عرض البلد ، یو ٹی سی وقت اور بہت سی مزید معلومات فراہم کرتا ہے ، جو 2 ، 3 ، 4 یا اس سے زیادہ سیٹلائٹ سے لیا جاتا ہے۔ GPS سے اعداد و شمار کو پڑھنے کے ل we ، ہمیں کچھ مائکرو قابو پانے والے کی ضرورت ہے اور ہم نے ارڈینو اور راسبیری پائ کے ساتھ GPS کو پہلے ہی انٹرفیس کیا۔
ہم نے G7020 GPS ماڈیول کا انتخاب کیا ہے جو انڈر بلکس کے ذریعہ بنایا گیا ہے۔ ہم سیٹلائٹ سے کسی خاص مقام کا طول البلد اور عرض البلد حاصل کریں گے اور 16x2 کریکٹر LCD پر اسے ظاہر کریں گے۔ لہذا یہاں ہم مائیکرو چیپ کے ذریعہ پی آئی سی 16 ایف 877 اے مائکروکنٹرولر کے ساتھ GPS کو انٹرفیس کریں گے ۔
مطلوبہ اجزاء:
- Pic16F877A - PDIP40 پیکیج
- روٹی بورڈ
- پکیٹ ۔3
- 5V اڈاپٹر
- LCD JHD162A
- uBLOX-G7020 GPS ماڈیول
- پردییوں کو مربوط کرنے کے لئے تاروں
- 4.7k مزاحمتی
- 10 کٹ کا برتن
- 20 میگا ہرٹز کرسٹل
- 2 پی سیز 33 پی ایف سیرامک کیپسیٹرز
سرکٹ ڈایاگرام اور وضاحت: -
16x2 کردار LCD پورے PIC16F877A مائکروکانٹرولر میں منسلک ہے ، جس میں RB0 ، RB1 ، RB2 بالترتیب LCD پن سے جڑا ہوا ہے جو RS ، R / W ، اور E. RB4 ، RB5 ، RB6 اور RB7 LCD کے 4 پن D4 ، D5 کے پار جڑے ہوئے ہیں ، D6 ، D7۔ LCD 4 بٹ موڈ یا نبل موڈ میں منسلک ہے۔ PIC مائکروکانٹرولر کے ساتھ LCD انٹرفیس کرنے کے بارے میں مزید معلومات حاصل کریں۔
OSC1 اور OSC2 پن میں منسلک 33PF کے دو سیرامک سندارتر کے ساتھ 20MHz کا ایک کرسٹل آسیلیٹر۔ یہ مائکروکنٹرولر کو 20 میگا ہرٹز گھڑی کی مسلسل تعدد فراہم کرے گا۔
uBlox-G7020 GPS ماڈیول ، UART کا استعمال کرتے ہوئے ڈیٹا وصول اور منتقل کریں۔ PIC16F877A چپ کے اندر ایک USART ڈرائیور پر مشتمل ہے ، ہمیں یو ایس آر ٹی کے ذریعہ جی پی ایس ماڈیول سے ڈیٹا ملے گا ، لہذا مائکروکانٹرولر آر ایکس پن سے جی پی ایس کے ٹی ایکس پن پر کراس کنکشن بنایا جائے گا اور جی پی ایس کے ٹرانسمیٹ پن میں منسلک یو ایس ای آر ٹی پن موصول ہوگا۔
uBlox-G7020 میں پنوں کے لئے رنگین کوڈ ہے۔ مثبت یا 5V پن سرخ رنگ میں ہے ، منفی یا جی این ڈی پن سیاہ رنگ میں ہے اور ٹرانسمٹ پن نیلے رنگ میں ہے۔
میں نے یہ سب بریڈ بورڈ میں جوڑ دیا ہے۔
GPS سے مقام کا ڈیٹا حاصل کرنا:
آئیے دیکھیں کہ کس طرح یو ایس آر ٹی کا استعمال کرتے ہوئے جی پی ایس کو انٹرفیس کریں اور اس کا نتیجہ 16x2 کردار LCD میں دیکھیں۔
ماڈیول ڈیٹا کو ایک سے زیادہ تار میں 9600 بوڈ ریٹ پر منتقل کرے گا۔ اگر ہم ایک UART ٹرمینل کا استعمال کرتے ہیں جس میں 9600 بوڈ کی شرح ہوتی ہے ، تو ہم GPS کے ذریعہ موصول ہونے والا ڈیٹا دیکھیں گے۔
GPS ماڈیول ریئل ٹائم سے باخبر رہنے کی پوزیشن کا ڈیٹا NMEA فارمیٹ میں بھیجتا ہے (اوپر اسکرین شاٹ دیکھیں)۔ NMEA کی شکل میں متعدد جملے شامل ہیں ، جن میں چار اہم جملے ذیل میں دیئے گئے ہیں۔ NMEA کی سزا اور اس کے ڈیٹا فارمیٹ کے بارے میں مزید تفصیل یہاں پایا جاسکتا ہے۔
- $ جی پی جی جی اے: عالمی پوزیشننگ سسٹم فکس ڈیٹا
- $ GPGSV: دیکھنے میں GPS سیٹلائٹ
- $ GPGSA: GPS DOP اور فعال سیٹلائٹ
- $ جی پی آر ایم سی: تجویز کردہ کم از کم مخصوص GPS / ٹرانزٹ ڈیٹا
GPS ڈیٹا اور NMEA کے بارے میں مزید جانیں۔
یہ ڈیٹا جی پی ایس کے ذریعہ موصول ہوا جب 9600 باؤڈ ریٹ سے منسلک ہوتا ہے۔
$ جی پی آر ایم سی ، 141848.00 ، A ، 2237.63306 ، N ، 08820.86316 ، E ، 0.553 ، 100418 ،،، A * 73 $ GPVTG ،، T، M، 0.553، N، 1.024، K، A * 27 $ GPGGA، 141848.00، 2237.63306 ، N ، 08820.86316 ، E ، 1،03،2.56،1.9 ، M ، -54.2 ، M ،، * 74 $ GPGSA ، A ، 2،06،02،05 ،،،،،،،،، 2.75، 2.56،1.00 * 02 $ جی پی جی ایس وی ، 1،1،04،02،59،316،30،05،43،188،25،06،44،022،23،25،03،324، * 76 $ جی پی جی ایل، 2237.63306، ن، 08820.86316، ای، 141848.00 ، A ، A * 65
جب ہم کسی بھی مقام کی سراغ لگانے کے لئے جی پی ایس ماڈیول کا استعمال کرتے ہیں تو ہمیں صرف کوآرڈینیٹ کی ضرورت ہوتی ہے اور ہم اسے جی پی جی جی اے سٹرنگ میں ڈھونڈ سکتے ہیں ۔ صرف $ جی پی جی جی اے (گلوبل پوزیشننگ سسٹم فکس ڈیٹا) سٹرنگ زیادہ تر پروگراموں میں استعمال ہوتی ہے اور دوسرے ڈور کو نظرانداز کیا جاتا ہے۔
$ جی پی جی جی اے ، 141848.00،2237.63306 ، این ، 08820.86316 ، ای ، 1،03،2.56،1.9 ، ایم ، -54.2 ، ایم ، * 74
اس لائن کا کیا مطلب ہے؟
اس لائن کا مطلب ہے: -
1. اسٹرنگ ہمیشہ "$" نشان کے ساتھ شروع ہوتی ہے
2. جی پی جی جی اے کا مطلب عالمی پوزیشننگ سسٹم فکس ڈیٹا ہے
3. “،” کوما دو اقدار کے مابین علیحدگی کی نشاندہی کرتی ہے
4. 141848.00: GMT وقت بطور 14 (گھنٹہ): 18 (منٹ): 48 (سیکنڈ): 00 (ایم ایس)
5. 2237.63306 ، N: عرض البلد 22 (ڈگری) 37 (منٹ) 63306 (سیکنڈ) شمال
6. 08820.86316 ، ای: طول البلد 088 (ڈگری) 20 (منٹ) 86316 (سیکنڈ) وسطی
7. 1: مقدار 0 = غلط ڈیٹا ، 1 = درست ڈیٹا ، 2 = ڈی جی پی ایس طے کریں
8. 03: فی الحال دیکھے گئے سیٹلائٹ کی تعداد۔
9. 1.0: ایچ ڈی او پی
10. 2.56 ، M: اونچائی (میٹر میں سطح سمندر سے بلندی)
11. 1.9 ، ایم: جیوڈز کی اونچائی
12. * 74: چیکسم
لہذا ہمیں ماڈیول مقام یا جہاں واقع ہے ، کے بارے میں معلومات اکٹھا کرنے کے لئے نمبر 5 اور نمبر 6 کی ضرورت ہے۔
پی آئی سی مائکروکانٹرولر کے ساتھ انٹرفیس GPS کے اقدامات: -
- مائکروکونٹرولر کی تشکیلات مرتب کریں جس میں آسیلیٹر ترتیب موجود ہے۔
- ایل سی ڈی کے لئے مطلوبہ پورٹ مقرر کریں جس میں TRIS رجسٹر بھی شامل ہے۔
- GPS ماڈیول کو USART کا استعمال کرتے ہوئے مائکروکنٹرولر سے مربوط کریں۔
- 9600 باؤڈ ریٹ اور 4 بٹ موڈ کے ساتھ ایل سی ڈی کے ساتھ ، نظام کو یو ایسارٹ کو مستقل طور پر موصولہ موڈ میں شروع کریں۔
- عرض البلد اور طول البلد کی لمبائی پر منحصر ہے۔
- ایک وقت میں ایک حرف تھوڑا سا وصول کریں اور چیک کریں کہ آیا یہ $ سے شروع ہوا ہے یا نہیں۔
- اگر ceive وصول کریں تو یہ ایک تار ہے ، ہمیں جی پی جی جی اے ، اس 5 حروف اور کوما کو چیک کرنے کی ضرورت ہے۔
- اگر یہ جی پی جی جی اے ہے ، تو ہم وقت کو چھوڑ دیں گے ، اور عرض البلد اور طول البلد کی تلاش کریں گے ، جب تک N (نارتھ) اور ای (مشرق) موصول نہیں ہوتا ہے ، ہم طول البلد اور طول بلد کو دو حرف صف میں محفوظ کریں گے۔
- ہم LCD میں سرنی کو پرنٹ کریں گے۔
- صف کو صاف کریں۔
کوڈ کی وضاحت:
آئیے ایک لائن کے ذریعہ کوڈ لائن کو دیکھیں۔ پہلی چند لائنیں کنفیگریشن بٹس لگانے کے لئے ہیں جن کی وضاحت گزشتہ ٹیوٹوریل میں کی گئی تھی لہذا میں ان کو ابھی چھوڑ رہا ہوں۔ مکمل کوڈ اس ٹیوٹوریل کے آخر میں دیا گیا ہے۔
یہ پانچ لائنیں لائبریری ہیڈر فائلوں کو شامل کرنے کے ل and استعمال کی جاتی ہیں ، lcd.h اور eusart.h بالترتیب LCD اور USART کے لئے ہے۔ اور xc.h مائیکروکونٹرولر ہیڈر فائل کے لئے ہے۔
# شامل کریں
میں باطل اہم () تقریب، system_init () ؛ فنکشن کا استعمال ایل سی ڈی اور یو ایس آر ٹی کو شروع کرنے کے لئے کیا جاتا ہے۔
باطل اہم (باطل) { TRISB = 0x00؛ // آؤٹ پٹ سسٹم_نیت () کے طور پر مقرر کرنا ؛
lcd_init ()؛ اور EUSART_Intialize ()؛ دو لائبریریوں lcd.h اور eusart.h سے کہا جاتا ہے
باطل نظام_نیت (باطل) c lcd_init ()؛ // یہ ایل سی ڈی EUSART1_Initialize () کا آغاز کرے گا ؛ // اس سے Eusart کا آغاز ہوگا }
میں تھوڑی دیر کے لوپ ہم بلد اور عرض بلد بدلہ کر حاصل کرنے کے لئے GPGGA سٹرنگ کو توڑنے. ہمیں ایک وقت میں تھوڑا سا فائدہ ملتا ہے اور جی پی جی جی اے اسٹرنگ میں موجود انفرادی حرفوں سے اس کا موازنہ کرتے ہیں۔
ہم کوڈز کو توڑ دیتے ہیں جو ہمیں ملیں گے: -
آمدنی_ڈیٹا = EUSART1_ پڑھیں ()؛ // '$ GPGGA' ، / / * ------------------------------ تار کی جانچ پڑتال کریں جی پی جی جی اے لائن کو ڈھونڈنے کے مرحلہ وار- --------------------------- * / اگر (آمدنی والا_ڈیٹا == '$') {// GPS ڈیٹا کا پہلا بیان ایک سے شروع ہوتا ہے $ سائن انکرم_ڈیٹا = EUSART1_Read ()؛ // اگر پہلا اگر سچ بن جاتا ہے تو اگلے مرحلے میں اگر (آمدنی والا_ڈیٹا == 'جی') { آمدنی والا_ڈیٹا = EUSART1_Read ()؛ اگر (آمدنی والا_ڈیٹا == 'P')؛ r آمدن_داتا = EUSART1_ پڑھیں ()؛ اگر (آمدنی والا_ڈیٹا == 'جی')؛ r آمد کنندہ_ڈیٹا = EUSART1_ پڑھیں ()؛ اگر (آمدنی والا_ڈیٹا == 'جی') { آمدنی_ڈیٹا = EUSART1_ پڑھیں ()؛ اگر (آمدنی والا_ڈیٹا == 'اے') { آمدنی_ڈیٹا = EUSART1_Read ()؛ اگر (آمدنی والا_ڈیٹا == '،') {// پہلے ، موصول ہوا آمدنی_ڈیٹا = EUSART1_ پڑھیں ()؛ // اس مرحلے پر حتمی چیک ان ہو گیا ، جی پی جی جی اے مل گیا۔
اس کوڈ کو استعمال کرکے ہم UTC کا وقت نہیں چھوڑ رہے ہیں۔
جبکہ (آمدنی والا_ڈیٹا! = '،') {// اسکرپٹ GMT ٹائم آمدنی_ڈیٹا = EUSART1_Read ()؛ }
یہ کوڈ حرف صف میں طول البلد اور طول البلد کے اعداد و شمار کو ذخیرہ کرنے کے لئے ہے۔
آمدنی_ڈیٹا = EUSART1_ پڑھیں ()؛ عرض البلد = آمدنی والا_ڈیٹا؛ جبکہ (آمدنی والا_ڈیٹا! = '،') { برائے (سرنی_کاؤنٹ = 1؛ آمدنی والا_ڈیٹا! = 'این'؛ سرنی_کاؤنٹ ++) { آمدن__ڈیٹا = EUSART1_Read ()؛ عرض البلد = آمدنی والا_ڈیٹا؛ // طول البلد کا ڈیٹا اسٹور کریں } आयندہ_ڈیٹا = EUSART1_Read ()؛ اگر (آمدنی والا_ڈیٹا == '،') { برائے (سرنی_کاؤنٹ = 0؛ آمدنی والا_ڈیٹا! = 'ای'؛ سرنی_کاؤنٹی ++) r آمدن کنندہ_ڈیٹا = EUSART1_Read ()؛ طول البلد = آمدنی والا_ڈیٹا؛ // بلد ڈیٹا اسٹور } }
اور آخر کار ہم LCD پر طول البلد اور عرض البلد کو چھاپ چکے ہیں۔
سرنی_ حساب = 0؛ lcd_com (0x80)؛ // LCD لائن کا ایک انتخاب جبکہ (صف (حساب <12) {// عرض البلد اعداد و شمار کا سرنی 11 ہندسوں کا lcd_data (عرض بلد) ہے؛ // عرض البلد کے اعداد و شمار کو پرنٹ کریں ۔ } array_count = 0؛ lcd_com (0xC0)؛ // ایل سی ڈی لائن دو انتخاب جبکہ (سرنی_کاؤنٹ <13) itude // طول بلد کا ڈیٹا 12 ہندسہ کا lcd_data (طول البلد) ہے؛ // طول البلد ڈیٹا کو پرنٹ کریں ۔ }
موجودہ مقام کی طول بلد اور طول البلد حاصل کرنے کے ل we ہم PIC مائکروکونٹرولر کے ذریعہ GPS ماڈیول کو اس طرح انٹرفیس کرسکتے ہیں ۔
مکمل کوڈ اور ہیڈر فائلوں کو ذیل میں دیا گیا ہے۔