Кодировка ИК пульта сплит-системы

Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Добрый день!
Помогите разобраться с кодами ИК пульта от сплит-системы Samsung. Хочу дальше ей управлять по ИК со своего ус-ва. Взял банально ардуину + приемник типа TSOP1736. У ардуины в библиотеках есть IRRemote, где есть пример разбора приходящих кодов. Поковырял его чуть-чуть, чтобы на другую ногу/прерывание перекинуть (мне подключиться так удобнее было), да размер буффера увеличил (по умолчанию не вмещалось, у меня путь чуть длиннее пакет формирует). Ну и по-записывал разные команды/режимы с пульта, каждый по 3 раза для исключения ошибок считывания. Результат тут: http://pastebin.com/kisrK5xw
Пример одного пакета дам сразу тут:

Код: Выделить всё

Encoding  : SANYO
Code      : FFFFFFFF (0 bits)
Timing[115]:
     + 550, - 400     + 600, -1400     + 600, - 400     + 550, - 450
     + 550, - 450     + 550, - 400     + 600, - 400     + 600, - 400
     + 600, - 400     + 600, -1400     + 550, - 400     + 600, - 400
     + 600, -1400     + 550, - 450     + 550, - 450     + 550, -1400
     + 600, -1400     + 550, -1400     + 600, -1400     + 550, -1400
     + 600, - 400     + 600, - 400     + 600, - 400     + 550, - 450
     + 550, - 450     + 550, - 450     + 550, - 400     + 600, - 400
     + 600, - 400     + 600, - 400     + 600, - 400     + 550, - 450
     + 550, - 450     + 550, - 400     + 600, - 400     + 600, - 400
     + 600, - 400     + 600, - 400     + 550, - 450     + 550, - 450
     + 550, - 400     + 600, - 400     + 600, - 400     + 600, - 400
     + 600, - 400     + 550, - 450     + 550, - 450     + 550, - 450
     + 550, - 400     + 600, - 400     + 600, - 400     + 600, - 400
     + 550, -1450     + 550, -1400     + 600, -1400     + 550, -1400
     + 600, -1900     +3050
unsigned int  rawData[115] = {550,400, 600,1400, 600,400, 550,450, 550,450, 550,400, 600,400, 600,400, 600,400, 600,1400, 550,400, 600,400, 600,1400, 550,450, 550,450, 550,1400, 600,1400, 550,1400, 600,1400, 550,1400, 600,400, 600,400, 600,400, 550,450, 550,450, 550,450, 550,400, 600,400, 600,400, 600,400, 600,400, 550,450, 550,450, 550,400, 600,400, 600,400, 600,400, 600,400, 550,450, 550,450, 550,400, 600,400, 600,400, 600,400, 600,400, 550,450, 550,450, 550,450, 550,400, 600,400, 600,400, 600,400, 550,1450, 550,1400, 600,1400, 550,1400, 600,1900, 3050};  // SANYO FFFFFFFF
Понятное дело цифры не точные, их надо нормализовать еще. Но да и так видно, что похоже всегда + пульс приходит всегда по ~600, а затем "-" пульс формирует 0 или 1 в зависимости от длины ~ -400 или -1400. Что из этого 0, а что 1 еще бы понять. Да и с концовкой не понятно. Почему в конце "+ 600, -1900 +3050" пульс со знаком минус от -1800 до - 2800 скачет? Это просто широкий диапазон или есть какой-то смысл в его длине? И ~+3000 в конце это видимо признак конца пакета?
Реклама
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

тут ссылка на все коды и исходники... http://radioparty.ru/index.php/datashee ... ?showall=1

Уже всё подробно разобрали... :tea:
Реклама
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

roman.com, там ни слова про протокол Sanyo вообще. Тем более у меня как я понимаю какая-то его модификация, т.к. размер пакета нестандартный, а значит и другие параметры могут отличаться. Ссылка к сожалению никак не помогает.
Вот тут как бы речь идет про аналогичную вещь: https://www.analysir.com/joomla/IRforum ... ?f=5&t=527
Но решение там тупо считывать и повторять последовательность RAW кодов, храня их на флэшке МК. Я же хочу "разобрать" протокол и формировать значения нормально, а не тупо хранить несколько десятков копий всего массива данных, где каждый раз пару бит меняется только.
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

NStorm писал(а):Я же хочу "разобрать" протокол и формировать значения нормально...
Ну так а в чём проблема ? Записали и разобрали код любого пульта...

Я тут как то тоже решил помотреть коды всех пультов в доме)) У всех пультов принцип работы одинаоквый - передаётся адрес, и команда. У некоторых с повтором адреса и команды... у некоторых с инверсией адреса и команды...

Подключил TSOP и простейший индикатор к ATmega8. Нажимаю кнопки... на индикаторе смотрю коды всех кнопок...

Вот пример что я делал:

Отличия всех моих ИК пультов только в длительности преамбулы...

1- Значит мой пульт LG от кондиционера использует протокол NEC:
(показания индикатора - 00000000~11111111 01101000~10010111), т.е. (адрес, ~ иверсия адреса, команда, ~ инверсия команды).
Адрес для всех кнопок - одинаковый. Меняются только последнии биты:
-00000001 кнопка "1"
-00000010 кнопка "2"
-00000011 кнопка "3"
...
...
...
Всё ясно.)) При передачи/приёма кнопок пишу/читаю номер кнопки... Всё, с кнопками разобрались))

Дальше считал все остальные кнопки... У них другой адрес.

Всё. С пультом LG от кондиционера разобрался за пол часа)))
--------------------------------------------------------------------------------

A пульт SAMSUNG от телевизора использует протокол SAMSUNG:

(показания индикатора - 11100000=11100000 01001000~10110111), т.е. (адрес, адреса, команда, ~ инверсия команды).
Адрес для всех кнопок - одинаковый.
Только SAMSUNG у меня в качестве повтора использует повтор всего пакета...

Всё. С пультом SAMSUNG от телевизора разобрался тоже за пол часа)))
--------------------------------------------------------------------------------

Ещё... для интереса записал на компьютер сигнал от радиопультов. Вот например радиоуправляемая игрушка и автосигнализация... 433 Мгц ...
7_1.jpg
(187.14 КБ) 365 скачиваний
Тоже самое за пол часа разобрались со всеми кнопками)))

Не знаю... в чем проблема?
:tea:
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

У моего кондиционера, как и большинства нет "кнопки". Он сразу передает все настройки в одном пакете. С этим и хочу разобраться. Что именно непонятно я написал прям в своем первом посте. Я не могу перевести в код это пока, у меня записаны длительности импульсуов. А радио мышка тут вообще не при чем.
Реклама
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

Ну можно записать на компьютер весь код настройки кондиционера... целиком)) Только разобраться будет чуть дольше...

В кондиционере много функций? )) несколько режимов... температура.. что там ещё есть?)) Не знаю.. я бы записал на комп несколько режимов и сравнил бы их... думаю я бы быстро бы нашёл где там что... )) А может чуть повозиться... ))

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

А причём тут радио мышка ... я не понял... Код радиомышки я ещё не смотрел))
Реклама
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

NStorm писал(а):видно, что похоже всегда + пульс приходит всегда по ~600, а затем "-" пульс формирует 0 или 1 в зависимости от длины ~ -400 или -1400. Что из этого 0, а что 1 еще бы понять.
Это обычный манчестер.

+600, -400 = 10

+600, -1400 = 100


550,400, 600,1400, 600,400, 550,450, 550,450, 550,400, 600,400, 600,400, 600,400, 600,1400,... = 1010010101010101010100...

http://radioparty.ru/index.php/datashee ... ?showall=1
1.jpg
(36.47 КБ) 592 скачивания
Только импульсы по идеи должны быть все одинаковой длительности.
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

roman.com писал(а): Это обычный манчестер.
...
Только импульсы по идеи должны быть все одинаковой длительности.
Не похоже, если я правильно понял. В википедии написано, что кодировка там переходами с уровня на уровень кодируется бит. А значит длительность может быть некое T или 2T. А у меня все импульсы с + лишь Т по длительности, не бывают длительностью 2Т, как тут: https://upload.wikimedia.org/wikipedia/ ... ntions.svg
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

roman.com писал(а):Ну можно записать на компьютер весь код настройки кондиционера... целиком)) Только разобраться будет чуть дольше...

В кондиционере много функций? )) несколько режимов... температура.. что там ещё есть?)) Не знаю.. я бы записал на комп несколько режимов и сравнил бы их... думаю я бы быстро бы нашёл где там что... )) А может чуть повозиться... ))
Так я их и записал, в 1ом посте ссылка на pastebin, там полный дамп с переключением всех возможных режимов по одному. Я пока не разобрался с ними, поэтому и вопросы задаю тут.
А причём тут радио мышка ... я не понял... Код радиомышки я ещё не смотрел))
Радио игрушку имел в виду, почему-то мышка мне почудилась.

Мне тут с analysir.com подсказали, что либа IRRemote под ардуину может неправильно работать с пакетной передачей от кондеров и отображать не весь пакет данных, а обрезать его. Посоветовали попробовать их прошивку для дампа кодов. Собираюсь опробовать чуть позже.
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

NStorm писал(а):длительность может быть некое T или 2T. А у меня все импульсы с + лишь Т по длительности, не бывают длительностью 2Т, как тут: https://upload.wikimedia.org/wikipedia/ ... ntions.svg
+ 550, - 400 + 600, -1400 + 600, - 400 + 550, - 450

Это что? Всё импульсы должны быть или Т или 2Т .... это похоже на ошибку измерения. Ну не может пульт выдавать все импульсы разной длительности. Я таких пультов ещё не встречал)))

По идеи должно быть так:

+ 500, - 500 + 500, -1000 + 500, - 500 + 500, - 500 ...

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

Вот же ссылка http://radioparty.ru/index.php/datashee ... ?showall=1

Там же подробно нарисовали... что логический "1" и логический "0" могут кодироваться разными способами... манчестером или длительность (ШИМ), но всегда длительность импульсов постоянная.

Например Протокол SONY:
+1200 - 600 = 1
+600 - 600 = 0

и т.д....

+ 550, - 400 + 600, -1400 + 600, - 400 + 550, - 450 - так быть не может.


+ 600, - 400 + 600, -1400 + 600, - 400 + 600, - 400 - так может быть.
1.jpg
(91.8 КБ) 561 скачивание
Значит у вас так:
+ 550, - 400 + 600, -1400 + 600, - 400 + 550, - 450 = 0100
+ 550, - 450 + 550, - 400 + 600, - 400 + 600, - 400 = 0000
+ 600, - 400 + 600, -1400 + 550, - 400 + 600, - 400 = 0100
+ 600, -1400 + 550, - 450 + 550, - 450 + 550, -1400 = 1001
...

Вообщем ясно))
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Ну понятное дело, что есть погрешность. Я же писал - надо нормализовать просто. Т.е. округлить все значения до +550, -400 и -1400. И да, получается он не все T и 2Т. Поэтому я и говорю, что кодировка другая. Пульсы все примерно одинаковые в пределах +500-+600. А "пробелы" либо -400, либо -1400 - и я думаю именно длинной пробела в данном случае 0 или 1 кодируется.
Если без библиотеки IRRemote, просто подвесить на ногу прерывание и по нему без обработки считывать, вот что получается:

Код: Выделить всё

3088, -8912, 580, -448, 556, -1420, 576, -448, 556, -448, 556, -448, 552, -448, 556, -448, 556, -448, 556, -444, 556, -1420, 580, -448, 552, -448, 556, -1420, 580, -448, 552, -448, 556, -1420, 580, -1420, 576, -1420, 580, -1420, 576, -1420, 580, -448, 552, -448, 556, -448, 556, -448, 552, -448, 556, -448, 556, -448, 556, -448, 556, -444, 556, -448, 556, -448, 556, -448, 552, -448, 556, -448, 556, -448, 556, -448, 556, -444, 580, -424, 580, -424, 580, -424, 580, -420, 584, -420, 580, -424, 580, -420, 584, -420, 580, -424, 580, -424, 580, -420, 584, -420, 580, -424, 580, -424, 580, -420, 584, -1392, 604, -1392, 608, -1392, 604, -1392, 608, -1896, 3080, -8888, 604, -1396, 604, -420, 584, -420, 580, -424, 580, -420, 584, -420, 584, -420, 580, -424, 580, -420, 584, -1392, 604, -424, 580, -420, 584, -1396, 600, -424, 580, -1396, 604, -1392, 604, -420, 584, -1392, 604, -1392, 608, -1392, 604, -1392, 604, -1396, 604, -1396, 600, -1396, 604, -1392, 604, -424, 580, -424, 580, -424, 584, -1388, 604, -1392, 608, -1392, 604, -424, 580, -420, 584, -420, 580, -424, 580, -420, 584, -420, 584, -420, 580, -424, 580, -420, 584, -1392, 604, -1420, 580, -420, 584, -1416, 580, -1420, 580, -420, 580, -424, 580, -420, 584, -420, 584, -420, 580, -424, 580, -420, 584, -1416, 580, -1420, 580, -1420, 576, -1420, 580 
Явно IRRemote не весь пакет показывает просто. А вот эта кодировка с AnalysIR сказали "Vestel AC".

EDIT: Говорят приемник-то у меня на 36 кГц, а пульт на 38 кГц несущие. Вот и "пляшут" цифры так прилично. Но не беда, всё-равно прекрасно видно что и где и можно нормализовать (округлить).
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

roman.com писал(а): Значит у вас так:
+ 550, - 400 + 600, -1400 + 600, - 400 + 550, - 450 = 0100
+ 550, - 450 + 550, - 400 + 600, - 400 + 600, - 400 = 0000
+ 600, - 400 + 600, -1400 + 550, - 400 + 600, - 400 = 0100
+ 600, -1400 + 550, - 450 + 550, - 450 + 550, -1400 = 1001
...

Вообщем ясно))
Ну я про это, про необходимость нормализовать и про то, что длина паузы 0 или 1 задает еще в 1ом посте сразу и высказался.
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

NStorm писал(а):Говорят приемник-то у меня на 36 кГц, а пульт на 38 кГц несущие. Вот и "пляшут" цифры так прилично. Но не беда, всё-равно прекрасно видно что и где и можно нормализовать (округлить).
каких только глупостей не наслушаешься в интернете)))

Киким образом переменные значения длительности импульсов могут зависить от частоты приёмника ???

+ 550, - 400 + 600, -1400 + 600, - 400 + 550, - 450... ???

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

+ 600, - 400 + 600, -1400 + 600, - 400 + 600, - 400

Частота приёмника 36 кГц, вместо 38 кГц может влиять только на максимальную дальность связи.

Если в массиве получаем разную длительность импульсов, то это значит так фигово работает обработчик прерываний. Я без понятия кто писал эти библиотеки... Я обычно не пользуюсь всякими библиотеками ... Насмотрелся в протеусе как они работают коряво...))

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

И что имеем...

+3088, -8912, - это преамбула 1...

580, -448, 556, -1420, 576, -448, 556, -448, 556, -448, 552, -448, 556, -448, 556, -448,
0100 0000

556, -444, 556, -1420, 580, -448, 552, -448, 556, -1420, 580, -448, 552, -448, 556, -1420,
0100 1000

580, -1420, 576, -1420, 580, -1420, 576, -1420, 580, -448, 552, -448, 556, -448, 556, -448,
1111 0000

552, -448, 556, -448, 556, -448, 556, -448, 556, -444, 556, -448, 556, -448, 556, -448,
0000 0001

552, -448, 556, -448, 556, -448, 556, -448, 556, -444, 580, -424, 580, -424, 580, -424,
0000 0000

580, -420, 584, -420, 580, -424, 580, -420, 584, -420, 580, -424, 580, -424, 580, -420,
0000 0000

584, -420, 580, -424, 580, -424, 580, -420, 584, -1392, 604, -1392, 608, -1392, 604, -1392,
0000 1110

608, -1896
1
это что? стоп бит чтоли..)))


3080, -8888, - это преамбула 2... второй пакет пошёл...
------------------------------------------------------
итого... Есть закономерность? ))

0100 0000 0100 1000 1111 0000 0000 0001 0000 0000 0000 0000 0000 1110 1

Мдя... )))
Ответить

Вернуться в «Практика»