naza2frsky - адаптер смартпорта для FrSky за 3$

alezz

чет я даже строчки ни типа

if ((home_altitude == 0) && (sat_visible > 5)) home_altitude = gps_altitude;

ни загадочной

int c = GPS_Serial.read();

не обнаружил 😃
Ну да ладно, я только на 10 умножил координаты, должно работать. Получилась версия 0.5, тем кто протокол NMEA не использует качать НЕ НУЖНО разницы с 0.41 нет!

naza2frsky_v05_nmea.rar

slava135

Я эти фишки пока не включал. Еще тестирую. Пару дней погоняю. Да и дистанцию, я понял не нужно включать. Если все же интересно - то в следующей выложу.

slava135

Проблему с высотой кажется понял, только еще не проверил в поле. Не верно работает эта строка if ((home_altitude == 0) && (sat_visible > 5)) home_altitude = gps_altitude;

процедура gps.satellites() возвращает 255 если спутники плохие. И соответственно условие срабатывает и home_altitude фиксируется как 1000000.0 Поставил условие && (sat_visible != 255) Да и кнопку добавил для резерва.

alezz

Похоже что 255 это -1 для 8ми битного числа 😃
подумал… лучше вместо && (sat_visible != 255) добавить условие

&& (gps_fixtype == 3)

так будет корректнее

slava135

Облетал.
Высота отработала корректно (относительно ±2-3 м.) А вот скорость так и не понятна. В функции она выводиться в Км/ч - и составляет 0.14-0.21. Даже не пойму на что нужно умножить 😃

alezz

если смотреть на числа то получается

groundspeed   	= gps.f_speed_kmph()/36*200; 

Но если объяснить почему 36 я еще как-то могу, то 200 нет 😃

alezz

0.14-0.21 среднее 0.18
0.18 / 36 = 0.005
0.005 * 200 = 1

slava135

так .021 это примерно 70-80 к/ч по ощущениям. Замерить нечем. Подбором напрашивается 0.21*36*10 Но это пальцем в небо. Непонятно почему такие цифры возвращает эта функция. Попробую глянуть и в узлах. Она там по умолчанию

alezz

делить на 36 однозначно т.к. дальше в FrSkySPort на 36 умножается (эту процедуру лучше не трогать чтобы не пришлось добавлять ключи компилятору для dji и ublox одно, а для nmea по другое). На что умножать посмотри сам, тогда например на 20000, и лучше это делать в naza2frsky.ino
По повожу замерить. Можно прикрепить на аппарат смартфон/трекер, только покрепче, и включить запись трека а потом сравнить показания

Дока

Алексей, летаю на связке: наза, назовский ГПС, таранис. Дистанция растет одинаково с высотой при вертикальном взлете. Это так и должно быть? Или можно дистанцию как-то отвязать от высоты?

alezz

дистанцию считает таранис, а не naza2frsky см. первый скриншот, последняя строка
rcopen.com/forum/f123/topic386079/321
Так что вопрос нужно адресовать скорее разработчикам opentx. Но вообще, я считаю правильным, что при наборе высоты растет и дистанция, т.к. коптер удаляется от нас как ни крути

slava135

Алексей, а не было практики прикрутить к адаптеру вариометр FrSky FVAS-01 Telemetry Variometer Sensor и температурные датчик?
По сути это аналог хаба. Или вариометр обмен проводит тоже как и gps через rx?
Да и есть ли смысл. На сколько его показатели высоты отличаются от данных GPS?

alezz

нет такой практики не было. Если хочется прикрутить вариометр ИМХО лучше прикупить готовый FrSky Variometer Sensor w/Smart Port, по идее все будет работать с naza2frsky без проблем. FrSky FVAS-01 работает по старому, хабовому протоколу, теоретически его прикрутить тоже можно, но снова нам нужен 3й com порт на ардуинке, что возможно может привести к конфликтам между двумя софтварными портами.
Вариант номер два, изучить вот этот проект: github.com/openXsensor/openXsensor и реализовать свой вариометр либо как отдельное устройство на отдельной ардуинке либо добавить на naza2frsky физический барометр MS5611 и передавать данные с него
По поводу точности. У вариометра заявлена точность 0.1м, конечно gps не может обеспечить такой, но лично меня точность 5-10м у gps модуля не смущает абсолютно 😃

По температурному датчику. Прикрутить такой датчик проблем нет ни каких (как и например датчики напряжения/тока), аналоговых входов валом, используй любой

slava135

Ок. Спасибо. Попробую температурные подтянуть, а вариометр пока оставлю в покое.
к температурному ничего из железа городить не нужно? Там же просто датчик, хватит уровня сигнала для входа или нужен усилитель?

alezz

даже датчик не нужен, нужен терморезистор (номинал единицы кОм, десятки кОм) - одна нога на корпус, вторая на аналоговый вход ардуинки (среднюю точку делителя) и обычный резистор - одна нога на +5, вторая на среднюю точку делителя. В зависимости какой у нас есть терморезистор подбирается обычный резистор, чтобы напряжение в желаемом диапазоне температур на выходе было в пределах 0-3.3В

slava135

Да, нашел, есть еще на LM35. Попробую реализовать/

alezz
slava135:

на LM35

оно. На сколько помню даже калибровка на OpenTX 2.1.X не нужна, просто подай выход LM35 на любой аналоговый вход А0-А5, считай analogRead и передай полученное напряжение например в канал А3 (в этом случае логично подавать на вход А3). Калибровка производится в самом таранисе