Телеметрия FrSky
Компоненты телеметрии можно приобрести на Паркфлаере
Порт телеметрии Frsky представляет собой обычный порт стандарта RS232. Т.е. это обычный последовательный порт. В любом микроконтроллере Atmel серии Mega есть как минимум один порт UART, который можно использовать для работы с потоком данных телеметрии. Однако есть одно «НО». Это разница уровней. RS232 предусматривает уровни сигналов от-15В до +15В, а UART работает с уровнями TTL (0 - +5В). Прямое подключение RS232 к UART микроконтроллера гарантировано убъет последний.
Сам FrSky предлагает следующую схему преобразования уровней:
Но надо учитывать, что данная схема односторонняя. Она позволит читать из RS232 в UART, но передавать данные обратно не получится. Для чтения телеметрии этого достаточно. Для чего-то большего обычно используют двунаправленные преобразователи на MAX232.
Параметры UART для работы с модулями и приемниками FrSky будут следующими:
Скорость порта – 9600bps, 8бит, без четности, 1 стоп бит.
Надо сказать, что новый SmartPort или S.Port не сильно отличается…
Протокол
Данные передаются фреймами по 11 байт. Каждый фрейм начинается и заканчивается байтом 0x7E. Если возникает необходимость внутри фрейма передать значение 0x7E или 0x7D, оно раскладывается на два байта: 0x7E на 0x7D 0x5E и 0x7D на 0x7D 0x5D. При чтении потока данных в микроконтроллере надо реализовать следующий алгоритм:
Если на вход поступил байт 0x7D, то его надо пропустить. Для получения реального значения необходимо взять следующий байт из потока XOR 0x20.
Второй байт пакета указывает на тип передаваемого значения. Далее следует 3 функциональных (см по типам значений). В конце следует 5 байтов нулей. Завершается пакет байтом 0x7E.
Установка сигнального порога
Кодирующий байт
|
Пороговое значение
|
больше/меньше порога
|
Уровень сигнализации:
0 – нет
1 – желтый
2 – оранжевый
3 - красный
|
0xFC
|
A1
|
1/0
|
|
0xFB
|
A1
|
1/0
|
|
0xFA
|
A2
|
1/0
|
|
0xF9
|
A2
|
1/0
|
|
Запрос на все доступные пороговые установки
|
0xF8
|
0
|
0
|
0
|
Вывод значений телеметрии
Сигнализации
Кодирующий байт
|
Пороговое значение
|
больше/меньше порога
|
Уровень сигнализации:
0 – нет
1 – желтый
2 – оранжевый
3 - красный
|
0xFC
|
A1
|
1/0
|
|
0xFB
|
A1
|
1/0
|
|
0xFA
|
A2
|
1/0
|
|
0xF9
|
A2
|
1/0
|
|
Напряжение борта и RSSI
Кодирующий байт
|
Значение 1
|
Значение 2
|
RSSI
|
0xFE
|
Порт 1
|
Порт 2
|
RSSI
|
Пользовательские данные
Кодирующий байт
|
Длинна данных
|
Не используется
|
Массив данных
|
0xFD
|
length
|
X
|
Байты 0:5
|
Так же на стороне моделей может быть установлен хаб датчиков. Он передает данные с подключенных к нему датчиков по очень похожему протоколу:
- Начало/конец передачи, а также разделитель между датчиками – байт 0x5E
- Если байт внутри пакета должен иметь значение 0x5E, то он заменяется последовательностью из двух байтов 0x5D 0x3E
- Если байт внутри пакета должен иметь значение 0x5D, то он заменяется последовательностью из двух байтов 0x5D 0x3D
- При чтении из потока байта 0x5D, его необходимо пропустить, а следующий байт XOR 0x60 даст реальное значение
- Второй байт пакета – идентификатор датчика
- Третий байт – младший байт значения датчика
- Четвертый байт – старший байт значения датчика
Таблица кодирования информации датчиков
Идентификатор датчика
|
Описание
|
Единицы измерения
|
Форма
|
Размерность и диапазон
|
*
|
0x01
|
GPS высота
|
метр
|
Со знаком
|
|
До точки
|
0x01+8
|
Без знака
|
После точки
|
0x02
|
Температура 1
|
C
|
Со знаком
|
1°C / -30~250°C
|
|
0x03
|
Обороты
|
RPM
|
Без знака
|
0~60000
|
|
0x04
|
Топливо
|
%
|
Без знака
|
0, 25, 50, 75, 100
|
|
0x05
|
Температура 2
|
C
|
Со знаком
|
1°C / -30~250°C
|
|
0x06
|
Напряжение
|
В
|
Без знака
|
0.01v / 0~4.2v
|
|
0x10
|
Высота
|
метр
|
Со знаком
|
0.01m / -500~9000m
|
До точки
|
0x21
|
Без знака
|
После точки
|
0x11
|
GPS cкорость
|
Knots
|
Без знака
|
|
До точки
|
0x11+8
|
Без знака
|
После точки
|
0x12
|
Долгота
|
|
dddmm.mmmm
|
|
До точки
|
0x12+8
|
После точки
|
0x1A+8
|
Восток/запад
|
|
|
|
|
0x13
|
Широта
|
|
ddmm.mmmm
|
|
До точки
|
0x13+8
|
После точки
|
0x1B+8
|
Север/юг
|
|
|
|
|
0x14
|
Курс
|
градусы
|
Без знака
|
0~359.99
|
До точки
|
0x14+8
|
После точки
|
0x15
|
Число/месяц
|
|
|
|
|
0x16
|
Год
|
|
|
|
|
0x17
|
Часы/минуты
|
|
|
|
|
0x18
|
секунды
|
|
|
|
|
0x24
|
Ускорение X
|
|
Со знаком
|
0.016g / -8g ~ +8g
|
|
0x25
|
Ускорение Y
|
|
Со знаком
|
0.016g / -8g ~ +8g
|
|
0x26
|
Ускорение Z
|
|
Со знаком
|
0.016g / -8g ~ +8g
|
|
0x3A
|
Напряжение (датчик тока)
|
В
|
Без знака
|
0.5v / 0~48.0v
|
До точки
|
0x3B
|
После точки
|
0x28
|
Ток
|
А
|
Без знака
|
0.1A / 0~100A
|
|
|