Присоединяйтесь!
Авторизация

Raspberry Pi подключение GPS USB приемника

03 April 2013 - Автор JackM10

Недавно нашел у себя USB-GPS приемник, если не ошибаюсь модель от GlobalSat BU 353. Вот и решил его подключить к Raspberry Pi. После подключения он обнаружился хорошо , проблем вообще не было никаких:

#lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial PortBus 001 Device 005: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)

Вот наш девайс: Prolific Technology, Inc. PL2303 Serial Port

В /dev/ появилось новое устройство ttyUSB0, к нему и будем подключаться, насколько я помню, у большинства подобных девайсов скорость 4800. Ниже скрипт на PHP с использованием свободной библиотеки php_serial.class.php, с ней довольно просто работать.

#!/usr/bin/php5
// подключаем библиотеку
require("php_serial.class.php");
$serial=new phpSerial();
// выбираем порт
$serial->deviceSet("/dev/ttyUSB0");
// скорость
$serial->confBaudRate(4800); 
// ниже параметры как правило стандартные
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none"); 
// открываем порт
$serial->deviceOpen();
 $loop=1;
 while($loop==1){     
$get=$serial->readPort(); 
// если включить print , то будут все строки NMEA протокола
// print $get;        

if(substr($get,1,5) == "GPGGA")     
{      
 // если включить print , то будет только $GPGGA      
 //print $get;        
 // парсим строку         
 list($gga,$time,$lat,$NS,$lng,$EW,$state)=explode(",",$get);
 /* расшифровка строки $GPGGA,155004.000,4253.9372,N,04108.1511,E,1,08,1.2,18.4,M,27.4,M,,0000*68$GPGGA -- название пакета 155004.000 -- время гринвич 4253.9372,N,-- широта 04108.1511,E,-- доолгота 1-- если 1 то данные достоверны , если 0 то данные сомнительные в данном случае это переменная $state остальное можно прочитать в справочниках по NMEA протоколу,08,1.2,18.4,M,27.4,M,,0000*68*/             
     
 if($state == "1")   
{                   
/* сохраняем в текстовый файл , но не обязательно, можно закомментировать и использовать                          перенаправление через print, типа       
#./gps.php > куда то, или                    
#./gps.php | proga.sh    */                    
// путь куда  положить файл                   
$fp=fopen('/h/pi/robot/gps/gga.txt','wt');                      
if($fp)                     
{                        
fputs($fp,$get);                     
// print $get;                     
}                    
fclose($fp); //ставим задержку 10 секунд , но реально лучше ставить минуты 3-5 , зависит от задачи

sleep(10);       
         } }}  
$serial->deviceClose();?>

Это был простой пример , как получить данные из GPS приемника, обработку полученных данных можно реализовать разными способами, равно как и запуск скрипта. Я поставил периодичность запросов 10 секунд чисто для примера, хотя можно убрать sleep(10) и запускаться через cron.

Ниже рабочий пример скрипта для отображения координат на картах Google.

// получим данные из текстового файла
$gga=shell_exec("cat /home/pi/robot/gps/gga.txt");
// пропарсим строку
list($gga,$time,$lat,$NS,$lng,$EW,$state)=explode(",",$gga);
// показываем полученные данные
print "Time: ".$time."      Lat: ".$lat." Lang: ".$lng."     State: ".$state;
 // преобразуем широту и долготу к формату Google
 $Lat=round(floor($lat/100)+(($lat/100)-floor($lat/100))/0.6,6);
$Lng=round(floor($lng/100)+(($lng/100)-floor($lng/100))/0.6,6); 
// диаметр круга
$Acc="20";
// дальше обработка данных средствами Google API 3 
print " Google Maps JavaScript API v3(Street View) 
function initialize() { var moscow = new google.maps.LatLng(".$Lat.",".$Lng.");
var mapOptions = {center: moscow,zoom: 18,mapTypeId: google.maps.MapTypeId.SATELLITE,panControl: false,zoomControl: true,mapTypeControl: false,scaleControl: false}; 
 var map = new google.maps.Map(document.getElementById(\"map_canvas\"), mapOptions); 
 var circle = new google.maps.Circle({radius: ".$Acc.",map: map, center: moscow,fillOpacity: 0.2,strokeOpacity: 0.5,strokeColor: '#00CCCC', fillColor: '#33CCFF', strokeWeight: 1 }); 
 var marker = new google.maps.Marker({position: moscow,map: map,title:\"Lat:".$Lat." Long:".$Lng." Acc:".$Acc." \" });  }  "; ?> 
03 April 2013
JackM10
автор статьи

Комментариев: 2

  1. RePost4

    03 April 2013 - Ответить

    Если не сложно, то можешь установить Navit и оценить скорость работы? Он уже есть готовый в одном из репозиториев Raspbian'a

    • JackM10

      03 April 2013 - ответить

      Откровенно говоря , я иксами не пользуюсь совсем, поскольку некуда подключаться. А через ssh или vnc довольно медленно все работает. О navit довольно много в интернете написано, с хорошими примерами.

      • RePost4

        03 April 2013 - ответить

        Это понятно, просто интересует производительность именно RPi

  2. kukabu1

    05 April 2013 - Ответить

    gpsd используй

Отправить комментарий

Авторизуйтесь для отправки комментария

Присоединяйтесь
Новые сообщения
  • Проект по удаленному доступу
    09 July, 2020
    Ищу помощника на проект по созданию проекта на базе RPi. Базово - настройка вебкамеры+модема. Далее, возможно будут...…
  • Raspberry pi 4 не включается
    27 June, 2020
    @antonabsatarov#6188 что ты имеешь введу под "правильным" форматированием флешки? Все же исправно работало, а в один момент...…
  • Raspberry pi 4 не включается
    27 June, 2020
    @x6vital#6185 я сам столкнулся со схожей проблемой. Решил правильным форматированием флэшки (криво устанавливалась ОС), а...…
  • Как запустить X без монитора?
    22 June, 2020
    Как вы поняли, что они не запускаются? …
  • Как запустить X без монитора?
    22 June, 2020
    Добрый день, поставил на малину расбери ос с рабочим столом, если она загружается без монитора то не стартуют приложения...…
  • Raspberry pi 4 не включается
    19 June, 2020
    @mojo#6171 дело в том что она вообще неадекватно себя как то ведёт. Просто в один момент перестала включаться. Пробую...…
  • Troyka Cap
    19 June, 2020
    Всем спасибо вопрос больше не актуален …
  • Troyka Cap
    19 June, 2020
    @mojo#6178 спасибо скорее всего я уже нашёл ответ: Подключение Платформа устанавливается сверху на одноплатник Raspberry...…
  • rap os без Х + twinkle + service чо происходит
    18 June, 2020
    Добрый день, подскажите пожалуйста, установил настроил twinkle на малину(rasp os linux 10), запускаю через терминал twinkle...…
  • Troyka Cap
    18 June, 2020
    @mojo#6178 держу в курсе) я гулять пошёл и по этому от меня связи не будет до след дня надеюсь что Вы сможете помочь …
  • Troyka Cap
    18 June, 2020
    @mojo#6178 да и как могут быть проблемы с пинами Pi если вентелятор работает от тройка кэп просто от других пинов вопрос...…
  • Troyka Cap
    18 June, 2020
    @mojo#6175 дело не в разбери пинах так как я пробовал ставить вентилятор на саму разбери и он работал и на тройке он...…
  • Troyka Cap
    18 June, 2020
    нет. проблема врядли в токе. Там 1 светодиод, ему вполне хватит питания от RasPi …
  • Troyka Cap
    18 June, 2020
    @mojo#6176 просто в видео у амперки где обзор на тройку обзор там доп блок питания может просто не хватает тока? …
  • Troyka Cap
    18 June, 2020
    В самом Cap'е врядли могут быть проблемы. Там почти нет ничего такого, что может не работать. …
  • Troyka Cap
    18 June, 2020
    На схеме есть соответствие пинам Cap'а пинам на Raspberry Pi Попробуй модуль со светодиодом подключить напрямую к RasPi...…
  • Troyka Cap
    18 June, 2020
    > @Artem90056#6167 какие подробности я не сказал? Никаких. Я в принципе не понимаю, как ПИН может не работать....…
  • Troyka Cap
    18 June, 2020
    @mojo#6170 возможно что я не втыкаю в тройку кэп доп зарядник и мне не хватает мощности? …
  • Troyka Cap
    18 June, 2020
    @mojo#6170 http://wiki.amperka.ru/продукты:raspberry-troyka-cap пролистни чуть ниже проект маячок дана схема и код …
  • Raspberry pi 4 не включается
    18 June, 2020
    так и должно быть. Без SD карты горят все светодиоды Скорее всего не тот образ записал на карту …
  • Troyka Cap
    18 June, 2020
    Скидывай код и схему к какому пину Troyka Cap и что ты подключаешь …
  • Troyka Cap
    18 June, 2020
    @sv-lary#6166 не работают пины на troyka cap беру пример кода с амперки делаю всё по схеме но результата нет …
  • Troyka Cap
    18 June, 2020
    @sv-lary#6166 скажи что тебе ещё сказать? …
  • Troyka Cap
    18 June, 2020
    @sv-lary#6166 какие подробности я не сказал? я то знаю почему пины не работают да? …
  • Troyka Cap
    18 June, 2020
    > @Artem90056#6165 Troyka Cap не хочет работать И? А можно - хоть какие-то подробности? Или Вы предполагаете, что...…