Аппаратура Radiolink AT 9 2,4 ГГц

vetal2491

у меня жпс не стоит! это гоночный квадрик 210 размера! вопрос в другом. почему так рано связь отвалилась? на ютубе смотрел обзоры - в стоке чуть ли не 2 км! а у меня 700 метров всего! у кого сколько по расстоянию?

SkyPlayer
vetal2491:

вопрос в другом. почему так рано связь отвалилась?

Такое слово как “радиопомехи” вам известно? Они бывают, например, промышленные от близлежащего “свечного заводика” или от вышеупомянутых “кустов” БС-ок, а ещё от пригоршни вайфаев в близлежащем коттеджном посёлке. Обратили бы внимание ГДЕ (то есть в каких “глухих лугах”) тестят аппу на дальность. А так, конечно, “все врут - адназначна!” 😁

SkyPlayer
SrgM:

для меня лес густой… Я больше по железкам…

Попробую растолковать для “не специалиста”. Из всего текста скетча вас должна интересовать функция

// The function converts length of the pulse
// to USB joystick control value.
void setChannel(int ch, int pulse)

(легко догадаться, там даже комментарий надписан - что она, мол конвертирует длительность импульса PPM соответствующего канала в какое-то телодвижение USB-джойстика). “Тело” этой функции идёт от открывающейся фигурной скобки под её названием до соответствующей закрывающейся фигурной скобки (вы при цитировании угробили табуляции, посмотрите в исходном сообщении - там всё выровнено “ступенечками” и потому наглядно). Сначала идёт перевод длительности импульса (от 800 до 2200 мкс) в более удобный диапазон от 0 до 1, значение запоминается в переменной с плавающей (float) точкой value

// Processing pulses with length 800 - 2200 mks.
float value = (pulse - 800) / 1400.0;

Дальше отрабатывается случай, если по факту значения были меньше 800 или больше 2200 - и значение value окажется меньше 0 или больше 1

if (value < 0)
value = 0;
else
if (value > 1.0)
value = 1.0;

Ну и после всего этого осталось перевести значение value в положения стиков джойстика (они должны быть в пределах от -127 до 127)

Joystick.setXAxis(value*255 - 127);

крутилок джойстика (от 0 до 360 “градусов”)

Joystick.setXAxisRotation(value*360);

или имитации нажатий кнопок джойстика (первый параметр - номер кнопки, второй - значение, которое должно быть 0 = “отжата” или 1 = “нажата”)

Joystick.setButton(1, (int)(value+0.5));

в последнем случае маленькая “программная хитрость” - когда число с “плавающей точкой” переводится в целое (int), то дробная часть просто отбрасывается, а поскольку (value+0.5) будет принимать значения от 0.5 до 1.5, то после отбрасывания дробной части как раз и получится 0 или 1 с границей переключения на 1500 мкс (если не забыли, у нас value = 0 соответствует 800 мкс, а value = 1 соответствует 2200 мкс, соответственно, value = 0.5 будет соответствовать 1500 мкс).

Все возможные “крутилки-переключалки” описаны на странице проекта - можете “переопределить” обработчики каналов на свой вкус (то, о чём я писал выше). Обратите внимание, ссылка отличается от той, что вы находили выше по теме. Дело в том, что проект Arduino Joystick Library развился уже до версии 2.0, где можно менять количество кнопок и задавать диапазоны “крутилок” - но вам это лишние сложности, так что берите версию 1.0.1 по моей ссылке - там всё проще. 😃

RA4CTB

Вот, кстати, описание ещё одного проекта, заточенного под адаптер PPM-to-USB. Я делал именно по нему — «летается» замечательно.

ka103

А вот  еще вариант, присланный мне Семёном Кашпо (Patter), за что ему большое спасибо!

SkyPlayer
ka103:

А вот еще вариант

Проктологически-костыльный способ 😁 Хотя, конечно, работать будет - с потерей половины каналов.
Я “летаю” в симах ровно на том же профиле, что и на реальном дроне. И дпже по возможности переключения полётных режимов и т.п. в симе настраиваю на те же тумблеры, что и в реале.

RA4CTB

Ух ты, вот это костыли )))
Не, проще и правильнее скетч под себя и аппаратуру скорректировать.

Harvester

Товарищи, сегодня получил приемыш R9DS, версии 1.3, валяется один старый, версии 1.2, кто знает в чем разница? Визуально только заметил пока отличие в оформлении обозначений и антенна к плате не припаяна, как на 1.2 версии, а посажена на коннектор.

konstantin_sakryukin
Harvester:

антенна к плате не припаяна, как на 1.2 версии, а посажена на коннектор

Да это и не отличие вовсе, т.к. см. изобр. ниже.

RA4CTB
Harvester:

…кто знает в чем разница…

— Тимур, так у Вас обе версии на руках. Снимите корпуса и посмотрите, заодно нам расскажите. А если сфотографируете, так вообще здорово будет. 😉

kriuk
vetal2491:

у меня жпс не стоит! это гоночный квадрик 210 размера! вопрос в другом. почему так рано связь отвалилась? на ютубе смотрел обзоры - в стоке чуть ли не 2 км! а у меня 700 метров всего! у кого сколько по расстоянию?

Пробовал с проверкой на сервах. Высота приемника - 8 этаж, я на земле. Потеря связи на двух км. На последних 300м катеджная застройка без прямойвидимостм. Все штатное. На квадрике, если поднять на высоту 100м , я думаю все 3км пробъет. Учтите, что в тесте нет видеопередатчика.

mfilitovich
kriuk:

Учтите, что в тесте нет видеопередатчика.

Это очень важный момент.

SrgM
SkyPlayer:

Попробую растолковать для “не специалиста”

Большое вам спасибо за разъяснения! Теперь стало понятнее что к чему. Заказал Леонардо, пока идет хотел бы прояснить некоторые пробелы в понимании процесса.

1. Вот в вашем коде есть параметр case от 1 до 10. Как я понял, это номера каналов управления.
В первых трех идет обработчик с просчетом положения стика (value*255 - 127)

SrgM:

Joystick.setXAxis(value*255 - 127);

а в четвертом уже другой, как я понял из вашего предыдущего разъяснения, это обработчик для крутилок, так как у него положение расчитывается на 360 градусов (value*360)

SrgM:

Joystick.setXAxisRotation(value*360)

То есть первые три канала - это стики, а четвертый - это крутилка?

2. Речь идет о двухпозиционных переключателях, верно?

SkyPlayer:

имитации нажатий кнопок джойстика (первый параметр - номер кнопки, второй - значение, которое должно быть 0 = “отжата” или 1 = “нажата”)
Joystick.setButton(1, (int)(value+0.5));

А для 3-х позиционных используют эту же функцию? Если да, то “программная хитрость” там другая для просчета должна быть, не поделитесь?

3. Еще момент: конкретно в FPV Freerider на калибровке можно использовать и откалибровать только положения стиков управления, то есть только 4 канала. Остальные каналы аппы хоть и есть, то есть видны внизу, но использовать их нельзя. А что в других коптерных симуляторах можно привязать больше 4-х каналов?

SkyPlayer
SrgM:

То есть первые три канала - это стики, а четвертый - это крутилка?

Посмотрите список функций библиотеки джойстика - мы можем использовать только их. Там 3 функции “осей”, 3 функции “крутилок”, газ, руль и кнопки. Симулятору пофигу - “ось” или “крутилка”, он её интерпретирует просто как “канал”, от минимального до максимального его положения. В принципе, вы можете использовать “газ” и “руль”, но, по моему опыту, некоторые симуляторы их “не видят”. А вот “оси”, “крутилки” и “кнопки” - видят все, потому скрипт использует именно эти функции.

SrgM:

А для 3-х позиционных используют эту же функцию? Если да, то “программная хитрость” там другая для просчета должна быть, не поделитесь?

Функции без разницы - чем вы там на аппе установили то или иное значение канала (по проводу или с выхода приёмника). Указанная функция делает “кнопку” нажатой если уровень в канале больше середины и отжатой - если меньше. Для 3-позиционного переключателя вы можете сделать что хотите:

  • изменить конечными точками границы изменения данного канала так, чтобы среднее положение попадало в “выше середины” или “ниже середины”, то есть сделать из 3-позиционного переключателя 2-позиционный
  • написать чуть более хитрый обработчик, который понимал бы “нижнее”, “среднее” и “верхнее” состояния канала и, к примеру, включал бы 2 разные “кнопки”. Там же простая “арифметика” типа
if(value > 0.333)
{
    if(value > 0.666)
    {
        Joystick.setButton(1, 1);
        Joystick.setButton(2, 0);
    }
    else
    {
        Joystick.setButton(1, 0);
        Joystick.setButton(2, 1);
    }
}
else
{
    Joystick.setButton(1, 0);
    Joystick.setButton(2, 0);
}
  • разобраться как работает библиотечная функция setHatSwitch (я с ней не разбирался, но это имитация “грибка под палец” - типа “примитивного джойстика” на 9 положений: в стороны, по диагонали и центральное) и, соответственно, попытаться изобразить 3-позиционник этим инструментом. Другой вопрос - поймёт ли эту экзотику симулятор. 😃
SrgM:

А что в других коптерных симуляторах можно привязать больше 4-х каналов?

Да, в LiftOff, например, можно ещё кнопки использовать - для переключения полётного режима, “сброса” после крэша и т.п. А ещё в каком-то (то ли в HotProps то ли в DRL) угол наклона камеры можно менять только через “канал-крутилку” - я там слайдер аппы для такой экзотики использовал.

Саригор
konstantin_sakryukin:

Есть ли другие характерные отличия АТ9 и АТ9S, кроме надписи?

Присоединяюсь к вопросу, в чем их разница?

konstantin_sakryukin
vetal2491:

у кого сколько по расстоянию?

RadioLink AT9 + R9DS.
Антенны везде родные (стоковые).
Антенна приёмника болтается градусов под 45 вниз.
Антенна на аппе примерно перпендикулярно земле.
Проверял по земле в частном секторе (заборы, крыши из металла в основном) - около 150 метров.
Поковырялся в приёмнике (разъём антенный почистил хотя, всё вот только-только из Шанхая), при тех же условиях стало порядка 550 - 600 метров.
Если дистанцию увеличивать, то приёмник сигнал от аппы ловит и управляемо всё, а вот аппа сигнал приёмника теряет, т.е. пропадает телеметрия.
На аппаратуре питание в тот момент было 10,1 В., на приёмнике 5 В. с БП для полётника F4BY.
Но это всё вечером по земле частного сектора с заборами, крышами и стенами из чёрти чего.

kriuk

По земле с припятствиями не плохой результат. Но учтите что нетпомех от работающих моторов, видеопередатчика и т.п.

Саригор
kriuk:

нетпомех от видеопередатчика

а можно уточнить, какой частоты желательно брать видеопередатчик с этой аппой, или разницы нет?

kriuk

Я в этом пока новичек. Лучше подскажут старожилы. Самое распространненное для видео - 5.8Ггц. А вообще чем меньше частота тем лучше огибаются препятствия и соотв. больше дальность при той же мощьности.

RA4CTB
Саригор:

…какой частоты желательно брать видеопередатчик с этой аппой…

— аппаратура Radiolink ни чем не отличается от любой другой аппаратуры на ISM-диапазон 2.4GHz. Если просто, доступно и «как у всех» — берите на 5,8GHz, мощность по требованиям к дальности, но с учетом того, что чем больше мощность, тем «хуже» любым приёмникам на борту. Если же изначально целью стоит летать далеко, то… я бы сразу брал LRS на 433MHz и видео на 1.2GHz. Ну а переход на LRS кинул бы через R6DS, чтобы не быть «привязанным» проводом.

Anatoll

Можно одну аппу привязать к 2 приемникам?