# GPS డేటాను చదవండి - రాస్ప్బెర్రీ పై ఈ పాఠంలోని భాగంలో, మీరు మీ రాస్ప్బెర్రీ పైకి GPS సెన్సార్‌ను జోడించి, దానినుండి విలువలను చదువుతారు. ## హార్డ్వేర్ రాస్ప్బెర్రీ పైకి GPS సెన్సార్ అవసరం. మీరు ఉపయోగించనున్న సెన్సార్ [Grove GPS Air530 సెన్సార్](https://www.seeedstudio.com/Grove-GPS-Air530-p-4584.html). ఈ సెన్సార్ వేగవంతమైన మతిపోతున్న పరిష్కారానికి అనేక GPS వ్యవస్థలకు కనెక్ట్ కావచ్చు. సెన్సార్ 2 భాగాలుగా ఉంటుంది - సెన్సార్ యొక్క కోర్ ఎలక్ట్రానిక్స్, మరియు ఓ బయటి యాంటెన్నా, ఇది రేడియో తరంగాలను ఉపగ్రహాల నుండి అందుకునే సన్నని వైర్ ద్వారా జతచేయబడింది. ఇది UART సెన్సార్, కాబట్టి GPS డేటాను UART ద్వారా పంపుతుంది. ## GPS సెన్సార్ కనెక్ట్ చేయండి Grove GPS సెన్సార్‌ను రాస్ప్బెర్రీ పైకి కనెక్ట్ చేయవచ్చు. ### పనిది - GPS సెన్సార్ కనెక్ట్ చేయండి GPS సెన్సార్‌ని కనెక్ట్ చేయండి. ![A grove GPS sensor](../../../../../translated_images/te/grove-gps-sensor.247943bf69b03f0d.webp) 1. Grove కేబుల్ ఒక చివరను GPS సెన్సార్上的 సాకెట్ లో పెట్టండి. అది ఒక్క దిశలోనే పోతుంది. 1. రాస్ప్బెర్రీ పై పవర్ ఆఫ్ చేసిన తర్వాత, Grove కేబుల్ యొక్క మార్చి చివరని Piకి జతచేసిన Grove Base హాట్上的 **UART** సాకెట్‌కు కనెక్ట్ చేయండి. ఈ సాకెట్ మధ్య వరుసలో ఉంటుంది, SD కార్డ్ స్లాట్ సమీప బదులు, USB పోర్ట్స్ మరియు ఇథర్నెట్ సాకెట్ పక్కన ఉంటది. ![The grove GPS sensor connected to the UART socket](../../../../../translated_images/te/pi-gps-sensor.1f99ee2b2f652891.webp) 1. GPS సెన్సార్‌ను అటువంటి విధంగా పెట్టండి, యాంటెన్నా ఆకాశాన్ని చూడగలగడం - ఇలాకా ఓపెన్ విన్‌డో లేదా బయట. యాంటెన్నాకు మార్గంలో ఏదీ లేకపోతే క్లియర్ సిగ్నల్ పొందడం సులభం. ## GPS సెన్సార్ ప్రోగ్రామ్ చేయండి రాస్ప్బెర్రీ పై ఇప్పుడు జతచేసిన GPS సెన్సార్ ఉపయోగించేందుకు ప్రోగ్రామ్ చేయబడవచ్చు. ### పనిది - GPS సెన్సార్ ప్రోగ్రామ్ చేయండి పరికరాన్ని ప్రోగ్రామ్ చేయండి. 1. Piని పవర్ చేయండి మరియు అది బూట్ అయ్యేవరకు పడుకోండి 1. GPS సెన్సార్には 2 LEDs ఉన్నాయి - డేటా ప్రసారం చేసినప్పుడు బ్లూ LED ఫ్లాష్ అవుతుంది, మరియు ఉపగ్రహాల నుండి డేటా అందుకునేటప్పుడు ప్రతి సెకనుకు ఒకసారి గ్రీన్ LED ఫ్లాష్ అవుతుంది. Pi పవర్ చేయగానే బ్లూ LED ఫ్లాశ్ అవుతుందో లేదో చూడండి. కొన్ని నిమిషాల తరువాత గ్రీన్ LED ఫ్లాష్ అవుతుంటే బాగుంది - లేకపోతే, యాంటెన్నా పునర్ స్థానీకరించాల్సి ఉంటుంది. 1. VS Codeని ప్రారంభించండి, నేరుగా Piమీద లేదా Remote SSH విస్తరణ ద్వారా కనెక్ట్ అవ్వండి. > ⚠️ అవసరమైతే [పాఠం 1లో VS Code సెటప్ మరియు ప్రారంభం మార్గదర్శకాలను చూడండి](../../../1-getting-started/lessons/1-introduction-to-iot/pi.md). 1. కొత్త రాస్ప్బెర్రీ పై వర్షన్లలో, Bluetoothకు ఉపయోగించే సీరియల్ పోర్ట్ మరియు Grove UART పోర్ట్ ఉపయోగించే సీరియల్ పోర్ట్ మధ్య విరుద్ధత ఉంటది. దీన్ని సరిచేయడానికి, క్రింది చర్యలు తీసుకోండి: 1. VS Code టెర్మినల్ నుండి, `/boot/config.txt` ఫైల్‌ను `nano` అనే టెర్మినల్ టেক্স్ట్ ఎడిటర్‌తో ఎడిట్ చేయండి: ```sh sudo nano /boot/config.txt ``` > ఈ ఫైల్‌ను VS Codeలో ఎడిట్ చేయలేరు, ఎందుకంటే మీరు `sudo` అనుమతులతో ఎడిట్ చేయాలి. VS Code ఆ అనుమతులు కలిగి ఉండదు. 1. కర్సర్ కీలు ఉపయోగించి ఫైల్ చివరికి వెళ్లండి. తరువాత దిగువ కోడ్‌ను కాపీ చేసి ఫైల్ చివర్లో పేస్ట్ చేయండి: ```ini dtoverlay=pi3-miniuart-bt dtoverlay=pi3-disable-bt enable_uart=1 ``` మీరు మీ పరికరానికి సాధారణ కీబోర్డు షార్ట్‌కట్స్ (`Ctrl+v` Windows, Linux లేదా Raspberry Pi OSలో, `Cmd+v` macOSలో) ఉపయోగించి పేస్ట్ చేయవచ్చు. 1. ఈ ఫైల్ సేవ్ చేసి nano నుండి `Ctrl+x` తో నిష్క్రమించండి. మీరు ఫైల్ మార్చిని సేవ్ చేయాలా అని అడిగితే `y` నొక్కి, తరువాత `/boot/config.txt` ని దాచడానికి `enter` నొక్కండి. > తప్పు అయితే సేవ్ లేకుండా నిష్క్రమించి, ఈ దశలను తిరిగి చేయవచ్చు. 1. `/boot/cmdline.txt` ఫైల్ nanoలో క్రింది కమాండ్ తో ఎడిట్ చేయండి: ```sh sudo nano /boot/cmdline.txt ``` 1. ఈ ఫైల్‌లో స్పేసులు ద్వారా విడిపోయిన అనేక కీల/విలువలు ఉంటాయి. `console` అనే కీల‌కు చెందిన అన్ని జంటలను తొలగించండి. అవి సాదాసీదా ఇలాగే ఉంటాయి: ```output console=serial0,115200 console=tty1 ``` కర్సర్ కీలు ఉపయోగించి వాటి వద్దకు వెళ్ళి, `del` లేదా `backspace` కీలు తో తొలగించవచ్చు. ఉదాహరణకు, మీ అసలు ఫైల్ ఇలాగే ఉంటే: ```output console=serial0,115200 console=tty1 root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait ``` కొత్త వర్షన్ ఇలా ఉంటుంది: ```output root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait ``` 1. పై దశల్ని అనుసరించి సేవ్ చేసి nano నుండి నిష్క్రమించండి 1. Piని రీబూట్ చేసి, Pi రీబూట్ అయిన తర్వాత VS Codeలో మళ్ళీ కనెక్ట్ అవ్వండి. 1. టెర్మినల్ నుంచి, `pi` యూజర్ హోమ్ డైరెక్టరీలో `gps-sensor` అనే కొత్త ఫోల్డర్ సృష్టించండి. ఈ ఫోల్డర్‌లో `app.py` అనే ఫైల్ సృష్టించండి. 1. ఈ ఫోల్డర్‌ను VS Codeలో తెరవండి 1. GPS మాడ్యూల్ సీరియల్ పోర్ట్ ద్వారా UART డేటాను పంపుతుంది. Python కోడ్ నుండి సీరియల్ పోర్టుతో కమ్యూనికేట్ చేయడానికి `pyserial` Pip ప్యాకేజ్ ను ఇన్‌స్టాల్ చేయండి: ```sh pip3 install pyserial ``` 1. మీ `app.py` ఫైల్ లో క్రింది కోడ్‌ను జోడించండి: ```python import time import serial serial = serial.Serial('/dev/ttyAMA0', 9600, timeout=1) serial.reset_input_buffer() serial.flush() 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) ``` ఈ కోడ్ `pyserial` Pip ప్యాకేజ్ నుండి `serial` మాడ్యూల్‌ని దిగుమతి చేసుకుంటుంది. తరువాత `/dev/ttyAMA0` సీరియల్ పోర్ట్‌కు కనెక్ట్ అవుతుంది - ఇది Grove Pi Base Hat యొక్క UART పోర్ట్ యొక్క అడ్రస్. తదుపరి ఈ సీరియల్ కనెక్షన్ నుండి ఉన్న డేటాను క్లియర్ చేస్తుంది. తర్వాత `print_gps_data` అనే ఫంక్షన్ నిర్వచించబడుతుంది, ఇది అందిన లైన్‌ని కాన్సోల్ లో ప్రింట్ చేస్తుంది. తరువాత కోడ్ ఎప్పటికీ తిరుగుతూ, ప్రతి లూపులో సీరియల్ పోర్టు నుంచి ఎక్కువన్ని లైన్లు చదివి, ఆ లైన్ల ప్రతికి `print_gps_data` ఫంక్షన్‌ని పిలుస్తుంది. డేటా మొత్తం చదివిన తర్వాత, లూప్ 1 సెకనుకు నిద్ర పోతుంది, ఆ తరువాత మళ్ళీ ప్రయత్నిస్తుంది. 1. ఈ కోడ్‌ను চালించండి. మీరు GPS సెన్సార్ నుండి రా అవుట్పుట్‌ను చూడగలుగుతారు, తలాగా: ```output $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $BDGSA,A,1,,,,,,,,,,,,,,,*0F $GPGSV,1,1,00*79 $BDGSV,1,1,00*68 ``` > కోడ్ ఆపి మళ్ళీ ప్రారంభించినప్పుడు ఈలోపాలు వస్తే, మీ while లూప్ లో `try - except` బ్లాక్ జోడించండి. ```output UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 0: invalid start byte UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf1 in position 0: invalid continuation byte ``` ```python while True: try: line = serial.readline().decode('utf-8') while len(line) > 0: print_gps_data() line = serial.readline().decode('utf-8') # మొదటి బైట్ చదవబడుతున్నది ఒక అక్షరంలోని మధ్యలో ఉండే అనుకోలు అవకాశముంది. # మరో పూర్తి వరుసను చదవండి మరియు కొనసాగించండి. except UnicodeDecodeError: line = serial.readline().decode('utf-8') time.sleep(1) ``` > 💁 ఈ కోడ్ [code-gps/pi](../../../../../3-transport/lessons/1-location-tracking/code-gps/pi) ఫోల్డర్‌లో కనుగొన్నారు. 😀 మీ GPS సెన్సార్ ప్రోగ్రామ్ విజయం సాధించింది! --- **తెలుగు వివరణ**: ఈ ఆవరణ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము సరైన అనువాదానికి ప్రయత్నిస్తున్నప్పటికీ, ఆటోమేటెడ్ అనువాదంలో తప్పులు లేదా అసత్యతలు ఉండవచ్చు. స్థానిక భాషలో ఉన్న ఒరిజినల్ పత్రాన్ని అధికారిక మూలంగా పరిగణించాలి. కీలకమైన సమాచారానికి, నిపుణుల మానవ అనువాదం అవసరం. ఈ అనువాదం ఉపయోగిస్తున్నందున వచ్చిన ఏవైనా అవగాహన తప్పులు లేదా దోషాలకు మేము బాధ్యత వహించముగా లేము.