- అవసరమైన భాగాలు:
- సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ: -
- GPS నుండి స్థాన డేటాను పొందడం:
- పిఐసి మైక్రోకంట్రోలర్తో జిపిఎస్ను ఇంటర్ఫేస్ చేయడానికి దశలు: -
- కోడ్ వివరణ:
GPS అనేది గ్లోబల్ పొజిషనింగ్ సిస్టమ్ యొక్క స్వల్ప రూపం. ఇది ఖచ్చితమైన ఎత్తు, అక్షాంశం, రేఖాంశం, యుటిసి సమయం మరియు మరెన్నో సమాచారాన్ని అందించే వ్యవస్థ, ఇవి 2, 3, 4 లేదా అంతకంటే ఎక్కువ ఉపగ్రహం నుండి తీసుకోబడ్డాయి. GPS నుండి డేటాను చదవడానికి, మాకు కొంత మైక్రోకంట్రోలర్ అవసరం మరియు మేము ఇప్పటికే GPS ని Arduino తో మరియు రాస్ప్బెర్రీ పైతో అనుసంధానించాము.
మేము U-blox చేత తయారు చేయబడిన G7020 GPS మాడ్యూల్ను ఎంచుకున్నాము. మేము ఉపగ్రహం నుండి ఒక నిర్దిష్ట స్థానం యొక్క రేఖాంశం మరియు అక్షాంశాలను అందుకుంటాము మరియు 16x2 అక్షర LCD లో అదే ప్రదర్శిస్తాము. కాబట్టి ఇక్కడ మనం మైక్రోచిప్ ద్వారా GIC ని PIC16F877A మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేస్తాము.
అవసరమైన భాగాలు:
- Pic16F877A - PDIP40 ప్యాకేజీ
- బ్రెడ్ బోర్డు
- పికిట్ -3
- 5 వి అడాప్టర్
- LCD JHD162A
- uBLOX-G7020 GPS మాడ్యూల్
- పెరిఫెరల్స్ కనెక్ట్ చేయడానికి వైర్లు.
- 4.7 కే రెసిస్టర్లు
- 10 కే కుండ
- 20mHz క్రిస్టల్
- 2 PC లు 33pF సిరామిక్ కెపాసిటర్లు
సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ: -
16x2 అక్షర LCD PIC16F877A మైక్రోకంట్రోలర్లో అనుసంధానించబడి ఉంది, దీనిలో RB0, RB1, RB2 వరుసగా LCD పిన్తో RS, R / W, మరియు E. RB4, RB5, RB6 మరియు RB7 లు LCD యొక్క 4 పిన్ D4, D5 అంతటా అనుసంధానించబడి ఉన్నాయి., డి 6, డి 7. LCD 4bit మోడ్ లేదా నిబుల్ మోడ్లో కనెక్ట్ చేయబడింది. పిఐసి మైక్రోకంట్రోలర్తో ఎల్సిడిని ఇంటర్ఫేసింగ్ గురించి మరింత తెలుసుకోండి.
OSC1 మరియు OSC2 పిన్ అంతటా అనుసంధానించబడిన 33pF యొక్క రెండు సిరామిక్ కెపాసిటర్తో 20MHz యొక్క క్రిస్టల్ ఆసిలేటర్. ఇది మైక్రోకంట్రోలర్కు స్థిరమైన 20 MHz క్లాక్ ఫ్రీక్వెన్సీని అందిస్తుంది.
uBlox-G7020 GPS మాడ్యూల్, UART ఉపయోగించి డేటాను స్వీకరించండి మరియు ప్రసారం చేయండి. PIC16F877A చిప్ లోపల ఒక USART డ్రైవర్ను కలిగి ఉంది, మేము USART ద్వారా GPS మాడ్యూల్ నుండి డేటాను స్వీకరిస్తాము, కాబట్టి మైక్రోకంట్రోలర్ Rx పిన్ నుండి GPS యొక్క Tx పిన్కు క్రాస్ కనెక్షన్ చేయబడుతుంది మరియు USART GPS యొక్క ట్రాన్స్మిట్ పిన్ అంతటా కనెక్ట్ చేయబడిన పిన్ను స్వీకరించండి.
UBlox-G7020 పిన్ల కోసం కలర్ కోడ్ను కలిగి ఉంది. పాజిటివ్ లేదా 5 వి పిన్ ఎరుపు రంగులో, నెగటివ్ లేదా జిఎన్డి పిన్ బ్లాక్ కలర్లో మరియు ట్రాన్స్మిట్ పిన్ బ్లూ కలర్లో ఉంటుంది.
ఇవన్నీ నేను బ్రెడ్బోర్డ్లో కనెక్ట్ చేసాను.
GPS నుండి స్థాన డేటాను పొందడం:
USART ఉపయోగించి GPS ను ఎలా ఇంటర్ఫేస్ చేయాలో చూద్దాం మరియు 16x2 అక్షరాల LCD లో ఫలితాన్ని చూద్దాం.
మాడ్యూల్ 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 అవసరం.
పిఐసి మైక్రోకంట్రోలర్తో జిపిఎస్ను ఇంటర్ఫేస్ చేయడానికి దశలు: -
- ఓసిలేటర్ కాన్ఫిగరేషన్ను కలిగి ఉన్న మైక్రోకంట్రోలర్ యొక్క కాన్ఫిగరేషన్లను సెట్ చేయండి.
- TRIS రిజిస్టర్తో సహా LCD కోసం కోరుకున్న పోర్ట్ను సెట్ చేయండి.
- USART ఉపయోగించి GPS మాడ్యూల్ను మైక్రోకంట్రోలర్కు కనెక్ట్ చేయండి.
- 9600 బాడ్ రేట్తో మరియు 4 బిట్ మోడ్తో ఎల్సిడిని నిరంతర రిసీవ్ మోడ్లో సిస్టమ్ యుఎస్ఎఆర్టిని ప్రారంభించండి.
- అక్షాంశం మరియు రేఖాంశం యొక్క పొడవును బట్టి రెండు అక్షరాల శ్రేణులను తీసుకోండి.
- ఒక సమయంలో ఒక అక్షర బిట్ను స్వీకరించండి మరియు అది $ నుండి ప్రారంభించబడిందో లేదో తనిఖీ చేయండి.
- $ స్వీకరించండి అది స్ట్రింగ్ అయితే, మేము GPGGA, ఈ 5 అక్షరాలు మరియు కామాను తనిఖీ చేయాలి.
- ఇది GPGGA అయితే, మేము సమయాన్ని దాటవేసి, అక్షాంశం మరియు రేఖాంశం కోసం చూస్తాము, N (ఉత్తర) మరియు E (తూర్పు) అందుకోనంతవరకు మేము అక్షాంశం మరియు రేఖాంశాలను రెండు అక్షరాల శ్రేణిలో నిల్వ చేస్తాము.
- మేము శ్రేణిని LCD లో ప్రింట్ చేస్తాము.
- శ్రేణిని క్లియర్ చేయండి.
కోడ్ వివరణ:
కోడ్ లైన్ను లైన్ ద్వారా చూద్దాం. మునుపటి ట్యుటోరియల్లో వివరించిన కాన్ఫిగరేషన్ బిట్లను సెటప్ చేయడం కోసం మొదటి కొన్ని పంక్తులు ఉన్నాయి కాబట్టి నేను ఇప్పుడే వాటిని దాటవేస్తున్నాను. ఈ ట్యుటోరియల్ చివరిలో పూర్తి కోడ్ ఇవ్వబడింది.
ఈ ఐదు పంక్తులు లైబ్రరీ హెడర్ ఫైళ్ళను చేర్చడానికి ఉపయోగించబడతాయి, lcd.h మరియు eusart.h వరుసగా LCD మరియు USART కొరకు. మరియు xc.h మైక్రోకంట్రోలర్ హెడర్ ఫైల్ కోసం.
# చేర్చండి
లో గర్జన ప్రధాన () ఫంక్షన్, system_init () ; ఫంక్షన్ LCD మరియు USART ను ప్రారంభించడానికి ఉపయోగించబడుతుంది.
శూన్యం ప్రధాన (శూన్యమైనది) { TRISB = 0x00; // అవుట్పుట్ సిస్టమ్_ఇనిట్ () గా సెట్టింగ్ ;
Lcd_init (); మరియు EUSART_Intialize (); lcd.h మరియు eusart.h అనే రెండు లైబ్రరీల నుండి పిలుస్తారు
శూన్యమైన సిస్టమ్_ఇనిట్ (శూన్యమైనది) { lcd_init (); // ఇది lcd EUSART1_Initialize () ను ప్రారంభిస్తుంది; // ఇది యూసార్ట్ను ప్రారంభిస్తుంది }
లో అయితే మనం లాంగిట్యూడ్ మరియు అక్షాంశ సమన్వయం పొందడానికి GPGGA స్ట్రింగ్ విచ్ఛిన్నం లూప్. మేము ఒక సమయంలో ఒక బిట్ను స్వీకరిస్తున్నాము మరియు GPGGA స్ట్రింగ్లో ఉన్న వ్యక్తిగత అక్షరాలతో పోల్చాము.
మేము పొందే కోడ్లను మేము విచ్ఛిన్నం చేస్తాము: -
incer_data = EUSART1_Read (); // '$ GPGGA,' / * ------------------------------ స్ట్రింగ్ను తనిఖీ చేయండి. --------------------------- * / if (incer_data == '$') {// GPS డేటా యొక్క మొదటి స్టేట్మెంట్ a తో ప్రారంభమవుతుంది $ సైన్ ఇన్కమర్_డేటా = EUSART1_ చదవండి (); // మొదటిది నిజమైతే, తరువాతి దశ (incer_data == 'G') { incomer_data = EUSART1_Read (); if (incer_data == 'P'); { incomer_data = EUSART1_Read (); if (incer_data == 'G'); { incomer_data = EUSART1_Read (); if (incer_data == 'G') { incomer_data = EUSART1_Read (); if (incer_data == 'A') { incomer_data = EUSART1_Read (); if (incer_data == ',') {// మొదట, స్వీకరించబడింది incer_data = EUSART1_Read (); // ఈ దశలో ఫైనల్ చెక్ ఇన్ పూర్తయింది, GPGGA కనుగొనబడింది.
ఈ కోడ్ను ఉపయోగించడం ద్వారా మేము UTC సమయాన్ని దాటవేస్తాము.
అయితే (incer_data! = ',') {// GMT ని దాటవేయడం సమయం incer_data = EUSART1_Read (); }
అక్షర శ్రేణిలో అక్షాంశం మరియు రేఖాంశ డేటాను నిల్వ చేయడానికి ఈ కోడ్.
incer_data = EUSART1_Read (); అక్షాంశం = ఆదాయ_డేటా; అయితే (incomer_data = ','!) { కోసం (array_count = 1;! incomer_data = 'N'; array_count ++) { incomer_data = EUSART1_Read (); అక్షాంశం = ఆదాయ_డేటా; // అక్షాంశ డేటాను నిల్వ చేయండి } incer_data = EUSART1_Read (); ఉంటే (incomer_data == '') { కోసం (array_count = 0;! incomer_data = 'E'; array_count ++) { incomer_data = EUSART1_Read (); రేఖాంశం = ఆదాయ_డేటా; // రేఖాంశ డేటాను నిల్వ చేయండి } }
చివరకు మేము LCD లో రేఖాంశం మరియు అక్షాంశాలను ముద్రించాము.
శ్రేణి_కౌంట్ = 0; lcd_com (0x80); // ఎల్సిడి లైన్ వన్ ఎంపిక అయితే (అర్రే_కౌంట్ <12) {// అక్షాంశ డేటా యొక్క శ్రేణి 11 అంకెల ఎల్సిడి_డేటా (అక్షాంశం); // అక్షాంశ డేటా శ్రేణిని ముద్రించండి_కౌంట్ ++; } శ్రేణి_కౌంట్ = 0; lcd_com (0xC0); // ఎల్సిడి లైన్ రెండు ఎంపిక అయితే (అర్రే_కౌంట్ <13) {// రేఖాంశ డేటా యొక్క శ్రేణి 12 అంకెల ఎల్సిడి_డేటా (రేఖాంశం); // రేఖాంశ డేటా శ్రేణిని ముద్రించండి_కౌంట్ ++; }
ప్రస్తుత స్థానం యొక్క అక్షాంశం మరియు రేఖాంశాన్ని పొందడానికి మేము GPS మాడ్యూల్ను PIC మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేయవచ్చు.
పూర్తి కోడ్ మరియు హెడర్ ఫైల్స్ క్రింద ఇవ్వబడ్డాయి.