04 мая 2017

iRangeX IRX4 - модуль 4-в-1 для Taranis

Как и обещал, предлагаю обзор нового универсального модуля 4-в-1 iRangeX IRX4. Попробую с этим модулем реализовать те же функции в передатчике FrSky Taranis QX7, что уже имею на DEVO-10 с аналогичным модулем 4-в-1.


Модуль iRangeX IRX4 может быть установлен в JR-слот любого передатчика с поддержкой  прошивки OpenTX. В первую очередь, это всё семейство передатчиков FrSky Taranis, FlySky TH9X (с небольшой доработкой), Turnigy 9XR и 9XR Pro.

Модуль iRangeX IRX4 поддерживает все те же протоколы управления моделями, что реализованы в прошивке Deviation для передатчиков DEVO, так как прошивка модуля создана на основе этого проекта. Неполный список протоколов есть в документации к модулю.


Основное обсуждение модуля идет на сайте rcgroups.com.

Изначально модуль iRangeX IRX4 был представлен в корпусе, напечатанном на 3D-принтере, но позже корпус заменили на нормальный, из обычного пластика.


С обратной стороны модуля iRangeX IRX4 есть только отверстия под пины, расположенные с JR-слоте передатчика.


Модуль без проблем плотненько входит в слот передатчика FrSky Taranis QX7. Пока еще не решил, убрать или оставить родную антенну передатчика. По большому счету, она не нужна. Я знаю, что усилитель в модуле iRangeX IRX4 мощнее и протокол FrSky со всеми вариациями тоже реализован. Но я еще не проверил работу телеметрии, в частности интересует возможность настройки PID в прошивке BetaFlight прямо с пульта. Так что, пока оставлю как есть.

Изначально модуль iRangeX IRX4 прошит так, что телеметрия не работает. Может на каком другом передатчике оно и заработает, только не на FrSky Taranis QX7. Придется настроить и обновить прошивку. Дело это не сложное, если немного дружить с паяльником:) Разбираю модуль:


С лицевой стороны платы стоит уже знакомый блок 4-в-1, который содержит передающие модули CYRF6936, NRF24L01, A7105 и CC2500, а так же отличный усилитель сигнала. Пока еще не знаю, зачем стоят два светодиода. На плате остались пустыми места для установки кнопки Bind и селектора протоколов, они больше не нужны. В прошивке передатчика OpenTX версии 2.2 уже реализован выбор протокола прямо из меню передатчика.


С обратной стороны платы стоят два стабилизатора напряжения: на 5В и 3.3В. Управляет всем процессор STM32 F103.

Для обновления прошивки потребуется FTDI-адаптер с возможностью переключения напряжения с 5В на 3.3В. Как сказано в документации, схема соединения программатора и модуля должна быть такой:


Перемычка замыкает выводы BOOT и нужна только для прошивки. Так как прошивать модуль планирую часто, то cделал отдельные выводы для программатора из обрезков сигнальных проводов от регуляторов. Закрепил термоклеем прямо к плате. Выглядит не очень, но ничего другого в голову не пришло.


А в крышке модуля сделал пять маленьких отверстий под пины. Вроде не сильно внешний вид испортил:)


Слева два отверстия для установки перемычки BOOT, а справа три отверстия для подключения FTDI-адаптера. Оставалось только сделать два пина с перемычкой и провод для соединения модуля и FTDI-адаптера.

Теперь процесс подготовки к прошивке. Скачиваем исходные тексты прошивки и распаковываем в удобное место. Придется немного подредактировать файл "_Config.h", который лежит в директории "Multiprotocol", чтобы модуль успешно заработал с передатчиком FrSky Taranis QX7. Поставить комментарий (две косые черты) на переменные:

//#define MULTI_STATUS
//#define ENABLE_PPM

И убрать комментарий у переменных:

#define INVERT_TELEMETRY
#define MULTI_TELEMETRY

Потребуется среда Arduino IDE. Скачиваем архив под свою операционную систему и распаковываем. Затем скачиваем дополнение для работы с STM32 из среды Arduino. Распаковать его надо туда же, куда и Arduino IDE, в директорию ".../arduino/hardware" с именем каталога "Arduino_STM32", чтобы получилось, как на картинке:


Затем надо модифицировать файл ".../arduino/hardware/Arduino_STM32/STM32F1/cores/maple/libmaple/usart_f1.c" - закомментировать пару функций, чтобы получилось так же, как в документации - добавить косую черту и звездочку в начале и конце блока.

/* void __irq_usart2(void){
usart_irq(&usart2_rb, USART2_BASE);
}

void __irq_usart3(void) {
usart_irq(&usart3_rb, USART3_BASE);
} */

Запускаем Arduino IDE, переходим в меню "Инструменты - Плата - Менеджер плат". Откроется окно "Менеджер плат", там выбираем плату "Arduino SAM Boards (32-bits ARM Cortex-M3)" и жмем кнопку "Установка".


После загрузки закрываем окно "Менеджер плат" и среду Arduino IDE. Снова запускаем Arduino IDE и открываем файл "Multiprotocol.ino" из директории "Multiprotocol" распакованного архива исходных текстов прошивки. В меню "Инструменты - Плата" выбираем "Generic STM32F103C series", проверяем, чтобы вариант платы стоял "STM32F103C8 (20k RAM, 64k Flash)". Все, можно проверить, откомпилируется проект или нет. Жмем кнопку "Проверить" на панели среды Arduino IDE. Если у вас Windows или Mac OS X - повезло, с другими системами выскочит ошибка:

.../DIY-Multiprotocol-TX-Module/Multiprotocol/Multiprotocol.ino:48:22: fatal error: arduino.h: No such file or directory
  #include <arduino.h>
                      ^
compilation terminated.
exit status 1
Ошибка компиляции для платы Generic STM32F103C series.

Дело в том, что на других системах, отличных от вышеназванных, учитывается регистр при задании имен файлов. Ошибку легко исправить. Находим в файле "Multiprotocol.ino" строку:

#include <arduino.h>

И заменяем на строку:

#include <Arduino.h>

Теперь проект должен пройти проверку без ошибок.

Ну вот, все готово для обновления прошивки в модуле iRangeX IRX4:) Вставляем модуль в выключенный передатчик. Подключаем FTDI-адаптер к компьютеру. Важно! Убедитесь, что FTDI-адаптер включен в режим 3.3В! Если сомневаетесь, измерьте напряжение на FTDI-адаптере между GND и выводом TXD или RXD. Если все это делается под Windows, то может потребоваться перезагрузка в режим без проверки подписей драйверов. Замыкаем перемычкой выводы BOOT, как было отмечено на схеме выше, и подключаем FTDI-адаптер к модулю. В последнюю очередь включаем передатчик. В среде Arduino IDE выбираем меню "Инструменты - Upload method - Serial", ниже выбираем соответствующий виртуальный порт.


Жмем кнопку "Загрузка" на панели среды Arduino IDE. Должен пойти процесс загрузки прошивки в модуль. Если все получилось, выключаем передатчик, отключаем FTDI-адаптер и убираем перемычку. Все!

У меня получилось не с первого раза. В Ubuntu Linux пришлось скачать исходные тексты утилиты stm32flash последней версии 0.5, скомпилировать их и подсунуть получившийся бинарный файл "stm32flash" в директорию ".../arduino/hardware/Arduino_STM32/tools/linux/stm32flash". Только тогда прошивка залилась без проблем.

Самое сложное позади, теперь попробую настроить хотя бы вертолет WLToys V977:) Пока что не сильно углублялся в тонкости настройки, так как расположение тумблеров не очень удобное, а привыкать к новому не хочется. Когда переставлю и переделаю тумблеры под себя, тогда буду копать более глубоко. Самое основное - отключить встроенный модуль и включить внешний. Это делается на второй странице конфигурации модели.


Тут же выбирается необходимый протокол, задаются опции и выполняется сопряжение модели с передатчиком. В поле Status отображается версия прошивки модуля. У меня все получилось с первого раза, без проблем. Вот файл модели, настроил только базовые функции. Холд на левом двух-позиционном тумблере, полетные режимы на крайнем правом трех-позиционном, рядом - включение режима 6G, расходы на крайнем левом трех-позиционном. Триммеры в режиме 6G работают. Триммер газа, как и на родном пульте,  регулирует шаг в режиме 3D. Пока что не делал ни таймер, ни предупреждения, просто проверил работоспособность. Все это будет позже, если передатчик FrSky Taranis QX7 приживется. Даже не попробовал взлететь - аккумуляторов нет, но надеюсь, что полетит без проблем.

На этом пока все. Модуль iRangeX IRX4 оказался вполне работоспособным. Чуть позже появится версия модуля с USB-разъемом для программирования и можно будет обойтись без FTDI-адаптера. Попробовал работать с приемниками FrSky через модуль - нормально, но телеметрию еще не проверял. Хотя, думаю, что проблем с этим не будет. Продолжаю разбираться  с передатчиком FrSky Taranis QX7. В прошивке OpenTX очень много наворотов и если в них разобраться, то можно творить чудеса, но на это необходимо время...

3 комментария :

  1. Я компилил под Mac OS и ошибки компиляции не было. Так что видать только под Linux есть эта проблема с регистром в наименовании библиотеки.

    ОтветитьУдалить
    Ответы
    1. Я думал там тоже регистрозависимые имена файлов, так как ядро от OpenBSD. Видимо пришла пора воткнуть в виртуалку еще и Mac OS X, чтобы поплотнее изучить HFS+ :)

      Удалить
    2. Подправил заметочку:)

      Удалить