Olá, hoje vou falar sobre a minha recente experiência de utilizar controles remoto com o computador, utilizando o Linux e o LIRC. Realizei os procedimentos no Ubuntu 8.10 Intrepid Ibex, mas imagino que em outras distribuições o processo deva ser semelhante.
Você vai precisar dos seguintes equipamentos:
-
Um computador com uma porta serial livre. Porta serial é a famosa DB-9, uma portinha de 9 pinos que se usava o mouse antigamente. Verifique atrás do gabinete do seu computador se você tem essa porta, caso você não tenha, pode ser que a sua placa-mãe tenha a porta disponível onboard mas você não tenha o espelho como este ao lado (que foi o meu caso) ou não ter mesmo. Arranjar o espelho de porta serial pode ser um saco, eu consegui pegar de um computador antigo; talvez o mais fácil seja desativar a porta serial na placa mãe e comprar uma placa serial PCI como esta à venda no DealExtreme. Note que adaptadores USB-serial não servem.
- Um receptor de infravermelho, como um destes (esquemático). Se você não quiser ter de soldar componentes eletrônicos, pode procurar por algum já pronto, no Mercado Livre tem alguns à venda.
- Um controle remoto qualquer.
Com tudo isto, mãos a obra. Primeiro instalamos o LIRC:
sudo apt-get install lirc lirc-x
Na instalação do pacote, ele irá lhe perguntar três coisas: o modelo do receptor infravermelho, o modelo do transmissor infravermelho e o modelo do controle remoto. O receptor infravermelho do esquemático acima consta como “Homebrew Serial”, não estamos usando um transmissor infravermelho portanto “none”, e como estamos usando um controle remoto qualquer podemos escolher a opção “custom”.
Podemos testar se o sinal está chegando OK no transmissor com o seguinte comando:
sudo ln -s /dev/lirc0 /dev/lirc ; xmode2
Ao pressionar um botão qualquer no controle remoto, deverá aparecer uma seqüência de pulsos na tela. Alternativamente você poderá utilizar o mode2 em modo texto e ver um monte de números.
Caso não tenha funcionado até aqui, verifique se o cabo serial está OK e se o controle remoto está funcionando. Dica: aponte o controle remoto para uma câmera, por exemplo a de um celular, e verifique se há um feixe esbranquiçado no visor do mesmo. Isto acontece porque as câmeras (a maioria, pelo menos) consegue captar parte do espectro que não enxergamos.
OK, agora que sabemos que o receptor infravermelho está funcionando OK, precisamos configurar o LIRC para aceitar os comandos do controle remoto. Em outras palavras, é preciso pressionar cada botão e dar um nome para que o computador saiba quantos e quais botões existem. Fazemos isto com o comando:
sudo irrecord -d /dev/lirc0 meu-controle-remoto
O programa irrecord apresenta um passo-a-passo simples, onde você irá pressionar todas as teclas do controle remoto por um determinado tempo para que ele detecte como o controle remoto funciona (tecnicamente falando, qual é a seqüência de pulsos que ele emite), e então dará um nome para cada tecla e a pressionará. Faça isto com todas as teclas, mesmo que não pretenda utilizar todas.
Alternativamente, você poderá verificar se já existe o controle remoto que você está utilizando no banco de dados do LIRC. Se não existir, você poderá se quiser enviar o arquivo gerado pelo comando acima para poupar o trabalho de outras pessoas que poderão porventura utilizar o mesmo controle remoto que você.
Muito bem, agora que você tem o arquivo de configuração do controle remoto, seja gerado pelo irrecord ou baixado do site, vamos ativá-lo:
sudo mv meu-controle-remoto /etc/lirc/lircd.conf && sudo /etc/init.d/lirc restart
Podemos verificar se os comandos do controle remoto estão sendo reconhecidos com o comando:
irw
Agora que os botões já estão sendo reconhecidos, só precisa configurar os programas que deseja. No meu caso, eu só quis configurar o XBMC, neste caso o procedimento foi editar o arquivo /usr/share/xbmc/system/Lircmap.xml e adicionar ao arquivo XML, dentro da tag <lircmap>, a seguinte estrutura:
<remote device="nome do controle remoto"> <comando do xbmc>nome do botão</comando do xbmc> </remote>
Por exemplo, o meu arquivo /etc/lirc/lircd.conf está assim:
begin remote
name LG_6710V00090N
bits 16
flags SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
header 8992 4542
one 529 1704
zero 529 591
ptrail 512
repeat 8985 2294
pre_data_bits 16
pre_data 0x20DF
gap 108095
min_repeat 2
toggle_bit_mask 0x0
begin codes
POWER 0x10EF
MUTE 0x906F
1 0x8877
2 0x48B7
3 0xC837
4 0x28D7
5 0xA857
6 0x6897
7 0xE817
8 0x18E7
9 0x9867
0 0x08F7
APC 0xB24D
TVVIDEO 0xD02F
MENU 0xC23D
CAPTION 0x9C63
VOLMINUS 0xC03F
VOLPLUS 0x40BF
CHMINUS 0x807F
CHPLUS 0x00FF
ENTER 0x22DD
FCR 0x7887
SLEEP 0x708F
EYEASTERISK 0xA956
AUTOPRG 0x2AD5
MEMORYERASE 0xAA55
REVIEW 0x58A7
MTS 0x50AF
PICTURE 0x30CF
end codes
end remote
E o meu /usr/share/xbmc/system/Lircmap.xml está assim:
<lircmap> <remote device="LG_6710V00090N"> <up>CHPLUS</up> <down>CHMINUS</down> <left>VOLMINUS</left> <right>VOLPLUS</right> <pageplus>APC</pageplus> <pageminus>TVVIDEO</pageminus> <select>ENTER</select> <start>MENU</start> <info>CAPTION</info> <volumeminus>FCR</volumeminus> <volumeplus>SLEEP</volumeplus> <display>EYEASTERISK</display> <mute>MUTE</mute> <power>POWER</power> </remote> </lircmap>
Antes de terminar, o quase-obrigatório vídeo de como ficou:
Posts (RSS)