Получаем RSSI с приемника FlySky FS-IA6B

Автор . Дата: 28.08.2019

RSSI. За этим хитрым мудренным словом скрывается обычный уровень сигнала. Например в мобильниках, те самые палочки слева вверху. Или в нашем случае, уровень сигнала с аппаратуры управления. В нашем случае, знать уровень сигнала очень важно. Потерять управление в самый ответственный момент означает потерять аппарат, и ещё потом попробуй его найди. FlySky может показывать уровень сигнала на аппаратуре (I6S прямо из коробки, I6 после небольших доработок) и даже пищать при низком уровне сигнала. Но когда летаешь по FPV, смотреть на аппаратуру за уровнем сигнала не очень удобно, а пищалка, по опыту работает, с ощутимой задержкой, и в некоторых случаях пищать может начать слишком поздно.

Поэтому лучше всего вывести его на OSD. Для того, чтобы вывести RSSI на OSD, необходимо, чтобы приемник умел отдавать его, в аналоговом или цифровом виде полетному контроллеру. Мне не удалось найти способы, чтобы получить аналоговый уровень сигнала с приемника, поэтому в этой статье будем рассматривать получение RSSI в цифровом виде по шине iBus.

Приемники FlySky из коробки, к сожалению, не умеют отдавать уровень сигнала, что очень плохо. Но к счастью, народные умельцы смогли пропатчить прошивки приемников FlySky и добавили возможность выводить RSSI на канал управления (8 или 14ый).

Для того, чтобы получить RSSI по iBus, нам необходимо прошить приемник, и для этого нам потребуется:

  • Прошиваемый приемник. Я буду описывать все действия для приемника FS-IA6B, но поддерживаются почти все приемники FlySky, и вы сможете повторить все эти действия с небольшими отличиями
  • Программатор ST Link v2.
  • Программа STM32 ST-LINK Utility
  • Новая прошивка. Скачать для своего приемника можно отсюда: https://github.com/Cleric-K/FlySkyRxFirmwareRssiMod
  • Паяльник, припой, немного проводов и компьютер

Для начала разбираем приемник. Для этого в случае IA6B достаточно открутить 2 винтика снизу корпуса и снять крышку. Нашему взору предстает плата приемника. Нам необходимо будет подпаять провода к площадке для программирования. Нас интересует вот эта площадка:

Контакты площадки подписаны, думаю не ошибетесь. Обычно достаточно припаять 4 провода, без RST линии, но в некоторых случаях, прошивка без неё может не идти. Например, у меня один приемник прошился без подключения RST линии, а другой не хотел прошиваться без неё. Поэтому советую использовать сразу все 5 контактов.

Лудим, припаиваем 5 проводков к контактам, затем подключаем их к программатору ST Link v2. Схема подключения вот такая:

  • Пин +3.3v подключаем к контакту 3.3v на программаторе
  • Пин GND подключаем к контакту GND на программаторе
  • Пин DAT подключаем к контакту SWDIO на программаторе
  • Пин CLK подключаем к контакту SWCLK на программаторе
  • Пин RST подключаем к контакту RST на программаторе

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

Теперь подключаем программатор к компьютеру, устанавливаем и запускаем программу STM32 ST-LINK Utility. У вас должно появиться примерно такое окно:

Здесь в поле Address указываем значение 0x08000000, в поле Size: 0x8000. Жмем 3ю иконку со штепселем, или выбираем в меню Target -> Connect. Если вы все подключили правильно, должен появиться код прошивки, либо сообщение с невозможностью прочитать прошивку из-за защиты от чтения, в логе внизу должны быть записи с Delice ID и Delice family, примерно как на скриншоте. В случае ошибок, будут красные записи в логе. Если вдруг у вас возникли ошибки, проверьте ещё раз правильность подключения всех проводов. Если же они подключены верно, проверьте качество контакта. У меня как-то раз приемник не выходил на связь, внешне все выглядело нормально, я пропаял ещё раз контакты на приемнике, и проблемы ушли.

Если у вас получилось прочитать текущую прошивку с приемника, то поздравляю. Жмите на кнопку Save с иконкой дискетой, сохраняйте её на диск, она ещё пригодится. У меня же, в обоих случаях не получалось прочитать прошивку с приемника, т.к. он был защищен от чтения. Это не очень критично, но придется немного импровизировать.

В скачаном репозитории прошивок переходим в папку build, и выбираем прошивку, в которой содержится название приемника. Там 2 версии, в одной RSSI будет на 8ом канале канале управления, в другой на 14ом. Я советую заливать прошивку с 14ым каналом. Дело в том, что каналы с 1го по 10ый могут использоваться аппаратурой управления, и если вы зальете прошивку в которой RSSI на 8ом канале, в будущем на один доступный канал управления у вас станет меньше. Например, не сможете повесить какой-нить нужный переключатель. А каналы с 10 по 14 аппаратура управления использовать не может, так что не будет никаких конфликтов.

Теперь, нажимаем кнопку открыть в ST Link Utility и выбираем нужную прошивку. И тут есть один момент. Если у вас не приемник A8S или 8A, то по хорошему, необходимо поменять ID приемника. Если этого не сделать, могут быть следующие проблемы:

  • Придется биндить ещё раз аппарутуру и приемник (что не очень страшно)
  • В случае, если у вашего друга залита такая же прошивка, и у вас будут одинаковые ID приемника, при полетах вместе могут быть проблемы по управлению (что уже страшно)

Поэтому, очень советую его сменить. Если у вас есть дамп старой прошивки, то открывайте её, переходите по адресу 0x1C00, сохраняйте куда-нибудь значения 4х байтов, потом изменяйте в новой по этому же адресу эти 4 байта. Если старой прошивки нет, то можно указать 4 случайных числа, либо взять серийный номер с этикетки на приемнике и перевести его в 4 hex байта, например с помощью этого конвертера: https://www.rapidtables.com/convert/number/decimal-to-hex.html

Внимание! Если у вас приемники A8S или 8A, то менять ID приемника не нужно. Он хранится в EEPROM, и поменяв данные по этим адресам вы сломаете прошивку!

Сохраняем на диск измененую прошивку, и теперь нажимаем кнопку кнопку с блокнотом и ручкой (Program verify). В появившемся окне нажимаем кнопку Start. Если у вас стояла защита от чтения, ST Link Utility предложит её снять, я рекомендую согласиться. Дальше начнется процесс загрузки прошивки, идет он достаточно быстро, и по окончанию программа известит вас об этом.

С приемником закончили, теперь можно отпаять провода и собрать его обратно в корпус. Осталось настроить полетный контроллер. Я рассмотрю настройку на прошивке Betaflight. Этот способ так же подойдет для Cleanflight и iNav, конфигураторы у них примерно одинаковые. Если у вас какая-то другая прошивка, загуглите настройку RSSI под неё.

Итак, подключаем приемник к полетному контроллеру, подключаем полетный контроллер к ПК через USB, запускаем Betaflight/Cleanflight/iNav Configurator. Я исхожу из того, что вы уже подключали и настраивали приемник к полетному контроллеру, поэтому будет настраивать только RSSI. Заходим во вкладку Приемник, и справа в поле RSSI канал выбираем AUX10 (для прошивки на 14ом канале), или AUX4 (для прошивки на 8ом канале). Жмем сохранить, и в общем настройка завершена :-) Убедиться в работоспособности можно включив аппаратуру, и наблюдать за изменениями показаний на вашем AUX канале.

Если вдруг вы меняли ID приемника на какой-то новый, то перед настройкой необходимо будет забиндить заного приемник и аппаратуру управления. Так же не забудьте проверить настройки Failsafe в вашей аппаратуре управления. Я в первый раз забыл это сделать, а настройки слетели, из-за чего мой коптер при потере связи просто улетел, и я его искал 2 недели, в итоге коптер найден, а экшн камеру так и не нашел.

Ещё можете сразу перейти во вкладку OSD, и настроить вывод уровня RSSI на ваши очки или шлем, и так же настроить порог предупреждения о низком уровне сигнала.

Собственно это все. Если возникнут какие-то вопросы или проблемы, пишите в комментариях, попробуем разобраться вместе. Удачных вам полетов, отсутствия failsafe'ов, и пропаж :-)