# Зчитування даних GPS - Wio Terminal У цій частині уроку ви додасте GPS-сенсор до вашого Wio Terminal і зчитуватимете з нього дані. ## Апаратне забезпечення Для Wio Terminal потрібен GPS-сенсор. Сенсор, який ви використовуватимете, це [Grove GPS Air530 sensor](https://www.seeedstudio.com/Grove-GPS-Air530-p-4584.html). Цей сенсор може підключатися до кількох GPS-систем для швидкого та точного визначення місця розташування. Сенсор складається з двох частин: основної електроніки сенсора та зовнішньої антени, яка підключається тонким дротом для прийому радіохвиль від супутників. Це UART-сенсор, тому він передає GPS-дані через UART. ### Підключення GPS-сенсора Сенсор Grove GPS можна підключити до Wio Terminal. #### Завдання - підключення GPS-сенсора Підключіть GPS-сенсор. ![Сенсор Grove GPS](../../../../../translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.uk.png) 1. Вставте один кінець кабелю Grove у роз'єм на GPS-сенсорі. Він вставляється лише в одному напрямку. 1. Вимкнувши Wio Terminal від комп’ютера або іншого джерела живлення, підключіть інший кінець кабелю Grove до лівого роз'єму Grove на Wio Terminal, якщо дивитися на екран. Це роз'єм, який знаходиться найближче до кнопки живлення. ![Сенсор Grove GPS підключений до лівого роз'єму](../../../../../translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.uk.png) 1. Розташуйте GPS-сенсор так, щоб підключена антена мала видимість неба — ідеально біля відкритого вікна або на вулиці. Чим менше перешкод для антени, тим легше отримати чіткий сигнал. 1. Тепер ви можете підключити Wio Terminal до комп’ютера. 1. GPS-сенсор має 2 світлодіоди: синій світлодіод блимає, коли передаються дані, а зелений світлодіод блимає щосекунди, коли отримуються дані від супутників. Переконайтеся, що синій світлодіод блимає, коли ви вмикаєте Wio Terminal. Через кілька хвилин зелений світлодіод почне блимати — якщо цього не відбувається, можливо, потрібно змінити положення антени. ## Програмування GPS-сенсора Тепер Wio Terminal можна запрограмувати для використання підключеного GPS-сенсора. ### Завдання - програмування GPS-сенсора Програмуйте пристрій. 1. Створіть новий проєкт для Wio Terminal за допомогою PlatformIO. Назвіть цей проєкт `gps-sensor`. Додайте код у функцію `setup` для налаштування послідовного порту. 1. Додайте наступну директиву включення на початку файлу `main.cpp`. Вона включає заголовковий файл із функціями для налаштування лівого роз'єму Grove для UART. ```cpp #include ``` 1. Нижче додайте наступний рядок коду для оголошення з'єднання послідовного порту з UART-портом: ```cpp static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0); ``` 1. Вам потрібно додати код для перенаправлення деяких внутрішніх обробників сигналів на цей послідовний порт. Додайте наступний код нижче оголошення `Serial3`: ```cpp void SERCOM3_0_Handler() { Serial3.IrqHandler(); } void SERCOM3_1_Handler() { Serial3.IrqHandler(); } void SERCOM3_2_Handler() { Serial3.IrqHandler(); } void SERCOM3_3_Handler() { Serial3.IrqHandler(); } ``` 1. У функції `setup` нижче налаштування порту `Serial` налаштуйте послідовний порт UART за допомогою наступного коду: ```cpp Serial3.begin(9600); while (!Serial3) ; // Wait for Serial3 to be ready delay(1000); ``` 1. Нижче цього коду у функції `setup` додайте наступний код для підключення роз'єму Grove до послідовного порту: ```cpp pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT); ``` 1. Додайте наступну функцію перед функцією `loop`, щоб надсилати GPS-дані до монітора послідовного порту: ```cpp void printGPSData() { Serial.println(Serial3.readStringUntil('\n')); } ``` 1. У функції `loop` додайте наступний код для зчитування з послідовного порту UART і виведення даних у монітор послідовного порту: ```cpp while (Serial3.available() > 0) { printGPSData(); } delay(1000); ``` Цей код зчитує дані з послідовного порту UART. Функція `readStringUntil` зчитує до символу-термінатора, у цьому випадку нового рядка. Це дозволяє зчитувати ціле речення NMEA (речення NMEA завершуються символом нового рядка). Поки дані можна зчитувати з послідовного порту UART, вони зчитуються і передаються до монітора послідовного порту через функцію `printGPSData`. Коли більше немає даних для зчитування, функція `loop` робить паузу на 1 секунду (1,000 мс). 1. Зберіть і завантажте код на Wio Terminal. 1. Після завантаження ви можете переглядати GPS-дані за допомогою монітора послідовного порту. ```output > Executing task: platformio device monitor < --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at http://bit.ly/pio-monitor-filters --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- $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 ``` > 💁 Ви можете знайти цей код у папці [code-gps/wio-terminal](../../../../../3-transport/lessons/1-location-tracking/code-gps/wio-terminal). 😀 Ваше програмування GPS-сенсора пройшло успішно! --- **Відмова від відповідальності**: Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.