- अवयव आवश्यक
- जीपीएस से लोकेशन डेटा प्राप्त करना
- सर्किट आरेख
- AVR माइक्रोकंट्रोलर के साथ इंटरफेस जीपीएस के लिए कदम
- कोड स्पष्टीकरण
जीपीएस मॉड्यूल व्यापक रूप से देशांतर और अक्षांश निर्देशांक के आधार पर स्थान को ट्रैक करने के लिए इलेक्ट्रॉनिक्स अनुप्रयोगों में उपयोग किए जाते हैं। वाहन ट्रैकिंग सिस्टम, जीपीएस क्लॉक, एक्सीडेंट डिटेक्शन अलर्ट सिस्टम, ट्रैफिक नेविगेशन, सर्विलांस सिस्टम आदि ऐसे कुछ उदाहरण हैं जहां जीपीएस कार्यक्षमता आवश्यक है। GPS विशिष्ट स्थान के बारे में Altitude, अक्षांश, देशांतर, UTC समय और कई अन्य जानकारी प्रदान करता है, जो एक से अधिक उपग्रह से ली गई हैं। जीपीएस से डेटा को पढ़ने के लिए, एक माइक्रोकंट्रोलर की आवश्यकता होती है, इसलिए यहां हम AVR माइक्रोकंट्रोलर Atmega16 के साथ जीपीएस मॉड्यूल को बदल रहे हैं और 16x2 एलसीडी डिस्प्ले पर देशांतर और अक्षांश को प्रिंट कर रहे हैं।
अवयव आवश्यक
- Atmega16 / 32
- GPS मॉड्यूल (uBlox Neo 6M GPS)
- लंबा तार एंटीना
- 16x2 एलसीडी
- 2.2 कि
- 1000uf संधारित्र
- 10uF संधारित्र
- तार जोड़ना
- LM7805
- डीसी जैक
- 12v डीसी एडाप्टर
- बरगद
- पीसीबी या सामान्य प्रयोजन पीसीबी
Ublox Neo 6M एक सीरियल जीपीएस मॉड्यूल है जो सीरियल संचार के माध्यम से स्थान विवरण प्रदान करता है। इसके चार पिन होते हैं।
पिन |
विवरण |
Vcc |
2.7 - 5 वी बिजली की आपूर्ति |
गाण्ड |
भूमि |
TXD |
डेटा संचारित करें |
RXD |
डेटा प्राप्त करना |
Ublox नव 6M जीपीएस मॉड्यूल टीटीएल संगत है और इसके विनिर्देश नीचे दिए गए हैं।
समय पर कब्जा |
कूल स्टार्ट: 27 एस, हॉट स्टार्ट: 1 एस |
संचार प्रोटोकॉल |
NMEA |
धारावाहिक संचार |
9600bps, 8 डेटा बिट्स, 1 स्टॉप बिट, कोई समानता और कोई प्रवाह नियंत्रण नहीं है |
चालू बिजली |
45mA |
जीपीएस से लोकेशन डेटा प्राप्त करना
जीपीएस मॉड्यूल 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.9, M, -54.2, M,, * 74 $ GPGSA, A, 2,06,02,05,,,,,,,,,, 2.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 की आवश्यकता है। इस परियोजना में हमने एक जीपीएस लाइब्रेरी का उपयोग किया है जो अक्षांश और देशांतर निकालने के लिए कुछ कार्य प्रदान करता है इसलिए हमें इसके बारे में चिंता करने की आवश्यकता नहीं है।
हमारे पास अन्य माइक्रोकंट्रोलर के साथ पहले वाला GPS है:
- Arduino के साथ GPS का उपयोग कैसे करें
- रास्पबेरी पाई जीपीएस मॉड्यूल इंटरफेसिंग ट्यूटोरियल
- पीआईसी माइक्रोकंट्रोलर के साथ जीपीएस मॉड्यूल को इंटरफैस करना
- Arduino, ESP8266 और GPS का उपयोग करके Google मानचित्र पर एक वाहन को ट्रैक करें
यहां जीपीएस से संबंधित सभी परियोजनाओं की जांच करें।
सर्किट आरेख
AVR Atemga16 माइक्रोकंट्रोलर के साथ जीपीएस इंटरफेसिंग के लिए सर्किट आरेख नीचे दिया गया है:
पूरे सिस्टम को एक 12 वी डीसी एडाप्टर द्वारा संचालित किया जाता है, लेकिन सर्किट 5 वी पर काम करता है इसलिए बिजली की आपूर्ति एलएम 7805 वोल्टेज नियामक द्वारा 5 वी तक विनियमित होती है। एक 16x2 एलसीडी 4-बिट मोड में कॉन्फ़िगर किया गया है और इसके पिन कनेक्शन सर्किट आरेख में दिखाए गए हैं। GPS भी 5v द्वारा संचालित है और इसका tx पिन सीधे Atmega16 microcontroller के Rx से जुड़ा है। माइक्रोकंट्रोलर को क्लॉक करने के लिए 8MHz क्रिस्टल ऑसिलेटर का उपयोग किया जाता है।
AVR माइक्रोकंट्रोलर के साथ इंटरफेस जीपीएस के लिए कदम
- माइक्रोकंट्रोलर के विन्यास को सेट करें जिसमें थरथरानवाला विन्यास शामिल है।
- DDR रजिस्टर सहित एलसीडी के लिए वांछित पोर्ट सेट करें।
- USART का उपयोग करके GPS मॉड्यूल को माइक्रोकंट्रोलर से कनेक्ट करें।
- ISR मोड में सिस्टम UART को प्रारंभ करें, 9600 बॉड दर और 4bit मोड में एलसीडी के साथ।
- अक्षांश और देशांतर की लंबाई के आधार पर दो वर्ण सरणियाँ लें।
- एक बार में एक वर्ण बिट प्राप्त करें और जांचें कि यह $ से शुरू किया गया है या नहीं।
- यदि $ प्राप्त होता है, तो यह एक स्ट्रिंग है, हमें $ 6 सहित $ GPGGA, इस 6 अक्षरों की जांच करने की आवश्यकता है।
- यदि यह GPGGA है, तो पूर्ण स्ट्रिंग प्राप्त करें और ध्वज सेट करें।
- फिर दो सरणियों में दिशाओं के साथ अक्षांश और देशांतर निकालें।
- अंत में एलसीडी में अक्षांश और देशांतर सरणियों को प्रिंट करें।
कोड स्पष्टीकरण
एक प्रदर्शन वीडियो के साथ पूरा कोड अंत में दिया गया है, यहाँ कोड के कुछ महत्वपूर्ण भागों को समझाया गया है।
सबसे पहले कोड में कुछ आवश्यक हेडर शामिल करें और फिर एलसीडी और UART कॉन्फिगरेशन के लिए बिटकॉम्ब का MACROS लिखें।
#define F_CPU 8000000ul #include #include
अब जीपीएस स्ट्रिंग, अक्षांश देशांतर और झंडे के भंडारण के लिए कुछ चर और सरणियों की घोषणा करें और आरंभ करें।
char buf; वाष्पशील चार ind, ध्वज, stringReceived; char gpgga = {'$', 'G', 'P', 'G', 'G', 'A'}; चार अक्षांश; char logitude;
इसके बाद हमारे पास एलसीडी ड्राइव करने के लिए कुछ एलसीडी ड्राइवर फ़ंक्शन हैं।
शून्य lcdwrite (char ch, char r) { LCDPORT = ch & 0xF0; RWLow; if (r == 1) RSHigh; अन्य RSLow; ENHigh; _delay_ms (1); एनलो; _delay_ms (1); LCDPORT = ch << 4 & 0xF0; RWLow; if (r == 1) RSHigh; अन्य RSLow; ENHigh; _delay_ms (1); एनलो; _delay_ms (1); } शून्य lcdprint (चार * str) { जबकि (* str) { lcdwrite (* str ++, DATA); // __ देरी_एमएस (20); } } शून्य lcdbegin () { char lcdcmd = {0x02,0x28,0x0E, 0x06,0x01}; for (int i = 0; मैं <5; i ++) lcdwrite (lcdcmd, CMD); }
उसके बाद हमने जीपीएस के साथ धारावाहिक संचार की शुरुआत की और "GPGGA" के साथ प्राप्त स्ट्रिंग की तुलना की:
शून्य क्रमबद्ध () { UCSRC = (1 << URSEL) - (1 << UCSZ0) - (1 << UCSZ1); UBRRH = (BAUD_PRESCALE >> 8); UBRRL = BAUD_PRESCALE; UCSRB = (1 <
अब अगर प्राप्त स्ट्रिंग को GPGGA के साथ सफलतापूर्वक मिलान किया जाता है, तो मुख्य फ़ंक्शन निकालने में और स्थान का अक्षांश और देशांतर समन्वय प्रदर्शित करें:
lcdwrite (0x80,0); एलसीडीडप्रिंट ("लाट:"); सीरियलप्रिंट ("अक्षांश:"); for (int i = 15; मैं <27; i ++) { अक्षांश = buf; lcdwrite (अक्षांश, 1); धारावाहिक लेखन (अक्षांश); if (i == 24) { lcdwrite ('', 1); मैं ++; } } सीरियलप्रिंट (""); एलसीडीडाइट (192,0); एलसीडीडप्रिंट ("लॉग:"); सीरियलप्रिंट ("लॉजिक:"); for (int i = 29; i <41; i ++) { logitude = buf; lcdwrite (तर्क, 1); सीरियलराइट (लॉगिट्यूड); if (i == 38) { lcdwrite ('', 1); मैं ++; } }
तो यह कैसे जीपीएस मॉड्यूल स्थान निर्देशांक खोजने के लिए ATmega16 के साथ हस्तक्षेप किया जा सकता है ।
नीचे पूर्ण कोड और काम करने वाला वीडियो खोजें ।