К сожалению, пульт от сего устройства является весьма хрупким, и часто теряемым. Кроме того, лично мне попался глючный пульт, который срабатывает через раз. Купив себе аппарат Samsung Galaxy S4, я тут же решил сделать дубликат пульта от своих колонок, и таким образом подстраховать себя от полной потери удалённого контроля над колонками. Я нашёл много разных приложений для управления различными видами аппаратуры, но как на зло, именного моего устройства в списках нигде не было.
Некоторые из приложений, такие как ZaZaRemote (https://play.google.com/store/apps/details?id=com.tiqiaa.remote&hl=en-us) я всё-таки сносить не стал, поскольку там я нашёл готовые пульты управления от очень редкой аппаратуры. Как оказалось, наиболее подходящей программой для создания собственного пульта оказалось приложение «Smart Remote for Samsung Galaxy S4». Однако, по непонятной причине это приложение исчезло из Google Play маркета, в связи с чем выкладываю линк на другой источник (http://4pda.ru/forum/index.php?showtopic=461470). Полистав список девайсов в этом приложении, я обнаружил шаблон контроллера от SOLO 7C, который ПОЧТИ подходил к моим SOLO 6C. Не работала лишь кнопка «reset». Это в принципе не критично, но всё же хотелось поиметь полноценный пульт. :) А самое главное: что делать, если подходящего пульта вообще нет в базе? На этот случай есть способ, который позволяет «слить» коды команд пульта, не имея инфракрасного ресивера в мобильном аппарате (как в случае с galaxy). И так, скачиваем программу WinLIRC (берём последний релиз вот тут http://sourceforge.net/projects/winlirc/files/winlirc/ )
А теперь, собираем очень простое устройство считывания IR сигналов. Для сборки нам понадобятся следующие компоненты:
Инфракрасный фото элемент типа «TSOP1736» 1 штук.
Обыкновенный диод 1 штук.
Штекер типа джек 3,5мм (желательно моно)
Провода. Проще всего разобрать витую пару, и заюзать её цветовое разделение в своих целях. :)
Собираем устройство по следующей схеме:
распайка фото элемента выглядит вот так:
Конец провода +5в засовываем в пятивольтовый пин свободного штекера блока питания нашего компьютера !!! туда, где КРАСНЫЙ провод !!! Не перепутайте с жёлтым. Один провод массы засовываем в соседний пин (где провод чёрного цвета).
Провод «ir out» бросаем на дальний конец аудио штекера. Второй провод массы, соответственно, на массу аудио штекера. Масса у него находится в «корне». Если перепутать полярность, ничего работать не будет.
Когда устройство собрано, проверяем его работу. При нажатии кнопки пульта, направленного на фото элемент, устройство пускает в аудио порт легко различимый для человеческого уха звук. Слегка писклявый… Короче если вы слышите просто какое то шипение и беспорядочные помехи – устройство попросту не работает.
Теперь открываем WinLIRC и настраиваем его на аудио плагин. Сам плагин настраивать не нужно.
Для облегчения распознавания сигналов, сразу же запихиваем в конфигурацию ЛИРКа шаблон протокола (для большинства устройств подходит протокол NEC)
Создаём в папке с лирком файл nec.cf и вбиваем в него следующее:
# # generic NEC config file # # source: CIrCC datasheet, exiting config files # # used by: Canon, Creative, Domland, Orion begin remote name NEC bits 16 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9000 4500 one 563 1687 zero 563 562 ptrail 563 pre_data_bits 16 # just a guess gap 108000 frequency 38000 duty_cycle 33 begin codes end codes end remote
Это простой шаблон, который помог мне с распознаванием сигналов пульта от SOLO 6C.
Выбираем этот шаблон в окне настойки лирка и нажимаем кнопку «create conffig». Должно появиться консольное окно, где следуя инструкции вы сможете записать каждую клавишу своего пульта в новый конфиг.
После того, как все кнопки будут добавлены, нажимаем «ок», и ищем новый файл, с именем, похожим на «nec.cf.conf», который должен появиться в папке программы winlirc. В принципе уже всё готово, но коды, записанные в этом файле не подходят к приложению на мобильном устройстве, так как там используется формат «pronto hex». Осталось сконвертировать конфиг в нужный нам формат, и для этого далее качаем программку lirc2xml вот отсюда http://www.harctoolbox.org/downloads/lirc2xml-0.1.2-windows.zip (если линк вдруг перестал пахать, ищем виндовую версию вот тут http://www.harctoolbox.org/lirc2xml.html). Распаковываем это в папку с WinLIRC , открываем консоль cmd и юзаем конвертер. Лично мне пришлось использовать абсолютные пути, иначе программа складывает свои данные непонятно где. Потому что это порт с линукса. ;)
У меня получилось вот так:
C:\Users\iBuben>F:\WinLIRC\lirc2xml.exe F:\WinLIRC\nec.cf.conf -o F:\nec.conf.xml cygwin warning: MS-DOS style path detected: F:\WinLIRC\nec.cf.conf Preferred POSIX equivalent is: /WinLIRC/nec.cf.conf CYGWIN environment variable option "nodosfilewarning" turns off this warning. Consult the user's guide for more details about POSIX paths: http://cygwin.com/cygwin-ug-net/using.html#using-pathnames XML export F:\nec.conf.xml successfully created.
Ну а теперь, открываем созданный файл текстовым редактором, и видим что то вроде такого:
<lircremotes creation-date="Sun Sep 15 18:13:54 2013" creator=",S-1-5-21-4136439841-2983906610-1672194129-1000" lircversion="0.9.0" lirc2xml_version="0.1.2" configfile="F:\WinLIRC\nec.cf.conf" decodeir_version="2.43"> <remote name="F:\WinLIRC\nec.cf.conf"> <lircdata type="SPACE_ENC" bits="16" flags="16400" eps="30" aeps="100" pthree="0" sthree="0" ptwo="0" stwo="0" pone="563" sone="1687" pzero="563" szero="562" plead="0" ptrail="563" pfoot="0" sfoot="0" prepeat="0" srepeat="0" pre_data_bits="16" pre_data="32895" post_data_bits="0" post_data="0" pre_p="0" pre_s="0" post_p="0" post_s="0" gap="108000" gap2="0" repeat_gap="0" toggle_bit="0" toggle_bit_mask="0" min_repeat="0" min_code_repeat="0" freq="38000" duty_cycle="33" toggle_mask="0" rc6_mask="0" baud="0" bits_in_byte="0" parity="0" stop_bits="0" ignore_mask="0"/> <code name="v+" codeno="0x0000000000008877"> <decoding protocol="NEC" device="1" subdevice="-1" obc="17" hex0="119" hex1="-1" hex2="-1" hex3="-1" misc="no repeat" error=""/> <ccf>0000 006d 0022 0000 0156 00ab 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 05ee</ccf> </code> <code name="v-" codeno="0x00000000000008F7"> <decoding protocol="NEC" device="1" subdevice="-1" obc="16" hex0="247" hex1="-1" hex2="-1" hex3="-1" misc="no repeat" error=""/> <ccf>0000 006d 0022 0000 0156 00ab 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 05ee</ccf> </code> <code name="t+" codeno="0x000000000000906F"> <decoding protocol="NEC" device="1" subdevice="-1" obc="9" hex0="111" hex1="-1" hex2="-1" hex3="-1" misc="no repeat" error=""/> <ccf>0000 006d 0022 0000 0156 00ab 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 05ee</ccf> </code> <code name="t-" codeno="0x000000000000B04F"> <decoding protocol="NEC" device="1" subdevice="-1" obc="13" hex0="79" hex1="-1" hex2="-1" hex3="-1" misc="no repeat" error=""/> <ccf>0000 006d 0022 0000 0156 00ab 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 05ee</ccf> </code> <code name="b+" codeno="0x00000000000050AF"> <decoding protocol="NEC" device="1" subdevice="-1" obc="10" hex0="175" hex1="-1" hex2="-1" hex3="-1" misc="no repeat" error=""/> <ccf>0000 006d 0022 0000 0156 00ab 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0040 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 05ee</ccf> </code> <code name="b-" codeno="0x000000000000708F"> <decoding protocol="NEC" device="1" subdevice="-1" obc="14" hex0="143" hex1="-1" hex2="-1" hex3="-1" misc="no repeat" error=""/> <ccf>0000 006d 0022 0000 0156 00ab 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 05ee</ccf> </code> <code name="reset" codeno="0x00000000000010EF"> <decoding protocol="NEC" device="1" subdevice="-1" obc="8" hex0="239" hex1="-1" hex2="-1" hex3="-1" misc="no repeat" error=""/> <ccf>0000 006d 0022 0000 0156 00ab 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 05ee</ccf> </code> <code name="input" codeno="0x00000000000020DF"> <decoding protocol="NEC" device="1" subdevice="-1" obc="4" hex0="223" hex1="-1" hex2="-1" hex3="-1" misc="no repeat" error=""/> <ccf>0000 006d 0022 0000 0156 00ab 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 05ee</ccf> </code> <code name="mute" codeno="0x00000000000040BF"> <decoding protocol="NEC" device="1" subdevice="-1" obc="2" hex0="191" hex1="-1" hex2="-1" hex3="-1" misc="no repeat" error=""/> <ccf>0000 006d 0022 0000 0156 00ab 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 05ee</ccf> </code> </remote> </lircremotes>
В параметре «ccf» как раз находится hex код каждой из записанных функций. И нет, они не одинаковые. Это только так кажется. ;)
Теперь открываем «Smart Remote for Samsung Galaxy S4», и добавляем наиболее подходящий вариант пульта из того что уже имеется. В моём случае это был пульт от SOLO 7C. Игнорируем нерабочие функции и соглашаемся оставить пульт как есть. Затем, в меню находим пункт редактирования добавленного пульта, и правим каждую клавишу, заменяя в ней hex коды теми, которые мы получили при помощи предыдущей операции.
Щёлкаем и наслаждаемся! Кстати, такой пульт гораздо дальнобойнее, чем стоковый пульт от Microlab! =)
UPD:
Ну а тем, кому лень всё это делать, предлагаем готовое приложение, пульт от Microlab SOLO 6C! Ссылка на маркет: https://play.google.com/store/apps/details?id=net.exunity.microlab.remote
UPD2:
А теперь и для Android 4.4
https://play.google.com/store/apps/details?id=net.exunity.microlab.remote4