Automação residencial através de um celular android

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Introdução

Sistemas de automação residencial permitem aos usuários controlarem os eletroeletrônicos de sua residência como lâmpadas, televisores e home theaters, através de interfaces de controle. Sua proposta principal é trazer conforto e comodidade para as residências, porém, podem ser utilizados também para segurança, com a utilização de câmeras de vigilância e sensores de presença.

Sistemas de automação residencial são tipicamente compostos por controladores de dispositivos, um servidor central e interfaces de controle. Os controladores de dispositivos são responsáveis por executar efetivamente os comandos nos eletroeletrônicos da residên-cia. Os servidores são responsáveis pelo envio das mensagens das interfaces de controle para os controladores de dispositivos. Por fim, as interfaces de controle podem ser representadas por painéis afixados em paredes ou mesmo em forma de páginas Web, que podem ser visualizadas, inclusive, em telefones celulares. Interagindo com essas interfaces o usuário consegue acionar determinado dispositivo ou executar determinada funcionalidade do sistema.

Para o desenvolvimento em hardware é fundamental a realização de testes antes da fabricação do equipamento. Por isso, a plataforma Arduino se mostra ideal no de-senvolvimento de dispositivos programáveis que tenham que exercer funções de controle, principalmente para prototipagem de equipamentos em fase de projetos.

Nos sistemas de automação tem que haver uma tecnologia eficiente para a comunicação entre os dispositivos da rede. Pensando nisso foi criado o protocolo ZigBee (ZIGBEE ALLIANCE, 2005), ideal para sistemas de automação onde a taxa de transmissão de dados não é relevante mas sim o consumo de energia e possibilita a criação de uma malha de dispositivos onde todos podem se comunicar e encaminhar mensagens.

Telefones celulares que sirvam apenas para realizar chamadas telefônicas estão cada vez mais perdendo espaço para dispositivos mais complexos que possibilitam acessar a Internet com altas taxas de velocidade e rodar aplicativos semelhantes aos utilizados em computadores pessoais. Esses dispositivos são denominados telefones inteligentes e tem características muito superiores ao celulares convencionais como por exemplo suporte à conexões 3G e Wi-Fi (IEEE, 2007), maior capacidade de processamento e memória, além de sistemas operacionais mais complexos.

O Android (OPEN HANDSET ALLIANCE, 2008) é um sistema operacional para dispositivos móveis desenvolvido pelo Google e outras empresas que juntas formam a Open Handset Alliance. Por se tratar de um projeto aberto e ter o apoio de várias fabricantes de dispositivos móveis, o Android está disponível em diversos tipos de dispositivos como telefones inteligentes e tablets, por exemplo. Ele foi projetado para tirar proveito das telas sensíveis ao toque, da capacidade de processamento e grande conectividade dos dispositivos móveis atuais, e possibilitar a criação de aplicações tão complexas quanto as destinadas a computadores pessoais.

Nesse trabalho é apresentado o DroidLar, um sistema de automação residencial completo onde o usuário utiliza uma aplicação rodando em um celular Android como interface de controle. O DroidLar utiliza o protocolo ZigBee para a comunicação dos controladores de dispositivos. Nesse sistema podem ser controlados eletroeletrônicos, como lâmpadas, por uma rede IP local, ou em qualquer lugar do mundo pela Internet.

ZigBee

A comunicação por redes sem fio surgiu como uma evolução à utilização de redes cabeadas. A mobilidade e a não necessidade de cabos de conexão foram fatores que contribuíram para sua grande popularização. Porém, ainda existia a necessidade de tecno-logias específicas para redes sem fio que não necessitassem de altas taxas de transmissão e que possibilitassem uma economia de energia nos transmissores. Motivado por essa necessidade foi criado o protocolo ZigBee. Ele é um protocolo voltado para as redes pessoais sem fio de baixa taxa de transmissão (LR-WPAN) e, por isso, é ideal para aplicações que utilizem sensores, de automação, militares e de segurança.

O ZigBee foi construído sobre a base descrita pelo padrão IEEE 802.15.4 (IEEE, 2006) - que define as WPANs - adicionando as camadas de rede (NWK), suporte à aplicação (APS) e aplicação (AF) sobre as camadas física (PHY) e de controle de acesso ao meio (MAC) já existentes, como mostra a Figura 1. Essas camadas adicionais agregam funcionalidades ao protocolo como capacidade de roteamento e segurança ao conteúdo das mensagens, além de possibilitar que as fabricantes e os usuário implementem as suas próprias aplicações nos dispositivos que utilizem ZigBee.

FIGURA

Os dispositivos ZigBee utilizam as faixas (Industrial, Scientific and Medical – ISM) de 868 e 915 Mhz além da faixa de 2,4 Ghz, para as transmissões de dados. A taxa dessas transmissões pode variar entre 20 e 250 Kbps e seu alcance pode chegar, em média, a 50 metros, dependendo do ambiente onde são realizadas as transmissões.

Na rede ZigBee um dispositivo pode assumir três papéis: roteador, coordenador e end device. Os roteadores são dispositivos que além de enviar e receber mensagens, po-dem encaminhar mensagens destinadas à outros dispositivos. Numa rede ZigBee sempre deve haver um único dispositivo roteador configurado como coordenador. Esses dispositi-vos tem as mesmas características dos roteadores, porém, exercem tarefas extras como o gerenciamento de inclusão/exclusão de dispositivos na rede. Já os end-devices são sempre a origem ou o destino das mensagens não podendo encaminhá-las.

Os dispositivos de uma rede ZigBee podem ser dispostos para formas topologias em forma de estrela, árvore ou malha, como mostra a Figura 2. A topologia em árvore é for-mada por um dispositivo coordenador no centro e diversos end-devices, nessa formação todas as mensagens passarão pelo coordenador para chegar ao seu destino. A topolo-gia em árvore funciona como se fosse uma série de redes em forma de estrela interliga-das. Na topologia em malha os dispositivos do núcleo da rede têm a função de roteador e com esta é possível alcançar longas distâncias nas transmissão das mensagens apenas encaminhando-as pelos dispositivo até que chegue ao seu destino. Essa capacidade de ex-tensão da rede torna o ZigBee vantajoso frente a outras tecnologias de transmissão sem fio que também possuem baixa taxa de transmissão como o Bluetooth (BLUETOOTH, 1998).

FIGURA

O ZigBee possui diversas maneiras de garantir a segurança na troca de mensagens, entre elas está a criptografia, que tem como objetivo evitar que as informações transmi-tidas sejam legíveis a intrusos na rede. Outra característica interessante do ZigBee é a economia de energia diante da baixa taxa de transmissão aliada a capacidade dos disposi-tivos configurados como end-devices poderem hibernar por certos períodos de tempo. Tais características permitem que esses dispositivos sejam alimentados até por baterias.

Arduino

Durante o período de desenvolvimento de projetos em hardware é fundamental a utilização de ferramentas que auxiliem nos testes e facilitem a construção desses sistemas. Com esse objetivo foi desenvolvido a plataforma Arduino. Ela consiste num kit que permite, com facilidade, a implementação de projetos que envolvam hardware e software. Essa plataforma é aberta e, por isso, qualquer fabricante pode desenvolver kits baseados no original.

Esse kit Arduino é composto de uma placa onde estão conectados um microcon-trolador da Atmel2, responsável pela execução da logica programável, e diversos LEDs e botões conectados as suas portas analógicas e digitais, além de portas seriais, podendo estas configurações variarem de acordo com o modelo do kit. A indicação das portas do microcontrolador pode ser vista na Figura 3.

FIGURA

Para a programação do microcontrolador presente no Arduino é utilizada a linguagem C, além de bibliotecas em C++. Para a escrita dos códigos pode ser utilizado o ambiente de desenvolvimento integrado (IDE) do Arduino. Essa IDE possui recursos para facilitar a implementação dos projetos no Arduino tais como diversos exemplos de códigos e uma ferramenta denominada Serial Monitor onde é possível visualizar os dados recebidos e, também, os dados enviados pela porta serial.

Além da conexão serial, os kits Arduino ainda possuem suporte a outros tipos de co-nexão como Ethernet, Wi-Fi e diversas outras. A expansão das funcionalidades do Arduino através de conexões de rede pode ser auxiliada com a utilização de shields. Esses shields são placas especificamente projetadas para encaixar nas portas do Arduino. No mercado existem shields para ethernet, 802.11, 802.15.4, Blutooth, controladores de motores de passo, etc.

Android

Telefones inteligentes oferecem aos usuários funcionalidades comuns às apresenta-das por computadores pessoais como acesso a redes de dados por conexões sem fio e aplicações com um grande grau de complexidade. Com a grande expansão do mercados desses telefones tornou-se viável uma solução capaz de funcionar em diferentes tipos de dispositivos com hardware diferentes. Com essa motivação foi criado o Android, um sistema operacional de código aberto desenvolvido pelo Google em conjunto com outras empresas dos setores de hardware, software e telecomunicações.

Como mostra a Figura 4, na base da pilha da arquitetura ZigBee está presente o Kernel Linux. Na camada acima estão as bibliotecas do sistema como a de gerenciamento de tela, de mídia, de gráficos e de banco de dados, entre outros. Ainda nessa camada está presente a Dalvik, uma máquina virtual Java otimizada para dispositivos móveis. Logo acima dessa segunda camada estão as classes que compõe a API do Android que são utilizadas pelas aplicações do sistema, presentes na camada superior a essa.

FIGURA 4

O Google disponibilizou uma série de ferramentas para auxiliar os desenvolvedores na criação de aplicações. Essas ferramentas estão contidas no kit de desenvolvimento de software (SDK) do Android. Na SDK estão presentes códigos com exemplos de utilização da API, um emulador de telefone celular, onde podem ser testadas as aplicações, e uma ferramenta para auxiliar na depuração dos códigos. Outra ferramenta disponibilizada pelo Google foi um plugin que permite a total integração da SDK com o IDE Eclipse, permitindo a compilação do código, a instalação e a execução no emulador com apenas um clique.

Para o desenvolvimento das aplicações do Android, é utilizada a linguagem Java, porém, para a criação das interfaces gráficas pode ser utilizado também arquivos em XML. Como é possível ver na Figura 5, nos objetos XML, que serão exibidos na tela da aplicação, existe um campo onde é inserido um valor de identificação desse objeto. Esses valores podem ser referenciados no código Java para que os objetos XML sejam manipulados por esse código, que permite a utilização de lógica bastante avançada.

FIGURA

DroidLar

Os sistemas de automação residencial presentes no mercado são, em sua maioria, centralizados, ou seja, um equipamento gerencia toda o sistema e transfere os comandos entre as interfaces de controle e os controladores de dispositivos. O projeto apresentado nesse artigo também atua dessa maneira. Nele, além do servidor centralizado - denomi-nado servidor de automação residencial (SAR) -, também estão presentes a interface de controle, implementada em forma de uma aplicação para telefones Android, e os controla-dores de dispositivos construídos com a utilização de kits Arduino.

Como mostrado pela Figura 6, o cliente rodando no Android utiliza uma conexão IP (Wi-Fi, 3G, entre outros) para a comunicação, já os controladores de dispositivos utilizam a rede ZigBee para a troca das mensagens. Por isso, é tarefa do SAR servir de ponte entre essas duas partes do sistema.

FIGURA

Controladores de Dispositivos

Para o controle dos eletroeletrônicos da residência são necessários dispositivos ca-pazes de interpretar uma informação e executar determinada ação mediante o recebimento de uma mensagem. Por isso e pelas razões apresentadas na Seção 3, optou-se por utilizar kits Arduino para a prototipagem desses controladores no DroidLar.

A comunicação entre os controladores de dispositivos e o SAR se faz através do protocolo ZigBee, para tal foram empregados módulos XBee Series 2.5, fabricados pela Digi International3. Nos kits Arduino esses módulos são conectados ao shield XBee e no SAR os módulos são conectados a um adaptador serial o qual fica conectado a uma porta USB. No DroidLar, todos os módulos XBee dos controladores foram configurados como roteadores, caracterizando uma rede em malha. Dessa forma cada controlador de dispositivo poderá encaminhar mensagens para outros roteadores, permitindo que o SAR interaja com dispositivos que estejam além do alcance de seu rádio.

Para a configuração dos módulos XBee pode ser utilizado um aplicativo, criado tam-bém pela Digi, chamado X-CTU. Nele é possível escolher as características que o disposi-tivo terá na rede, se ele será um roteador ou end-device, por exemplo. Também é possível selecionar a potência de transmissão do sinal, a criptografia nas mensagens e a taxa de transmissão da porta serial. No DroidLar os módulos foram configurados para não utiliza-rem criptografia, o que resultaria numa redução do tamanho de informação contida num pacote. A taxa de transmissão escolhida para ser usada na porta serial foi de 9,6 Kbps.

Os controladores dispositivos executam dois tipos de procedimentos: atuação – que executa ações como ligar, desligar, aumentar ou diminuir a intensidade da potência do dispositivo eletrônico que este controla, por exemplo, uma lâmpada; relatório – envia in-formações ao SAR a respeito de suas configurações, por exemplo, número de dispositivos que está controlado, o estado atual de cada dispositivo (ligado, desligado, etc.). O relatório é enviado sempre que o controlador for ligado ou sempre que o SAR solicitar.

SAR

O servidor de automação residencial (SAR) consiste na parte central do DroidLar. Tem como função gerenciar os controladores de dispositivos, enviando comandos ou rece-bendo informações sobre o estado de cada e interagir com o cliente Android. Assim, atua como uma ponte entre as duas tecnologias de transmissão sem fio, ZigBee e 802.11. O SAR deve permanecer operando constantemente, pois, além de gerenciar as mensagens trocadas entre os membros da rede, é responsável também por executar tarefas agendadas pelo usuário como acender ou apagar lâmpadas em determinadas períodos.

O SAR foi implementado na forma de um software rodando em um computador pes-soal. Consiste de um Servlet Java que no presente protótipo está sendo executado no ser-vidor de aplicação Glassfish4. A vantagem de rodar aplicações sobre os servidores Web é que estes se encarregam do gerenciamento de conexões simultâneas e também permitem conexões seguras (HTTPS). O fato de usar um protocolo padronizado (HTTP)(FIELDING et al., 1999) provê facilidades para criação de outros clientes para o SAR, por exemplo, clien-tes Desktop, Web ou mesmo para outros sistemas operacionais de telefones inteligentes.

Para essa aplicação se comunicar com o cliente no Android é necessário que esse computador esteja conectado em alguma rede IP, já para a comunicação com os kits Ar-duino, é necessário que haja um módulo XBee, assim como nos Arduinos, conectado em uma das portas USB desse computador. Esse módulo XBee tem que estar configurado como coordenador da rede ZigBee, sendo o responsável pelas configurações dessa rede.

O servlet também é responsável pelas mensagens de controle dos dispositivos. Nes-sas mensagens estão contidas informações como o tipo de ação tomada pelo dispositivo, o valor utilizado para a execução dessa ação e o endereço do dispositivo responsável pelo controle. Essa mensagem poderia ser utilizada, por exemplo, no acendimento de uma lâmpada com 50% de sua intensidade controlada pelo dispositivos com um determinado endereço. O outro tipo de mensagem utilizado é aquela trocada apenas entre o cliente Android e o SAR. Essas mensagens servem para executar funcionalidades básicas do ser-vidor, como a autenticação do usuário e também funcionalidades mais complexas, como o agendamento de perfis, por parte do usuário.

Cliente Android

Os sistemas de automação residencial atuais permitem a utilização de diversos tipos de interfaces de controle como painéis afixados em paredes, controles remotos tradicionais e, até mesmo, páginas Web, que podem ser visualizadas por um navegador de Internet no computador pessoal ou no telefone celular. Aplicações específicas para telefones in-teligentes tem a usabilidade como principal vantagem quando comparadas com páginas web.

O DroidLar utiliza um aplicativo rodando num telefone Android como interface de con-trole. Esse aplicativo, além de controlar os eletroeletrônicos da residência, também pos-sibilita a criação e o gerenciamento dos perfis do usuário. Esses perfis são formados por um grupo de dispositivos que serão ligados/desligados automaticamente em determinadas datas. Para se comunicar com o SAR é necessário apenas que o telefone inteligente, no qual o aplicativo está rodando, esteja conectado a uma rede IP.

Quando o usuário abre a aplicação é exibida à ele a tela inicial mostrada na Figura 7a. Nessa tela é possível escolher se quer controlar os dispositivos da residência (Figura 7b), alterar os perfis dos dispositivos (Figura 8a) ou editar as configurações para a conexão com o SAR (Figura 8b). Para que o usuário execute qualquer ação na aplicação, é necessário que ele esteja autenticado no SAR, por isso, na primeira vez que o usuário abre o aplicativo é exibida a tela de configurações. Depois de salvar as configurações ele pode navegar por todas telas normalmente, podendo estas configurações serem alteradas posteriormente. Na tela de controle o usuário pode, por exemplo, acender, apagar ou definir um valor inter-mediário para as lâmpadas da residência.

Códigos fonte

Monografia

Monografia.pdf