Несколько лет назад в машину был установлен видеорегистратор. Со временем он вышел из строя и восстановлению не подлежал. Сейчас я изучаю GPS-модуль от этого регистратора и разбираюсь, как реализовать получение данных с GPS-модуля для дальнейшего применения в собственных проектах.
Осмотр GPS-модуля
Подключение видеорегистратора осуществлялось следующим образом: питание через разъём MiniUSB подавалось на GPS-модуль, который соединялся с видеорегистратором через специфичный четырёхконтактный разъём. Логично предположить, что по этому разъёму передавались не только питание, но и данные. Сейчас я попробую получить эти данные для дальнейшего использования.
На самом GPS-модуле расположено всего два разъёма: MiniUSB и четырёхконтактный разъём.
Разобрав устройство, получаю доступ к двум платам.
Одна из них — односторонняя, с четырёхконтактным разъёмом. Рядом с контактами присутствует шелкография: 5V, GND и RX, что позволяет предположить возможность подключения по UART и последующей обработкой данных с помощью микроконтроллера или компьютера.
Вторая плата — двухсторонняя: на одной стороне расположены электронные компоненты, на другой находится 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
На экране появилась таблица с читабельными навигационными данными
Выводы
В результате разборки и анализа GPS-модуля от вышедшего из строя видеорегистратора мне удалось получить опыт в работе с подобными устройствами.
Оказалось, что для получения данных не требуется сложного оборудования — достаточно обычного UART-адаптера и минимальных знаний по работе с Linux.
В итоге даже устаревшие или неработающие устройства могут послужить отличной базой для обучения электронике и реализации оригинальных технических идей.





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