Рубрики
Схемы на Arduino

Считывание GPS данных с помощью персонального компьютера и Arduino Uno

GPS является весьма полезным устройством, широко применяемым в настоящее время в различных устройствах и системах, например, отслеживание местоположения автомобиля, GPS часы, система обнаружения аварий, навигация трафика и т.д. В этой статье мы рассмотрим процессы считывания данных GPS с помощью платы Arduino Uno и передачи их в персональный компьютер.

GPS (Global Positioning System) представляет собой систему глобального позиционирования и навигации, с помощью которой можно определить широту и долготу любой точки на Земле, а также точное время в этой точке (UTC time — Universal Time Coordinated). GPS модуль будет основным устройством в нашем проекте. Данный модуль принимает координаты от спутников каждую секунду. Вместе с координатами осуществляется прием времени и даты, а также других сопутствующих данных. Внешний вид GPS модуля показан на следующем рисунке.

В этой обучающей статье про GPS мы рассмотрим как проверить и осуществить подключение GPS модуля с использованием Arduino и персонального компьютера. Для подключения этого модуля к компьютеру необходимо использовать либо конвертер USB в последовательный порт, либо плату Arduino. В этом проекте мы использовали плату Arduino. Для подачи питающего напряжения на GPS модуль мы будем использовать адаптер 12v/3.3v. Мы будем использовать приемный модуль GPS SKG13BL (его внешний вид представлен на приведенных рисунках).

Перед подключением этого модуля к компьютеру необходимо с платы Arduino вынуть микросхему микроконтроллера Atmega поскольку нам будет необходима только последовательная схема платы Arduino. Этот режим работы Arduino будет называться Gateway mode (режим шлюза/привратника). Удаление микросхемы микроконтроллера с платы Arduino показано на следующих рисунках.

Теперь сделаем соединения согласно приведенному рисунку:

1. GPS TX pin to Digital PIN 1 of Arduino (TXD)
2. GPS Ground Pin to GND PIN of Arduino
3. GPS Power (3.3v) Pin to 3.3v PIN of Arduino

После осуществления этих соединений присоедините USB кабель к компьютеру, откройте на компьютере программную среду Arduino IDE, выберите com порт и откройте последовательный монитор (serial monitor) чтобы просматривать сообщения, получаемые по последовательному порту. Также с помощью USB кабеля будет осуществляться подача питания на плату Arduino и GPS модуль.

После этого вы увидите GPS данные в окне последовательного монитора Arduino – пример этого показан на следующих рисунках. На первом рисунке показан случай когда GPS модуль находится вне зоны действия системы GPS, а на втором рисунке – случай, когда GPS модуль находится в ее зоне действия.

В окне последовательного монитора вы можете увидеть ряд строк (предложений), которые начинаются со знака $. Это так называемые NMEA строки. GPS модуль передает данные местоположения в реальном времени в NMEA формате, который состоит из ряда строк (предложений). Наиболее важными для нас из этих строк являются следующие:

  • $GPGGA: Global Positioning System Fix Data (фиксированные данные глобального местоположения);
  • $GPGSV: GPS satellites in view (спутники GPS в нашей зоне действия);
  • $GPGSA: GPS DOP and active satellites (активные спутники);
  • $GPRMC: Recommended minimum specific GPS/Transit data (специализированные данные GPS/транзитные данные).

Более подробные сведения об NMEA формате можно получить здесь (на английском языке).

Для определения координат местоположения и времени мы можем использовать строки $GPGGA и $GPRMC. Для определения даты и времени мы можем использовать строку $GPRMC.

Когда мы используем GPS модуль только для определения местоположения нам из всей совокупности данных NMEA формата будут нужны только координаты, которые мы сможем найти в строке $GPGGA. И именно эта строка $GPGGA (Global Positioning System Fix Data — фиксированные данные глобального местоположения) и используется наиболее часто в различных программах и устройствах, использующих технологию GPS, а остальные строки просто игнорируются.

Эта строка имеет следующую структуру (вторая строка — ее расшифровка):

$GPGGA,104534.000,7791.0381,N,06727.4434,E,1,08,0.9,510.4,M,43.9,M,,*47

$GPGGA,HHMMSS.SSS,latitude,N,longitude,E,FQ,NOS,HDP,altitude,M,height,M,,checksum data

В следующей таблице представлен перевод (описание) данных GPS из строки $GPGGA.

Идентификатор Описание
$GPGGA Фиксированные данные системы глобального позиционирования
HHMMSS.SSS Время в формате: час минута секунда и миллисекунда
Latitude Широта (координата)
N Направление: N=North (север), S=South (юг)
Longitude Долгота (координата)
E Направление: E= East (восток), W=West (запад)
FQ Данные фиксированного качества (Fix Quality Data)
NOS Номер использованного спутника
HPD Фактор снижения точности при определении положения в горизонтальной плоскости (Horizontal Dilution of Precision)
Altitude Высота над уровнем моря
M Meter (метр)
Height Height (высота)
Checksum Данные контрольной суммы

А строка $GPRMC, в основном, содержит скорость, время, дату и местоположение:

$GPRMC,123519.000,A, 7791.0381,N, 06727.4434,E,022.4,084.4,230394,003.1,W*6A

$GPRMC,HHMMSS.SSS,A,latitude,N,longitude,E,speed,angle,date,MV,W,CMD

В следующей таблице представлен перевод (описание) данных GPS из строки $GPRMC.

Идентификатор Описание
RMC Recommended Minimum sentence C
HHMMSS.SSS Время в формате: час минута секунда и миллисекунда
A Статус // A=active (активный) and V= void (пустой, недействительный)
Latitude Широта (координата)
N Направление: N=North (север), S=South (юг)
Longitude Долгота (координата)
E Направление: E= East (восток), W=West (запад)
Speed Скорость в узлах (1 узел= 1,87 км в час)
Angle Угол места в градусах
Date Временная отметка (дата в UTC, Universal Time Coordinated — всеобщее скоординированное время)
MV Магнитное возмущение
W Direction of variation E/W (направление изменения E/W)
CMD (*6A) Данные контрольной суммы

В большинстве случаев эта строка ($GPRMC) используется для извлечения данных времени, даты и скорости.

Видео, демонстрирующее работу схемы:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *