# ಜಿಪಿಎಸ್ ಡೇಟಾವನ್ನು ಓದಲು - ವರ್ಚುವಲ್ ಐಒಟಿ ಹಾರ್ಡ್‌ವೇರ್ ಪಾಠದ ಈ ಭಾಗದಲ್ಲಿ, ನೀವು ನಿಮ್ಮ ವರ್ಚುವಲ್ ಐಒಟಿ ಸಾಧನಕ್ಕೆ ಜಿಪಿಎಸ್ ಸಂವೇದಕವನ್ನು ಸೇರಿಸಿ, ಅದರಿಂದ ಮೌಲ್ಯಗಳನ್ನು ಓದಲು ಮಾಡುತ್ತಿರಿ. ## ವರ್ಚುವಲ್ ಹಾರ್ಡ್‌ವೇರ್ ವರ್ಚುವಲ್ ಐಒಟಿ ಸಾಧನವು UART ಮೂಲಕ ಸರಣಿ ಪೋರ್ಟ್ ಮೂಲಕ ಪ್ರವೇಶযোগ্যವಾದ ಅನುಕರಣ ಮಾಡಲಾದ ಜಿಪಿಎಸ್ ಸಂವೇದಕವನ್ನು ಬಳಸುತ್ತದೆ. ಭೌತಿಕ ಜಿಪಿಎಸ್ ಸಂವೇದಕವು ಜಿಪಿಎಸ್ ಉಪಗ್ರಹಗಳಿಂದ ರೇಡಿಯೋ ತರಂಗಗಳನ್ನು ಹಿಡಿಯಲು ಆಂಟೆನಾವನ್ನು ಹೊಂದಿದ್ದು, ಜಿಪಿಎಸ್ ಸಿಗ್ನಲ್‌ಗಳನ್ನು ಜಿಪಿಎಸ್ ಡೇಟಾ ಆಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ. ವರ್ಚುವಲ್ ಆವೃತ್ತಿ ಇದನ್ನು ಅನುಕರಣ ಮಾಡುತ್ತದೆ, ನೀವು ಕೇವಲ ಅಕ್ಷಾಂಶ ಮತ್ತು ರೇಖಾಂಶವನ್ನು ಹೊಂದಿಸಬಹುದು, ಕಚ್ಚಾ NMEA ವಾಕ್ಯಗಳನ್ನು ಕಳುಹಿಸಬಹುದು, ಅಥವಾ ಬಹುಸ್ಥಳಗಳ GPX ಫೈಲ್ ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ ಕ್ರಮವಾಗಿ ಮರುಪಡೆಯಬಹುದು. > 🎓 NMEA ವಾಕ್ಯಗಳನ್ನು ಈ ಪಾಠದಲ್ಲಿ ನಂತರ ಕವರ್ ಮಾಡಲಾಗುತ್ತದೆ ### ಕೌಂಟರ್ಫಿಟ್ ಗೆ ಸಂವೇದಕವನ್ನು ಸೇರಿಸಲು ವರ್ಚುವಲ್ ಜಿಪಿಎಸ್ ಸಂವೇದಕವನ್ನು ಬಳಸಲು, ನೀವು ಅದನ್ನು ಕೌಂಟರ್ಫಿಟ್ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಸೇರಿಸಬೇಕಾಗುತ್ತದೆ #### ಕಾರ್ಯ - ಕೌಂಟರ್ಫಿಟ್ ಗೆ ಸಂವೇದಕವನ್ನು ಸೇರಿಸಿ ಜಿಪಿಎಸ್ ಸಂವೇದಕವನ್ನು ಕೌಂಟರ್ಫಿಟ್ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಸೇರಿಸಿ. 1. ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ `gps-sensor` ಎಂದು ಕರೆಯಲ್ಪಡುವ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಒಂದೇ ಫೈಲ್ `app.py` ಇದ್ದ Python ಆಪ್ ಅನ್ನು ನಿರ್ಮಿಸಿ ಮತ್ತು Python ವರ್ಚುವಲ್ ಪರಿಸರವನ್ನು ಸೃಷ್ಟಿಸಿ, ಮತ್ತು ಕೌಂಟರ್ಫಿಟ್ ಪಿಪ್ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಸೇರಿಸಿ. > ⚠️ ಅಗತ್ಯವಿದ್ದರೆ [ಪಾಠ 1 ರಲ್ಲಿ ಕೌಂಟರ್ಫಿಟ್ ಪೈಥಾನ್ ಪ್ರಾಜೆಕ್ಟ್ ರಚನೆ ಮತ್ತು ಸೆಟ್ ಅಪ್ ಮಾಡುವ ಸೂಚನೆಗಳನ್ನು](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md) ಪ್ರವೇಶಿಸಬಹುದು. 2. UART ಆಧಾರಿತ ಸಂವೇದಕರೊಂದಿಗೆ ಸರಣಿ ಸಂಪರ್ಕದ ಮೂಲಕ ಮಾತನಾಡಲು ಸಾಮರ್ಥ್ಯ ಇರುವ ಕೌಂಟರ್ಫಿಟ್ ಶಿಮ್‌ನ್ನು ಪಿಪ್ ಪ್ಯಾಕೇಜ್ ರೂಪದಲ್ಲಿ ಹೆಚ್ಚುವರಿ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ. ಈ ಕಾರ್ಯವನ್ನು ವರ್ಚುವಲ್ ಪರಿಸರ ಸಕ್ರಿಯಗೊಂಡಿರುವ ಟರ್ಮಿನಲ್‌ನಲ್ಲಿ ಮಾಡಿ. ```sh pip install counterfit-shims-serial ``` 3. ಕೌಂಟರ್ಫಿಟ್ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ನಲ್ಲಿ ಸಾಗಿಸುತ್ತಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿ 4. ಜಿಪಿಎಸ್ ಸಂವೇದಕವನ್ನು ರಚಿಸಿ: 1. *Sensors* ಪೇನ್ ನಲ್ಲಿ ಇರುವ *Create sensor* ಬಾಕ್ಸ್ನಲ್ಲಿ *Sensor type* ಬಾಕ್ಸ್ ಡ್ರಾಪ್‌ಡೌನ್ ಮಾಡಿ ಮತ್ತು *UART GPS* ಆಯ್ಕೆಮಾಡಿ. 2. *Port* ಅನ್ನು */dev/ttyAMA0* ಆಗಿ ಇರಿಸಿ 3. `/dev/ttyAMA0` ಪೋರ್ಟಿನಲ್ಲಿ ಜಿಪಿಎಸ್ ಸಂವೇದಕವನ್ನು ರಚಿಸಲು **Add** ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿರಿ ![The GPS sensor settings](../../../../../translated_images/kn/counterfit-create-gps-sensor.6385dc9357d85ad1.webp) ಜಿಪಿಎಸ್ ಸಂವೇದಕ ರಚಿಸಲಾಗಿದ್ದು, ಸಂವೇದಕಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಕಾಣಿಸುತ್ತದೆ. ![The GPS sensor created](../../../../../translated_images/kn/counterfit-gps-sensor.3fbb15af0a536756.webp) ## ಜಿಪಿಎಸ್ ಸಂವೇದಕವನ್ನು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಿ ವಾರ್ಚುವಲ್ ಐಒಟಿ ಸಾಧನವನ್ನು ವರ್ಚುವಲ್ ಜಿಪಿಎಸ್ ಸಂವೇದಕವನ್ನು ಬಳಸಲು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಬಹುದು. ### ಕಾರ್ಯ - ಜಿಪಿಎಸ್ ಸಂವೇದಕವನ್ನು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಿ ಜಿಪಿಎಸ್ ಸಂವೇದಕ ಅಪ್ಲಿಕೇಶನನ್ನು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಿರಿ. 1. `gps-sensor` ಅಪ್ಲಿಕೇಶನನ್ನು VS ಕೋಡ್ ನಲ್ಲಿ ತೆರೆದಿರಿಸಿ 2. `app.py` ಫೈಲ್ ತೆರೆಯಿರಿ 3. ಅಪ್ಲಿಕೇಶನನ್ನು ಕೌಂಟರ್ಫಿಟ್ ಗೆ ಸಂಪರ್ಕಿಸಲು `app.py` ಯ ಮೇಲ್ಭಾಗಕ್ಕೆ ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ಸೇರಿಸಿ: ```python from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) ``` 4. ಈ ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ಸೇರಿಸಿ ಕೆಲವು ಅಗತ್ಯ ಲೈಬ್ರರಿಗಳನ್ನು ಆಮದು ಮಾಡಲು, ಕೌಂಟರ್ಫಿಟ್ ಸರಣಿ ಪೋರ್ಟ್ ಲೈಬ್ರರಿ ಸಹ ಇದೆ: ```python import time import counterfit_shims_serial serial = counterfit_shims_serial.Serial('/dev/ttyAMA0') ``` ಈ ಕೋಡ್ `counterfit_shims_serial` ಪಿಪ್ ಪ್ಯಾಕೇಜ್‌ನಿಂದ `serial` ಮಡ್ಯೂಲ್ ಅನ್ನು ಆಮದು ಮಾಡುತ್ತದೆ. ನಂತರ `/dev/ttyAMA0` ಸರಣಿ ಪೋರ್ಟ್‌ಗೆ ಸಂಪರ್ಕ ಸಾಧಿಸುತ್ತದೆ - ಇದು ವರ್ಚುವಲ್ ಜಿಪಿಎಸ್ ಸಂವೇದಕವು UART ಪೋರ್ಟ್ ಗಾಗಿ ಬಳಸುವ ಸರಣಿ ಪೋರ್ಟ್ ವಿಳಾಸವಾಗಿದೆ. 5. ಸರಣಿ ಪೋರ್ಟ್ ನಿಂದ ಓದಿ ಮೌಲ್ಯಗಳನ್ನು ಕಾನ್ಸೋಲ್‌ಗೆ ಮುದ್ರಿಸಲು ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ಸೇರಿಸಿ: ```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 ಸೆಕೆಂಡ್ ನಿದ್ರೆ ಮಾಡುತ್ತದೆ, ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸುತ್ತದೆ. 6. ಈ ಕೋಡ್ ನ್ನು ರನ್ ಮಾಡಿ, ಕೌಂಟರ್ಫಿಟ್ ಅಪ್ಲಿಕೇಶನ್ ಚಾಲನೆಯಲ್ಲಿರುವ ಟರ್ಮಿನಲಿನಿಂದ ಬೇರೊಂದನ್ನು ಉಪಯೋಗಿಸಿ, ಹಾಗಾಗಿ ಕೌಂಟರ್ಫಿಟ್ ಅಪ್ಲಿಕೇಶನ್ ಚಲನೆಯಲ್ಲಿರುತ್ತದೆ. 7. ಕೌಂಟರ್ಫಿಟ್ ಅಪ್ಲಿಕೇಶನಿನಿಂದ, ಜಿಪಿಎಸ್ ಸಂವೇದಕದ ಮೌಲ್ಯವನ್ನು ಬದಲಾಯಿಸಿ. ನೀವು ಈ ಕೆಳಗಿನ ವಿಧಾನಗಳಲ್ಲಿ ಒಂದನ್ನು ಬಳಸಬಹುದು: * **Source** ಅನ್ನು `Lat/Lon` ಆಗಿ ಹೊಂದಿಸಿ, ಮತ್ತು ಸ್ಪಷ್ಟ ಆಕ್ಷಾಂಶ, ರೇಖಾಂಶ ಮತ್ತು ಜಿಪಿಎಸ್ ಫಿಕ್ಸನ್ನು ಪಡೆಯಲು ಉಪಯೋಗಿಸಲಾದ ಉಪಗ್ರಹಗಳ ಸಂಖ್ಯೆಯನ್ನು ಸೆಟ್ ಮಾಡಿ. ಈ ಮೌಲ್ಯವನ್ನು ಒಮ್ಮೆಯಾಗಿ ಕಳುಹಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ **Repeat** ಬಾಕ್ಸ್ ಅನ್ನು ಟೆಸ್ಟ್ ಮಾಡಿ, ಹೀಗಾಗಿ ಡೇಟಾ ಪ್ರತಿ ಸೆಕೆಂಡಿಗೂ ಮರುಪಡೆಯುವುದು. ![The GPS sensor with lat lon selected](../../../../../translated_images/kn/counterfit-gps-sensor-latlon.008c867d75464fbe.webp) * **Source** ಅನ್ನು `NMEA` ಆಗಿ ಹೊಂದಿಸಿ ಮತ್ತು ಪಠ್ಯದ ಬಾಕ್ಸಿನಲ್ಲಿ ಕೆಲವು NMEA ವಾಕ್ಯಗಳನ್ನು ಸೇರಿಸಿ. ಎಲ್ಲಾ ಈ ಮೌಲ್ಯಗಳು ಕಳುಹಿಸಲಾಗುತ್ತವೆ, ಪ್ರತಿ ಹೊಸ GGA (ಸ್ಥಳ ಫಿಕ್ಸ್) ವಾಕ್ಯ ಓದಲು 1 ಸೆಕೆಂಡಿನ ವಿಳಂಬವಿರುತ್ತದೆ. ![The GPS sensor with NMEA sentences set](../../../../../translated_images/kn/counterfit-gps-sensor-nmea.c62eea442171e17e.webp) ನೀವು ನಕ್ಷೆ ಮೇಲೆ ರೇಖಾಚಿತ್ರ ಮಾಡಿ ಇವುಗಳನ್ನು ರಚಿಸಲು [nmeagen.org](https://www.nmeagen.org) ಜೊತೆಗಿನ ಸಾಧನವನ್ನು ಬಳಸಬಹುದು. ಈ ಮೌಲ್ಯಗಳನ್ನು ಕೇವಲ ಒಮ್ಮೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ **Repeat** ಬಾಕ್ಸ್ ಅನ್ನು ಗಮನಿಸಿ, ಡೇಟಾ ಎಲ್ಲಾ ಕಳುಹಿಸಿದ ನಂತರ ಒಂದು ಸೆಕೆಂಡ್ ನಂತರ ಮರುಪಡೆಯುವಂತೆ ಮಾಡುತ್ತದೆ. * **Source** ಅನ್ನು GPX ಫೈಲ್ ಆಗಿ ಹೊಂದಿಸಿ ಮತ್ತು ಟ್ರಾಕ್ ಸ್ಥಳಗಳೊಂದಿಗೆ GPX ಫೈಲ್ ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ. ನೀವು ಹಲವು ಜನಪ್ರಿಯ ನಕ್ಷೆ ಮತ್ತು ಹायकಿಂಗ್ ಸೈಟ್‌ಗಳಿಂದ GPX ಫೈಲ್‌ಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಬಹುದು, ಉದಾಹರಣೆಗೆ [AllTrails](https://www.alltrails.com/). ಇವುಗಳು ಹಲವಾರು GPS ಸ್ಥಳಗಳನ್ನು ಟ್ರೇಲ್ ರೂಪದಲ್ಲಿ ಹೊಂದಿವೆ ಮತ್ತು ಜಿಪಿಎಸ್ ಸೆನ್ಸರ್ ಪ್ರತಿ ಹೊಸ ಸ್ಥಳವನ್ನು 1 ಸೆಕೆಂಡ್ ಅಂತರದಲ್ಲಿ ಮರುಪಡೆಯುತ್ತದೆ. ![The GPS sensor with a GPX file set](../../../../../translated_images/kn/counterfit-gps-sensor-gpxfile.8310b063ce8a425c.webp) ಈ ಮೌಲ್ಯಗಳನ್ನು ಕೇವಲ ಒಮ್ಮೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ **Repeat** ಬಾಕ್ಸ್ ಅನ್ನು ನೋಡಿ, ಡೇಟಾ ಎಲ್ಲವೂ ಕಳುಹಿಸಿದ ನಂತರ 1 ಸೆಕೆಂಡು ಮರುಪಡೆಯುವುದು. ನೀವು ಜಿಪಿಎಸ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಸಂರಚಿಸಿದ ಬಳಿಕ, ಮೌಲ್ಯಗಳನ್ನು ಸೆನ್ಸರ್‌ಗೆ ಮೊದಲು ಸೇರಿಸಲು **Set** ಬಟನ್ ಆಯ್ಕೆಮಾಡಿ. 8. ನೀವು ಜಿಪಿಎಸ್ ಸಂವೇದಕದಿಂದ ಕಚ್ಚಾ output ಅನ್ನು ಕಾಣುತ್ತೀರಿ, ಹೀಗೊಂದು: ```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) ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ನೋಡಬಹುದು. 😀 ನಿಮ್ಮ ಜಿಪಿಎಸ್ ಸಂವೇದಕ ಪ್ರೋಗ್ರಾಮ್ ಯಶಸ್ವಿಯಾಯಿತು! --- **ತಡೆರಚನೆ**: ಈ ದಾಖಲೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಭಾಷಾಂತರ ಸೇವೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಗೆ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಭಾಷಾಂತರಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆ ಇರುವ ಸಾಧ್ಯತೆ ಇದೆ ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯ ದಾಖಲೆ ಜಾಸ್ತಿಪಡುವ ಮೂಲವಾಗಿದೆ ಎಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ ಪ್ರೊಫೆಷನಲ್ ಮಾನವ ಭಾಷಾಂತರವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಭಾಷಾಂತರದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ಅರ್ಥಗರ್ಭಿತ ತಪ್ಪುಗಳು ಅಥವಾ ತಪ್ಪಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸುವುದಕ್ಕೆ ನಾವು ಜವಾಬ್ದಾರಿಯಾಗುವುದಿಲ್ಲ.