naza2frsky - адаптер смартпорта для FrSky за 3$
чет я даже строчки ни типа
if ((home_altitude == 0) && (sat_visible > 5)) home_altitude = gps_altitude;
ни загадочной
int c = GPS_Serial.read();
не обнаружил 😃
Ну да ладно, я только на 10 умножил координаты, должно работать. Получилась версия 0.5, тем кто протокол NMEA не использует качать НЕ НУЖНО разницы с 0.41 нет!
Я эти фишки пока не включал. Еще тестирую. Пару дней погоняю. Да и дистанцию, я понял не нужно включать. Если все же интересно - то в следующей выложу.
Проблему с высотой кажется понял, только еще не проверил в поле. Не верно работает эта строка if ((home_altitude == 0) && (sat_visible > 5)) home_altitude = gps_altitude;
процедура gps.satellites() возвращает 255 если спутники плохие. И соответственно условие срабатывает и home_altitude фиксируется как 1000000.0 Поставил условие && (sat_visible != 255) Да и кнопку добавил для резерва.
Похоже что 255 это -1 для 8ми битного числа 😃
подумал… лучше вместо && (sat_visible != 255) добавить условие
&& (gps_fixtype == 3)
так будет корректнее
попробую.
Облетал.
Высота отработала корректно (относительно ±2-3 м.) А вот скорость так и не понятна. В функции она выводиться в Км/ч - и составляет 0.14-0.21. Даже не пойму на что нужно умножить 😃
если смотреть на числа то получается
groundspeed = gps.f_speed_kmph()/36*200;
Но если объяснить почему 36 я еще как-то могу, то 200 нет 😃
/36 а не *36?
0.14-0.21 среднее 0.18
0.18 / 36 = 0.005
0.005 * 200 = 1
так .021 это примерно 70-80 к/ч по ощущениям. Замерить нечем. Подбором напрашивается 0.21*36*10 Но это пальцем в небо. Непонятно почему такие цифры возвращает эта функция. Попробую глянуть и в узлах. Она там по умолчанию
делить на 36 однозначно т.к. дальше в FrSkySPort на 36 умножается (эту процедуру лучше не трогать чтобы не пришлось добавлять ключи компилятору для dji и ublox одно, а для nmea по другое). На что умножать посмотри сам, тогда например на 20000, и лучше это делать в naza2frsky.ino
По повожу замерить. Можно прикрепить на аппарат смартфон/трекер, только покрепче, и включить запись трека а потом сравнить показания
Попробую с смартфоном.
Алексей, летаю на связке: наза, назовский ГПС, таранис. Дистанция растет одинаково с высотой при вертикальном взлете. Это так и должно быть? Или можно дистанцию как-то отвязать от высоты?
дистанцию считает таранис, а не naza2frsky см. первый скриншот, последняя строка
rcopen.com/forum/f123/topic386079/321
Так что вопрос нужно адресовать скорее разработчикам opentx. Но вообще, я считаю правильным, что при наборе высоты растет и дистанция, т.к. коптер удаляется от нас как ни крути
Все понял, спасибо.
Алексей, а не было практики прикрутить к адаптеру вариометр FrSky FVAS-01 Telemetry Variometer Sensor и температурные датчик?
По сути это аналог хаба. Или вариометр обмен проводит тоже как и gps через rx?
Да и есть ли смысл. На сколько его показатели высоты отличаются от данных GPS?
нет такой практики не было. Если хочется прикрутить вариометр ИМХО лучше прикупить готовый FrSky Variometer Sensor w/Smart Port, по идее все будет работать с naza2frsky без проблем. FrSky FVAS-01 работает по старому, хабовому протоколу, теоретически его прикрутить тоже можно, но снова нам нужен 3й com порт на ардуинке, что возможно может привести к конфликтам между двумя софтварными портами.
Вариант номер два, изучить вот этот проект: github.com/openXsensor/openXsensor и реализовать свой вариометр либо как отдельное устройство на отдельной ардуинке либо добавить на naza2frsky физический барометр MS5611 и передавать данные с него
По поводу точности. У вариометра заявлена точность 0.1м, конечно gps не может обеспечить такой, но лично меня точность 5-10м у gps модуля не смущает абсолютно 😃
По температурному датчику. Прикрутить такой датчик проблем нет ни каких (как и например датчики напряжения/тока), аналоговых входов валом, используй любой
Ок. Спасибо. Попробую температурные подтянуть, а вариометр пока оставлю в покое.
к температурному ничего из железа городить не нужно? Там же просто датчик, хватит уровня сигнала для входа или нужен усилитель?
даже датчик не нужен, нужен терморезистор (номинал единицы кОм, десятки кОм) - одна нога на корпус, вторая на аналоговый вход ардуинки (среднюю точку делителя) и обычный резистор - одна нога на +5, вторая на среднюю точку делителя. В зависимости какой у нас есть терморезистор подбирается обычный резистор, чтобы напряжение в желаемом диапазоне температур на выходе было в пределах 0-3.3В
Да, нашел, есть еще на LM35. Попробую реализовать/