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


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

Внешний вид GPS данных на экране персонального компьютера

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

Внешний вид GPS модуля SKG13BL

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

Набор элементов для нашего проекта

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

Удаление микросхемы микроконтроллера с платы Arduino

Вид платы 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 модуль находится в ее зоне действия.

Вид GPS данных когда GPS модуль находится вне зоны действия системы GPS

Вид 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) используется для извлечения данных времени, даты и скорости.

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

(1 голосов, оценка: 5,00 из 5)
Загрузка...
1 172 просмотров

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

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