- భాగాలు అవసరం
- GPS నుండి స్థాన డేటాను పొందడం
- సర్క్యూట్ రేఖాచిత్రం
- AVR మైక్రోకంట్రోలర్తో GPS ఇంటర్ఫేస్కు దశలు
- కోడ్ వివరణ
రేఖాంశం మరియు అక్షాంశ కోఆర్డినేట్ల ఆధారంగా స్థానాన్ని ట్రాక్ చేయడానికి ఎలక్ట్రానిక్స్ అనువర్తనాల్లో GPS గుణకాలు విస్తృతంగా ఉపయోగించబడతాయి. వెహికల్ ట్రాకింగ్ సిస్టమ్, జిపిఎస్ క్లాక్, యాక్సిడెంట్ డిటెక్షన్ అలర్ట్ సిస్టమ్, ట్రాఫిక్ నావిగేషన్, నిఘా వ్యవస్థ మొదలైనవి జిపిఎస్ కార్యాచరణ తప్పనిసరి అయిన ఉదాహరణలు. ఒకటి కంటే ఎక్కువ ఉపగ్రహాల నుండి తీసిన నిర్దిష్ట ప్రదేశం గురించి ఎత్తు, అక్షాంశం, రేఖాంశం, యుటిసి సమయం మరియు అనేక ఇతర సమాచారాన్ని జిపిఎస్ అందిస్తుంది. GPS నుండి డేటాను చదవడానికి, మైక్రోకంట్రోలర్ అవసరం కాబట్టి ఇక్కడ మేము AVR మైక్రోకంట్రోలర్ Atmega16 తో GPS మాడ్యూల్ను ఇంటర్ఫేస్ చేస్తున్నాము మరియు 16x2 LCD డిస్ప్లేలో రేఖాంశం మరియు అక్షాంశాలను ముద్రించాము.
భాగాలు అవసరం
- Atmega16 / 32
- GPS మాడ్యూల్ (uBlox Neo 6M GPS)
- లాంగ్ వైర్ యాంటెన్నా
- 16x2 LCD
- 2.2 కే రెసిస్టర్
- 1000uf కెపాసిటర్
- 10uF కెపాసిటర్
- వైర్ కనెక్ట్
- LM7805
- DC జాక్
- 12v DC అడాప్టర్
- బర్గ్ స్టిప్స్
- పిసిబి లేదా జనరల్ పర్పస్ పిసిబి
ఉబ్లోక్స్ నియో 6 ఎమ్ అనేది సీరియల్ కమ్యూనికేషన్ ద్వారా స్థాన వివరాలను అందించే సీరియల్ జిపిఎస్ మాడ్యూల్. దీనికి నాలుగు పిన్స్ ఉన్నాయి.
పిన్ చేయండి |
వివరణ |
విసిసి |
2.7 - 5 వి విద్యుత్ సరఫరా |
Gnd |
గ్రౌండ్ |
TXD |
డేటాను ప్రసారం చేయండి |
RXD |
డేటాను స్వీకరించండి |
ఉబ్లోక్స్ నియో 6 ఎమ్ జిపిఎస్ మాడ్యూల్ టిటిఎల్ అనుకూలమైనది మరియు దాని లక్షణాలు క్రింద ఇవ్వబడ్డాయి.
సంగ్రహ సమయం |
కూల్ స్టార్ట్: 27 సె, హాట్ స్టార్ట్: 1 సె |
కమ్యూనికేషన్ ప్రోటోకాల్ |
NMEA |
సీరియల్ కమ్యూనికేషన్ |
9600 బిపిఎస్, 8 డేటా బిట్స్, 1 స్టాప్ బిట్, పారిటీ లేదు మరియు ఫ్లో కంట్రోల్ లేదు |
ఆపరేటింగ్ కరెంట్ |
45 ఎంఏ |
GPS నుండి స్థాన డేటాను పొందడం
GPS మాడ్యూల్ 9600 బాడ్ రేట్ వద్ద బహుళ తీగలలో డేటాను ప్రసారం చేస్తుంది. మేము 9600 బాడ్ రేటుతో UART టెర్మినల్ ఉపయోగిస్తే, GPS అందుకున్న డేటాను మనం చూడవచ్చు.
GPS మాడ్యూల్ రియల్ టైమ్ ట్రాకింగ్ పొజిషన్ డేటాను NMEA ఆకృతిలో పంపుతుంది (పై స్క్రీన్ షాట్ చూడండి). NMEA ఫార్మాట్ అనేక వాక్యాలను కలిగి ఉంది, దీనిలో నాలుగు ముఖ్యమైన వాక్యాలు క్రింద ఇవ్వబడ్డాయి. NMEA వాక్యం మరియు దాని డేటా ఫార్మాట్ గురించి మరింత వివరంగా ఇక్కడ చూడవచ్చు.
- $ GPGGA: గ్లోబల్ పొజిషనింగ్ సిస్టమ్ ఫిక్స్ డేటా
- $ GPGSV: GPS ఉపగ్రహాలు వీక్షణలో
- $ GPGSA: GPS DOP మరియు క్రియాశీల ఉపగ్రహాలు
- $ GPRMC: సిఫార్సు చేయబడిన కనీస నిర్దిష్ట GPS / రవాణా డేటా
GPS డేటా మరియు NMEA తీగల గురించి ఇక్కడ మరింత తెలుసుకోండి.
9600 బాడ్ రేటుతో అనుసంధానించబడినప్పుడు GPS అందుకున్న డేటా ఇది.
$ 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, ఎన్, 08820.86316, ఇ, 1,03,2.56,1.9, ఓం, -54.2, ఎం,, * 74 $ జిపిజిఎస్ఎ, ఎ, 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, ఎ, ఎ * 65
ఏదైనా స్థానాన్ని ట్రాక్ చేయడానికి మేము 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: GMT సమయం 14 (గం): 18 (నిమి): 48 (సెక): 00 (ఎంఎస్)
5. 2237.63306, ఎన్: అక్షాంశం 22 (డిగ్రీ) 37 (నిమిషాలు) 63306 (సెకను) ఉత్తరం
6. 08820.86316, ఇ: లాంగిట్యూడ్ 088 (డిగ్రీ) 20 (నిమిషాలు) 86316 (సెక) తూర్పు
7. 1: పరిమాణం 0 = చెల్లని డేటా, 1 = చెల్లుబాటు అయ్యే డేటా, 2 = డిజిపిఎస్ పరిష్కారాన్ని పరిష్కరించండి
8. 03: ప్రస్తుతం చూసిన ఉపగ్రహాల సంఖ్య.
9. 1.0: HDOP
10. 2.56, ఓం: ఎత్తు (మీటర్లో సముద్ర మట్టానికి ఎత్తు)
11. 1.9, ఓం: జియోయిడ్స్ ఎత్తు
12. * 74: చెక్సమ్
కాబట్టి మాడ్యూల్ స్థానం గురించి సమాచారం సేకరించడానికి మాకు 5 మరియు No.6 అవసరం. ఈ ప్రాజెక్ట్లో మేము అక్షాంశం మరియు రేఖాంశాలను తీయడానికి కొన్ని విధులను అందించే GPS లైబ్రరీని ఉపయోగించాము, కాబట్టి మేము దాని గురించి ఆందోళన చెందాల్సిన అవసరం లేదు.
మేము ఇంతకుముందు ఇతర మైక్రోకంట్రోలర్లతో GPS ను ఇంటర్ఫేస్ చేసాము:
- Arduino తో GPS ఎలా ఉపయోగించాలి
- రాస్ప్బెర్రీ పై జిపిఎస్ మాడ్యూల్ ఇంటర్ఫేసింగ్ ట్యుటోరియల్
- పిఐసి మైక్రోకంట్రోలర్తో ఇంటర్ఫేసింగ్ జిపిఎస్ మాడ్యూల్
- Arduino, ESP8266 & GPS ఉపయోగించి గూగుల్ మ్యాప్స్లో వాహనాన్ని ట్రాక్ చేయండి
అన్ని GPS సంబంధిత ప్రాజెక్టులను ఇక్కడ తనిఖీ చేయండి.
సర్క్యూట్ రేఖాచిత్రం
AVR Atemga16 మైక్రోకంట్రోలర్తో GPS ఇంటర్ఫేసింగ్ కోసం సర్క్యూట్ రేఖాచిత్రం క్రింద ఇవ్వబడింది:
మొత్తం వ్యవస్థ 12v DC అడాప్టర్ ద్వారా శక్తిని పొందుతుంది, అయితే సర్క్యూట్లు 5v పై పనిచేస్తాయి కాబట్టి విద్యుత్ సరఫరా 5v కి LM7805 వోల్టేజ్ రెగ్యులేటర్ ద్వారా నియంత్రించబడుతుంది. 16x2 LCD 4-బిట్ మోడ్లో కాన్ఫిగర్ చేయబడింది మరియు దాని పిన్ కనెక్షన్లు సర్క్యూట్ రేఖాచిత్రంలో చూపబడతాయి. GPS కూడా 5v చేత శక్తినిస్తుంది మరియు దాని tx పిన్ నేరుగా Rx of Atmega16 మైక్రోకంట్రోలర్కు అనుసంధానించబడి ఉంది. మైక్రోకంట్రోలర్ను క్లాక్ చేయడానికి 8MHz క్రిస్టల్ ఓసిలేటర్ ఉపయోగించబడుతుంది.
AVR మైక్రోకంట్రోలర్తో GPS ఇంటర్ఫేస్కు దశలు
- ఓసిలేటర్ కాన్ఫిగరేషన్ను కలిగి ఉన్న మైక్రోకంట్రోలర్ యొక్క కాన్ఫిగరేషన్లను సెట్ చేయండి.
- DDR రిజిస్టర్తో సహా LCD కోసం కోరుకున్న పోర్ట్ను సెట్ చేయండి.
- USART ఉపయోగించి GPS మాడ్యూల్ను మైక్రోకంట్రోలర్కు కనెక్ట్ చేయండి.
- ISR మోడ్లో సిస్టమ్ UART ను ప్రారంభించండి, 9600 బాడ్ రేట్ మరియు 4B మోడ్లో LCD తో.
- అక్షాంశం మరియు రేఖాంశం యొక్క పొడవును బట్టి రెండు అక్షరాల శ్రేణులను తీసుకోండి.
- ఒక సమయంలో ఒక అక్షర బిట్ను స్వీకరించండి మరియు అది $ నుండి ప్రారంభించబడిందో లేదో తనిఖీ చేయండి.
- $ అందుకున్నట్లయితే అది స్ట్రింగ్, మేము $ GPGGA ని తనిఖీ చేయాలి, including తో సహా ఈ 6 అక్షరాలు.
- ఇది GPGGA అయితే, పూర్తి స్ట్రింగ్ను స్వీకరించి జెండాలను సెట్ చేయండి.
- అప్పుడు రెండు శ్రేణులలో దిశలతో అక్షాంశం మరియు రేఖాంశాన్ని సేకరించండి.
- చివరగా LCD లో అక్షాంశం మరియు రేఖాంశ శ్రేణులను ముద్రించండి.
కోడ్ వివరణ
ప్రదర్శన వీడియోతో పూర్తి కోడ్ చివరిలో ఇవ్వబడింది, ఇక్కడ కోడ్ యొక్క కొన్ని ముఖ్యమైన భాగాలు వివరించబడ్డాయి.
మొదట కోడ్లో అవసరమైన కొన్ని శీర్షికలను చేర్చండి, ఆపై LCD మరియు UART కాన్ఫిగర్ కోసం బిట్మాస్క్ యొక్క MACROS ను వ్రాయండి.
# F_CPU 8000000ul ను నిర్వచించండి # చేర్చండి # చేర్చండి
ఇప్పుడు GPS స్ట్రింగ్, అక్షాంశ రేఖాంశం మరియు జెండాలను నిల్వ చేయడానికి కొన్ని వేరియబుల్స్ మరియు శ్రేణులను ప్రకటించండి మరియు ప్రారంభించండి.
చార్ బఫ్; అస్థిర చార్ ఇండ్, ఫ్లాగ్, స్ట్రింగ్ రిసీవ్డ్; char gpgga = {'$', 'G', 'P', 'G', 'G', 'A'}; చార్ అక్షాంశం; చార్ లాజిట్యూడ్;
దాని తరువాత ఎల్సిడిని నడపడానికి మాకు కొంత ఎల్సిడి డ్రైవర్ ఫంక్షన్ ఉంది.
void lcdwrite (char ch, char r) { LCDPORT = ch & 0xF0; RWLow; if (r == 1) RSHigh; లేకపోతే RSLow; ENHigh; _delay_ms (1); ENLow; _delay_ms (1); LCDPORT = ch << 4 & 0xF0; RWLow; if (r == 1) RSHigh; లేకపోతే RSLow; ENHigh; _delay_ms (1); ENLow; _delay_ms (1); } గర్జన lcdprint (చార్ * STR) { అయితే (* STR) { lcdwrite (* STR ++, డేటా); // __ ఆలస్యం_ఎంఎస్ (20); } } శూన్యమైన lcdbegin () { char lcdcmd = {0x02,0x28,0x0E, 0x06,0x01}; (int i = 0; i <5; i ++) lcdwrite (lcdcmd, CMD); }
ఆ తరువాత మేము GPS తో సీరియల్ కమ్యూనికేషన్ను ప్రారంభించాము మరియు అందుకున్న స్ట్రింగ్ను "GPGGA" తో పోల్చాము:
void serialbegin () { UCSRC = (1 << URSEL) - (1 << UCSZ0) - (1 << UCSZ1); UBRRH = (BAUD_PRESCALE >> 8); UBRRL = BAUD_PRESCALE; UCSRB = (1 <
ఇప్పుడు అందుకున్న స్ట్రింగ్ GPGGA తో విజయవంతంగా సరిపోలితే, అప్పుడు ప్రధాన ఫంక్షన్ ఎక్స్ట్రాక్ట్లో మరియు స్థానం యొక్క అక్షాంశం మరియు రేఖాంశ కోఆర్డినేట్ను ప్రదర్శిస్తుంది:
lcdwrite (0x80,0); lcdprint ("లాట్:"); సీరియల్ ప్రింట్ ("అక్షాంశం:"); (int i = 15; i <27; i ++) { అక్షాంశం = buf; lcdwrite (అక్షాంశం, 1); సీరియల్ రైట్ (అక్షాంశం); if (i == 24) { lcdwrite ('', 1); i ++; } } serialprintln (""); lcdwrite (192,0); lcdprint ("లాగ్:"); సీరియల్ ప్రింట్ ("లాజిట్యూడ్:"); (int i = 29; i <41; i ++) { logitude = buf; lcdwrite (లాజిట్యూడ్, 1); సీరియల్ రైట్ (లాజిట్యూడ్); if (i == 38) { lcdwrite ('', 1); i ++; } }
కాబట్టి స్థాన కోఆర్డినేట్లను కనుగొనడానికి GPS మాడ్యూల్ ATmega16 తో ఇంటర్ఫేస్ చేయవచ్చు.
పూర్తి కోడ్ మరియు వర్కింగ్ వీడియోను క్రింద కనుగొనండి.