DIY. Получение данных с GPS модуля от видеорегистратора

Несколько лет назад в машину был установлен видеорегистратор. Со временем он вышел из строя и восстановлению не подлежал. Сейчас я изучаю GPS-модуль от этого регистратора и разбираюсь, как реализовать получение данных с GPS-модуля для дальнейшего применения в собственных проектах.

DIY. Получение данных с GPS модуля от видеорегистратора

Осмотр GPS-модуля

Подключение видеорегистратора осуществлялось следующим образом: питание через разъём MiniUSB подавалось на GPS-модуль, который соединялся с видеорегистратором через специфичный четырёхконтактный разъём. Логично предположить, что по этому разъёму передавались не только питание, но и данные. Сейчас я попробую получить эти данные для дальнейшего использования.

gps модуль

На самом GPS-модуле расположено всего два разъёма: MiniUSB и четырёхконтактный разъём.

Разобрав устройство, получаю доступ к двум платам.

Одна из них — односторонняя, с четырёхконтактным разъёмом. Рядом с контактами присутствует шелкография: 5V, GND и RX, что позволяет предположить возможность подключения по UART и последующей обработкой данных с помощью микроконтроллера или компьютера.

YH-3316-25G

Вторая плата — двухсторонняя: на одной стороне расположены электронные компоненты, на другой находится GPS-антенна.

Более детальный осмотр и проверка мультиметром показали:

  • Антенну при необходимости можно выпаять и использовать как внешнюю.
  • К четырёхконтактному разъёму односторонней платы подходят провода: 5V (красный), GND (зелёный), RX (жёлтый) — все с одной контактной площадки.
  • Контакт 5V на MiniUSB-разъёме и на контактной площадке соединены напрямую — питание можно подавать непосредственно на площадку, заменив MiniUSB-разъём.
  • MiniUSB-разъём используется только для подачи питания, передачи данных через него не предусмотрено.
  • На одном из модулей есть маркировка YH-3316-25G. Поиск по этому обозначению приводит к упоминаниям схожих регистраторов, однако datasheet найти не удалось.

Подключение GPS-модуля к компьютеру

Для проверки, удастся ли получить с GPS-модуля данные по UART, беру привычный UART-адаптер с чипом CH340G. Всё делаю в Linux.

Определение UART-адаптера и настройка прав

Подключаю UART-адаптер к компьютеру и определяю, как он отображается в системе. Согласно документации, должен появиться новый интерфейс типа ttyUSB. Проверяю командой:

~$ ls /dev | grep ttyUSB
ttyUSB0

Появилось устройство ttyUSB0 — значит, адаптер определился корректно.

Пробую прочитать данные командой cat.

~$ cat /dev/ttyUSB0
cat: /dev/ttyUSB0: Отказано в доступе

Доступ запрещён. Можно, конечно, воспользоваться root-доступом, но правильнее будет корректно настроить права.

Проверяю свойства устройства командой ls с подробным выводом:

~$ ls -la /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 авг 17 12:31 /dev/ttyUSB0

Из полученного вижу, что доступ к устройству есть у группы dialout, добавляю пользователя guesto в указанную группу

~$ sudo usermod -a -G dialout guesto

Это необходимая мера для работы с UART-адаптером без постоянного использования sudo, однако стоит учитывать вопросы безопасности. Если на компьютере используются другие устройства с последовательным подключением, будьте осторожны при предоставлении такого доступа. Изменяйте права только для тех пользователей, которым это действительно требуется.

Для вступления изменений в силу выхожу из системы и снова вхожу под своим пользователем. Проверяю доступ к устройству:

~$ cat /dev/ttyUSB0

На этот раз ни ошибок, ни данных — всё верно, ведь GPS-модуль пока не подключён. Продолжаю настройку.

Подключение GPS-модуля к UART-адаптеру

Для организации обмена данными между GPS-модулем и компьютером необходимо соединить соответствующие контакты UART-адаптера с контактными площадками на плате устройства:

  • TX адаптера подключаю к RX платы (жёлтый провод);
  • GND адаптера подключаю к GND платы (зелёный провод);
  • 5V адаптера подключаю к 5V платы (красный провод).

После подключения проводов вставляю UART-адаптер в USB-порт компьютера. Теперь устройство готово к дальнейшей настройке и приёму данных по интерфейсу UART.

Получение данных с GPS-модуля

Cнова пытаюсь прочитать данные с помощью cat. Просто отлично, в терминале раз в секунду начинают появляться новые порции данных

~$ cat /dev/ttyUSB0
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,07,22,130,31,08,15,045,30,10,05,010,26,22,65,239,32*7A
$GPGSV,3,2,12,15,00,000,19,30,00,000,19,,,,,,,,*7C
$GPGSV,3,3,12,,,,,,,,,,,,,,,,*7A
$GPRMC,174149.000,A,5650.2242,N,06036.8457,E,0.00,0.00,190825,,,A*6B
$GPGGA,174150.000,5650.2242,N,06036.8457,E,1,08,1.0,270.0,M,0.0,M,,*64

После непродолжительного поиска информации в интернете выяснил, что используется протокол NMEA. Это довольно распространённый стандарт, который поддерживается многими программами и устройствами.

Обработка данных GPS-модуля

«Ручной» анализ

Бегло ознакомившись с описанием протокола на официальном сайте nmea.org, разбираю полученные данные вручную. В данном случае интерес представляет строка с идентификатором RMC — она содержит минимально необходимый набор навигационных данных.

Шаблон строки:

        1         2 3       4 5        6  7   8   9    10 11 12
        |         | |       | |        |  |   |   |    |  |   |
 $--RMC,hhmmss.ss,A,ddmm.mm,a,dddmm.mm,a,x.x,x.x,xxxx,x.x,a,m*hh<CR><LF>

Описание параметров

Параметр Расшифровка
1 Время в формате hh — часы, mm — минуты,  ss.ss — секунды по UTC
2 Статус полученных данных A — корректные, V — не корректные
3 Широта, dd — это градусы. mm.mm это минуты. С минутами есть хитрость, нужно смотреть документацию
4 Полушарие, N — северное, S — южное
5 Долгота, ddd — это градусы. mm.mm это минуты. С минутами есть хитрость, нужно смотреть документацию
6 Полушарие, E — западное, W — восточное
7 Скорость в узлах
8 Курс в градусах
9 Дата в формате  dd — день, mm — месяц, yy — год
10 Магнитное изменение в градусах
11 Полушарие, E — западное, W — восточное
12 Режим A — автономный, D — дифференциальный, E — оценочный, M — режим ручного ввода, N — недопустимый, S — симулятор, V — допустимый

Программное обеспечение

В качестве программного обеспечения для удобного чтения данных я воспользовался пакетом gpsd-clients, установленным из стандартного репозитория:

~$ sudo apt install gpsd-clients

Далее, для отображения данных в более наглядном виде, запустил утилиту gpsmon, указав своё устройство:

~$ gpsmon /dev/ttyUSB0

На экране появилась таблица с читабельными навигационными данными

gpsmon

Выводы

В результате разборки и анализа GPS-модуля от вышедшего из строя видеорегистратора мне удалось получить опыт в работе с подобными устройствами.

Оказалось, что для получения данных не требуется сложного оборудования — достаточно обычного UART-адаптера и минимальных знаний по работе с Linux.

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

Понравилась статья? Поделиться с друзьями:
Комментарии: 1
  1. Дядя Саня

    Отлично! как раз такой завалялся по случаю. спасибо за информацию!

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: