- आवश्यक घटक:
- सर्किट आरेख और स्पष्टीकरण: -
- GPS से स्थान डेटा प्राप्त करना:
- PIC Microcontroller के साथ इंटरफेस जीपीएस के लिए कदम: -
- कोड स्पष्टीकरण:
जीपीएस ग्लोबल पोजिशनिंग सिस्टम का संक्षिप्त रूप है। यह एक ऐसी प्रणाली है जो सटीक ऊंचाई, अक्षांश, देशांतर, यूटीसी समय और कई और जानकारी प्रदान करती है, जो 2, 3, 4 या अधिक उपग्रह से ली गई हैं। जीपीएस से डेटा पढ़ने के लिए, हमें कुछ माइक्रोकंट्रोलर की आवश्यकता है और हमने पहले से ही Arduino के साथ और रास्पबेरी पाई के साथ जीपीएस को बाधित कर दिया है।
हमने G7020 GPS मॉड्यूल का चयन किया है जो U-blox द्वारा बनाया गया है। हम उपग्रह से एक विशेष स्थिति के देशांतर और अक्षांश प्राप्त करेंगे और 16x2 कैरेक्टर एलसीडी पर समान प्रदर्शित करेंगे। तो यहां हम माइक्रोचिप द्वारा PIC16F877A माइक्रोकंट्रोलर के साथ जीपीएस इंटरफेस करेंगे ।
आवश्यक घटक:
- Pic16F877A - PDIP40 पैकेज
- ब्रेड बोर्ड
- पिकेट -3
- 5V एडाप्टर
- एलसीडी JHD162A
- uBLOX-G7020 जीपीएस मॉड्यूल
- बाह्य उपकरणों को जोड़ने के लिए तार।
- 4.7k रेसिस्टर्स
- 10k पॉट
- 20mHz क्रिस्टल
- 2 पीसी 33 पीएफ सिरेमिक कैपेसिटर
सर्किट आरेख और स्पष्टीकरण: -
16x2 वर्ण एलसीडी PIC16F877A माइक्रोकंट्रोलर से जुड़ा होता है, जिसमें RB0, RB1, RB2 क्रमशः LCD पिन से जुड़ा होता है जो RS, R / W, और E. RB4, RB5, RB6 और RB7 एलसीडी के 4 पिन D4, D5 से जुड़ा होता है।, डी 6, डी 7। एलसीडी 4 बिट मोड या निबल मोड से जुड़ा हुआ है। PIC Microcontroller के साथ एलसीडी के बारे में अधिक जानें।
OSC1 और OSC2 पिन से जुड़े 33pF के दो सिरेमिक संधारित्र के साथ 20MHz का एक क्रिस्टल थरथरानवाला। यह माइक्रोकंट्रोलर को लगातार 20 मेगाहर्ट्ज घड़ी की आवृत्ति प्रदान करेगा।
uBlox-G7020 GPS मॉड्यूल, UART का उपयोग करके डेटा प्राप्त और संचारित करता है। PIC16F877A में चिप के अंदर एक USART ड्राइवर होता है, हम USART द्वारा GPS मॉड्यूल से डेटा प्राप्त करेंगे, इसलिए GPS के ट्रांसमिट पिन से जुड़े माइक्रोकंट्रोलर Rx पिन से GPS के Tx पिन और USART रिसीव पिन से क्रॉस कनेक्शन किया जाएगा।
पिन के लिए uBlox-G7020 का कलर कोड है। पॉजिटिव या 5 वी पिन रेड कलर में है, नेगेटिव या जीएनडी पिन ब्लैक कलर में है और ट्रांसमिट पिन ब्लू कलर में है।
मैंने यह सब ब्रेडबोर्ड में जोड़ा है।
GPS से स्थान डेटा प्राप्त करना:
आइए देखें कि USART का उपयोग करके जीपीएस को कैसे इंटरफ़ेस करें और परिणाम को 16x2 वर्ण एलसीडी में देखें।
मॉड्यूल 9600 बॉड दर पर कई तार में डेटा संचारित करेगा। यदि हम 9600 बॉड दर के साथ एक UART टर्मिनल का उपयोग करते हैं, तो हम जीपीएस द्वारा प्राप्त डेटा देखेंगे।
GPS मॉड्यूल NMEA फॉर्मेट में रियल टाइम ट्रैकिंग पोजीशन डेटा भेजता है (ऊपर स्क्रीनशॉट देखें)। NMEA प्रारूप में कई वाक्य शामिल हैं, जिसमें चार महत्वपूर्ण वाक्य नीचे दिए गए हैं। NMEA वाक्य और इसके डेटा प्रारूप के बारे में अधिक विवरण यहां पाया जा सकता है।
- $ GPGGA: ग्लोबल पोजिशनिंग सिस्टम फिक्स डेटा
- $ GPGSV: जीपीएस उपग्रहों को देखने में
- $ GPGSA: GPS DOP और सक्रिय उपग्रह
- $ GPRMC: अनुशंसित न्यूनतम विशिष्ट जीपीएस / ट्रांजिट डेटा
यहां GPS डेटा और NMEA स्ट्रिंग्स के बारे में अधिक जानें।
यह 9600 बॉड दर पर कनेक्ट होने पर जीपीएस द्वारा प्राप्त डेटा है।
$ GPRMC, 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.2, M,, * 74 $ GPGSA, A, 2,06,02,05,,,,,,,,,,,75, 2.56,1.00 * 02 $ GPGSV, 1,1,04,02,59,316,30,05,43,188,25,06,44,022,23,25,03,324, * 76 $ GPGLL, 2237.63306, N, 08820.86316, E, 141848.00, ए, ए * ६५
जब हम किसी भी स्थान पर नज़र रखने के लिए GPS मॉड्यूल का उपयोग करते हैं , तो हमें केवल निर्देशांक की आवश्यकता होती है और हम इसे $ GPGGA स्ट्रिंग में पा सकते हैं । केवल $ GPGGA (ग्लोबल पोजिशनिंग सिस्टम फिक्स डेटा) स्ट्रिंग का उपयोग ज्यादातर कार्यक्रमों में किया जाता है और अन्य तारों को अनदेखा किया जाता है।
$ GPGGA, 141848.00,2237.63306, N, 08820.86316, E, 1,03,2.56,1.9, M, -54.2, M, * 74
उस पंक्ति का अर्थ क्या है?
उस पंक्ति का अर्थ है: -
1. स्ट्रिंग हमेशा "$" संकेत के साथ शुरू होती है
2. GPGGA का मतलब ग्लोबल पोजिशनिंग सिस्टम फिक्स डेटा है
3. "," कोमा दो मूल्यों के बीच अलगाव को इंगित करता है
4. 141848.00: जीएमटी समय 14 (घंटा): 18 (न्यूनतम): 48 (सेकंड): 00 (एमएस)
5. 2237.63306, N: अक्षांश 22 (डिग्री) 37 (मिनट) 63306 (सेकंड) उत्तर
6. 6.8820.86316, ई: देशांतर 088 (डिग्री) 20 (मिनट) 86316 (सेकंड) पूर्व
7. 1: मात्रा निर्धारित करें 0 = अमान्य डेटा, 1 = मान्य डेटा, 2 = डीजीपीएस फिक्स
8. 03: वर्तमान में देखे गए उपग्रहों की संख्या।
9. 1.0: एचडीओपी
10. 2.56, एम: ऊँचाई (मीटर में समुद्र तल से ऊँचाई)
11. 1.9, एम: जियोइड्स की ऊंचाई
12. * 74: चेकसम
इसलिए हमें मॉड्यूल स्थान या, जहां यह स्थित है, के बारे में जानकारी इकट्ठा करने के लिए नंबर 5 और नंबर 6 की आवश्यकता है।
PIC Microcontroller के साथ इंटरफेस जीपीएस के लिए कदम: -
- माइक्रोकंट्रोलर के विन्यास को सेट करें जिसमें थरथरानवाला विन्यास शामिल है।
- TRIS रजिस्टर सहित एलसीडी के लिए वांछित पोर्ट सेट करें।
- USART का उपयोग करके GPS मॉड्यूल को माइक्रोकंट्रोलर से कनेक्ट करें।
- 4600 मोड के साथ 9600 बॉड दर और एलसीडी के साथ निरंतर प्राप्त मोड में सिस्टम USART को प्रारंभ करें।
- अक्षांश और देशांतर की लंबाई के आधार पर दो वर्ण सरणियाँ लें।
- एक बार में एक वर्ण बिट प्राप्त करें और जांचें कि यह $ से शुरू किया गया है या नहीं।
- यदि $ प्राप्त होता है, तो यह एक स्ट्रिंग है, हमें GPGGA, यह 5 अक्षर और अल्पविराम की जांच करने की आवश्यकता है।
- अगर यह GPGGA है, तो हम समय को छोड़ देंगे, और अक्षांश और देशांतर की तलाश करेंगे, हम अक्षांश और देशांतर को दो वर्ण सरणी में स्टोर करेंगे जब तक कि N (उत्तर) और E (पूर्व) प्राप्त नहीं हो जाते।
- हम सरणी को एलसीडी में प्रिंट करेंगे।
- सरणी को साफ़ करें।
कोड स्पष्टीकरण:
कोड लाइन को लाइन से देखते हैं। पहली कुछ पंक्तियाँ विन्यास बिट्स को स्थापित करने के लिए हैं जिन्हें पिछले ट्यूटोरियल में समझाया गया था इसलिए मैं उन्हें अभी के लिए छोड़ रहा हूँ। इस ट्यूटोरियल के अंत में पूरा कोड दिया गया है।
इन पाँच पंक्तियों का उपयोग लाइब्रेरी हेडर फाइल्स, lcd.h और eusart.h के लिए किया जाता है, क्रमशः एलसीडी और USART के लिए। और xc.h microcontroller हैडर फ़ाइल के लिए है।
#शामिल
में शून्य मुख्य () समारोह, system_init () ; फ़ंक्शन का उपयोग एलसीडी और यूएसएआरटी को आरंभ करने के लिए किया जाता है।
शून्य मुख्य (शून्य) { TRISB = 0x00; // आउटपुट system_init () के रूप में सेटिंग ;
Lcd_init (); और EUSART_Intialize (); को दो पुस्तकालयों lcd.h और eusart.h से पुकारा जाता है
void system_init (void) { lcd_init (); // यह एलसीडी EUSART1_Initialize () को इनिशियलाइज़ करेगा ; // यह Eusart को प्रारंभ करेगा }
लूप में रहते हुए हम लॉन्गिट्यूड और लैटिट्यूड को समन्वित करने के लिए GPGGA स्ट्रिंग को तोड़ते हैं। हम एक समय में एक बिट प्राप्त करते हैं और इसकी तुलना GPGGA स्ट्रिंग में मौजूद व्यक्तिगत पात्रों से करते हैं।
हम उन कोडों को तोड़ेंगे जिन्हें हम प्राप्त करेंगे: -
incomer_data = EUSART1_Read (); // स्ट्रिंग की जाँच करें '$ GPGGA,' / * ------------------------------ कदम से कदम GPGGA लाइन ढूँढने के लिए- --------------------------- * / if (incomer_data == '$') {// GPS डेटा का पहला विवरण $ साइन अधूरा_डाटा = EUSART1_Read (); // यदि पहला यदि सत्य हो जाता है तो अगला चरण यदि (अधूरा_दत्त == 'जी') { अधूरा_दता = EUSART1_Read (); if (incomer_data == 'P'); { incomer_data = EUSART1_Read (); if (incomer_data == 'G'); { incomer_data = EUSART1_Read (); if (incomer_data == 'G') { incomer_data = EUSART1_Read (); if (incomer_data == 'A') { incomer_data = EUSART1_Read (); if (incomer_data == ',') {// सबसे पहले, प्राप्त किया incomer_data = EUSART1_Read (); // इस स्तर पर अंतिम जांच में, GPGGA पाया जाता है।
इस कोड का उपयोग करके हम UTC समय को छोड़ देते हैं।
जबकि (अधूरा_डेटा! = ',') {// स्किपिंग GMT टाइम अधूरा_दता = EUSART1_Read (); }
यह कोड वर्ण सरणी में अक्षांश और देशांतर डेटा संग्रहीत करने के लिए है।
incomer_data = EUSART1_Read (); latitude = incomer_data; जबकि (incomer_data! = ',') {के लिए (array_count = 1; अधूरा_डेटा! = 'N'; array_count ++) { incomer_data = EUSART1_Read (); latitude = incomer_data; // अक्षांश डेटा स्टोर करें } incomer_data = EUSART1_Read (); if (incomer_data == ',') {के लिए (array_count = 0; incomer_data! = 'E'; array_count ++) { incomer_data = EUSART1_Read (); देशांतर = incomer_data; // देशांतर डेटा स्टोर करें } }
और अंत में हमने एलसीडी पर देशांतर और अक्षांश मुद्रित किया है।
array_count = 0; lcd_com (0x80); // एलसीडी लाइन एक चयन जबकि (array_count <12) {// अक्षांश डेटा का सरणी 11 अंक lcd_data (अक्षांश) है; // अक्षांश डेटा array_count ++ प्रिंट करें ; } array_count = 0; lcd_com (0xC0); // Lcd लाइन दो चयन जबकि (array_count <13) {// देशांतर डेटा का सरणी 12 अंकों का LCD_data (देशांतर) है; // देशांतर डेटा को प्रिंट करें array_count ++; }
वर्तमान स्थान का अक्षांश और देशांतर प्राप्त करने के लिए हम PIC माइक्रोकंट्रोलर के साथ GPS मॉड्यूल को कैसे इंटरफ़ेस कर सकते हैं ।
पूरा कोड और हेडर फाइलें नीचे दी गई हैं।