Подключение GPS приёмника — различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
Строка 12: | Строка 12: | ||
Этот приёмник подключается к UART Виртурилки. Распиновка разъёма этого приёмника приведена на рисунке. | Этот приёмник подключается к UART Виртурилки. Распиновка разъёма этого приёмника приведена на рисунке. | ||
− | [[Файл:Em408pinout.jpg|400px|thumb| | + | [[Файл:Em408pinout.jpg|400px|thumb|left|Распиновка разъёма EM-408]] |
<br clear="all"> | <br clear="all"> | ||
Версия 17:31, 12 августа 2014
На данный момент было проверено подключение двух моделей GPS-приёмников, но принцип у всех GPS/GLONASS приёмников общий, разница лишь в интерфейсе подключения и в специфичных командах. Для реализации базовой функции (определение местоположения) достаточно приведённых ниже инструкций.
Содержание |
UART GPS/GLONASS приёмники
Проверенные устройства
Приёмник EM-408
Этот приёмник подключается к UART Виртурилки. Распиновка разъёма этого приёмника приведена на рисунке.
Хорошее описание и исследование GPS-приёмника EM-408
Ещё описание GPS-приёмника EM-408
Подключение
Подключение производится как обычно для UART, крест-накрест.
GPS приёмник | Виртурилка |
---|---|
1 Enable/Disable (этот вход может отсутствовать) | +3.3V |
2 GND | CON1 (GND) |
3 RX | CON2 (UART0_TXD) или CON29 (UART1_TXD) |
4 TX | CON3 (UART0_RXD) или CON28 (UART1_RXD) |
5 Vcc | +3.3V |
После подключения приёмник будет доступен на порту UART0 (/dev/ttyS0).
Начальная конфигурация
После первого включения приёмник передаёт данные на скорости 4800 бит/сек. Соответственно, необходимо изменить параметры UART (/dev/ttyS0 для UART0 или /dev/ttyS1 для UART1) Виртурилки
stty -F /dev/ttyS0 4800
Пример изменения конфигурации приёмника
Изменение параметров GPS-приёмника производится путём записи управляющей строчки в порт, к которому приёмник подключен. Полное описание команд специфично для разных производителей GPS-приёмников. Для EM-408, например, можно использовать такие команды:
Установка параметров передачи 57600 бит/сек, 8 бит данных, отсутствие контроля чётности, 1 стоп-бит
echo "$PSRF100,1,57600,8,1,0*36" > /dev/ttyS0
Установка параметров передачи 115200 бит/сек, 8 бит данных, отсутствие контроля чётности, 1 стоп-бит
echo "$PSRF100,1,115200,8,1,0*05" > /dev/ttyS0
После смены параметров передачи приёмника необходимо сменить параметры UART Виртурилки на аналогичные. Делается это командой stty:
Изменить скорость порта /dev/ttyS0 на 115200 бит/сек.
stty -F /dev/ttyS0 115200
После изменения параметров GPS настройки сохранятся до выключения питания плюс несколько минут (пока не разрядится внутренний супер-конденсатор).
USB GPS/GLONASS приёмники
USB-приёмник GlobalSat BU-353 GLONASS
Для подключения этого приёмника к Виртурилке требуется microUSB OTG переходник. Просто вставьте USB разъём приёмника в USB гнездо переходника.
Приёмник видится в системе как обычный COM-порт, реализованый на контроллере Prolific pl2303. Его поддержка по-умолчанию включена в ядро, так что загрузка модулей не требуется. После подключения приёмника в консоли появятся примерно такие сообщения
usb 1-1: New USB device found, idVendor=067b, idProduct=2303 usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb 1-1: Product: USB-Serial Controller usb 1-1: Manufacturer: Prolific Technology Inc. usb 1-1: usb_probe_device usb 1-1: configuration #1 chosen from 1 choice usb 1-1: adding 1-1:1.0 (config #1, interface 0) pl2303 1-1:1.0: usb_probe_interface pl2303 1-1:1.0: usb_probe_interface - got id pl2303 1-1:1.0: pl2303 converter detected usb 1-1: pl2303 converter now attached to ttyUSB0 hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0002 hub 1-0:1.0: port 1 enable change, status 00000103
Строчка "usb 1-1: pl2303 converter now attached to ttyUSB0" означает что приёмник доступен в виде устройства /dev/ttyUSB0.
Для чтения NMEA-информаци с приёмника достаточно выполнить команду
# cat /dev/ttyUSB0
И увидим строчки NMEA
$GPGGA,220228.083,,,,,0,0,,,M,,M,,*4B $GLGSV,1,1,01,68,,,23*6B $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPVTG,112.05,T,,M,0.00,N,0.00,K,N*35 $GPZDA,220228.083,21,08,2013,,*5E $GPGLL,,,,,220228.083,V,N*79 $GPRMC,220228.083,V,,,,,0.00,112.05,210813,,,N*40
Парсинг строк NMEA
Для чтения выдаваемой GPS-приёмником информации в виде NMEA-строк можно использовать такой код для NodeJS:
var serialport = require('serialport');
var nmea = require('nmea');
var EventEmitter = require('events').EventEmitter;
var port = new serialport.SerialPort('/dev/ttyUSB0', {
baudrate: 115200,
parser: serialport.parsers.readline('\r\n')});
var gps = new EventEmitter();
port.on('data', function(line) {
var data = nmea.parse(line);
if (data) {
gps.emit(data.type, data);
}
});
gps.on('fix', function(data) {
console.log(data);
console.log("lat: " + nmea_to_kml(data.lat) + " lng: " + nmea_to_kml(data.lon));
});
function nmea_to_kml(x){
var a = Math.floor(x/100);
var b = x - a*100;
var c = Math.floor((b/60)*100000)/100000;
return a + c;
}
Строчка 21 после фиксации координат начнёт выдавать нечто типа такого
{ type: 'fix', timestamp: '222732.000', lat: '5512.2351', latPole: 'N', lon: '03112.3641', lonPole: 'E', fixType: 'fix', numSat: 6, horDilution: 1.45, alt: 249.9, altUnit: 'M', geoidalSep: 14.6, geoidalSepUnit: 'M', differentialAge: 0, differentialRefStn: , talker_id: 'GP' }
Но для использования, например, в гуглокартах, координаты надо преобразовать. Для этого служит функция nmea_to_kml(). Строчка 22 выведет уже преобразованные координаты
lat: 55.20391 lng: 31.20606