1 1 Trabalho de Conclusão de Curso Dezembro de 2009, São Paulo-SP, Brasil DISPOSITIVO PARA CONTROLE DE ELETRÔNICOS POR MEIO DE INFRAVERMELHO A PARTIR DE UMA INTERFACE DE REDE SEM FIO Rafael Augusto Moreno Gonçalves rafael.augusto@gmail.com Orientador: Prof. Dr. Marcos Ribeiro Pereira Barretto marcos.barretto@poli.usp.br Resumo Neste trabalho é desenvolvido um protótipo capaz de, emulando controles remotos via infravermelho, mapeados com auxílio de um osciloscópio, comandar eletrônicos remotamente por meio de uma interface implementada em Python e Django em um computador pessoal. O dispositivo fabricado utiliza tecnologia Zigbee, por meio de módulos XBee para comunicar-se com o computador, o qual disponibiliza suas funcionalidades na forma de um website. Por fim, mapeia-se o controle de um rádio Philips modelo flat em um arquivo XML estruturado e comenta-se seu desempenho, o qual é perfeitamente condizente com o proposto. Conclui-se que a partir do protótipo desenvolvido é possível incorporar diversas características interessantes ao sistema, resultando em um dispositivo de maior atratividade comercial. Palavras chave: Automação residencial. Domótica. Infravermelho. Zigbee. XBee. Miwi. Arduino. Controle remoto. Python. Django. XML. ************************************ 1. Introdução Uma vez que o nível tecnológico aumenta e as facilidades de produção em massa reduzem consideravelmente os custos de componentes eletrônicos, a automação antigamente restrita a indústria passa a estar presente no setor terciário e nas habitações, originando o campo da domótica. Enquanto há alguns anos o controle vem sendo realizado por meio de sistemas cabeados, integrando motores para movimentação de cortinas e persianas, aparelhos de ar condicionado, entre outros, as dificuldades de sua instalação fazem com que seja interessante desenvolver módulos de automação sem fio. Paralelamente a esta questão identifica-se a oportunidade de desenvolver um novo dispositivo capaz de comandar eletrônicos dotados apenas de controle remoto tradicional infravermelho, os quais estão presentes em todos os lares. Este dispositivo deve, ainda, fornecer suporte a fácil adição de novos controles, bem como disponibilizar uma interface acessível em diversas plataformas. Nesse trabalho desenvolve-se um protótipo segundo tal oportunidade. 2. Metodologia Para fabricação do protótipo, é realizado previamente um projeto de engenharia. Nesse avaliamse cinco alternativas de arquitetura, duas redes sem fio simplificadas para uso industrial e verifica-se a viabilidade do uso de módulos de prototipagem já disponíveis. Uma vez selecionados arquitetura e componentes, durante a etapa de projeto básico, são realizados projetos mais detalhados do módulo e do servidor conjunto de software executado no computador pessoal. Posteriormente, a fabricação de um circuito e a implementação do software são realizadas de maneira
2 2 bastante direta. A finalização do projeto acontece após o mapeamento de um controle remoto de um rádio Philips tipo flat e verificação do funcionamento de todo sistema. 3. Arquiteturas Com base nos seguintes critérios, cinco diferentes arquiteturas para o dispositivo são analisadas: Custos de Produção; Disponibilidade Software, Sistema de Desenvolvimento e Suporte; Facilidade de Produção; Fornecedores Estabelecidos; Suporte a Módulos Adicionais; Possibilidade de expansão. A escolha de engenharia, indicada por meio de uma matriz de decisão, recai sobre a arquitetura de Módulo Atuador com Lógica de Negócio em Servidor comunicação com os módulos é realizada de modo serial (Rx, Tx), sendo transparente as características do sistema. Configurações são realizadas por comandos AT. 4. Microcontrolador Uma vez que a comunicação com o módulo XBee é realizada por meio de uma interface serial simples, os requisitos quanto ao microcontrolador são poucos. Capacidade de operar com PWM na faixa de 30 a 40 KHz (modulação utilizada nos controles remotos atuais), Aproximadamente 10KB de memória programável;. Disponibilidade de placa de desenvolvimento com baixo custo. Dispositivo De Comando TCP / IP Servidor (PC) USB Transceiver sem fio Rede sem Fio compatível com IEEE 802.15.4 Transceiver com emissor IR IR apresentada na figura 1. Figura 1: Módulo Atuador com Lógica de Negócio em Servidor, Fluxo de Dados As demais arquiteturas são: All-in-One, Módulo Escravo, Módulo NA Inteligente, Módulos em Rede Secundária. 4. Redes sem Fio A comunicação entre o computador pessoal, onde é executado o aplicativo de servidor, e o módulo, que de fato envia os sinais infravermelho, é realizada por meio de uma rede sem fio simplificada, como descrita na norma IEEE 802.15.4. Para tanto são identificadas duas opções, o protocolo Miwi, fornecido pela Microchip, e o Zigbee mantido pela Zigbee Alliance. Uma vez que o Miwi é específico para microcontroladores da família PIC e possui documentação defasada, a escolha recai para o uso de Zigbee. Para efetuação da comunicação, opta-se pela utilização de um módulo XBee, fabricado pela Digi/Maxstream, que encapsula todo o protocolo fazendo com que não seja necessária a implementação do stack Zigbee no microcontrolador do módulo. Para conexão do módulo XBee ao PC, utiliza-se um adaptador fabricado pela Droids, permitindo sua conexão a uma porta USB. Dessa forma toda a Dada a familiaridade com a família ATMEGA, em especial com o ATMEGA 328 com 32KB de memória, e sua oferta na forma de placa de desenvolvimento Arduino, por cerca de US$ 40,00, resta investigar a possibilidade de operar com tal frequência de PWM. Figura 2: Fast PWM com regulagem por OCnA Considerando o modo fast-pwm apresentado na figura 2, sabendo-se que o Arduino utiliza um cristal de 16MHz para clock, as equações 1 e 2 fornecem a frequência do PWM e seu Duty Cicle.
3 3 Equação 1: Frequência do PWM Equação 2: Duty Cicle (1) (2) Seja N prescale = 8, variando-se N OCnA entre 1 e 255, varre-se um intervalo de frequências de 2MHz a 7.843KHz, dessa forma a utilização de um Arduino com o ATMEGA 328 é viável. 5. Programação f PWM = N Prescale N OCnA N OCnB N OCnA =DC F Oscilador A programação do microcontrolador é realizada em ambiente próprio do Arduino, sendo a linguagem muito parecida com C++. Já para o servidor, algumas considerações são apresentadas. Uma vez que os requisitos do sistema não implicam em grande esforço computacional, a necessidade do uso de linguagens compiladas e otimizadas para o desenvolvimento do software do servidor não se apresenta. É preferível, na verdade, a escolha de uma linguagem interpretada e independente de plataforma. A escolha de projeto foi o Python, complementado com Django para o desenvolvimento web e a pyserial para interface com o XBee na placa Droids. Ação: O microcontrolador envia uma string com todas as variáveis do sistema e seus valores. String de comando: :C[sequência de zeros e uns]; Faz com que o LED infravermelho seja acionado, sendo mantido por aceso, pelo PWM cuja frequência é definida por carrier, por tempo high em caso de 1 e apagado por tempo low em caso de tempo 0. A figura 3 apresenta o esquema de ligação: Figura 3: Esquema de ligação do módulo 6. Projeto do Módulo O software desenvolvido para o microcontrolador ouve a porta serial e interpreta três conjuntos de strings: String de configuração: Formato :SR%dh%dl%dH%dL%dC%dB%d; Onde: R : Ratio (Duty Cicle em porcentagem) h : Ajuste high (us) l : Ajuste low (us) H : Tempo high (us) L : Tempo low (us) C : carrier (frequência em Hz) B : numbits Ação: Configura todas as variáveis do controle com os valores fornecidos String de debug: Formato :D; 7. Projeto do Servidor O servidor é projetado utilizando a arquitetura MVC proposta pelo modelo de desenvolvimento de aplicações do Django. Como modelo temos a classe VirtualControler, com os métodos: init (self, controlfile): Construtor, recebe como parâmetro o caminho para um arquivo de controle virtual, o qual interpretará; getsetupstring(self): A partir do arquivo de controle virtual carregado, retorna a string de configuração do controle; getcommandstring(self, command): A partir do controle, busca o comando selecionado e retorna a string formatada correspondente. sendstringserial(self, str): Abre a conexão serial e envia uma string; sendsetupstring(self): Envia a string de setup
4 4 por meio da porta serial, utilizando os métodos getsetupstring(self) e sendstringserial(self, str); sendcommandstring(self, command): Envia a string correspondente ao comando por meio da porta serial, utilizando os métodos getcommandstring(self, command) e sendstringserial(self, str). bastando manter o mouse pressionado sobre eles para enviar o sinal repetidamente. Como pode-se notar facilmente na figura 5, o comando enviado é exibido no fim da página para efeitos de verificação. As views são: index: Índice e página padrão, lista os controles disponíveis. control: Para um controle, lista os comandos disponíveis e permite selecionar algum. SendCommand: Envia um comando, retornando apenas uma confirmação, uma vez que será solicitado via AJAX. upload_file: Permite realizar o upload de um <ircontrol arquivo de name="rádio controle. Philips" carrier="36000" ratio="40" ajustelow="0" ajustehigh="0" tempolow="889" tempohigh="889" numbits="128"> Figura 5: Seleção de comandos <command name="power">0101100110101001101001011010</command>... </ircontrol> Código 1: Exemplo de controle remoto mapeado em XML Os controles-remotos são mapeados utilizando-se arquivos XML de fácil compreensão, o exemplo do bloco de código 1 é auto-explicativo. O servidor de desenvolvimento de desenvolvimento do Python é inicializado na porta 8080 com IP local por meio do comando abaixo. python manage.py runserver 127.0.0.1:8080 A figura 4 exemplifica a tela inicial da interface: 8. Mapeamento do Controle O controle remoto é mapeado observando-se sua forma de onda com auxílio em um osciloscópio. Para tanto utiliza-se um resistor de 330KΩ em série a um fotodiodo, alimentados por uma tensão de 5V. 9.Conclusão A fabricação do protótipo e implementação do software necessário resultou no funcionamento esperado do sistema, permitindo controlar o rádio Philips mapeado perfeitamente. A adição de novos controles virtuais esbarra apenas na necessidade de mapeá-los. Com poucas alterações no software é possível oferecer uma API consistente para o desenvolvimento de pequenos clientes, melhorias na apresentação (gerenciada por meio de modelos HTML) ou possibilitar a criação de macros, integrando diversos comandos de diferentes controles. Todavia estas alterações estão fora do escopo proposto para o trabalho. Figura 4: Tela inicial da interface Referências Bibliográficas [1] GONÇALVES, R.A.M. Dispositivo para controle de eletrônicos por meio de infravermelho a partir de Os comandos são apresentados como links, uma interface de rede sem fio. Monografia Escola
5 5 Politécnica da USP (2009) ABSTRACT Development of a prototype that emulates an infrared remote control ( previously mapped using an oscilloscope) and commands electronics remotely trough a web based interface implemented using Python and Django on an ordinary PC. The prototype uses Zigbee technology (XBee modules) to communicate with a PC based server. Finally, it presents the mapping of a Phlips flat radio remote control into a XML file and some comments about the performance of the system. It concludes that with some minor software changes it's possible to add a series of interesting features to the prototype, rendering it into a commercial product. Keywords: Home automation. Infrared. Zigbee. Miwi. Arduino. Remote control. Python. Django. XML.