LIRC – Linux Infrared Remote Control

Autor: Andrei

Introdução e advertências

Usar um controle remoto no Linux independente de termos placa de TV ou outro hardware específico é uma solução muito útil em diversas situações:

  • Controlar o XMMS, Mplayer e etc sem termos que estar "grudados" no micro;
  • Rodar programas em servidores ou máquinas sem teclado ou em localização não muito acessível. Ex: Racks;
  • Controlar o ponteiro do mouse a distância;
  • Palestrantes com uso de um DataShow podem ganhar muito mais mobilidade na apresentação além de impressionar!
  • Existem alguns relógios de pulso que desempenham a função de controle remoto genérico, você pode utilizar um e ganhar mobilidade extra.

Neste artigo vou apresentar a construção de um hardware simples para funcionar como receptor e a instalação e configuração do
LIRC.

A distribuição utilizada foi a Slackware 10.2 com kernel 2.6.13. O procedimento de instalação/configuração não deve mudar muito para outras distribuições.

ATENÇÃO: Como vou apresentar a construção de um pequeno hardware receptor, que apesar de simples requer algumas habilidades, não me responsabilizo por qualquer dano causado ao seu computador!!!

Construção do receptor infravermelho

Abaixo segue o esquema elétrico do receptor serial. Este receptor não é de minha autoria, foi extraído do site:


Lista de componentes:

Na imagem acima, a aparência do conector pode parecer confusa, já que não se sabe o lado que o mesmo está, por isso lembre-se que está com as conexões do lado dos terminais soldáveis, ou seja:

Pino 1 – Sinal (Signal)
Pino 5 – Terra (Common)
Pino 7 – Ligação para o Diodo D1

Não posso precisar o custo dos componentes acima, já que não tive que comprar nenhum, mas acredito que o conjunto não deve passar dos R$ 15,00.

Como são poucos os componentes, optei por soldá-los diretamente uns nos outros e os coloquei dentro do próprio conector serial, somente para o componente receptor infravermelho (IR Receiver) utilizei um cabo de mouse com uma garrinha (daquelas que existem nos fones para celular), presa na extremidade próxima do IR Receiver para facilitar a fixação numa posição de melhor recepção do mesmo.

Após a construção do receptor, CONFIRA todas as conexões para ver se está tudo certo e conecte o mesmo no seu micro.

Exemplos de montagem:

Receptor montado dentro de um mouse antigo:

Download e instalação do LIRC

Para a instalação é necessário ter os fontes do kernel instalados. Não vai ser preciso recompilar o kernel.

# wget
http://easynews.dl.sourceforge.net/sourceforge/lirc/lirc-0.7.2.tar.gz
# tar -xzvf lirc-0.7.2.tar.gz
# cd lirc-0.7.2
# ./setup.sh

Será iniciado um utilitário de configuração:

1. Driver Configuration

Escolha: Home-Brew (16×50 UART compatible serial port), após será solicitado a escolha da porta serial e por fim em Driver Especific Options marque: With transmitter diode e Software Generated Carrier.

2. Software Configuration

Marque: Compile tools for X-Windows

3. Save configuration & run configure

Após concluído o processo, vamos compilar e instalar o programa:

# make
# make install

Configuração inicial

Devemos carregar os módulos do LIRC:

# modprobe lirc_dev
# modprobe lirc_serial

Se ocorrer algum erro no carregamento dos módulos:

  • Certifique-se que não existe nenhum processo utilizando a porta serial escolhida para o LIRC.
  • No meu caso tive que executar o comando abaixo antes do carregamento dos módulos, pois na inicialização o kernel ativa algumas configurações na porta serial que não são compatíveis com o LIRC:

    # setserial /dev/ttyS0 uart none

    Substitua o /dev/ttyS0 pela porta serial correta!

  • Tente passar os parâmetros da porta no carregamento do módulo lirc_serial:

    # modprobe lirc_serial irq=4 io=0x3f8

    Verifique se os módulos estão carregados:

    # lsmod | grep lirc

    lirc_serial 12000  0
    lirc_dev    12644  1 lirc_serial
    
    

Teste inicial

Antes de mais nada, você vai precisar de um controle remoto. Pegue qualquer um: da sua TV, Som, DVD etc.

Rode o programa mode2:

# mode2

Aponte seu controle para o receptor e pressione algumas teclas. Você deve obter uma saída semelhante a esta:

space 674
pulse 391
space 1727
pulse 393
space 672
pulse 358

OK, nosso receptor está funcionado!

Configurando o seu controle remoto

O LIRC é composto de um servidor (lircd), que recebe as informações do receptor infravermelho e de vários programas clientes que se conectam à ele para executar as tarefas conforme a aplicação.

Agora entre no site:

e procure o seu modelo de controle remoto!

Baixe o arquivo. Ex:

# wget http://lirc.sourceforge.net/remotes/sony/RM-X47

Mova o arquivo para
/etc/lircd.conf:

# mv RM-X47 /etc/lircd.conf

Se você não encontrou o modelo do seu controle, não se apavore, vamos configurar ele no "braço". Para isto vamos utilizar o utilitário
irrecord
:

# irrecord meucontrole.infra

  • Tecle ENTER duas vezes;
  • Agora você deve pressionar várias teclas diferentes de seu controle remoto por aproximadamente 1 segundo, cada botão que você apertar deve gerar no mínimo um ponto na saída do programa, mas em nenhum caso mais de 10 pontos. Não pare de pressionar os botões até que 2 linhas de pontos sejam preenchidas;
  • Após isso o programa vai pedir para mapear cada tecla, coloque o nome da tecla e tecle ENTER, após isso tecle a respectiva tecla do seu controle. Repita isso até mapear todas as teclas.
  • Mova o arquivo gerado para /etc/lircd.conf:

    # mv meucontrole.infra /etc/lircd.conf

Rode o lircd:

# lircd

Verifique em /var/log/lircd se está tudo OK:

# tail /var/log/lircd
Nov 5 09:46:56 atb lircd 0.7.2: lircd(serial) ready

Iniciando programas pelo controle remoto

No exemplo abaixo vamos criar uma configuração para controlar o XMMS, abrir o site do VOL e desligar o micro. Leia a documentação para ver mais opções:

Crie um arquivo em seu home com o nome de .lircrc. Você vai precisar saber o nome das teclas do seu controle que estão no arquivo
/etc/lircd.conf, se você configurou seu controle com o irrecord, então você deve se lembrar do nome que deu para as teclas, senão abra a arquivo /etc/lircd.conf e veja os nomes.

Criando o arquivo:

# cd ~
# vi .lircrc

# Inicio do Arquivo
# button = Nome do Botão
# prog = irexec (cliente que se conecta ao lircd para receber os comandos do controle e iniciar um aplicativo

# config = Nome do programa/Linha de Comando

# Ao digitar a tecla "100" do meu controle é aberto o site do VOL:
begin
        button = 100

        prog   = irexec
        config = firefox www.vivaolinux.com.br &
end

# Ao digitarmos a seqüência de números "1,2,3 e 5" o computador é desligado:

begin
        button = 1
        button = 2
        button = 3
        button = 5
        prog   = irexec
        config = poweroff
end

# Abaixo controlamos o XMMS:

# Próxima música da lista
begin
        button = ff
        prog   = irexec
        config = xmms -f &
end

# Música Anterior
begin
        button = rew
        prog   = irexec
        config = xmms -r &
end

# STOP
begin
        button = stop
        prog   = irexec
        config = xmms -s &

end

# PLAY
begin
        button = play
        prog   = irexec
        config = xmms -p &
end

#PAUSE
begin
        button = pause

        prog   = irexec
        config = xmms -t &
end

# Diminuir o volume
begin
        button = voldown
        prog   = irexec
        config = aumix -w -5
end

# Aumentar o Volume
begin
        button = volup
        prog   = irexec
        config = aumix -w +5
end
# Fim do Arquivo

Agora vamos iniciar o irexec:

# irexec -d

Teste se seu micro responde aos comandos definidos no arquivo!

Simulando um mouse

Edite o arquivo de configuração do xorg:

# vi /etc/X11/xorg.conf

Adicione está seção ao arquivo:

Section "InputDevice"
        Identifier  "LIRC-Mouse"
        Driver      "mouse"
        Option      "Device" "/dev/lircm"
        Option      "Protocol" "IntelliMouse"

        Option      "SendCoreEvents"
        Option      "Buttons" "5"
        Option      "ZAxisMapping" "4 5"
EndSection

Altere a seção "ServerLayout" e adicione a seguinte linha:

        InputDevice    "LIRC-Mouse" "AlwaysCore"

Agora reinicie seu X!

Crie o arquivo /etc/lircmd.conf com o seguinte conteúdo:

#Inicio do Arquivo

PROTOCOL IntelliMouse

# ACCELERATOR start max multiplier

ACCELERATOR 1 300 10

TOGGLE_ACTIVATE * MENU

MOVE_N * 2
MOVE_NE * 3
MOVE_E * 6
MOVE_SE * 9
MOVE_S * 8
MOVE_SW * 7
MOVE_W * 4
MOVE_NW * 1
MOVE_IN * +
MOVE_OUT * –

BUTTON1_CLICK * PROG
BUTTON3_CLICK * INPUT


#Fim do Arquivo

Substitua o nome das teclas conforme seu controle. A documentação deste arquivo você vai encontrar em:

Agora vamos iniciar o lircmd:

# lircmd

Tecle em seu controle a tecla definida em TOGGLE_ACTIVATE, você deve ver o ponteiro do mouse fazer um círculo na sua tela, após isso teste a movimentação do mesmo.

Configurações finais

Se tudo ocorreu bem até aqui, então você pode configurar o lircd para ser iniciado automaticamente em seu sistema.

No Slackware:

No arquivo /etc/rc.d/rc.modules adicione no final do arquivo:

setserial /dev/ttyS0 uart none
modprobe lirc_dev
modprobe lirc_serial

ou:

modprobe lirc_serial irq=4 io=0x3f8

Substitua /dev/ttyS0, irq= e io= pelas configurações da sua porta serial, no exemplo acima estou utilizando a ttyS0 (COM1).

No arquivo /etc/rc.d/rc.local adicione:

lircd

No arquivo ~/.bash_profile adicione:

irexec -d
lircmd

Se você tiver problemas em utilizar os programas clientes como usuário comum, veja as permissões do arquivo /dev/lircd.

# chmod 666 /dev/lircd

Outros utilitários

Existem vários utilitários que desempenham várias funções, entre eles:

irw

Útil para saber o nome das teclas definidas para seu controle. Ex:

# irw
0000000000000021 00 play sony.ir
000000000000001e 00 stop
sony.ir

irxevent

Simula eventos do seu teclado normal. Este programa utiliza o mesmo arquivo do irexec: ~/.lircrc.

Ex.:

begin
        prog = irxevent
        button = CANCEL
        config = Key crtl-c CurrentWindow
end

xmode2

Exibe a forma de onda recebida pelo receptor infravermelho.

Para lista completa de programas acesse:

Considerações finais

UFA!

Gostaria de dizer que fiquei impressionado com o funcionamento do LIRC, mesmo utilizando um hardware receptor bem simples, o alcance do mesmo é igual a qualquer aparelho convencional, TV, DVD, etc.

Testei o mesmo com 3 controles diferentes e funcionou perfeitamente!

Se você gostou do artigo, mas acha que não vai conseguir montar o receptor, peça a algum amigo seu que saiba ou imprima o esquema e peça a alguma loja de manutenção de eletrônicos que monte para você.

Lembre-se de ler a DOCUMENTAÇÃO para extrair o máximo do programa para a aplicação desejada.

Exemplos de configuração podem ser encontrados na subpasta contrib do LIRC:

# cd lirc-0.7.2/contrib/

Todas as informações, esquema e figuras foram extraídas do site do LIRC:

Abraço a todos!


http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=4165

3 comentários sobre “LIRC – Linux Infrared Remote Control

  1. Hi,Do you need screen advertisings, digital sign, digital signages and LCDs? Please go Here:www.amberdigital.com.hk(Amberdigital).we have explored and developed the international market with professionalism. We have built a widespread marketing network, and set up a capable management team dedicated to provide beyond-expectation services to our customers.
    amberdigital Contact Us
    E-mail:sstar@netvigator.com
    website:www.amberdigital.com.hk
    alibaba:amberdigital.en.alibaba.com[bhcaebhgdhieia]

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s