# GPS ಡೇಟಾವನ್ನು ಓದಿ - Raspberry Pi ಪಾಠದ ಈ ಭಾಗದಲ್ಲಿ, ನೀವು ನಿಮ್ಮ Raspberry Pi ಗೆ GPS ಸೆನ್ಸಾರ್ ಅನ್ನು ಸೇರಿಸಿ, ಅದರಿಂದ ಮೌಲ್ಯಗಳನ್ನು ಓದುವಿರಿ. ##ಹೊ الثلاثರಿಗೆ Raspberry Pi ಗೆ GPS ಸೆನ್ಸಾರ್ ಬೇಕಾಗುತ್ತದೆ. ನೀವು ಬಳಸಬಹುದಾದ ಸೆನ್ಸಾರ್ ಒಂದು [Grove GPS Air530 ಸೆನ್ಸಾರ್](https://www.seeedstudio.com/Grove-GPS-Air530-p-4584.html). ಈ ಸೆನ್ಸಾರ್ ಹಲವು GPS ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಸಂಪರ್ಕ ಹೊಂದುತ್ತದೆ ವೇಗದ, ಖಚಿತ ಸರಿಗೊಳಿಸುವಿಕೆಯೆಗಾಗಿ. ಸೆನ್ಸಾರ್ 2 ಭಾಗಗಳಿಂದ ಕೂಡಿದೆ - ಸೆನ್ಸಾರ್‌ನ ಕೋರೆಯನ್ನುಲೆಕಟ್ರಾನಿಕ್ಸ್, ಮತ್ತು ಸೌರಗ್ರಹಗಳ ಮುಖ್ಯವಾಣಿ ತರಂಗಗಳನ್ನು ಹಿಡಿಯಲು ಪಾತಳದ ತಂತಿ ಮೂಲಕ ಸಂಪರ್ಕಿಸಿದ ಹೊರಗಿನ ಆಂಟೆನಾಗಳು. ಇದು UART ಸೆನ್ಸಾರ್, ಹಾಗಾಗಿ GPS ಡೇಟಾವನ್ನು UART ಮೂಲಕ ಕಳುಹಿಸುತ್ತದೆ. ##GPS ಸೆನ್ಸಾರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಿ Grove GPS ಸೆನ್ಸಾರ್ ಅನ್ನು Raspberry Pi ಗೆ ಸಂಪರ್ಕಿಸಬಹುದು. ###ಕಾರ್ಯ - GPS ಸೆನ್ಸಾರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಿ GPS ಸೆನ್ಸಾರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಿ. ![A grove GPS sensor](../../../../../translated_images/kn/grove-gps-sensor.247943bf69b03f0d.webp) 1. Grove ಕೇಬಲ್‌ನ ಒಂದು ಮುಗುಳ್ನು GPS ಸೆನ್ಸಾರ್‌ನ ಸೊಕೇಟ್‌ಗೆ ಇಳಿಸಿ. ಅದು ಒಂದೇ ದಿಕ್ಕಿನಲ್ಲಿ ಹೋಗುತ್ತದೆ. 1. Raspberry Pi ಅನ್ನು ತಡೆಯುವ ಮೂಲಕ, Grove ಕೇಬಲ್‌ನ ಮತ್ತೊಂದು ಮುಗುಳ್ನು Grove Base ಹ್ಯಾಟ್‌ನಲ್ಲಿ **UART** ಎಂದು ಗುರುತಿಸಲಾದ UART ಸೊಕೇಟ್‌ಗೆ ಸಂಪರ್ಕಿಸಿ. ಈ ಸೊಕೇಟ್ ಮಧ್ಯದ ಸಾಲಿನಲ್ಲಿ, SD ಕಾರ್ಡ್ ಸ್ಲಾಟ್‌ಗೆ ಸಮೀಪವಿರುವ ಬದಿಯಲ್ಲಿ ಇದೆ, USB ಪೋರ್ಟ್‌ಗಳು ಮತ್ತು ಇಥರ್ನೆಟ್ ಸೊಕೇಟ್‌ನ ಮತ್ತೊಂದು ಕೊನೆಯಲ್ಲಿ. ![The grove GPS sensor connected to the UART socket](../../../../../translated_images/kn/pi-gps-sensor.1f99ee2b2f652891.webp) 1. GPS ಸೆನ್ಸಾರ್ ಅನ್ನು ಸ್ಥಾನಗೊಳ್ಳಿಸಿ ಆಗ ಆಂಟೆನಾದ ಹವಾ ಮುಗಿಯುವಿಕೆಗೆ ಸ್ಪಷ್ಟ ದೃಷ್ಟಿ ದೊರೆಯುತ್ತದೆ - ಇದ್ದಕ್ಕಿದ್ದಂತೆ ತೆರೆದ ಕಿಟಕಿಯ ಬದಿಯಲ್ಲಿ ಅಥವಾ ಹೊರಗೆ. ಆಂಟೆನಾಗೆ ಯಾವಾಗಲೂ ಅಡ್ಡಿಪಡಿಸುವುದಿಲ್ಲ ಎಂದರೆ ಸ್ಪಷ್ಟವಾದ ಸಂಕೆತ್ ಪಡೆಯುವುದು ಸುಲಭವಿದೆ. ## GPS ಸೆನ್ಸಾರ್ ಅನ್ನು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಿ Raspberry Pi ಈಗ ಅಂಟಿಸಿದ GPS ಸೆನ್ಸಾರ್ ಅನ್ನು ಬಳಕೆ ಮಾಡಲು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಬಹುದಾಗಿದೆ. ###ಕಾರ್ಯ - GPS ಸೆನ್ಸಾರ್ ಅನ್ನು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಿ ಯಂತ್ರವನ್ನು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಿ. 1. Pi ಪವರ್ ಅಪ್ ಮಾಡಿ ಮತ್ತು ಬೂಟ್ ಆಗುವುದನ್ನು ಕಾಯಿರಿ 1. GPS ಸೆನ್ಸಾರ್ 2 LEDಗಳನ್ನು ಹೊಂದಿದೆ - ಡೇಟಾ ಪ್ರಸಾರವಾಗುವಾಗ ಟಿಲಿಯುವ ನೀಲಿ LED ಮತ್ತು ಪ್ರತಿ ಸೆಕೆಂಡ್ ಒಂದು ಸಲ ಟಿಲಿಯುವ ಹಸಿರು LED ಸೌರಗ್ರಹಗಳಿಂದ ಡೇಟಾ ಸ್ವೀಕರಿಸುವಾಗ. Pi ಪವರ್ ಅಪ್ ಮಾಡಿದಾಗ ನೀಲಿ LED ಟಿಲಿಯುತ್ತಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಕೆಲ ನಿಮಿಷಗಳ ನಂತರ ಹಸಿರು LED ಟಿಲಿಯುತ್ತದೆ - ಅದಾಗದಿದ್ದರೆ ನೀವು ಆಂಟೆನಾವನ್ನು ಮತ್ತೊಂದು ಸ್ಥಳಕ್ಕೆ ವರ್ಗಾಯಿಸಬೇಕಾಗಬಹುದು. 1. Pi ನಲ್ಲಿ ನೇರವಾಗಿ ಅಥವಾ Remote SSH ವಿಸ್ತರಣೆ ಮೂಲಕ ಸಂಪರ್ಕಿಸಿ VS Code ಪ್ರಾರಂಭಿಸಿ. > ⚠️ ಅಗತ್ಯವಿದ್ದರೆ [ಪಾಠ 1 ರಲ್ಲಿ VS Code ಸೆಟ್ ಅಪ್ ಮತ್ತು ಪ್ರಾರಂಭಿಸುವ ಮಾರ್ಗದರ್ಶಿಯನ್ನು ನೋಡಿ](../../../1-getting-started/lessons/1-introduction-to-iot/pi.md). 1. ಬ್ಲೂಟೂತ್ ಬೆಂಬಲಿಸುವ Raspberry Pi ನವೀಕೃತ ಆವೃತಿಗಳಲ್ಲಿ, 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` ವಿಂಡೋಸ್, ಲಿನಕ್ಸ್ ಅಥವಾ 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 ಡೇಟಾವನ್ನು ಸೀರಿಯಲ್ ಪೋರ್ಟ್ ಮೂಲಕ ಕಳುಹಿಸುತ್ತದೆ. ನಿಮ್ಮ ಪೈಥಾನ್ ಕೋಡ್‌ನಿಂದ ಸೀರಿಯಲ್ ಪೋರ್ಟ್‌ಗೆ ಸಂವಹನ ಮಾಡಲು `pyserial` ಪಿಪ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ: ```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` ಪಿಪ್ ಪ್ಯಾಕೇಜ್‌ನ `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) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಗೆ ಪ್ರಯತ್ನಿಸಿದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದದಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸಂಬದ್ಧತೆಗಳು ಇರಬಹುದಾದ ಬಗ್ಗೆ ದಯವಿಟ್ಟು ಜಾಗರೂಕರಾಗಿ ಇರುವಿರಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿ ಇದ್ದ ಮೂಲ ದಾಖಲೆ ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಅವಶ್ಯಕ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ಅರ್ಥಗರ್ಭಿತ ತಪ್ಪು ನಿರ್ಧಾರಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗದಿದ್ದೇವೆ.