# GPS डेटा वाचा - व्हर्च्युअल IoT हार्डवेअर या धड्याच्या भागात, तुम्ही तुमच्या व्हर्च्युअल IoT डिव्हाइसवर GPS सेन्सर जोडाल आणि त्यातून मूल्ये वाचाल. ## व्हर्च्युअल हार्डवेअर व्हर्च्युअल IoT डिव्हाइस UART द्वारे सीरियल पोर्टवर प्रवेशयोग्य सिम्युलेटेड GPS सेन्सर वापरेल. भौतिक GPS सेन्सरमध्ये GPS उपग्रहांकडून रेडिओ लहरी पकडण्यासाठी अँटेना असतो आणि GPS सिग्नल्सना GPS डेटामध्ये रूपांतरित करतो. व्हर्च्युअल आवृत्ती याची नक्कल करते, ज्यामुळे तुम्हाला अक्षांश आणि रेखांश सेट करण्याची, कच्च्या NMEA वाक्ये पाठवण्याची किंवा GPX फाइल अपलोड करण्याची परवानगी मिळते ज्यामध्ये अनेक स्थान असतात जे क्रमाने परत दिले जाऊ शकतात. > 🎓 NMEA वाक्ये पुढील धड्यात कव्हर केली जातील ### CounterFit मध्ये सेन्सर जोडा व्हर्च्युअल GPS सेन्सर वापरण्यासाठी, तुम्हाला CounterFit अॅपमध्ये एक जोडणे आवश्यक आहे. #### कार्य - CounterFit मध्ये सेन्सर जोडा CounterFit अॅपमध्ये GPS सेन्सर जोडा. 1. तुमच्या संगणकावर `gps-sensor` नावाच्या फोल्डरमध्ये एक नवीन Python अॅप तयार करा ज्यामध्ये `app.py` नावाची एक फाइल आणि Python व्हर्च्युअल वातावरण असेल, आणि CounterFit pip पॅकेजेस जोडा. > ⚠️ [CounterFit Python प्रकल्प तयार करण्यासाठी आणि सेट करण्यासाठी धडा 1 मधील सूचना आवश्यक असल्यास](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md) संदर्भित करू शकता. 1. UART आधारित सेन्सरशी सीरियल कनेक्शनद्वारे संवाद साधू शकणारा CounterFit शिम स्थापित करण्यासाठी अतिरिक्त Pip पॅकेज स्थापित करा. हे व्हर्च्युअल वातावरण सक्रिय असलेल्या टर्मिनलमधून स्थापित करत असल्याची खात्री करा. ```sh pip install counterfit-shims-serial ``` 1. CounterFit वेब अॅप चालू असल्याची खात्री करा. 1. GPS सेन्सर तयार करा: 1. *Sensors* पॅनमधील *Create sensor* बॉक्समध्ये, *Sensor type* ड्रॉपडाउन करा आणि *UART GPS* निवडा. 1. *Port* */dev/ttyAMA0* वर सेट ठेवा. 1. **Add** बटण निवडा जेणेकरून `/dev/ttyAMA0` पोर्टवर GPS सेन्सर तयार होईल. ![GPS सेन्सर सेटिंग्ज](../../../../../translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.mr.png) GPS सेन्सर तयार केला जाईल आणि सेन्सर्सच्या यादीत दिसेल. ![GPS सेन्सर तयार झाला](../../../../../translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.mr.png) ## GPS सेन्सर प्रोग्राम करा व्हर्च्युअल IoT डिव्हाइस आता व्हर्च्युअल GPS सेन्सर वापरण्यासाठी प्रोग्राम केले जाऊ शकते. ### कार्य - GPS सेन्सर प्रोग्राम करा GPS सेन्सर अॅप प्रोग्राम करा. 1. `gps-sensor` अॅप VS Code मध्ये उघडा. 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` Pip पॅकेजमधील `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 अॅप चालू ठेवण्यासाठी तुम्ही वेगळ्या टर्मिनलचा वापर करत आहात. 1. CounterFit अॅपमधून GPS सेन्सरचे मूल्य बदला. तुम्ही हे खालीलपैकी एका प्रकारे करू शकता: * **Source** `Lat/Lon` वर सेट करा आणि GPS फिक्स मिळवण्यासाठी वापरलेल्या उपग्रहांची स्पष्ट अक्षांश, रेखांश आणि संख्या सेट करा. हे मूल्य फक्त एकदाच पाठवले जाईल, त्यामुळे **Repeat** बॉक्स तपासा जेणेकरून डेटा प्रत्येक सेकंदाला पुन्हा पाठवला जाईल. ![GPS सेन्सर lat lon निवडलेला](../../../../../translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.mr.png) * **Source** `NMEA` वर सेट करा आणि काही NMEA वाक्ये टेक्स्ट बॉक्समध्ये जोडा. ही सर्व मूल्ये पाठवली जातील, प्रत्येक नवीन GGA (स्थिती फिक्स) वाक्य वाचण्यापूर्वी 1 सेकंदाचा विलंब होईल. ![GPS सेन्सर NMEA वाक्ये सेट केलेली](../../../../../translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.mr.png) तुम्ही [nmeagen.org](https://www.nmeagen.org) सारख्या टूलचा वापर करून नकाशावर रेखाटन करून ही वाक्ये तयार करू शकता. ही मूल्ये फक्त एकदाच पाठवली जातील, त्यामुळे **Repeat** बॉक्स तपासा जेणेकरून सर्व पाठवल्यानंतर एक सेकंदाने डेटा पुन्हा पाठवला जाईल. * **Source** GPX फाइलवर सेट करा आणि ट्रॅक स्थानांसह GPX फाइल अपलोड करा. तुम्ही [AllTrails](https://www.alltrails.com/) सारख्या लोकप्रिय मॅपिंग आणि हायकिंग साइट्समधून GPX फाइल्स डाउनलोड करू शकता. या फाइल्समध्ये ट्रेल म्हणून अनेक GPS स्थान असतात आणि GPS सेन्सर प्रत्येक नवीन स्थान 1 सेकंदाच्या अंतराने परत करतो. ![GPS सेन्सर GPX फाइल सेट केलेली](../../../../../translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.mr.png) ही मूल्ये फक्त एकदाच पाठवली जातील, त्यामुळे **Repeat** बॉक्स तपासा जेणेकरून सर्व पाठवल्यानंतर एक सेकंदाने डेटा पुन्हा पाठवला जाईल. 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) वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.