Всем привет! Вот и пришёл мне, наконец, долгожданный модуль VK16E (GPS-модуль), осталось его проверить. Как ни странно, было достаточно тяжело найти внятную информацию по подключению его к Arduino, пришлось курить зарубежные форумы, чтобы найти что-то полезное. Итак, дабы облегчить жизнь своим последователям (кто вдруг захочет работать с этим модулем), приложу схемы подключения.
Для работы нам потребуется всего 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 бод:
Получаем поток данных, который нужно распарсить. Для этого обратимся к документации 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, в котором передаётся параметр текущей скорости. Ну это так… К слову.
Если не трудно, поясните, почему использован сигнал PPS, вместо RX ?
Спасибо
Если честно, пока не готов ответить, нашёл схему подключения на просторах Интернета.