Trimax – кодирование и декодирование ИК-команд

Views: 2187


trimax_du_ik_catcatcat

Первое, что надо понять назначение кнопок клавиш пульта, а также, что за кодирование реализовано в ИК- пульте. Для назначения клавиш обратимся к описанию, а для взлома кодирования воспользуемся старым и добрым Saleae Logic.Для тех кто связан модернизацией и управлением ресиверов Trimax часто возникают вопросы по синтезу или декодированию команд инфракрасного пульта, а так-же создания устройств по управлению ресиверами по одно проводной шине. В этой статье приведен пример создания как приемника так и передатчика, а также управление TV-тюнером  на PIC-микроконтроллере.

sl300


Назначение кнопок пульта

Клавиша Основное назначение Код ИК последовательности
on_off Включение – Выключение 10000000101111110011101111000100
mute Режим MUTE 10000000101111110011100111000110
cif_01 Выбор номера канала непосредственным вводом 10000000101111110100100110110110
***
cif_09 10000000101111110010001111011100
tv-radio Переключение с приема телевидения на прием радиостанций 10000000101111111001101101100100
(-PR Возврат на предыдущий канал 10000000101111110100000110111110
menu Отображение меню управления на экране 10000000101111111010100101010110
exit Возврат в предыдущее меню или выход из меню управления 10000000101111111010001101011100
pr+ Переход до следующей программы или меню управления 10000000101111110100101110110100
pr- Переход до предыдущей программы или меню управления 10000000101111110100101110110100
v- Регулировка громкости уменьшение или переход по меню влево 10000000101111111001100101100110
v+ Регулировка громкости увеличение или переход по меню вправо 10000000101111111000001101111100
ok Вызов списка программ или активация выбранного пункта меню 10000000101111110111001110001100
epg Вызов функции программного гида 10000000101111110101101110100100
info Информация о выбранном канале 10000000101111110001000111101110
find Отображение окна поиска 10000000101111110110100110010110
txt Переход в режим теле текста 10000000101111110100001110111100
sub Управление субтитрами 10000000101111111100001100111100
lr Отображение окна ЗВУК 10000000101111110010000111011110
sv Перелистывать список вверх 10000000101111111011101101000100
sn Перелистывать список вниз 10000000101111110011000111001110
fav Отображение списка избранных групп 10000000101111110110101110010100
pn Перемотка назад 10000000101111111100000100111110
pv Перемотка в перед  10000000101111111110001100011100
nf Нет функций 10000000101111111010000001011111
pvs Пауза/воспроизведение 10000000101111110100000010111000
ov Остановить воспроизведение 10000000101111111100000000111111

Более подробно можно ознакомиться с функциями пульта по описанию на  модель TR-2012HD [wpdm_file id=310 template=”link-template-calltoaction3.php”]


Последовательности формируемые ИК-пультом.

pppl

Последовательность передачи команд управления классическая. Она команда за которой передаются комода авто повтора. Сама команда начинается со стандартной преамбулы, за которой следует 32 бита данных (4 байта данных). Заканчивается стробом.

pppl-01


Декодирование ИК-команд

Кодирование бит широтное (сканы кодов представлены с выхода ИК приемника). Параметры длительностей для формирования данных сведены в таблицу, синхронизация для декодирования берется от отрицательного фронта.

Для команды
Назначение бита Длительность
Преамбула 13.409 ms
Длительность бита 0 1.120 ms
Длительность бита 1 2.232 ms
Для авто повтора
Преамбула 11.174 ms

Частота модуляции несущей 38 кГц (но можно использовать и 36 если приемник другого типа).

Для декодирования можно использовать CCP модуль в режиме захвата. Настройка (для 16 серии PIc-контроллеров)

// настройка CCP4 в режиме захвата
    T1CON=0b00110001;	// настройка таймера T1CON
//	    |||||| |
//	    |||||| +-- TMR1ON таймер включить
//	    |||||+---- T1SYNC синхронизация отключена
//	    ||||+----- T1OSCEN генератор отключен
//	    ||++------ T1CKPS настройка предделителя 11 = 1:8 Prescale value
//	    ++-------- TMR1CS выбор тактовой частоты FOSC

    CCP4CON=0b00000100;	// вход RB0
//	          ++++-- CCPxM<3:0>: режим работы - Capture mode: every falling edge

Данные будут поступать на вход модуля CCP4, это RB0 в контроллерах типа PIC16F1936. Переменную для приема байт можно выбрать 8-16-32 бита. Если вы выберите unsigned long bait01;, то получите данные о полной команде, если меньше то соответственно только младшие байты. Для многих приложений достаточно 16 байт.

Сама функция декодирования происходит через прерывание от CCP модуля

    if(CCP4IF)// ИК приемник
    {
        CCP4IF=0; // сброс вектора прерывания.
        pwm_reg=TMR1L;
        pwm_reg += TMR1H << 8;
        TMR1L=0;
        TMR1H=0;

            if(pwm_reg>13000&&pwm_reg<14000)// передача синхроимпульса должна сопровождаться переполнением таймера
            {
                    chetchic=CLOBIT;//счетчик бит (3 байта 8*3=24)
            }
            else
            if (pwm_reg>11000&&pwm_reg<12000&&POV)// передача "бита автоповтора"
            { // POV - блокировка функции автоповтора если не было перед этим передачи команды
                    AUTO=1;
                    timerautopo=5;// инициализация таймера, блокировки автоповтора
            }
            else
            if (pwm_reg>2000&&pwm_reg<2500&&chetchic>0) // передача "1"
            {
                    bait01<<=1;
                    bait01 |= 1;
                    chetchic--;//подсчет принятых бит

                    if(!chetchic){PRIEM=1;POV=1;}// 32 установить флаг команда принята если переданы все 32 бита
            }
            else
            if (pwm_reg>1000&&pwm_reg<1200&&chetchic>0)// передача "0"
            {
                    bait01<<=1;
                    chetchic--;//подсчет принятых бит
                    if(!chetchic){PRIEM=1;POV=1;}// установить флаг команда принята если переданы все 32 бита
            }
    }

Как работает само декодирование, мы настраиваем прерывание по отрицательному фронту сигнала. После появления этого события, мы считываем значение таймера и сразу его обнуляем. На этом, все декодирование и закончено, по большому счету. Далее просто у нас есть 4 типа длительностей, это преамбула для передачи данных, преамбула для автоповтора, и длительность передачи нуля и единицы. Нам необходимо только сравнивать эти длительности и при определении, что приняли ноль или единицу записывать его в переменную, которая выступает буфером приема. После принятия 32 бит сформировать флаг – данные готовы.

Более подробно можно ознакомится скачав проект по декодированию кодов пульта Trimax. 


Коды IR- пульта для автомобильных магнитол. Длительность команды 32 бита.

Клавиша >Функция Код (десятичный) Примечание
ВКЛ/ВЫКЛ 501 43455
Квадрат 501 39885
В конец 501 60285
MODE Режим 501 80175
BAND Диапазон 501 88845
Стрелка вверх 501 90375
TITLE 501 66405
SUB-T 501 39375
Стрелка влево 501 52125
ENTER 501 84765
Стрелка вправо 501 96495
SETAP 501 65895
PBC 501 82215
Стрелка вниз 501 49575
ANGLE 501 41415
SLOW 501 78135
1 501 61815
2 501 94455
3 501 43655
4 501 56205
5 501 55695
6 501 69975
7 501 76095
8 501 76605
9 501 47535
0 501 88335
10+ 501 97005
GOTO 501 51615
APS 501 72525
ST 501 67935
VOL+ 501 99045
ZOOM 501 82725
LOC 501 78645
SEEK- 501 57735
SEL 501 48045
SEEK+ 501 72015
MUTE 501 62325
CLK 501 94965
VOL- 501 80685
AUDIO 501 43965

Эмуляция передатчика ИК-команд.

Передача это обратный процесс декодирования.

Для передачи необходимо также использовать модуль CCP в режиме ШИМ. Его назначение формирование несущей для ИК сигнала. В зависимости от используемого приемника необходимо выбирать 36 или 38 кГц. Хотя из практики приемники на 36 кГц нормально работают на умеренные расстояния и 38 кГц несущей. Но если необходимо уверенный прием или дальность то рекомендую использовать несущую которую использует преемник. Если корректно выбрано несущая, то при 25% наполненности несущей и согласовании приемника можно уверенно покрывать расстояния до 60 метров.

 

обновлено 2014-07-22


 Продолжение следует…


Это может быть интересно


  • Датчик контроля протечки воды ch-c0020Датчик контроля протечки воды ch-c0020
    Views: 1954 Как здорово летом под теплым дождем с тобою вдвоем оказаться. Как классно по лужам бежать босиком, с тобою играть и смеяться! Но совсем грустно оказаться под таким дождем, который течет с …
  • Простой цифровой регулятор мощностиПростой цифровой регулятор мощности
    Views: 6637 Простой регулятор мощности с цифровой индикацией. Этот проект создан как обучающий, для ознакомления с основами построения сетевых регуляторов мощности. Устройства подобного типа можно использовать для управления освещением, скоростью …
  • MPLAB® Harmony – или как это просто! Часть 2.MPLAB® Harmony – или как это просто! Часть 2.
    Views: 2684 Часть вторая – Первая программа на PIC32. Музыкальная тема к статье, слушаем: Для начала изучения PIC32 надо иметь или демоплату или самому её изготовить имея микроконтроллер. Начнем из …
  • Toyota Auto Fader – Модуль включения усилителяToyota Auto Fader – Модуль включения усилителя
    Views: 1942 Toyota Auto Fader – Модуль включения усилителя. Часто автолюбители прибегают к замене штатного головного устройства на универсальное мультимедийное, в котором значительно расширены функциональные возможности. Если возникает желание оставить …
  • MPLAB® Code ConfiguratorMPLAB® Code Configurator
    Views: 1768 MPLAB ® Code конфигуратор (MCC) является свободно распространяемым плагином, это графическая среда программирования, которая генерирует бесшовный, легкий для понимания кода на Cи, чтобы вставить его в свой проект.
  • DS18B20 – удаленный контроль температурыDS18B20 – удаленный контроль температуры
    Views: 3041 Контроль температуры с использованием датчиков температуры DS18B20 и платы ILLISSI-4B-09-primum Проект позволяет подключать к плате ILLISSI-4B-09-primum до 16 датчиков температуры DS18B20, удаленных более 300 метров,  и выводить информацию …
  • Часы + Календарь + Термометр + …Часы + Календарь + Термометр + …
    Views: 2705 Часы + Календарь + Термометр + Индикатор влажности + Секундомер + Дистанционное управление на ИК лучах (пульты на RC-5 протоколе) + Автоматическая регулировка яркости + Возможность вывода данных через USB, …
  • Проект с использованием MCC часть 14Проект с использованием MCC часть 14
    Views: 831 С выводом данных на дисплей мы справились (но могу сразу сказать библиотеку графики к этой статьи пришлось доработать, поэтому в этом проекте она обновлена). У нас на текущем …
  • Обновление ESP8266 c ESPFlashDownloadTool_v3.6.3Обновление ESP8266 c ESPFlashDownloadTool_v3.6.3
    Views: 3481 Технология обновления следующая: Загружаем программу со страницы espressif.com. Разархивируем. Где находятся файлы, для прошивки? Заходим в каталоги Подключаем по схеме в статье WiFi ESP8266 (замыкаем BT2, перемычка). Запускаем программу, …
  • JDY-62A Audio bluetooth moduleJDY-62A Audio bluetooth module
    Views: 1684 Простой модуль для простого аудио блютуса. Встроенные подсказки на английском языке. Модуль включён, режим муте – после подачи питания. Контроль разряда батареи предупреждение что батарея разряжена и необходима …



Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Продолжайте читать

НазадДалее