Наверх

Универсальные программируемые пульты SONY RM-P301, RM-P302 и RM-P303

1 февраля 2024 г.

И года не прошло, как я закончил-таки изучать возможности купленных в осенью 2023-го года универсальных пультов SONY. И могу представить их небольшой обзор, возможно кому-то это будет полезно/интересно.

Я так понял, что отдельно такие пульты не продавались. Они шли в комплекте с усилителями или ресиверами.

SONY STR-D2020 + RM-P301.

SONY TA-AV501 + RM-P302.

SONY GX60ES + RM-P303

Насколько хорошие это устройства мы оставим за скобками. Нас интересует только функционал пультов и тут есть что интересного рассказать. Начну с того, что это не единственная серия таких пультов. Их много от разных ресиверов и усилителей. Вот список других моделей, что я смог найти для примера: RM-P311; RM-P312; RM-P322; RM-P332; RM-P550; RM-P750; RM-P950; RM-P1000; RM-P2000…

Похожих пультов можно найти еще больше, но у них уже кардинально другая раскладка, а значит другая плата, и, возможно, другой контроллер с другими особенностями и ограничениями. (не изучал)

Несмотря на такое разнообразие мне понравились только пульты RM-P301, RM-P302 и RM-P303.

Функционал у всех этих пультов примерно одинаковый. Основные отличия – это раскладка заводских команд. Перепрограммировать можно либо все, либо почти все кнопки. Основным ограничением тут выступает объем памяти. У всех 300-х моделей одинаковые «куриные» мозги в которые можно упихнуть 50-60 команд. У пульта RM-P2000 памяти побольше и инструкция говорит, что туда можно упихать до 90 команд (возможно RM-P1000 тоже имеет более расширенную память, но в инструкции к нему не сказано, сколько команд можно в него записать). Это может показаться даже много, но имеются ввиду команды стандарта Sony12. Команды пультов других производителей, как правило, требуют больше места в памяти этого пульта. Например, RM-P302 в состоянии запомнить либо 57 команд Sony12, либо 26 команд NEC1, либо 19 команд Panasonic. Ситуация уже не такая радужная, но не будем отчаиваться.

Для понимания, почему мне больше всего понравились пульты RM-Р30x нужно описать для чего я собирюсь их использовать.

Есть у меня 3 кассетные деки от SONY. И глядя на цены оригинальных пультов от этих кассетных дек (как DAT, так и обычных) нетрудно понять, что за стоимость пульта иной раз можно купить деку целиком. Я еще могу понять, что пульт от DAT деки, где много кнопок, еще хоть как-то может оправдать стоимость юаней в 200-300 за функционал и аутентичный внешний вид, но, когда их продают дороже 500 – я оправдания не нахожу. И уж подавно не нахожу никакого оправдания ценам за пульты от обычных кассетных дек, где всего 14 кнопок (без учета кнопок для управления ПКД) и ценник от 500 юаней если повезет. Причем оба этих пульта не имеют каких-то дисплеев, особенных кнопок или необычных органов управления, как на пультах от видеомагнитофонов. Нет – это обычные пульты с кнопками!

Оригинальные пульты для моих дек выглядят вот так.

В итоге:

Вот мне и пришла в голову идея, а почему бы не попробовать взять один из программируемых пультов SONY и не сделать из него пульт для управления моими кассетными деками. Внешний вид этих пультов довольно симпатичный, да и кнопок на нем достаточно. Теперь, держа это все в голове наконец-то можно приступить к обзору.


Обзор

Пульты RM-P30x хороши тем, что их можно использовать даже без перепрограммирования. Помимо своего прямого назначения по управлению усилителем-ресивером (ID 12, 16), они сразу могут управлять:

Само собой, все это оборудование должно быть бренда SONY. Да, управление самое базовое, но все же лучше, чем ничего. Возможно кому-то уже и такого функционала будет достаточно. Учитывая на порядок более низкую цену, чем у оригинальных пультов – уже не плохо. Но я решил, что хочу больше. Пульты RM-P30x – одни из немногих пультов (не только из списка выше), которые изначально делались для управления в том числе и DAT декой. И мой выбор был обусловлен не только более низкой ценой, но и тем, что частично нужный мне функционал у пульта уже есть. На момент покупки я не знал, насколько удачным будет эксперимент, но как минимум пульт не будет полностью бесполезным в случае провала. В итоге я купил два пульта: RM-P301 и RM-P302. После нескольких попыток правильно понять, что производитель написал в инструкции, я приступил к экспериментам.

Пользоваться пультом предполагается следующим образом. Есть две раскладки кнопок. Стандартная, которую разработала для данного пульта сама Sony, и пользовательская. Пока мы ничему пульт не обучили, обе раскладки идентичные. На пользовательской раскладке кнопки можно перепрограммировать. Раскладки можно переключать между собой, т.е. заводские команды пульта всегда останутся доступны. Обучается пульт довольно просто и проблем обычно не возникает. Если пульт неправильно запомнил команду, ее можно переписать, но только, до тех пор, пока у пульта не кончится память. Как только память у пульта заканчивается то у нас 2 варианта, либо пользоваться как получилось, либо все сбросить и начать сначала. Выборочно стереть команды с кнопок для того, чтобы освободить память – нельзя. Процесс обучения следующий: переводим пульт в режим learn; зажимаем на программируемом пульте кнопку, которую хотим запрограммировать; как только зажигается красный индикатор, зажимаем на другом пульте ту кнопку, команду которой хотим записать и держим (обе кнопки) до тех пор, пока красный индикатор не погаснет.

Что я выяснил помимо очевидных вещей, описанных в инструкции:

Сканы команд
Key Device ID Command RAW-Data RM-P301 RM-P302
POWER SECTION
SYSTEM OFF sequence
16470x82F
1470x0AF
2470x12F
7470x3AF
11470x5AF
6470x32F
LDP6210x315
VTRTAPE/DAT/VTR SECTION
TV1210x095
AUDIO16210x815
TV SECTION
TV/VIDEO1370x0A5
VOL+1180x092
VOL-1190x093
CH+1160x090
CH-1170x091
1100x080
2110x081
3120x082
4130x083
5140x084
6150x085
7160x086
8170x087
9180x088
0190x089
ENTER1110x08B
AMPLIFIER FUNCTION SECTION
CD16370x825
TUNER16330x821
PHONO16320x820
TAPE16350x823
DAT16700x846
DIGITAL16680x844
VIDEO116340x822
VIDEO216300x81E
VIDEO316660x842
VIDEO416670x843
PHONO SECTION
START16400x828
STOP16410x829
TUNER SECTION
INDEX SELECT13820x6D2
+13800x6D0
-13810x6D1
SHIFT13510x6B3
PRESET+13160x690
PRESET-13170x691
TUNER SECTION
S. ON/OFF12630x63F
S. MODE12700x646
S. T.TONE18740x94A
EQ. ON/OFF18440x92C
MAIN121180x676
SUB121160x674
EQ121240x67C
MODE121190x677
C.C. UP121200x678
C.C. DOWN121210x679
C.C. LEFT121220x67A
C.C. RIGHT121230x67B
S.FIELD MODE18540x936
LINK13870x6D7
USER/PRESET181260x97E
DOLBY12570x639
HALL12580x63A
SIMULATED12590x63B
OFF12560x638
DELAY12680x644
CENTER_LEVEL+18840x954
CENTER_LEVEL-18850x955
REAR_LEVEL+12660x642
REAR_LEVEL-12670x643
DBFB12490x631
MUTING16200x814
MASTER_VOL+16180x812
MASTER_VOL-16190x813
CDP/LDP SECTION (2 SWITCHABLE SECTIONS)
CDP
CONTINUE17290x89D
SHUFFLE17530x8B5
PGM17310x89F
D.SKIP17620x8BE
PLAY17500x8B2
PREV17480x8B0
NEXT17490x8B1
STOP17560x8B8
REW17580x8BA
FF17590x8BB
LDP
CONTINUEEMPTY
SHUFFLEEMPTY
PGMEMPTY
D.SKIPEMPTY
PLAY6260x31A
PREV6530x335
NEXT6520x334
STOP6240x318
REW6270x31B
FF6280x31C
TAPE/DAT/VTR SECTION (6 SWITCHABLE SECTIONS)
DECK A
ANT/TV/VTREMPTY
CH+EMPTY
CH-EMPTY
REW16510x833
FF16520x834
STOP16560x838
PLAY_REV16550x837
PLAY16500x832
PAUSE16570x839
REC_REV16580x83A
REC16530x835
VTR_POWEREMPTY
DECK B
ANT/TV/VTREMPTY
CH+EMPTY
CH-EMPTY
REW14270x71B
FF14280x71C
STOP14240x718
PLAY_REV14320x720
PLAY14260x71A
PAUSE14250x719
REC_REV14330x721
REC14290x71D
VTR_POWEREMPTY
DAT
ANT/TV/VTREMPTY
CH+EMPTY
CH-EMPTY
REW28590xE3B
FF28600xE3C
STOP28560xE38
PLAY_REVEMPTY
PLAY28580xE3A
PAUSE28570xE39
REC_REVEMPTY
REC28620xE3E
VTR_POWEREMPTY
VTR 1
ANT/TV/VTR2420x12A
CH+2160x110
CH-2170x111
REW2270x11B
FF2280x11C
STOP2240x118
PLAY_REVEMPTY
PLAY2260x11A
PAUSE2250x119
REC_REVEMPTY
REC2290x11D
VTR_POWER2210x115
VTR 2
ANT/TV/VTR7420x3AA
CH+7160x390
CH-7170x391
REW7270x39B
FF7280x39C
STOP7240x398
PLAY_REVEMPTY
PLAY7260x39A
PAUSE7250x399
REC_REVEMPTY
REC7290x39D
VTR_POWER7210x395
VTR 3
ANT/TV/VTR11420x5AA
CH+11160x590
CH-11170x591
REW11270x59B
FF11280x59C
STOP11240x598
PLAY_REVEMPTY
PLAY11260x59A
PAUSE11250x599
REC_REVEMPTY
REC11290x59D
VTR_POWER11210x595


Обучаем пульт

Как уже было ранее сказано, памяти в этом пульте всего на 57 команд Sony12. И даже если у нас будет использоваться исключительно старая техника от Sony, очевидно, что ни 150, ни 137 команд переназначить мы не сможем. Но нам этого и не нужно, ведь часть необходимых команд в пульте уже есть. Нужно только подумать и грамотно выбрать те кнопки и те команды, которые нужно перезаписать. Т.ч. для начала давайте изучим те два пульта, которые я не хочу покупать.

Поскольку позаимствовать мне эти пульты не у кого, я решил найти команды этих пультов в интернете. Все что мне нужно, я нашел на трех сайтах.

Начнем с пульта от обычной кассетной деки. Качаем с LIRC единственную подходящую конфигурацию пульта – RM-J701. Исправляем ошибки, сравниваем с SonyRCC и конвертируем в более-менее читабельный вид. Тут всего 20 кнопок.

Key Device ID Command
OPEN/CLOSE1422
DISPLAY1475
RESET1415
MEMORY1414
MONITOR1423
PREV1448
NEXT1449
RECORD1430
REWIND1427
FORWARD1428
REC_MUTE1431
STOP1424
PLAY1426
PAUSE1425
CD_PAUSE1757
CD_PREV1748
CD_NEXT1749
CD_STOPsequence
CD_STARTsequence
CD_STANDBY1750
Protocol: Sony12

Из этого списка можно смело убирать последние 6 команд для управления ПКД. Во-первых, мне оно не актуально, т.к. у меня нету ПКД от SONY. Во-вторых, даже если он появится, то половина из этих команд на универсальном пульте уже и так есть. Зеленым в таблице отмечены команды, которые уже есть в универсальном пульте, красным – которые мне не нужны, желтым – которые нужны. Итого – из 20-ти команд мне нужно только 8.

Так же в SonyRCC можно найти команды, которые я на пультах не встречал, но они работают с моими деками. Самой интересной мне показалась команда 35 Rewind and Play.

Key Device ID Command
REW&PLAY 14 35
Protocol: Sony12

Следующий пульт от DAT деки. Тут конфигураций на LIRC доступно побольше. Как минимум есть пульты RM-D2100, RM-D55A и RM-D57A. В теории мне должен подойти любой, но мне захотелось их сравнить. Расшифровав все странные названия, которые придумали по пиктограммам пользователи, загрузившие конфиги с командами на сайт, получилась следующая табличка.

RM-D2100 RM-D55A RM-D57A
Key Device ID Command Device ID Command Device ID Command
OPEN/CLOSE 2832 2832 2832
DISPLAY_MODE 2875 2875 2875
START_ID_AUTO 2880 2880 2880
START_ID_WRITE 2881 2881 2881
START_ID_RENUMBER 2883 2883 2883
START_ID_ERASE 2882 2882 2882
SKIP_ID_WRITE 2884 2884 2884
SKIP_ID_ERASE 2885 2885 2885
END_ID_WRITE 2888 2888 2888
END_ID_ERASE 2889 2889 2889
KEY_1 280 280 280
KEY_2 281 281 281
KEY_3 282 282 282
KEY_4 283 283 283
KEY_5 284 284 284
KEY_6 285 285 285
KEY_7 286 286 286
KEY_8 287 287 287
KEY_9 288 288 288
KEY_0 2820 2820 2820
CLEAR 2830 2830 2830
MUSIC_SCAN 28108 28108 28108
RMS_CHECK 2829 2829 2829
RMS_ENTER 2827 2827 2827
REPEAT_1/ALL 2854 2854 2854
REPEAT_A/B no button 2855 no button
TIME_SEARCH 28107 no button no button
MARGIN_RESET 2878 2878 2878
SKIP_PLAY 2891 2891 2891
DATE_RECORDED 2842 no button 2842
DATE_PRESENT 2841 no button 2841
COUNTER_MODE 2833 2833 2833
COUNTER_RESET 2834 2834 2834
COUNTER_MEMORY 2835 no button no button
RECORD 2861 2861 2861
REC_MUTE 2863 2863 2863
FADER 2895 2895 2895
PREV_ID 28104 28104 28104
NEXT_ID 28105 28105 28105
STOP 2856 2856 2856
PLAY 2858 2858 2858
PAUSE 2857 2857 2857
REWIND 2859 2859 2859
FORWARD 2860 2860 2860
CD_PAUSE 1757 1757 1757
CD_PREV 1748 1748 1748
CD_NEXT 1749 1749 1749
CD_STOP sequence sequence sequence
CD_START sequence sequence sequence
CD_STANDBY 1750 1750 1750
Protocol: Sony12

И действительно, те кнопки, которые имеют схожие названия или пиктограммы – совпадают. Но вот количество кнопок на пультах разное. Результат предсказуемый, на команды тех трех кнопок, которые отсутствуют на оригинальном пульте для моей деки – дека никак не реагирует.

Я провел небольшое дополнительное исследование всех пультов, которые смог найти для DAT дек от SONY и сравнил полученные результаты с SonyRCC и boehmel. Удалось найти несколько интересных команд, которые могут отсутствовать на передних панелях дек и редко встречаются на пультах, но работают с моей декой.

Key Device ID Command
DIM_HIGH28110
DIM_MID28111
DIM_LOW28112
FREQ_MAP28113
ID628115
SERVICE_MODE2886
Protocol: Sony12
ID6 Displays the copy information of the tape currently inserted.
00 (copying permitted) ; 10 (copying prohibited) ; 11 (one generation copy only).

Таблицы раскрашены аналогично предыдущим. Итого, как и с прошлым пультом я отказался от ПКД команд, выбрал 20 команд с пульта + команду service mode и ID6, и так же отказался от 14-ти команд (11 из них – это работа с ID метками, 2-е команды RMS и команда Music scan). (на самом деле RMS и Music scan мне хотелось добавить, но пришлось идти на компромисс)

На данном этапе в пульт надо записать 31 команду. Тут возникнет закономерный вопрос, а почему я отказался от такого большого количества DAT команд? Ведь кнопок на пульте еще много, да и памяти с запасом. На это есть две причины. Первая – я использую DAT деку в основном только для прослушивания и поскольку весь необходимый функционал для записи есть на самой деке, то дублировать его на пульт я для себя не вижу смысла. Вторая причина – я хочу, чтобы этот пульт полноценно управлял еще и моим видиком.

И тут дело не в том, что у меня нет пульта для видика. Он есть, причем оригинальный, комплектный. Но SONY была бы не SONY если бы не придумала довольно интересное решение. На оригинальном пульте нет кнопок трекинга. Включить ручной трекинг можно только на панели видика, а вот переключить обратно на автоматический нельзя – ну это если верить инструкции. Там прям так и написано, что если вы хотите снова активировать авто трекинг, то извлеките кассету и вставьте ее снова… ага… удобно блин. Но я решил проверить, а вдруг… и действительно, с пульта от более старого видика Sony, команды трекинга без проблем работают, и команда на переключение авто трекинга тоже. В общем решение странное как не посмотри, но допустим. Можно было бы просто пользоваться пультом от старого видика, но, на нем не хватает других кнопок, т.к. старый видик был не Hi-Fi. Следовательно, отсутствует кнопка выбора звуковой дорожки и кнопка даббинга линейной дорожки. И поскольку основной функционал по управлению видиком у универсального пульта уже есть, я решил добавить еще 26 команд, чтобы можно было управлять видиком практически полноценно. Да, JOG на универсальный пульт я установить не смогу, но да я им не то, чтобы часто пользуюсь. В общем список команд для видика получился вот такой.

Key Device ID Command
EJECT1122
REWIND1127
FORWARD1128
SEARCH FF1141
SEARCH REW1140
STOP1124
PLAY1126
PAUSE1125
AUDIO DUB11104
RECORD1129
INPUT SELECT1179
AUTO TRACKING1139
TRACKING+1168
TRACKING-1169
COUNTER RESET1170
COUNTER MODE1165
TAPE SPEED1188
STANDBY1121
DISPLAY1190
AUDIO MONITOR1123
MENU1177
OK1181
CURSOR_UP1166
CURSOR_DOWN1167
CURSOR_LEFT1198
CURSOR_RIGHT1197
Protocol: Sony12

Итого мы имеем 54 команды. Кнопок вроде хватает, памяти тоже, но хочется добить на полную, чтобы память была забита до упора полезным функционалом.

Что еще можно придумать?

В итоге должно получиться очень здорово… раскатал губу блин…

Сел я думать, как теперь расположить все мои хотелки на пульте так, чтобы оно все влезло, и чтобы было удобно пользоваться. После некоторых прикидок я остановился вот на таких раскладках.

От части желаемых команд я отказался. В секции LDP я добавил команды на кнопки "пустышки". Пусть LDP у меня нет и не предвидится, зато эти команды можно будет перехватывать для управления DVD рекодером. Из бесполезных кнопок тут осталась кнопка standby телевизора. Формально телевизор SONY у меня есть. Кнопка VTR осталась без изменеий, т.к. мои кассетные деки не умеют в standby. Так же без изменений осталась кнопка SYSTEM OFF. Есть еще некоторые эстетические проблемы с кнопками, на которых сверху нанесена шелкография. Я постарался их обыграть, но получилось не везде.

Поскольку процесс программирования подразумевает удержание кнопок пульта, которым мы пытаемся его обучить, использовать эмулятор пульта в телефоне в большинстве случаев невозможно. Возможно есть какой-нибудь софт, если не под android, то под более старые телефоны, где эмуляция удержания кнопки работает корректно. Однако я решил пойти другим путем и совместно с Михаилом и @Walhi, получилось сделать достаточно точный эмулятор на Arduino.

Sketch code #define DECODE_SONY #include "PinDefinitionsAndMore.h" #include <IRremote.hpp> // include the library #define KEY_PIN 4 void setup() { pinMode(LED_BUILTIN, OUTPUT); pinMode(KEY_PIN, INPUT_PULLUP); IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); Serial.begin(115200); Serial.setTimeout(50); // по умолч. секунда, долго. Serial.println(F("START " __FILE__ " from " __DATE__ "\r\nUsing library version " VERSION_IRREMOTE)); Serial.print(F("Send IR signals at pin ")); Serial.println(IR_SEND_PIN); Serial.print(F("Ready to receive IR signals of protocols: ")); printActiveIRProtocols(&Serial); Serial.println(F("at pin " STR(IR_RECEIVE_PIN))); } const String Digits = "0123456789"; String strData = ""; boolean recievedFlag; unsigned long startTime; unsigned long endTime; uint8_t debugEnable = true; uint16_t sAddress = 14; uint8_t sCommand = 22; void loop() { if (digitalRead(KEY_PIN) == LOW) { // Посылка команды if (debugEnable) { Serial.println(); Serial.print("Send now: "); Serial.print("Address = "); Serial.print(sAddress); Serial.print("; Command = "); Serial.println(sCommand); Serial.flush(); } while (digitalRead(KEY_PIN) == LOW) { startTime = millis(); IrSender.sendSony(sAddress, sCommand, 0); // Ожидание интервала между пакетами endTime = millis(); while ((endTime - startTime) < 45) { endTime = millis(); } } } else if (IrReceiver.decode()) { // Обработка полученных сигналов IrReceiver.printIRResultShort(&Serial); //IrReceiver.printIRSendUsage(&Serial); Serial.print("Address = "); Serial.print(IrReceiver.decodedIRData.address); Serial.print("; Command = "); Serial.println(IrReceiver.decodedIRData.command); if (IrReceiver.decodedIRData.protocol == UNKNOWN) { Serial.println(F("Received noise or an unknown (or not yet enabled) protocol")); // We have an unknown protocol here, print more info IrReceiver.printIRResultRawFormatted(&Serial, true); } Serial.println(); IrReceiver.resume(); // Enable receiving of the next value } else { // Обработка ввода с терминала if (Serial.available() > 0){ String bufString = Serial.readString(); byte dividerIndex = bufString.indexOf('A'); String buf_1 = bufString.substring(0, dividerIndex); String buf_2 = bufString.substring(dividerIndex + 1); sAddress = buf_1.toInt(); sCommand = buf_2.toInt(); Serial.println(); Serial.print("New config: "); Serial.print("Address = "); Serial.print(sAddress); Serial.print("; Command = "); Serial.println(sCommand); } } }

Использована библиотека IRremote, версия 4.2.1.

Ниже показана схема ИК эмулятора на базе Arduino и его фотография в сборе.

Принцип работы такой: в монитор последовательного порта пишем через A адрес и желаемую команду (например 14A22). Нажатием на кнопку эмитируем работу этой команды. ИК-приемник используется для отладки. Он декодирует и отправит результат в последовательный порт как эмулируемую команду, так и команду с программируемого пульта для проверки.

Конечно все-все желаемые команды согласно новым раскладкам записать не удастся. Я пока остановился на том, что пользоваться буду пультом RM-P301. В него влезли все команды за исключением команд по управлению колонками (блок AUDIO). Управлять колонками я буду через репитер, который будет как бы подменять заводские команды пульта RM-P301 командами пульта от моих колонок. Тоже самое будет сделано и для управления DVD рекодером в режиме LDP. Репитер будет описан в отдельной статье.

Теперь остался последний этап - нанести layout на пульт. Но перед тем, как заказывать печать в типографии, я решил попользоваться пультом и понять, насколько это удобно. Поэтому временно я напечатал на этикеточном принтере новые обозначения. Получилось неплохо. И что-то мне подсказывает, что фраза "нет ничего более постоянного чем временное" в этом проекте будет как никогда актуальна.

Полезные ссылки

Инструкции

RM-P301 Operating Instructions