# GPS డేటాను చదవండి - వర్చువల్ IoT హార్డ్‌వేర్ పాఠం యొక్క ఈ భాగంలో, మీరు మీ వర్చువల్ IoT పరికరానికి GPS సెన్సార్‌ను జోడించబోతున్నారు, మరియు దానిలో నుండి విలువలను చదువుతారు. ## వర్చువల్ హార్డ్‌వేర్ వర్చువల్ IoT పరికరం UART ద్వారా సీరియల్ పోర్ట్ ద్వారా యాక్సెస్ చేయదగిన అనుకరణ GPS సెన్సార్‌ను ఉపయోగిస్తుంది. భౌతిక GPS సెన్సార్ GPS ఉపగ్రహాల నుండి రేడియో తరంగాలను స్వీకరించడానికి యాంటెన్నాను కలిగి ఉంటుంది, మరియు GPS సంకేతాలను GPS డేటాగా మార్చుతుంది. వర్చువల్ వెర్షన్ ఇది లాటిట్యూడ్ మరియు లాంగిట్యూడ్ సెట్ చేయడం, రా NMEA వాక్యాలను పంపించడం, లేదా వరుసగా తిరిగిచ్చే అనేక ప్రదేశాలతో GPX ఫైల్‌ను అప్‌లోడ్ చేయడం ద్వారా అనుకరిస్తుంది. > 🎓 NMEA వాక్యాలు ఈ పాఠంలో తరువాత కవర్ చేయబడతాయి ### సెన్సార్‌ను CounterFitకు జోడించండి వర్చువల్ GPS సెన్సార్ ఉపయోగించాలంటే, ఒకటి CounterFit యాప్‌లో పొందుపరచాలి #### టాస్క్ - సెన్సార్‌ను CounterFitకి జోడించండి GPS సెన్సార్‌ను CounterFit యాప్‌లో జోడించండి. 1. మీ కంప్యూటర్లో `gps-sensor` అనే ఫోల్డర్‌లో ఒక కొత్త Python యాప్‌ను ఒకే ఫైలు `app.py` తో మరియు Python వర్చువల్ ఎన్విరన్మెంట్‌తో సృష్టించి, CounterFit పిప్ ప్యాకేజీలను జోడించండి. > ⚠️ అవసరమైతే [లెషన్ 1 లో CounterFit Python ప్రాజెక్ట్ సృష్టించడం మరియు సెటప్ చేయడం కోసం సూచనలను చూడవచ్చు](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md). 1. UART ఆధారిత సెన్సార్లతో సీరియల్ కనెక్షన్ ద్వారా సంభాషించగల CounterFit శిమ్ ఇన్‌స్టాల్ చేయడానికి ఒక అదనపు పిప్ ప్యాకేజీ ఇన్‌స్టాల్ చేయండి. వర్చువల్ ఎన్విరన్మెంట్ సక్రియమైన టెర్మినల్ నుండి ఇన్‌స్టాలేషన్ చేస్తున్నారని నిర్ధారించుకోండి. ```sh pip install counterfit-shims-serial ``` 1. CounterFit వెబ్ యాప్ నడుస్తుందన్నదానిని నిర్ధారించుకోండి 1. GPS సెన్సార్ సృష్టించండి: 1. *Create sensor* బాక్స్‌లో *Sensors* ప్యాగ్‌లో, *Sensor type* డ్రాప్ డౌన్ బాక్స్ తెరవండి మరియు *UART GPS* ఎంచుకోండి. 1. *Port* ను */dev/ttyAMA0* దానిగా ఉంచండి. 1. `/dev/ttyAMA0` పోర్ట్‌పై GPS సెన్సార్ సృష్టించడానికి **Add** బటన్‌ను ఎంచుకోండి ![GPS సెన్సార్ అమరికలు](../../../../../translated_images/te/counterfit-create-gps-sensor.6385dc9357d85ad1.webp) GPS సెన్సార్ క్రియేట్ అవుతుంది మరియు సెన్సార్ల జాబితాలో కనిపిస్తుంది. ![GPS సెన్సార్ సృష్టించబడింది](../../../../../translated_images/te/counterfit-gps-sensor.3fbb15af0a536756.webp) ## GPS సెన్సార్‌ను ప్రోగ్రామ్ చేయండి వర్చువల్ IoT పరికరాన్ని ఇప్పుడు వర్చువల్ GPS సెన్సార్ ఉపయోగించడానికి ప్రోగ్రామ్ చేయవచ్చు. ### టాస్క్ - GPS సెన్సార్‌ను ప్రోగ్రామ్ చేయండి GPS సెన్సార్ యాప్‌ను ప్రోగ్రామ్ చేయండి. 1. `gps-sensor` యాప్ VS కోడ్‌లో తెరవబడిందని నిర్ధారించుకోండి 1. `app.py` ఫైల్‌ను తెరవండి 1. CounterFit కు యాప్ కనెక్ట్ చేయడానికి `app.py` టాప్‌లో క్రింద చూపిన కోడ్‌ను జోడించండి: ```python from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) ``` 1. ఈ క్రింద చేర్పు చేయాల్సిన కోడ్ ద్వారా కొంత అవసరమైన లైబ్రరీలు, CounterFit సీరియల్ పోర్ట్ కోసం లైబ్రరీ సహా, దిగుమతి చేయండి: ```python import time import counterfit_shims_serial serial = counterfit_shims_serial.Serial('/dev/ttyAMA0') ``` ఈ కోడ్ `counterfit_shims_serial` పిప్ ప్యాకేజీ నుండి `serial` మాడ్యూల్‌ను దిగుమతి చేస్తుంది. తర్వాత `/dev/ttyAMA0` సీరియల్ పోర్ట్‌కు కనెక్ట్ అవుతుంది - ఇది వర్చువల్ GPS సెన్సార్ యొక్క UART పోర్ట్ యొక్క అడ్రస్. 1. సీరియల్ పోర్టులోనుండి చదవడానికి మరియు విలువలను కన్సోల్‌కి ముద్రించడానికి క్రింది కోడ్‌ను చేర్చండి: ```python def print_gps_data(line): print(line.rstrip()) while True: line = serial.readline().decode('utf-8') while len(line) > 0: print_gps_data(line) line = serial.readline().decode('utf-8') time.sleep(1) ``` `print_gps_data` అనే ఫంక్షన్ నిర్వచించబడింది, ఇది దానికోసం అందిన లైన్‌ను కన్సోల్‌కు ముద్రిస్తుంది. తర్వాత కోడ్ సీరియల్ పోర్ట్ నుండీ వచ్చే వాక్ యొక్క ఏన్ని లైన్లు అందవచ్చో ఎప్పటికప్పుడు చదవుతూ నిరంతరం పునరావృతం అవుతుంది. ప్రతి లైన్ కు `print_gps_data` ఫంక్షన్ పిలవబడుతుంది. అన్ని డేటా చదివిన తర్వాత, లూప్ 1 సెకను నిద్రించి, మళ్లీ ప్రయత్నిస్తుంది. 1. ఈ కోడ్‌ను రన్ చేయండి, CounterFit యాప్ నడుస్తున్న టెర్మినల్ నుంచి వేర్వేరు ఒక టెర్మినల్ ఉపయోగించడం ద్వారా, CounterFit యాప్ నడుస్తూనే ఉంటుంది. 1. CounterFit యాప్ నుండి gps సెన్సార్ విలువను మార్చండి. దీన్ని ఈ క్రింది విధానాల్లో చేయవచ్చు: * **Source**ను `Lat/Lon` కు సెట్ చేసి, స్పష్టమైన లాటిట్యూడ్, లాంగిట్యూడ్, మరియు GPS ఫిక్స్ పొందడానికి ఉపయోగించిన ఉపగ్రహాల సంఖ్యను సెట్ చేయండి. ఈ విలువ ఒకసారి మాత్రమే పంపబడుతుంది, కాబట్టి **Repeat** బాక్స్ ను టిక్ చేసి డేటా ప్రతి సెకను రిపీట్ అవ్వాలన్నదాన్ని నిర్ధారించండి. ![Lat lon ఎంచుకున్న GPS సెన్సార్](../../../../../translated_images/te/counterfit-gps-sensor-latlon.008c867d75464fbe.webp) * **Source**ను `NMEA` గా సెట్ చేసి వాక్యాలను టెక్స్ట్ బాక్స్‌లో చేర్చండి. ఈ అన్ని విలువలు 1 సెకను డిలే తర్వాత GGA (స్థానం ఫిక్స్) వాక్యం చదవబడే వరకు పంపబడతాయి. ![NMEA వాక్యాలు సెట్ చేసిన GPS సెన్సార్](../../../../../translated_images/te/counterfit-gps-sensor-nmea.c62eea442171e17e.webp) మీరు [nmeagen.org](https://www.nmeagen.org) వంటి టూల్‌ను ఉపయోగించి పటంలో డ్రా చేసి ఈ వాక్యాలను సృష్టించవచ్చు. ఈ విలువలు ఒకసారి మాత్రమే పంపబడతాయి, కాబట్టి **Repeat** బాక్స్‌ను టిక్ చేసి డేటా అన్ని పంపిన తరువాత 1 సెకను తర్వాత ఈ డేటా రిపీట్ అవ్వాలని నిర్ధారించండి. * **Source**ను GPX ఫైల్‌గా సెట్ చేసి ట్రాక్ ప్రదేశాలతో GPX ఫైల్‌ను అప్‌లోడ్ చేయండి. మీరు [AllTrails](https://www.alltrails.com/) వంటి ప్రసిద్ధ మ్యాపింగ్ మరియు హైకింగ్ సైట్ల నుండి GPX ఫైళ్లను డౌన్లోడ్ చేసుకోవచ్చు. ఈ ఫైళ్లు ట్రైల్గా అనేక GPS ప్రదేశాలను కలిగి ఉంటాయి, మరియు GPS సెన్సార్ ప్రతి కొత్త ప్రదేశాన్ని 1 సెకను విరామంతో తిరిగి అందిస్తుంది. ![GPX ఫైల్ సెట్ చేసిన GPS సెన్సార్](../../../../../translated_images/te/counterfit-gps-sensor-gpxfile.8310b063ce8a425c.webp) ఈ విలువలు ఒకసారి మాత్రమే పంపబడతాయి, కాబట్టి **Repeat** బాక్స్‌ను టిక్ చేసి డేటా అన్ని పంపిన తరువాత 1 సెకను తర్వాత డేటా రిపీట్ అవ్వాలని నిర్ధారించండి. GPS సెట్టింగులను కాన్ఫిగర్ చేసిన తరువాత, ఈ విలువలను సెన్సార్‌కు నిర్ధారించడానికి **Set** బటన్ ఎంచుకోండి. 1. మీరు GPS సెన్సార్ నుండి రా అవుట్పుట్ ఈ క్రింద చూపినట్లుగానే చూస్తారు: ```output $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 ``` > 💁 మీరు ఈ కోడ్‌ను [code-gps/virtual-device](../../../../../3-transport/lessons/1-location-tracking/code-gps/virtual-device) ఫోల్డర్‌లో కనుగొనవచ్చు. 😀 మీ GPS సెన్సార్ ప్రోగ్రామ్ విజయవంతమైంది! --- **అస్పష్టత**: ఈ డాక్యుమెంట్‌ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మనం ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో తప్పులు లేదా不ఖచ్చితత్వాలు ఉండవచ్చు. అసలు డాక్యుమెంట్ native భాషలో ఉన్నది అధికారిక మూలంగా పరిగణించాలి. కీలకమైన సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడుకలోనుంచి వచ్చే ఏవైనా అపార్థాలు లేదా తప్పుదుండిన అర్థాల గురించి మేము బాధ్యత వహించము.