13 октября 2018

FlySky FS-i6 - обновление прошивки

Есть у друга комплект для тренировок начинающих пилотов: пульт FlySky FS-i6 и тинивуп на базе Деда Мороза. Все бы ничего, но функционал пульта уж очень скромный. В первую очередь, остро ощущается нехватка каналов. Их всего шесть, а для удобного управления квадриком хочется немного больше:)


В интернете случайно попалось описание прошивки для FlySky FS-i6, увеличивающее количество доступных каналов пульта аж до 14-ти! Раз такое возможно, было принято решение попробовать обновить прошивку.

Для этого потребуется любой FTDI-адаптер или любая плата Arduino, например Arduino Nano. Просто нужен мост с USB на последовательный порт. Есть и готовый адаптер для прошивки пульта, но под рукой его не оказалось.

Выводы последовательного порта уже доступны на тренерском разъеме пульта. Схема соединения для обоих вариантов будет выглядеть так, как на рисунке ниже. Используются три провода: TX, RX и общий. Общий провод подключается к наружному кольцу разъема.


С FTDI-адаптером соединение идет TX-RX, RX-TX, а с Arduino Nano: TX-TX1, RX-RX0, не перепутайте!

Прошивка последней версии находится здесь. Скачиваем и распаковываем самый файл 8CH_PPM.zip. Эта модификация прошивки, кроме всего прочего, добавит 8 каналов на выходе тренерского разъема - пригодится в будущем. Внутри находится программа для обновления прошивки для 32-х и 64-битных версий Windows и три варианта прошивки: две без модификации пульта и одна с установленным дополнительно тумблером SWE. Так как пульт даже не вскрывался и не подвергался модификации, буду использовать файл с именем "fs-i6_updater_02_18_19_15.bin". Если у вас (как и у меня) операционная система отличается от Windows, потребуется отдельная программа для обновления, скачиваем ее здесь.

Перевести пульт FlySky FS-i6 в режим обновления прошивки можно двумя способами. Первый - зажать вместе триммер газа вниз, триммер руддера вправо и включить пульт. Экран будет темным, ничего не будет происходить, но пульт будет в режиме обновления прошивки.


Второй - выбрать этот режим из меню "System - Firmware update", нажать OK и ответить утвердительно на вопрос. Тогда подсветка экрана отключится, но надпись на экране сохранится.


Попробовал прошить пульт с помощью Arduino Nano - не получилось. Наверное, плата попалась мертвая. А с FTDI-адаптером получилось с первого раза!

В Windows надо бросить программу для прошивки и саму прошивку в один каталог, запустить программу и ответить утвердительно на вопрос.


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


После обновления прошивки пульт самостоятельно перезагрузится в обычный режим. Можно его выключить и убрать все провода. Проверить результат можно по отображаемой версии прошивки в меню пульта.


Не буду подробно рассказывать о новом функционале прошивки. Отмечу, что действительно стало доступно 14 каналов управления. Недостатка в AUX-каналах у квадрика уже не наблюдается:) Осталось перевести стики пульта на датчики Холла и будет вполне себе бюджетный и функциональный передатчик.

7 комментариев :

  1. Пульт удалось прошить с помощью Arduino подключив к разъёму Traier +5v от arduino.

    ОтветитьУдалить
  2. Удалось перепрошить по инструкции с помощью Arduino UNO, но надо подключить +5V, подключать к разъему над TX.

    ОтветитьУдалить
  3. А как залить загрузчик, если камень был перепаян на новый?

    ОтветитьУдалить
    Ответы
    1. залить достаточно просто: вскрываете пульт, там рядом с местом где вставляется фишка от ps/2 все пэды подписаны, к ним подпаиваем программатор jtag. А вот вопрос о том где взять прошивку, с этим самым загрузчиком, думаю, гораздо серьезнее.

      Удалить
  4. что делать если с помощью arduino nano не прошивается?

    ОтветитьУдалить
  5. Arduino pro micro, подключать к якобы +5 над TX это в корне не верно там PPM OUT сигнал.

    Делаем маленький скетчь, прозрачно пропускаем все между USB и RX0/TX0 и цепляем се как на обычном FTDI адаптере.

    TX0 -> RX
    RX0 -> TX
    GND -> GND

    Код:

    const int BPS=115200;

    void setup() {
    Serial.begin(BPS);
    Serial1.begin(BPS);
    }

    void loop() {
    if (Serial.available())
    Serial1.write(Serial.read());
    if (Serial1.available())
    Serial.write(Serial1.read());
    }

    ОтветитьУдалить