TinyGPS
- Войдите на сайт для отправки комментариев
Сб, 09/11/2013 - 12:30
Пытаюсь настроить 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"
помогите разобраться
Дайте ссылку на описание вашего эмулятора. Как он подключён? tx к rx?
Возьмите этот пример https://github.com/mikalhart/TinyGPS/blob/master/examples/simple_test/si... , раскомментируйте 35 строку, запустите, результат покажите.
Настройки SatelliteEmulator
вот это вот он выдает:
а вот это принимает arduino
первые 2 сек эмулятор был выключен. В коде:
все остальное без изменений
Если отправляю через PuTTY на arduino приходит нормальная строка GPS но видимо
не работает. Чуть чуть изменил код
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, но не кодируется.
А аппаратно соеденено RX пин 10 TX пин 11 вот через такой переходник
UART крест на крест все как положенно)
в конце строки передаёте символы x0d или x0a ?
видимо нет просто строка "$GPGGA,124715.130,5535.4915,N,03738.6425,E,1,5,2.12,259.6,M,14.5"
Вот строка "$GPGGA,124715.130,5535.4915,N,03738.6425,E,1,5,2.12,259.6,M,14.5<CR><LF>" отправленная через PuTTY
Вроде, в конце строки не должно быть ни CR ни LF. Строки нужно посылать непрерывно. Разделителем является доллар. Пример simple_test целую секунду слушает поток, затем выводит результат.
Может в конце строки должна быть сумма? * и два символа ...
http://aprs.gids.nl/nmea/#gga
Третья картинка в посте #2 вызывает ощущение, что скорость передатчика отличается от скорости приёмника. Попробуйте другую. 9600?
Не понял, ваш переходник по RS-232 работает? 15 вольт на выводах? Не сгорела дуина?
У меня есть gps модуль ublox neo 6 кажется называется. Библиотека TinyGps показала хороший результат. Не согласен с вашим сообщением: "не работает функция gps.encode()".