- భాగాలు అవసరం
- GPS మాడ్యూల్
- STM32F103C8 నుండి పిన్ అవుట్ చేయండి
- సర్క్యూట్ రేఖాచిత్రం మరియు కనెక్షన్లు
- GPS మాడ్యూల్ ఇంటర్ఫేసింగ్ కోసం STM32F103C8 ప్రోగ్రామింగ్
- GPS మరియు STM32 తో అక్షాంశం మరియు రేఖాంశాన్ని కనుగొనడం
GPS అంటే గ్లోబల్ పొజిషనింగ్ సిస్టమ్ మరియు భూమిపై ఏదైనా ప్రదేశం యొక్క అక్షాంశం మరియు రేఖాంశాలను గుర్తించడానికి ఉపయోగిస్తారు, ఖచ్చితమైన UTC సమయం (యూనివర్సల్ టైమ్ కోఆర్డినేటెడ్). ఈ పరికరం సమయం మరియు తేదీతో ప్రతి సెకనుకు ఉపగ్రహం నుండి అక్షాంశాలను అందుకుంటుంది. GPS గొప్ప ఖచ్చితత్వాన్ని అందిస్తుంది మరియు స్థానం కోఆర్డినేట్లతో పాటు ఇతర డేటాను కూడా అందిస్తుంది.
GPS చాలా ఉపయోగకరమైన పరికరం అని మనందరికీ తెలుసు మరియు స్థానాన్ని ట్రాక్ చేయడానికి మొబైల్ ఫోన్లు మరియు ఇతర పోర్టబుల్ పరికరాల్లో సాధారణంగా ఉపయోగిస్తారు. విమానాల ఎత్తును తెలుసుకోవడానికి మీ ఇంటి వద్ద టాక్సీని పిలవడం నుండి ప్రతి రంగంలో ఇది చాలా విస్తృతమైన అనువర్తనాలను కలిగి ఉంది. మేము ఇంతకుముందు నిర్మించిన కొన్ని ఉపయోగకరమైన GPS సంబంధిత ప్రాజెక్టులు ఇక్కడ ఉన్నాయి:
- వాహన ట్రాకింగ్ వ్యవస్థ
- GPS గడియారం
- యాక్సిడెంట్ డిటెక్షన్ హెచ్చరిక వ్యవస్థ
- రాస్ప్బెర్రీ పై జిపిఎస్ మాడ్యూల్ ఇంటర్ఫేసింగ్ ట్యుటోరియల్
- పిఐసి మైక్రోకంట్రోలర్తో ఇంటర్ఫేసింగ్ జిపిఎస్ మాడ్యూల్
ఇక్కడ ఈ ట్యుటోరియల్లో, స్థాన కోఆర్డినేట్లను కనుగొని వాటిని 16x2 LCD డిస్ప్లేలో ప్రదర్శించడానికి STM32F103C8 మైక్రోకంట్రోలర్తో GPS మాడ్యూల్ను ఇంటర్ఫేస్ చేస్తాము.
భాగాలు అవసరం
- STM32F103C8 మైక్రోకంట్రోలర్
- GPS మాడ్యూల్
- 16x2 LCD డిస్ప్లే
- బ్రెడ్బోర్డ్
- వైర్లను కనెక్ట్ చేస్తోంది
GPS మాడ్యూల్
ఇది GY-NEO6MV2 XM37-1612 GPS మాడ్యూల్. ఈ GPS మాడ్యూల్ నాలుగు పిన్ + 5 వి, జిఎన్డి, టిఎక్స్డి మరియు ఆర్ఎక్స్డిలను కలిగి ఉంది. ఇది సీరియల్ పిన్లను ఉపయోగించి కమ్యూనికేట్ చేస్తుంది మరియు STM32F103C8 యొక్క సీరియల్ పోర్ట్తో సులభంగా ఇంటర్ఫేస్ చేయవచ్చు.
GPS మాడ్యూల్ డేటాను NMEA ఆకృతిలో పంపుతుంది (క్రింద స్క్రీన్ షాట్ చూడండి). NMEA ఫార్మాట్ అనేక వాక్యాలను కలిగి ఉంటుంది, దీనిలో మనకు ఒక వాక్యం మాత్రమే అవసరం. ఈ వాక్యం $ GPGGA నుండి మొదలవుతుంది మరియు అక్షాంశాలు, సమయం మరియు ఇతర ఉపయోగకరమైన సమాచారాన్ని కలిగి ఉంటుంది. ఈ GPGGA ని గ్లోబల్ పొజిషనింగ్ సిస్టమ్ ఫిక్స్ డేటాకు సూచిస్తారు. GPS డేటా మరియు దాని తీగలను చదవడం గురించి ఇక్కడ మరింత తెలుసుకోండి.
క్రింద ఒక నమూనా $ GPGGA స్ట్రింగ్, దాని వివరణతో పాటు:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47
$ GPGGA, HHMMSS.SSS, అక్షాంశం, N, రేఖాంశం, E, FQ, NOS, HDP, ఎత్తు, M, ఎత్తు, M, చెక్సమ్ డేటా
కానీ ఇక్కడ ఈ ట్యుటోరియల్లో, మేము ఒక చిన్న GPSPlus GPS లైబ్రరీని ఉపయోగిస్తున్నాము, ఇది NMEA వాక్యం నుండి అవసరమైన అన్ని సమాచారాన్ని సంగ్రహిస్తుంది మరియు అక్షాంశం మరియు రేఖాంశం పొందడానికి మేము సరళమైన కోడ్ను వ్రాయాలి, దీనిని తరువాత ట్యుటోరియల్లో చూస్తాము.
STM32F103C8 నుండి పిన్ అవుట్ చేయండి
STM32F103C8 (బ్లూ పిల్) USART సీరియల్ కమ్యూనికేషన్ పోర్ట్లు క్రింద ఉన్న పిన్ అవుట్ చిత్రంలో చూపించబడ్డాయి. ఇవి నీలం రంగు కలిగి ఉంటాయి (PA9-TX1, PA10- RX1, PA2-TX2, PA3- RX2, PB10-TX3, PB11- RX3). దీనికి అలాంటి మూడు కమ్యూనికేషన్ మార్గాలు ఉన్నాయి.
సర్క్యూట్ రేఖాచిత్రం మరియు కనెక్షన్లు
GPS మాడ్యూల్ & STM32F103C8 మధ్య సర్క్యూట్ కనెక్షన్లు
GPS మాడ్యూల్ |
STM32F103C8 |
RXD |
PA9 (TX1) |
TXD |
PA10 (RX1) |
+ 5 వి |
+ 5 వి |
GND |
GND |
16x2 LCD & STM32F103C8 మధ్య కనెక్షన్లు
ఎల్సిడి పిన్ నం |
LCD పిన్ పేరు |
STM32 పిన్ పేరు |
1 |
గ్రౌండ్ (Gnd) |
గ్రౌండ్ (జి) |
2 |
వీసీసీ |
5 వి |
3 |
VEE |
సెంటర్ ఆఫ్ పొటెన్టోమీటర్ నుండి పిన్ చేయండి |
4 |
రిజిస్టర్ సెలెక్ట్ (RS) |
పిబి 11 |
5 |
చదవండి / వ్రాయండి (RW) |
గ్రౌండ్ (జి) |
6 |
ప్రారంభించండి (EN) |
పిబి 10 |
7 |
డేటా బిట్ 0 (DB0) |
కనెక్షన్ లేదు (NC) |
8 |
డేటా బిట్ 1 (డిబి 1) |
కనెక్షన్ లేదు (NC) |
9 |
డేటా బిట్ 2 (డిబి 2) |
కనెక్షన్ లేదు (NC) |
10 |
డేటా బిట్ 3 (డిబి 3) |
కనెక్షన్ లేదు (NC) |
11 |
డేటా బిట్ 4 (డిబి 4) |
పిబి 0 |
12 |
డేటా బిట్ 5 (డిబి 5) |
పిబి 1 |
13 |
డేటా బిట్ 6 (డిబి 6) |
పిసి 13 |
14 |
డేటా బిట్ 7 (డిబి 7) |
పిసి 14 |
15 |
LED పాజిటివ్ |
5 వి |
16 |
LED నెగటివ్ |
గ్రౌండ్ (జి) |
మొత్తం సెటప్ క్రింద కనిపిస్తుంది:
GPS మాడ్యూల్ ఇంటర్ఫేసింగ్ కోసం STM32F103C8 ప్రోగ్రామింగ్
STM32 ఉపయోగించి GPS మాడ్యూల్ ఉపయోగించి స్థానాన్ని కనుగొనటానికి పూర్తి ప్రోగ్రామ్ ఈ ప్రాజెక్ట్ చివరిలో ఇవ్వబడింది. STM32F103C8 ను USB పోర్ట్ ద్వారా PC కి కనెక్ట్ చేయడం ద్వారా Arduino IDE ని ఉపయోగించి ప్రోగ్రామ్ చేయవచ్చు. కోడ్ను అప్లోడ్ చేసేటప్పుడు పిన్స్ TX మరియు RX ను తీసివేసి, అప్లోడ్ చేసిన తర్వాత దాన్ని కనెక్ట్ చేయండి.
STM32 తో GPS ను ఇంటర్ఫేస్ చేయడానికి, మొదట మనం GitHub లింక్ TinyGPSPlus నుండి లైబ్రరీని డౌన్లోడ్ చేసుకోవాలి. లైబ్రరీని డౌన్లోడ్ చేసిన తరువాత, దీనిని స్కెచ్ -> లైబ్రరీని చేర్చండి ->.zip లైబ్రరీని చేర్చుట ద్వారా Arduino IDE లో చేర్చవచ్చు . Arduino తో GPS ను ఇంటర్ఫేస్ చేయడానికి అదే లైబ్రరీని ఉపయోగించవచ్చు.
కాబట్టి మొదట అవసరమైన లైబ్రరీ ఫైళ్ళను చేర్చండి మరియు 16x2 LCD కోసం పిన్లను నిర్వచించండి:
# చేర్చండి
అప్పుడు ఒక వస్తువు అనే సృష్టించడానికి GPS తరగతి TinyGPSPlus యొక్క.
TinyGPSPlus gps;
నెక్ట్స్ గర్జన సెటప్ ఉపయోగించి GPS మాడ్యూల్ తో సీరియల్ కమ్యూనికేషన్ ప్రారంభం Serial1.begin (9600). STM32F103C8 యొక్క సీరియల్ 1 పోర్ట్ (పిన్స్- PA9, PA10) గా సీరియల్ 1 ఉపయోగించబడుతుంది.
సీరియల్ 1.బెగిన్ (9600);
అప్పుడు కొంతకాలం స్వాగత సందేశాన్ని ప్రదర్శించండి.
lcd.begin (16,2); lcd.print ("సర్క్యూట్ డైజెస్ట్"); lcd.setCursor (0,1); lcd.print ("GPS తో STM32"); ఆలస్యం (4000); lcd.clear ();
నెక్ట్స్ గర్జన లూప్ (), మేము GPS నుండి అక్షాంశం మరియు రేఖాంశం అందుకుంటారు మరియు అందుకున్న డేటా సీరియల్ మానిటర్ మరియు LCD లో చెల్లుబాటు అయ్యే లేదా మరియు ప్రదర్శన సమాచారం ఉంది లేదో తనిఖీ.
అందుబాటులో ఉన్న స్థాన డేటా చెల్లుబాటు కాదా అని తనిఖీ చేస్తోంది
loc_valid = gps.location.isValid ();
అక్షాంశ డేటాను అందుకుంటుంది
lat_val = gps.location.lat ();
రేఖాంశ డేటాను స్వీకరిస్తుంది
lng_val = gps.location.lng ();
చెల్లని డేటా స్వీకరించబడితే అది సీరియల్ మానిటర్లో “*****” ను ప్రదర్శిస్తుంది మరియు LCD లో “వెయిటింగ్” ని ప్రదర్శిస్తుంది.
if (! loc_valid) { lcd.print ("వేచి ఉంది"); సీరియల్.ప్రింట్ ("అక్షాంశం:"); సీరియల్.ప్రింట్ల్న్ ("*****"); సీరియల్.ప్రింట్ ("రేఖాంశం:"); సీరియల్.ప్రింట్ల్న్ ("*****"); ఆలస్యం (4000); lcd.clear (); }
చెల్లుబాటు అయ్యే డేటా అందుకుంటే అక్షాంశం మరియు రేఖాంశం సీరియల్ మానిటర్తో పాటు ఎల్సిడి డిస్ప్లేలో ప్రదర్శించబడుతుంది.
lcd.clear (); Serial.println ("GPS READING:"); సీరియల్.ప్రింట్ ("అక్షాంశం:"); సీరియల్.ప్రింట్ల్న్ (లాట్_వాల్, 6); lcd.setCursor (0,0); lcd.print ("LAT:"); lcd.print (lat_val, 6); సీరియల్.ప్రింట్ ("రేఖాంశం:"); సీరియల్.ప్రింట్ల్న్ (lng_val, 6); lcd.setCursor (0,1); lcd.print ("దీర్ఘ:"); lcd.print (lng_val, 6); ఆలస్యం (4000);
క్రింది ఫంక్షన్ డేటాను చదవడానికి ఆలస్యాన్ని అందిస్తుంది. ఇది సీరియల్ పోర్టులో డేటా కోసం చూస్తూ ఉంటుంది.
స్టాటిక్ శూన్యత GPSDelay (సంతకం చేయని పొడవైన ms) { సంతకం చేయని దీర్ఘ ప్రారంభం = మిల్లీస్ (); అలా { అయితే (Serial1.available ()) gps.encode (Serial1.read ()); } ఉండగా (మిల్లీస్ () - ప్రారంభం <ms); }
GPS మరియు STM32 తో అక్షాంశం మరియు రేఖాంశాన్ని కనుగొనడం
సెటప్ను నిర్మించి, కోడ్ను అప్లోడ్ చేసిన తర్వాత, సిగ్నల్ను వేగంగా స్వీకరించడానికి GPS మాడ్యూల్ను ఓపెన్ ఏరియాలో ఉంచాలని నిర్ధారించుకోండి. కొన్నిసార్లు సిగ్నల్ స్వీకరించడానికి కొన్ని నిమిషాలు పడుతుంది కాబట్టి కొంత సమయం వేచి ఉండండి. సిగ్నల్ స్వీకరించడం ప్రారంభించినప్పుడు LED GPS మాడ్యూల్లో మెరిసేటట్లు ప్రారంభమవుతుంది మరియు LCD డిస్ప్లేలో లొకేషన్ కోఆర్డినేట్లు ప్రదర్శించబడతాయి.
మీరు Google పటాలను ఉపయోగించి స్థానం యొక్క అక్షాంశం మరియు రేఖాంశాన్ని ధృవీకరించవచ్చు. GPS ఆన్ చేయబడిన Google మ్యాప్లకు వెళ్లి బ్లూ డాట్పై క్లిక్ చేయండి. ఇది దిగువ చిత్రంలో చూపిన విధంగా అక్షాంశం మరియు రేఖాంశంతో చిరునామాను చూపుతుంది
పూర్తి కోడ్ మరియు ప్రదర్శన వీడియో క్రింద ఇవ్వబడింది.