# Чтение данных 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.ru.png) 1. Вставьте один конец кабеля Grove в разъем на GPS-датчике. Он вставляется только в одном направлении. 1. С отключенным от компьютера или другого источника питания Wio Terminal подключите другой конец кабеля Grove к левому разъему Grove на Wio Terminal, если смотреть на экран. Это разъем, который находится ближе всего к кнопке питания. ![Датчик Grove GPS, подключенный к левому разъему](../../../../../translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.ru.png) 1. Разместите GPS-датчик так, чтобы подключенная антенна имела видимость неба — лучше всего рядом с открытым окном или на улице. Чем меньше препятствий для антенны, тем лучше сигнал. 1. Теперь вы можете подключить Wio Terminal к вашему компьютеру. 1. У GPS-датчика есть два светодиода: синий светодиод мигает при передаче данных, а зеленый мигает каждую секунду при получении данных от спутников. Убедитесь, что синий светодиод мигает при включении Wio Terminal. Через несколько минут должен начать мигать зеленый светодиод — если этого не происходит, возможно, нужно изменить положение антенны. ## Программирование GPS-датчика Теперь Wio Terminal можно запрограммировать для работы с подключенным GPS-датчиком. ### Задание - запрограммируйте GPS-датчик Программируйте устройство. 1. Создайте новый проект для Wio Terminal с использованием PlatformIO. Назовите проект `gps-sensor`. Добавьте код в функцию `setup` для настройки последовательного порта. 1. Добавьте следующую директиву include в начало файла `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). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода.