TinyGPS

yah
Offline
Зарегистрирован: 09.11.2013

Пытаюсь настроить TinyGPS. Для имуляции GPS использую SatelliteEmulator. С arduino соеденена по serial переходнику. 

Вот код.

#include <TinyGPS.h>
#include <SoftwareSerial.h>

TinyGPS gps;
SoftwareSerial nss(10, 11);

void setup()
{
  Serial.begin(9600);
  nss.begin(9600);
 
  Serial.println("start");
  Serial.println();
}

void loop(){
  
 while (nss.available() > 0){
   
  Serial.print("available: ");
  if ( gps.encode(nss.read()) ){
    long lat, lon;
    unsigned long fix_age, time, date, speed, course;
    unsigned long chars;
    unsigned short sentences, failed_checksum;
     

    gps.get_position(&lat, &lon, &fix_age);
    gps.get_datetime(&date, &time, &fix_age);
    speed = gps.speed();
    course = gps.course();
  }else{
    Serial.println("NOT ENCODE!");
  }
  
 }
}
  

Как я понял не работает функция gps.encode() точнеее она работает но выдает "NOT ENCODE"

помогите разобраться

toc
Offline
Зарегистрирован: 09.02.2013

Дайте ссылку на описание вашего эмулятора. Как он подключён? tx к rx? 

Возьмите этот пример https://github.com/mikalhart/TinyGPS/blob/master/examples/simple_test/si... , раскомментируйте 35 строку, запустите, результат покажите.

yah
Offline
Зарегистрирован: 09.11.2013

Настройки SatelliteEmulator

 

вот это вот он выдает:

а вот это принимает arduino

первые 2 сек эмулятор был выключен. В коде:

  Serial.begin(9600);
  ss.begin(4800);

все остальное без изменений

yah
Offline
Зарегистрирован: 09.11.2013

Если отправляю через PuTTY на arduino приходит нормальная строка GPS но видимо

gps.encode(c)

не работает. Чуть чуть изменил код

  if (newData)
  {
    //...код
  }else{
    Serial.print(" NOT ENCODE! ");
  }

выдает следующее

через PuTTY отправляю строку "$GPGGA,124715.130,5535.4915,N,03738.6425,E,1,5,2.12,259.6,M,14.5" она приходит на arduino, но не кодируется.

yah
Offline
Зарегистрирован: 09.11.2013

А аппаратно соеденено RX пин 10 TX пин 11 вот через такой переходник 

UART крест на крест все как положенно)

 

toc
Offline
Зарегистрирован: 09.02.2013

в конце строки передаёте символы x0d или x0a ?

yah
Offline
Зарегистрирован: 09.11.2013

видимо нет просто строка "$GPGGA,124715.130,5535.4915,N,03738.6425,E,1,5,2.12,259.6,M,14.5"

yah
Offline
Зарегистрирован: 09.11.2013

Вот строка "$GPGGA,124715.130,5535.4915,N,03738.6425,E,1,5,2.12,259.6,M,14.5<CR><LF>" отправленная через PuTTY

toc
Offline
Зарегистрирован: 09.02.2013

Вроде, в конце строки не должно быть ни CR ни LF. Строки нужно посылать непрерывно. Разделителем является доллар. Пример simple_test целую секунду слушает  поток, затем выводит результат.

Может в конце строки должна быть сумма? * и два символа ...

http://aprs.gids.nl/nmea/#gga

Третья картинка в посте #2 вызывает ощущение, что скорость передатчика отличается от скорости приёмника. Попробуйте другую. 9600?

Не понял, ваш переходник по RS-232 работает?  15 вольт на выводах? Не сгорела дуина?

У меня есть gps модуль ublox neo 6 кажется называется. Библиотека TinyGps показала хороший результат. Не согласен с вашим сообщением: "не работает функция gps.encode()".