Quer controlar o Linux por infra-vermelho?



No site vivaolinux tem um artigo ensinando como fazer, vá lá.
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=4165

Pessoalmente estou sem tempo, mas vou lhes contar um segredo. Posto tudo que acho legal aquí por vaŕios motivos, um deles é que o site original às vezes está indisponível, outro é que quanto mais links e manuais de Software Livre menos desculpa para os preguiçosos.

===========================

LIRC - Linux Infrared Remote Control

Autor: Andrei
Data: 08/12/2005

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 (16x50 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


Veja também um artigo sobre o editor emacs http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=4003

Nenhum comentário:

Postar um comentário

Insira seu comentário - O mesmo será submetido à aprovação!

linux-cookbook

Grupos do Google
Participe do grupo linux-cookbook
E-mail:
Visitar este grupo