9.4 KiB
Чтение данных GPS - Wio Terminal
В этой части урока вы добавите GPS-датчик к вашему Wio Terminal и будете считывать с него данные.
Аппаратное обеспечение
Для Wio Terminal требуется GPS-датчик.
Датчик, который вы будете использовать, — это Grove GPS Air530 sensor. Этот датчик может подключаться к нескольким GPS-системам для быстрого и точного определения местоположения. Датчик состоит из двух частей: основной электроники и внешней антенны, подключенной тонким проводом для улавливания радиоволн от спутников.
Это UART-датчик, который передает данные GPS через UART.
Подключение GPS-датчика
Датчик Grove GPS можно подключить к Wio Terminal.
Задание - подключите GPS-датчик
Подключите GPS-датчик.
-
Вставьте один конец кабеля Grove в разъем на GPS-датчике. Он вставляется только в одном направлении.
-
С отключенным от компьютера или другого источника питания Wio Terminal подключите другой конец кабеля Grove к левому разъему Grove на Wio Terminal, если смотреть на экран. Это разъем, который находится ближе всего к кнопке питания.
-
Разместите GPS-датчик так, чтобы подключенная антенна имела видимость неба — лучше всего рядом с открытым окном или на улице. Чем меньше препятствий для антенны, тем лучше сигнал.
-
Теперь вы можете подключить Wio Terminal к вашему компьютеру.
-
У GPS-датчика есть два светодиода: синий светодиод мигает при передаче данных, а зеленый мигает каждую секунду при получении данных от спутников. Убедитесь, что синий светодиод мигает при включении Wio Terminal. Через несколько минут должен начать мигать зеленый светодиод — если этого не происходит, возможно, нужно изменить положение антенны.
Программирование GPS-датчика
Теперь Wio Terminal можно запрограммировать для работы с подключенным GPS-датчиком.
Задание - запрограммируйте GPS-датчик
Программируйте устройство.
-
Создайте новый проект для Wio Terminal с использованием PlatformIO. Назовите проект
gps-sensor
. Добавьте код в функциюsetup
для настройки последовательного порта. -
Добавьте следующую директиву include в начало файла
main.cpp
. Она включает заголовочный файл с функциями для настройки левого разъема Grove для UART.#include <wiring_private.h>
-
Ниже добавьте следующую строку кода для объявления соединения последовательного порта с UART:
static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
-
Вам нужно добавить код для перенаправления некоторых внутренних обработчиков сигналов на этот последовательный порт. Добавьте следующий код ниже объявления
Serial3
:void SERCOM3_0_Handler() { Serial3.IrqHandler(); } void SERCOM3_1_Handler() { Serial3.IrqHandler(); } void SERCOM3_2_Handler() { Serial3.IrqHandler(); } void SERCOM3_3_Handler() { Serial3.IrqHandler(); }
-
В функции
setup
, ниже настройки портаSerial
, настройте последовательный порт UART с помощью следующего кода:Serial3.begin(9600); while (!Serial3) ; // Wait for Serial3 to be ready delay(1000);
-
Ниже этого кода в функции
setup
добавьте следующий код для подключения пина Grove к последовательному порту:pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
-
Добавьте следующую функцию перед функцией
loop
, чтобы отправлять данные GPS на монитор последовательного порта:void printGPSData() { Serial.println(Serial3.readStringUntil('\n')); }
-
В функции
loop
добавьте следующий код для чтения данных из последовательного порта UART и вывода их на монитор последовательного порта:while (Serial3.available() > 0) { printGPSData(); } delay(1000);
Этот код считывает данные из последовательного порта UART. Функция
readStringUntil
считывает данные до символа-разделителя, в данном случае новой строки. Это позволяет считывать целые предложения NMEA (предложения NMEA завершаются символом новой строки). Пока данные можно считывать из последовательного порта UART, они считываются и отправляются на монитор последовательного порта через функциюprintGPSData
. Когда данные больше не могут быть считаны, циклloop
делает паузу на 1 секунду (1,000 мс). -
Соберите и загрузите код на Wio Terminal.
-
После загрузки вы можете наблюдать данные GPS с помощью монитора последовательного порта.
> 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.
😀 Программа для GPS-датчика успешно выполнена!
Отказ от ответственности:
Этот документ был переведен с использованием сервиса автоматического перевода Co-op Translator. Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода.