You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ru/3-transport/lessons/1-location-tracking/wio-terminal-gps-sensor.md

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

  1. Вставьте один конец кабеля Grove в разъем на GPS-датчике. Он вставляется только в одном направлении.

  2. С отключенным от компьютера или другого источника питания Wio Terminal подключите другой конец кабеля Grove к левому разъему Grove на Wio Terminal, если смотреть на экран. Это разъем, который находится ближе всего к кнопке питания.

    Датчик Grove GPS, подключенный к левому разъему

  3. Разместите GPS-датчик так, чтобы подключенная антенна имела видимость неба — лучше всего рядом с открытым окном или на улице. Чем меньше препятствий для антенны, тем лучше сигнал.

  4. Теперь вы можете подключить Wio Terminal к вашему компьютеру.

  5. У GPS-датчика есть два светодиода: синий светодиод мигает при передаче данных, а зеленый мигает каждую секунду при получении данных от спутников. Убедитесь, что синий светодиод мигает при включении Wio Terminal. Через несколько минут должен начать мигать зеленый светодиод — если этого не происходит, возможно, нужно изменить положение антенны.

Программирование GPS-датчика

Теперь Wio Terminal можно запрограммировать для работы с подключенным GPS-датчиком.

Задание - запрограммируйте GPS-датчик

Программируйте устройство.

  1. Создайте новый проект для Wio Terminal с использованием PlatformIO. Назовите проект gps-sensor. Добавьте код в функцию setup для настройки последовательного порта.

  2. Добавьте следующую директиву include в начало файла main.cpp. Она включает заголовочный файл с функциями для настройки левого разъема Grove для UART.

    #include <wiring_private.h>
    
  3. Ниже добавьте следующую строку кода для объявления соединения последовательного порта с UART:

    static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
    
  4. Вам нужно добавить код для перенаправления некоторых внутренних обработчиков сигналов на этот последовательный порт. Добавьте следующий код ниже объявления 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();
    }
    
  5. В функции setup, ниже настройки порта Serial, настройте последовательный порт UART с помощью следующего кода:

    Serial3.begin(9600);
    
    while (!Serial3)
        ; // Wait for Serial3 to be ready
    
    delay(1000);
    
  6. Ниже этого кода в функции setup добавьте следующий код для подключения пина Grove к последовательному порту:

    pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
    
  7. Добавьте следующую функцию перед функцией loop, чтобы отправлять данные GPS на монитор последовательного порта:

    void printGPSData()
    {
        Serial.println(Serial3.readStringUntil('\n'));
    }
    
  8. В функции loop добавьте следующий код для чтения данных из последовательного порта UART и вывода их на монитор последовательного порта:

    while (Serial3.available() > 0)
    {
        printGPSData();
    }
    
    delay(1000);
    

    Этот код считывает данные из последовательного порта UART. Функция readStringUntil считывает данные до символа-разделителя, в данном случае новой строки. Это позволяет считывать целые предложения NMEA (предложения NMEA завершаются символом новой строки). Пока данные можно считывать из последовательного порта UART, они считываются и отправляются на монитор последовательного порта через функцию printGPSData. Когда данные больше не могут быть считаны, цикл loop делает паузу на 1 секунду (1,000 мс).

  9. Соберите и загрузите код на Wio Terminal.

  10. После загрузки вы можете наблюдать данные 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. Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода.