Есть у меня BD плеер SONY BDP-S370 залоченный на европейский DVD-регион.
Искал в интернете рецепты - нашел один текст, копируемый по всей сети:
http://www.videohelp.com/dvdhacks/sony-bdp-s370/10827Там требуется программируемый пульт One4All, в котором прошиты секретные команды, недоступные с родных пультов.
Пытался обойтись совсем без пульта - но нигде не смог найти коды команд Sony SIRC, которые в URC хранятся под номерами 189, 255, 95, 221, 79.
Даже написал в службу поддержки One4All - на удивление ответили быстро, обстоятельно, но совершенно не по теме. То-ли не поняли вопроса, то-ли как раз поняли очень хорошо.
Пришлось купить пульт URC7950 на ебее, но из спортивного интереса захотел-таки сделать задуманное на Arduino.
Ардуино было, остальное выдирал из старого телевизора.
Для начала нужно было считать коды, которые посылает пульт. Вроде тут все написано:
http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.htmlтолько совсем не работает. На работе осциллографом выяснил, что перепутал выводы на безымянном ИК-транзисторе.
Коды считал - получилось следующее:
URC код 189 - команда FEB92
URC код 255 - команда A6B92 ("Angle"),
URC код 95 - команда AAB92,
URC код 221 - команда FAB92,
URC код 79 - команда A8B92 ("Power"),
Хотел сначала отправить тестовую команду на включение/выключение, но не было никакой реакции.
Очередной поиск в сети подсказал, что тока в ИК-диоде может быть недостаточно:
https://learn.adafruit.com/using-an-infrared-library/sending-ir-codesВыдрал из пульта еще транзистор, повесил - свет от диода в фотокамере стал виден гораздо лучше.
Пытался дальше разобраться, понял что B92 - это адрес устройства в команде, но у меня плеер откликался на адрес B47 с родного пульта. То есть на A8B92 никак не реагировал, а включался/выключался только по команде A8B47. Может быть, что транзистор и не нужен был?
После того как плеер стал включаться-выключаться - я попробовал загрузить последовательность с родным адресом плеера, но толку не было никакого. Промучившись час, на удачу прогнал последовательность с "неподходящим" адресом B92: ВУАЛЯ, всё заработало!
Вот получившийся рабочий код (Только вы не смейтесь - я ни программировать, ни паять толком не умею):
/*
* Sony Blue-Ray S370 region unlock sketch
* An IR LED must be connected to Arduino PWM pin 3.
*/
#include "IRremote.h"
IRsend irsend;
void setup()
{
Serial.begin(9600);
}
void loop() {
if (Serial.read() != -1) {
for (int i = 0; i < 3; i++) {
irsend.sendSony(0xfeb92, 20); // URC code 189, Sony command 127
delay(100);
}
delay(1000);
for (int i = 0; i < 3; i++) {
irsend.sendSony(0xa6b92, 20); // URC code 255, Sony command 101 - "Angle"
delay(100);
}
delay(1000);
for (int i = 0; i < 3; i++) {
irsend.sendSony(0xaab92, 20); // URC code 95, Sony command 85
delay(100);
}
delay(1000);
for (int i = 0; i < 3; i++) {
irsend.sendSony(0xfab92, 20); // URC code 221, Sony command 95
delay(100);
}
delay(1000);
for (int i = 0; i < 3; i++) {
irsend.sendSony(0xa8b92, 20); // URC code 79, Sony command 21 - "Power"
delay(100);
}
}
}
Кстати, никому программируемый пульт URC 7950 не нужен? Продам дешево!