Управление медиацентром

У нас уже был проект "ИК-приемник", в котором мы рассматривали как принимать ИК сигналы от пультиков. Следующий шаг - попытаться такие сигналы передавать.
Это может понадобиться для многих целей - например можно сделать свой пультик, организовать связь между марсоходами и т.д.
Я взял для примера конкретную задачу - управление несколькими устройствами
домашнего медиацентра при помощи одного  пультика.

Для реализации этой задачи было решено встроить платку Марсоход внутрь DVD-плеера. Это позволило решить три проблемы:

  • во-первых, в плеере уже есть ИК приемник;
  • во-вторых, есть источник питания;
  • в-третьих, достаточно свободного места для размещения платки.   

Итак, разбираем DVD, находим ИК приемник:

Приемник ИК сигнала

С обратной стороны платы припаиваем пины для подключения проводов.
Припаянные контакты на плате

Выводим ИК светодиод наружу и закрепляем платку.
Плата Марсоход внутри DVD проигрывателя

Оптореле для управления лампой я закрепил на задней стенке снаружи. Описание на него:


opto_rele
Теперь о проекте. Его можно взять здесь:
ИК Трансивер ( 60345 bytes )

Я заранее выяснил все необходимые коды от пультиков и свел их в
один компонент cnst.v написанный на verilog.

module cnst(
        output wire [31:0]q1,
        output wire [31:0]q2,
        output wire [31:0]q3,        
        output wire [31:0]q4,
        output wire [31:0]q5,
        output wire [31:0]q6,
        output wire [31:0]q7,
        output wire [31:0]q8,
        output wire [31:0]q9,
        output wire [31:0]q10,
        output wire [31:0]q11,    
        output wire [31:0]q12,    
        output wire [31:0]q13,    
        output wire [31:0]q14,    
        output wire [31:0]q15,
        output wire [31:0]q16    
);
//bbk                            
assign q1[ 31: 0] = 32'h926da05f;  //    play
assign q2[ 31: 0] = 32'h926d807f;  //    pause/stop
assign q3[ 31: 0] = 32'h926de21d;  //    eject
assign q4[ 31: 0] = 32'h926d08f7;  //    vol -
assign q5[ 31: 0] = 32'h926d708f;  //    vol +
assign q6[ 31: 0] = 32'h926da857;  //    stop
assign q7[ 31: 0] = 32'h0;    
assign q8[ 31: 0] = 32'h926de01f;  //    standby    

//dre        
assign q9[ 31: 0] = 32'h00088877;  //    up
assign q10[ 31: 0] = 32'h0008c837; //    ok
assign q11[ 31: 0] = 32'h0008a857; //    down
assign q12[ 31: 0] = 32'h000848b7; //    left
assign q13[ 31: 0] = 32'h000828d7; //    right
assign q14[ 31: 0] = 32'h000812ed; //    *
assign q15[ 31: 0] = 32'h0008ba45; //    #    
assign q16[ 31: 0] = 32'h0008e817; //    help   
endmodule

В качестве основного, я выбрал пульт от спутникового ресивера.
Наша платка должна распознавать восемь кнопок от этого пульта, семь из них транслировать в коды для DVD а по восьмой - включать или выключать свет.
Для DVD я взял самые основные кнопки : standby,play,pause,vol-,vol+,stop,eject.
В результате получилось "три в одном", управление ресивером, плеером и освещением.

Видео снимал на телефон - качество не очень, поэтому прокомментирую:
Сверху желтенькие цифры - это номер канала ресивера , справа ниже -
это дисплей DVD на котором, если он выключен, надпись "STANDBY".
На заднем плане, подключенная через оптореле, лампа бра.


Добавить комментарий