naza2frsky - адаптер смартпорта для FrSky за 3$
Строки раскомментировал. Протокол показывает NMEA.
Вот строки обмена
06:37:28 $GPRMC,063728.00,A,5545.55897,N,03725.12261,E,3.547,180.89,070915,A*63
06:37:29 $GPRMC,063729.00,A,5545.55803,N,03725.12246,E,3.595,181.88,070915,A*65
06:37:29 $GPVTG,181.88,T,M,3.595,N,6.658,K,A*32
06:37:29 $GPGGA,063729.00,5545.55803,N,03725.12246,E,1,05,2.57,279.0,M,13.5,M,*51
А вот что я имел в виду скачет
06:37:26 R -> UBX 03-09, Size 96, ‘Unknown’
06:37:27 R -> UBX NAV-SOL, Size 60, ‘Navigation Solution’
06:37:27 R -> UBX NAV-SVINFO, Size 208, ‘Satellite Status and Information’
06:37:27 R -> UBX NAV-CLOCK, Size 28, ‘Clock Status’
06:37:27 R -> UBX NAV-AOPSTATUS, Size 28, ‘AOP Status’
06:37:26 R -> NMEA GPRMC, Size 74, ‘Recommended Minimum Specific GNSS Data’
06:37:26 R -> NMEA GPVTG, Size 41, ‘Course Over Ground and Ground Speed’
06:37:26 R -> NMEA GPGGA, Size 75, ‘Global Positioning System Fix Data’
06:37:26 R -> UBX NAV-SOL, Size 60, ‘Navigation Solution’
06:37:26 R -> UBX NAV-SVINFO, Size 208, ‘Satellite Status and Information’
06:37:26 R -> UBX NAV-CLOCK, Size 28, ‘Clock Status’
06:37:26 R -> UBX NAV-AOPSTATUS, Size 28, ‘AOP Status’
06:37:26 R -> NMEA GPRMC, Size 74, ‘Recommended Minimum Specific GNSS Data’
06:37:26 R -> NMEA GPVTG, Size 41, ‘Course Over Ground and Ground Speed’
06:37:26 R -> UBX 03-09, Size 96, ‘Unknown’
Но после установки связи со спутниками уже четко стоит NMEA
Данную тему только начинаю осваивать, по этому такие вопросы 😦
Поддерживает прошивка данный протокол или нужно искать другую библиотеку?
Можно ли пройти код в отладчике с имитацией спутников, если да то каким образом. На сайте по Ардуино пока не нашел
А3 и А4 пока пустые но раскомментированы. Приемник X8R,передатчик FrSky Taranis Plus. В меню Телеметрия показывает на этих портах 5 вольт.
Спасибо.
Поддерживает прошивка данный протокол или нужно искать другую библиотеку?
Увы nmea не поддерживает. Библиотека есть готовая arduiniana.org/libraries/tinygps/ но я думаю понятно, что для ее подключения нужно обладать некоторым багажом знаний по Ардуино, за 5 секунд это сделать не выйдет
Можно ли пройти код в отладчике с имитацией спутников, если да то каким образом
с отладчиком все плохо. Для отладки можно использовать светодиод на ардуинке
А3 и А4 пока пустые но раскомментированы. Приемник X8R,передатчик FrSky Taranis Plus. В меню Телеметрия показывает на этих портах 5 вольт.
скорее всего нормально, входы на ардуинке могут быть подтянуты к плюсу чтобы не шуметь зря когда они ни к чему не подключены. Попробуй подключить к входу (входам) резистор на землю скажем на 10кОм
P.S. А действительно, нельзя ли запрограммировать в gps модуле на выходе одновременно и nmea и ubx?
www.rcgroups.com/forums/showpost.php?p=28758590&po…
Спасибо. попробую покрутить TinyGPS. Жаль что отладчиком не воспользоваться 😦
По одновременному использованию nmea и ubx- почитаю.
Будут вопросы по стыковке в этой ветке можно задать, может еще кому пригодится?
Будут вопросы по стыковке в этой ветке можно задать, может еще кому пригодится?
да без проблем. Хотя лучше сразу готовую версию выкладывай 😃
подключил на черновую nmea, пробуй. Скорее всего в скетче есть ошибки, т.к. проверить просто не начем, но как отправная точка думаю сойдет
скетч
При сборке дате ошибку TinyGPS\TinyGPS.cpp.o: In function `TinyGPS::TinyGPS()': и далее
Странно, у меня собирается без проблем. Надеюсь используешь Classic Arduino IDE т.е версию не старше 1.0.6? www.arduino.cc/en/Main/OldSoftwareReleases#previou…
да. версия 1.0.5 (рекомендуемая)
Я до этого TinyGPS подключил как библиотеку, может из за этого. В сборке то код у же есть или наоборот какой то подключенной библиотеки не хватает.
Я пошел тем же путем, но пока стопорит на
int c = GPS_Serial.read();
if (gps.encode©)
Видимо не получает ничего и в условие не входит. Но я библиотеки просто подключал через #include <TinyGPS.h>
Убрал библиотеку из каталога - ошибок нет. Видимо был конфликт. Тестирую
Данных нет. Стопор там же
uint8_t c = GPS_Serial.read();
if (gps.encode©) { // process new gps info
эээ. Посмотрел внимательно, я там условие одно потерял
Пробую
Пропущено #if defined(GPS_PROTOCOL_DJI) || defined(GPS_PROTOCOL_UBX) || defined(GPS_PROTOCOL_NMEA)
Теперь в процедуру заходит но дальше в if(GPS_Serial.available() > 0) не проваливается.
Уточню, Мы берем сигнал с пинов RX TX?
Не может быть необходимость опроса? или для GPS датчиков это не свойственно?
Тестирую датчик не подключённый к автопилоту (автономно) если подключить то начинает лезть разный мусор и на TEMP и Full большие цифры появятся потом пропадают.
И начинает выскакивать сообщение о потере телеметрии.
Уточню, Мы берем сигнал с пинов RX TX?
Не может быть необходимость опроса? или для GPS датчиков это не свойственно?
на naza2frsky нужен только RX, ардуино только слушает и команды gps не отправляет. А вот автопилот может переконфигурировать gps под свои нужды и протокол и скорость
И еще ошибку нашел. Исправил, скорее всего из-за нее мусор и валил
Ничего не могу понять. Уже все перепробовал. По идее в коде все верно.
Но почему не хочет проходить на строку if(GPS_Serial.available() > 0)
Но почему не хочет проходить на строку if(GPS_Serial.available() > 0)
ну значит данных от gps нет ни каких, в буфере последовательно порта пусто
В этом и странность, при подключении к u-Center - все нормально. Значит данные есть. А тут - хоть тресни.
В примерах используют цикл задержки. Может в этом дело? Я пробовал цикл добавить но тогда начинает отваливаться телеметрия в передатчике. Видимо передача прерывается.
В этом и странность, при подключении к u-Center - все нормально. Значит данные есть. А тут - хоть тресни.
возможно u-Center какие-то команды дает. Подключать от gps модуля только провод передачи и не подключать приема пробовал? В принципе gps модуль можно сконфигурировать под ublox (временно) и попробовать как работает с naza2frsky в таком режиме, протокол ublox я лично проверял, там было все ок. Ну а потом вернуть конфигурацию чтобы с автопилотом работало
Тоже такая мысль была - попробовал только RX. Работает.
Может порт глючить? Читал есть еще 2 порта RX. Как на них перебросить для пробы?
на атмега328р (ардуино мини, ардуино нано) увы только один хардварный последовательный порт. Для подключения к смартпорту я использовал софтварный (программный) порт, т.е. эмуляцию, его можно назначить почти на любом цифровом входе. Т.е. теоретически можно оба интерфейса на программные порты повесить, но у них свои ограничения, например по буферу или прерываниям - возможны конфликты. Я точно таким извратом заниматься не буду, проще ардуино мини купить новую. Кстати, если у тебя ардуино нано, были случаи когда запаянная на плате ftdi-шка действительно подсаживала порт RX, людям приходилось резать дорожку. Где-то в этой теме такие случаи были описаны
Мини Про. Понял. Попробую найти новую. Код по идее должен работать, там уже только переменные проверить. А вот почему не читает - нужно копать.
Спасибо за помощь. Разберусь с портом, может тогда дальше вопросы появятся.
Мини Про
Ну тогда очень сомнительно что виновата ардуинка т.к. через этот же порт она шьется и шьется, как я понял, успешно. Кстати я снова ошибку нашел, она не критична, работать должно было и с ней, но для порядка выкладываю
Данные пошли. Заменил uint8_t c = GPS_Serial.read(); на int c = GPS_Serial.read();
Теперь нужно разобраться с корректностью данных