# GPS डेटा वाचा - रास्पबेरी पाय या धड्याच्या भागात, तुम्ही तुमच्या रास्पबेरी पायला GPS सेन्सर जोडाल आणि त्यातून मूल्ये वाचाल. ## हार्डवेअर रास्पबेरी पायसाठी GPS सेन्सर आवश्यक आहे. तुम्ही वापरणार असलेला सेन्सर [Grove GPS Air530 सेन्सर](https://www.seeedstudio.com/Grove-GPS-Air530-p-4584.html) आहे. हा सेन्सर अनेक GPS प्रणालींशी जोडला जाऊ शकतो ज्यामुळे जलद आणि अचूक डेटा मिळतो. हा सेन्सर दोन भागांपासून बनलेला आहे - सेन्सरचे मुख्य इलेक्ट्रॉनिक्स आणि एक बाह्य अँटेना जो उपग्रहांकडून रेडिओ लहरी पकडण्यासाठी पातळ वायरद्वारे जोडलेला आहे. हा UART सेन्सर आहे, त्यामुळे तो UART वर GPS डेटा पाठवतो. ## GPS सेन्सर कनेक्ट करा Grove GPS सेन्सर रास्पबेरी पायशी जोडला जाऊ शकतो. ### कार्य - GPS सेन्सर कनेक्ट करा GPS सेन्सर कनेक्ट करा. ![Grove GPS सेन्सर](../../../../../translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.mr.png) 1. Grove केबलचा एक टोक GPS सेन्सरवरील सॉकेटमध्ये घाला. ही केबल फक्त एका दिशेने जाईल. 1. रास्पबेरी पाय बंद असताना, Grove केबलचा दुसरा टोक Grove Base हॅटवरील **UART** म्हणून चिन्हांकित सॉकेटमध्ये जोडा. हे सॉकेट मधल्या रांगेत आहे, SD कार्ड स्लॉटच्या जवळच्या बाजूला, USB पोर्ट्स आणि ईथरनेट सॉकेटच्या विरुद्ध बाजूला. ![UART सॉकेटशी जोडलेला Grove GPS सेन्सर](../../../../../translated_images/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.mr.png) 1. GPS सेन्सर अशा प्रकारे ठेवा की जोडलेला अँटेना आकाशाकडे दिसत असेल - शक्यतो उघड्या खिडकीजवळ किंवा बाहेर. अँटेना समोर काहीही नसल्यास सिग्नल अधिक स्पष्ट मिळतो. ## GPS सेन्सर प्रोग्राम करा रास्पबेरी पाय आता जोडलेल्या GPS सेन्सरचा वापर करण्यासाठी प्रोग्राम केला जाऊ शकतो. ### कार्य - GPS सेन्सर प्रोग्राम करा डिव्हाइस प्रोग्राम करा. 1. पाय चालू करा आणि बूट होण्याची वाट पाहा. 1. GPS सेन्सरमध्ये 2 LEDs आहेत - एक निळा LED जो डेटा प्रसारित होताना फ्लॅश होतो, आणि एक हिरवा LED जो उपग्रहांकडून डेटा प्राप्त करताना प्रत्येक सेकंदाला फ्लॅश होतो. पाय चालू केल्यावर निळा LED फ्लॅश होत असल्याची खात्री करा. काही मिनिटांनंतर हिरवा LED फ्लॅश होईल - जर तसे झाले नाही तर तुम्हाला अँटेना पुन्हा ठेवल्याची गरज असू शकते. 1. VS Code सुरू करा, थेट पायवर किंवा Remote SSH विस्ताराद्वारे कनेक्ट करा. > ⚠️ [धडा 1 मध्ये VS Code सेटअप आणि सुरू करण्याच्या सूचना](../../../1-getting-started/lessons/1-introduction-to-iot/pi.md) पाहू शकता. 1. नवीन रास्पबेरी पाय आवृत्त्यांमध्ये Bluetooth समर्थित असल्यामुळे, Bluetooth साठी वापरल्या जाणाऱ्या सीरियल पोर्ट आणि Grove UART पोर्टसाठी वापरल्या जाणाऱ्या पोर्टमध्ये संघर्ष होतो. हे ठीक करण्यासाठी खालीलप्रमाणे करा: 1. VS Code टर्मिनलमधून, `nano` वापरून `/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. `Ctrl+x` दाबून फाइल सेव्ह करा आणि `nano` मधून बाहेर पडा. तुम्हाला बदल सेव्ह करायचे आहेत का विचारले असता `y` दाबा, नंतर `/boot/config.txt` ओव्हरराइट करण्यासाठी `enter` दाबा. > जर तुम्ही चूक केली असेल, तर सेव्ह न करता बाहेर पडू शकता आणि नंतर हे चरण पुन्हा करा. 1. `nano` वापरून `/boot/cmdline.txt` फाइल संपादित करा. खालील आदेश वापरा: ```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. तुमचा पाय रीबूट करा, नंतर पाय रीबूट झाल्यावर 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') # There's a random chance the first byte being read is part way through a character. # Read another full line and continue. 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) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.