No mês passado tive a oportunidade de palestrar no IV Encontro de Comunicação Digital, realizado no IFPB. O tema da palestra foi uma introdução sobre a plataforma Arduino e entre outras coisas, falei um pouco sobre computação física, sistemas embarcados e microcontroladores. No final da palestra apresentei um protótipo, feito especialmente para o evento, para passar slides utilizando um controle remoto comum. Se trata de um projeto introdutório, mas que pode ser utilizado para simular eventos em um computador através de um controle.
O projeto foi desenvolvido em duas partes, onde a primeira parte é responsável por receber os dados enviados pelo controle remoto e transmiti-los via USB(RS232), e a segunda parte é responsável por receber os dados via USB, interpreta-los e realizar alguma ação de acordo com o dado recebido. Para compor a primeira parte do projeto foi utilizado um Arduino UNO e um receptor infravermelho, retirado de um aparelho de DVD antigo. A segunda parte, que recebe os dados do Arduino, foi desenvolvida em Python e utilizando o comando xdotool, já apresentado aqui em outro post. Apesar do projeto ter sido testado apenas no Linux, ele pode ser facilmente adptado para funcionar em outros sistemas operacionais.
A ligação do receptor infravermelho ao Arduino é bastante simples, pois dispensa a utilização de componentes extras (resistores, capacitores etc), bastando apenas conectá-lo aos pinos corretos. Na foto abaixo podemos ver a ligação entre o Arduino e o receptor infravermelho, neste caso conectado aos pinos D11, GND e VCC(5V) do Arduino.

Para receber os dados enviados pelo controle remoto foi utilizada a biblioteca e o código de exemplo disponível em http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html, que copio logo abaixo.
Com esse código, o Arduino consegue receber os sinais infravermelhos enviados pelo controle remoto, convertê-los em uma sequência hexadecimal e enviá-los pela porta serial. Dessa forma, quando o Arduino estiver ligado e um botão do controle remoto for pressionado, um código hexadecimal, correspondente ao botão pressionado, será enviado pela porta serial que está conectada ao PC.
Para receber os dados enviados pelo Arduino, interpretá-los e simular ações de teclado, foi desenvolvido um simples código Python. A ferramenta xdotool é utilizada pelo código para simular ações de teclado e mouse, portanto é indispensável para o correto funcionamento da aplicação. Abaixo segue o código desenvolvido:
Após executar o código Python, serão exibidas mensagens na tela solicitando o pressionamento dos botões do controle remoto que serão associados as teclas de navegação do teclado do computador (Left, Right, Down e Up). Depois de associar o botões corretamente, basta pressionar o botão do controle associado a tecla que se deseja. O projeto completo pode ser visto em funcionamento no video abaixo:
Passando slides com controle remoto from entrebits on Vimeo.









![=] feliz natal...](http://29.media.tumblr.com/tumblr_lwfpzup6LO1r7n34ro1_75sq.jpg)

