Материал просмотрен 1,148 раз(а)

Всем привет! Вот и пришёл мне, наконец, долгожданный модуль VK16E (GPS-модуль), осталось его проверить. Как ни странно, было достаточно тяжело найти внятную информацию по подключению его к Arduino, пришлось курить зарубежные форумы, чтобы найти что-то полезное. Итак, дабы облегчить жизнь своим последователям (кто вдруг захочет работать с этим модулем), приложу схемы подключения.

VK16E

Для работы нам потребуется всего 4 провода: VCC, GND, TX и PPS. Подключаем их к Arduino:

  • VCC на +5V
  • GND на GND
  • TX на 7 пин
  • PPS на 8 пин

Готово. Заливаем скетч:

#include <SoftwareSerial.h>
SoftwareSerial GPS(7, 8);
unsigned char buffer[64]; // buffer
int count=0;
void setup()
{
    GPS.begin(9600);
    Serial.begin(19200);
}

void loop()
{
    if (GPS.available())
    {
        while(GPS.available())
        {
            buffer[count++]=GPS.read();
            if(count == 64)
            break;
        }
        Serial.write(buffer,count);
        clrBuff();
        count = 0;
    }
}

void clrBuff()
{
    for (int i=0; i<count;i++)
    {
        buffer[i]=NULL;
    }
}

Выносим GPS как можно ближе к окну и дожидаемся старта (холодный старт может занять приличное время, хоть в спецификации сказано что не больше минуты, я дожидался минут 10). Горячий старт реально секунды.

Открываем монитор порта и выставляем скорость обмена данными в 19200 бод:

GPS

Получаем поток данных, который нужно распарсить. Для этого обратимся к документации NMEA-протокола.

Возьмём строчку:

$GPGGA, 023554.000,4657.9000,N,14243.1000,E,1,05,2.3,89.3,M,25.2,M,,0000*6C

Я завуалировал свои координаты, всё-таки анонимность 😉 Разберём этот пример. Сообщение GPGGA – это информация о фиксированном решении (есть ещё GPGSV – информация о спутниках) и т.д.

Первый параметр – точное время: 023554.000 – это 02:35:54 UTC, прибавляем 10 часов и получаем 12:35:54 локальное время. Прибавку к времени легко узнать по часовому поясу.

Второй и третий параметры – широта и долгота:

4657.9000 = 46°57.9000 N

14343.1000 = 143°43.1000 E

Прям эти координаты вставляем последовательно в гугл-карты или яндекс.карты и увидим местоположение с точностью до дома!

Далее тип решения, 1 – StandAlone – самостоятельный.

05 – количество спутников.

2.3 – относительная горизонтальная точность.

89.3,М – высота над уровнем моря.  Далее высота от эллипсойда WGS84

Последний параметр – контрольная сумма

Есть интересное сообщение GPVTG, в котором передаётся параметр текущей скорости. Ну это так… К слову.