CENTRO DE ENGENHARIA ELTRICA E INFORMTICA DEPARTAMENTO DE ENGENHARIA ELTRICA CURSO DE GRADUAO EM ENGENHARIA ELTRICA
LUIZ CLAVER PEREIRA GRILO
DESENVOLVIMENTO DE UM SISTEMA DE AUTOMAO RESIDENCIAL BASEADO EM MICROCONTROLADOR
Campina Grande, Outubro de 2013 2
LUIZ CLAVER PEREIRA GRILO
DESENVOLVIMENTO DE UM SISTEMA DE AUTOMAO RESIDENCIAL BASEADO EM MICROCONTROLADOR
Trabalho de Concluso de Curso submetido Unidade Acadmica de Engenharia Eltrica da Universidade Federal de Campina Grande como parte dos requisitos necessrios para a obteno do grau de Bacharel em Cincias no Domnio da Engenharia Eltrica.
rea de Concentrao: Controle e Automao
Orientador: Prof. Dr. Pricles Rezende Barros
Campina Grande, Outubro de 2013 3
LUIZ CLAVER PEREIRA GRILO
DESENVOLVIMENTO DE UM SISTEMA DE AUTOMAO RESIDENCIAL BASEADO EM MICROCONTROLADOR
Trabalho de Concluso de Curso submetido Unidade Acadmica de Engenharia Eltrica da Universidade Federal de Campina Grande como parte dos requisitos necessrios para a obteno do grau de Bacharel em Cincias no Domnio da Engenharia Eltrica.
Aprovado em / /
_____________________________________________________ Professor Universidade Federal de Campina Grande
_____________________________________________________ Professor Dr. Pricles Rezende Barros Universidade Federal de Campina Grande 4
AGRADECIMENTOS
Agradeo aos meus pais: Marcelo Bezerra Grilo e Tnia Maria Augusto Pereira, por terem me ensinado a viver! Com eles aprendi a gostar de estudar, viajar, apreciar e fazer msica, respeitar as pessoas, no fazer coisas erradas e a fazer boas festas! Aos meus irmo: Simone Augusto Pereira e Marcelo Grilo Jr, pela pacincia. Em particular ao mais novo, por ter me aguentado nos diversos momentos em que estivemos juntos, na msica no esporte e nos estudos. Aos meus amigos, os quais no vou citar nomes, caso contrrio posso me complicar depois. Com vocs aprendi o que so todos aqueles adjetivos bonitos que usamos nos poemas e nas letras de msicas. Como sei que nem todos vo ler esse relatrio, ento fao um especial agradecimento aos amigos que conheci na poca da universidade. Alguns foram apenas colegas de disciplina ou de estudos. Mas fico feliz por ter conhecido pessoas que tenho a certeza e vontade de manter contato pelo resto da vida, todos vocs so parcela importante nessa conquista. Finalmente agradeo a todos os que fizeram e fazem o curso de Engenharia Eltrica na UFCG. Aos professores, em especial o Prof. Pricles Rezende Barropor ter incentivado e apoiado a ideia de fazer um trabalho envolvendo automao residencial e arduino, ao secretariado em especial a Adail e Tchay, que tornam a nossa vida mais fcil e doce no tratar dos problemas.
Foi bom, foi divertido e que venha muito mais! Muito obrigado a todos e at a prxima!
5
RESUMO
A automao residencial vem alavancando ndices de 35% de crescimento no mercado nacional. Isso se deve ao barateamento dos produtos e popularizao de novas tecnologias que facilitam a implementao do projeto. A automao residencial pode ser subdivida em trs segmentos: automao da segurana, controle multimdia e controle e automao de acionamentos de iluminao e outros circuitos. Um projeto completo contempla as trs variaes, mas uma vantagem desse tipo de sistema a sua modularidade, possibilitando ao cliente a instalao sucessiva do sistema. Esse trabalho tem como objetivo desenvolver um sistema de automao residencial, contemplando automao da segurana, acionando alarmes atravs da leitura de sensores; e o controle de acionamentos de circuitos de iluminao e irrigao, tudo isso utilizando o microcontrolador Arduino como unidade de processamento central. Os principais objetivos so desenvolver um sistema que seja menos invasivo no processo de instalao na residncia, que possa ser controlado localmente atravs do smartphone com sistema operacional Android, utilizando comunicao bluetooth, e que tambm possa ser controlado de forma remota atravs da internet e, finalmente, que seja um sistema de baixo custo. Um prottipo da instalao eltrica monofsica de uma casa foi desenvolvido para validar a arquitetura do sistema de automao proposto e servir como fonte de estudos para desenvolvimento e aperfeioamento em futuros projetos de automao residencial.
Figura 1 - Diagrama da arquitetura proposta para o sistema de automao residencial. ........... 10 Figura 2 - Instalao eltrica necessria para acionamento das cargas atravs dos interruptores ou de comandos bluetooth via celular. ........................................................................................ 11 Figura 3 - Placa de desenvolvimento Arduino, com microcontrolador ATMEL de 8 bits. ....... 13 Figura 4 Diagrama de blocos do microcontrolador Atmega328, unidade de processamento do Arduino Uno R3. ......................................................................................................................... 14 Figura 5 Tela do software utilizado para escrever os sketchs e programar o Arduino. .......... 18 Figura 6 Diversos shields para ser utilizado como mdulo de expanso das funcionalidades de hardware do Arduino. ............................................................................................................. 19 Figura 7 Shield Ethernet, acoplado ao Arduino agrega a funo de acesso internet via TCP/IP. ........................................................................................................................................ 20 Figura 8 Troca de informaes entre mestre e escravo atravs de protocolo de comunicao SPI. .............................................................................................................................................. 21 Figura 9 Pinos utilizados pela comunicao SPI do shield de expanso ethernet................... 22 Figura 10 Topologia de acesso ao servidor do Arduino de forma remota via internet. .......... 23 Figura 11 Pacote de dados em uma comunicao serial assncrona. ...................................... 25 Figura 12 Hardware bluetooth utilizado para comunicao entre Arduino e smatphone. ...... 26 Figura 13 Conexo entre o mdulo bluetooth e o Arduino. .................................................... 27 Figura 14 Mdulo de construo da interface grfica do aplicativo no AppInventor. ............ 28 Figura 15 Mdulo de programao do AppInventor. Programao intuitiva atravs da utilizao de blocos para construo da lgica. .......................................................................... 28 Figura 16 Sensor de presena infravermelho. ......................................................................... 29 Figura 17 sensor de umidade do solo. ..................................................................................... 30 Figura 18 Sensor detector de chama e sensor detector de gs. ................................................ 31 Figura 19 Interruptor paralelo ou three-way, necessrio para fazer a instalao eltrica com acionamento em dois pontos distintos de forma simultnea. ...................................................... 31 Figura 20 Circuito de Acionamento de um rel para controle de carga. ................................. 32 Figura 21 Placa com quatro rels acionado por sinal TTL 5 V, com sadas 220 Vca 10A. . 33 Figura 22 Circuito para promover dimerizao com o Arduino e um triac. ........................... 34 Figura 23 fotografia da placa de controle de potncia de cargas. ........................................... 34 Figura 24 Vistas do sistema de prottipo construdo para testar o sistema de automao residencial proposto. ................................................................................................................... 36 Figura 25 Construo do prottipo e verso final j com as conexes eltricas efetuadas conjuntamente com o sistema de automao residencial. ........................................................... 37 Figura 26 Diagrama multifilar da instalao eltrica do prottipo, onde RLn so os rels do mdulo de acionamento de cargas e U1 o circuito de controle de potncia entregue a carga, apresentado anteriormente........................................................................................................... 38 Figura 27 Tela inicial do aplicativo......................................................................................... 40 Figura 28 Tela de seleo da conexo com hardware bluetooth ou retorno para tela anterior. ..................................................................................................................................................... 40 Figura 29 Tela de controle dos dispositivos de instalao eltrica do prottipo, trs lmpadas (ao liga / desliga) e uma carga luminosa, (ao aumenta ou diminui intensidade luminosa). . 41 Figura 30 Captura da tela de controle do sistema via internet. ............................................... 41 Figura 31 Algoritmo para processamento dos dados recebidos na comunicao bluetooth e acionamento das sadas digitais. .................................................................................................. 43 Figura 32 - Cdigo para o sketch do Arduino. ........................................................................... 44 7
SUMRIO
1. INTRODUO ................................................................................................................... 8 2. ARQUITETURA DO SISTEMA ..................................................................................... 10 3. DESCRIO DETALHADA DO SISTEMA ................................................................ 12 3.1 Unidade central de processamento .......................................................................... 12 3.1.1 O Microcontrolador ATMega328 .................................................................... 13 3.2 Descrio do Softwaredo Arduino ........................................................................... 17 3.3 Mdulo de expanso e conectividade com a internet ............................................. 18 3.4 Conexo com a Internet ............................................................................................ 22 3.5 Controle sem fio via comunicao bluetooth ........................................................... 23 3.6 Smartphone Android e AppInventor ...................................................................... 27 3.7 Mdulos de entrada e sada ...................................................................................... 29 4 DESENVOLVIMENTO DO PROTTIPO EXPERIMENTAL .................................. 35 4.1 Construo do prottipo experimental.................................................................... 35 5 TESTES E RESULTADOS .............................................................................................. 39 5.1 Aplicativo Domotic Blue Server ................................................................................ 39 5.2 Mdulos de Controle e Lgica no Arduino ............................................................. 41 5.2.1 Controle dos Rels ............................................................................................. 42 5.2.2 Automatismos atravs dos sensores ................................................................. 42 5.2.3 Pgina Web do Servidor Implementado ......................................................... 44 6 CONCLUSO E TRABALHOS FUTUROS.................................................................. 46 7 BIBLIOGRAFIA ............................................................................................................... 47 8 ANEXOS ............................................................................................................................ 48
8
1. INTRODUO
Ao terminar o expediente no fim do dia, um indivduo, antes de sair do trabalho, acessa a internet do seu smartphone e verifica atravs de cmeras a situao de sua casa. Aciona iluminao externa e interna e pode escolher alguns cenrios de recepo, que incluem som ambiente ou temperatura padronizada. Ao chegar casa, o porto se abre automaticamente ao reconhecer o veculo e registra a sua entrada. J dentro da casa o indivduo pode acionar o sistema multimdia e assistir a programao gravada da TV ou verificar as tarefas realizadas automaticamente ao longo do dia, como por exemplo, a irrigao do jardim, devido deteco de um baixo nvel de umidade no solo. O cenrio descrito anteriormente no fictcio e hoje em dia possibilitado atravs de sistemas de automao residencial. Segundo dados da Associao Brasileira de Automao Residencial (Aureside), o crescimento do mercado de automao residencial no Brasil de 35% ao ano. O crescimento se deve a reduo nos custos das tecnologias e ao aumento do nmero de empresas e servios especializados na rea. Os servios de automao residencial podem ser divididos em trs segmentos: automao da segurana, controle multimdia e automao e controle de acionamentos de iluminao e outros circuitos. Um projeto completo contempla as trs variaes, mas uma vantagem desse tipo de sistema a sua modularidade, possibilitando ao cliente a instalao sucessiva do sistema. Por exemplo, possvel fazer um projeto de automao para controle de iluminao e acionamento de eletrodomsticos; em seguida, pode-se instalar um mdulo de segurana contendo cmeras e controles de acesso; por fim, possvel instalar um sistema multimdia para controle da televiso e som ambiente. O desenvolvimento tecnolgico outro fator que incentiva o uso de automao residencial. O avano e barateamento dos microprocessadores e, principalmente, o desenvolvimento de tecnologias de comunicaes, como a internet e os telefones mveis, possibilitam portabilidade e um controle descentralizado dos sistemas. Alm disso, redes de comunicao sem fio possibilitam projetos menos invasivos a estrutura de construo da casa. Esse projeto apresenta como proposta a implementao de um sistema de automao residencial de baixo custo, utilizando um microcontrolador Arduino como fonte central de processamento. O controle do sistema feito atravs de um smartphone com sistema operacional Android, utilizando comunicao bluetooth e tambm atravs da internet, utilizando o protocolo TCP/IP. O controle convencional, atravs de 9
interruptores, para acionar circuitos de iluminao, por exemplo, continua coexistindo com os novos controles de automao, podendo ser necessria apenas a substituio de interruptores simples por interruptores paralelos, nos casos onde esses interruptores no estavam previstos. O projeto visa contemplar a automao da segurana, verificando vrios parmetros de interesse atravs de sensores: deteco de chamas, vazamento de gs, e sensor de presena; e o controle e automao de acionamentos, possibilitando ao usurio o controle de iluminao, irrigao e acionamentos de cargas diversas, como por exemplo, intensidade luminosa de determinado ambiente. Para validao e testes do sistema, foi desenvolvido um prottipo de uma instalao eltrica monofsica de uma residncia. O prottipo contm trs lmpadas, simulando o circuito de iluminao; uma lmpada dimerizavel, simulando o controle de intensidade luminosa; uma vlvula eltrica, para simular um sistema de irrigao. Quatro interruptores simulam os acionamentos convencionais dos circuitos de iluminao e irrigao, uma tomada ainda disponibilizada, para fornecer a alimentao necessria ao funcionamento do sistema. Circuitos de acionamento a rel e a chaveamento com TRIAC foram utilizados para auxiliar no processo de acionamento automtico das cargas. Sensores, LEDS e buzinas so utilizados para interagir com o meio e fornecer sinalizaes para o usurio.
10
2. ARQUITETURA DO SISTEMA
O sistema de automao residencial proposto visa automatizar o controle de tarefas cotidianas e possibilitar ao usurio que controle acionamento de cargas ou acompanhe o status do sistema atravs do smartphone ou da internet. Tambm importante que o sistema seja pouco invasivo na instalao em uma residncia e que possua componentes de baixo custo. A Figura 1 um diagrama geral da arquitetura proposta para desenvolvimento do sistema.
Figura 1 - Diagrama da arquitetura proposta para o sistema de automao residencial.
O sistema possui uma unidade central de processamento, onde os sinais de entrada de sensores e interruptores ou atravs de protocolo de comunicao so processados para gerar as respectivas sadas desejadas. Os sinais de sada so enviados para mdulos de 11
acionamento de carga ou interfaces com o usurio, como LEDs e sonorizadores. A interface entre o smartphone e o sistema se d atravs de um mdulo de comunicao bluetooth. O sistema ainda possui hardware dedicado para se conectar internet, de forma que seja possvel receber e enviar comandos de um usurio remotamente. O sistema se conecta aos interruptores da rede eltrica residencial existente, devendo a nica adaptao a ser feita, caso necessrio, seja a substituio dos interruptores simples por interruptores paralelos. A nica instalao eltrica necessria para funcionamento do sistema o fio de retorno dos interruptores, que deve ser conectado em paralelo com a placa de rels utilizada. A Figura 2 apresenta um detalhe da conexo eltrica entre os dois componentes, de forma que seja possvel acionar as cargas atravs dos interruptores ou do smartphone de forma independente.
Figura 2 - Instalao eltrica necessria para acionamento das cargas atravs dos interruptores ou de comandos bluetooth via celular.
12
3. DESCRIO DETALHADA DO SISTEMA
Nesse captulo sero apresentados a descrio de cada parte integrante do sistema de automao residencial desenvolvido e previamente apresentado na arquitetura geral. Tambm sero apresentados conceitos tericos referentes a protocolos de comunicao e dispositivos utilizados no desenvolvimento do projeto.
3.1 Unidade central de processamento No sistema de automao residencial desenvolvido, a unidade central de processamento responsvel controle dos sinais de entrada e sada digitais e analgicos, pelo processamento dos protocolos serial e SPI, pela execuo das funes desenvolvidas para controle do relgio e das lgicas de acionamento de rels e sensores, e tambm pela gerao de um servidor que processa as requisies HTTP recebidas via internet. O hardware escolhido para ser unidade central de processamento foi o sistema microcontrolador Arduino. A plataforma Arduino foi desenvolvida no Instituto de Design de Interao Ivrea, na Itlia, em meados de 2005, pelo professor Massimo Banzi. O objetivo de seu desenvolvimento era o de construir uma plataforma de hardware e software capaz de controlar e mensurar o mundo fsico atravs do processamento de entradas e sadas, que abstrasse ao mximo a parte eletrnica, permitindo que o foco fosse mantido no desenvolvimento da ideia base do projeto. Denominou-se tal plataforma de Arduino (Figura 3), nome de origem germnica Hardwin, hard (forte) e win (amigo), e que em italiano tornou-se Arduino. A plataforma possui a documentao aberta, disponibilizando todos os esquemticos de hardware e bibliotecas para as mais diversas aplicaes e uma IDE de programao em C/C++. Utiliza um microcontrolador de oito bits como unidade de processamento. Apresenta um design especfico de forma que outros mdulos (Shields) possam ser facilmente adicionados para agregar funcionalidades. As suas principais caractersticas so:
13
Figura 3 - Placa de desenvolvimento Arduino, com microcontrolador ATMEL de 8 bits.
Microcontrolador ATmega328; 14 E/S digitais (das quais 6 so PWM); 6 entradas analgicas 10 bits de resoluo; Comunicao Serial, SPI e I2C on board; 16 MHz de clock; Reset por software;
3.1.1 O Microcontrolador ATMega328 O microcontrolador ATmega328 a unidade central de processamento da placa de desenvolvimento Arduino. O seu funcionamento pode ser resumido atravs do diagrama funcional (Figura 4), que apresenta as estruturas de hardware presentes no dispositivo.
14
Figura 4 Diagrama de blocos do microcontrolador Atmega328, unidade de processamento do Arduino Uno R3. 15
O ncleo AVR tem trinta e dois registradores de uso geral, estando todos conectados Unidade Lgica Aritmtica. O AVR permite que dois registradores independentes sejam acessados em uma nica instruo, executada em um nico ciclo de clock. Essa caracterstica operacional resulta em uma arquitetura mais eficiente, alm de permitir obter taxas de transferncia de dados 10 vezes mais rpidas do que os microcontroladores CISC 1 convencionais. Alm dos registradores descritos posteriormente, h ainda trs temporizadores / contadores com modos de comparao, interrupes interna e externa, serial programvel USART, uma porta SPI, um Watchdog Timer 2 com oscilador interno, e cinco modos selecionveis de economia de energia. No modo de wait-state da CPU, os mdulos: SRAM,Timer/Counters, USART, porta SPI e a interrupo continuam funcionando. No modo de economia de energia, o temporizador assncrono continua funcionando, permitindo ao usurio manter um temporizador de base enquanto o resto do dispositivo encontra-se hibernando. O modo ADC de reduo de rudo interrompe a CPU e todos os mdulos E/S, exceto, o temporizador assncrono ADC, para minimizar o rudo de comutao durante as converses ADC. No modo de wait-state, o oscilador est em funcionamento enquanto o resto do dispositivo hiberna, o que permite um start-up rpido e com baixo consumo de energia. A AVR ATmega328 suportada por um pacote completo de programas e ferramentas de desenvolvimento de sistemas, incluindo compiladores C, Macro Assemblers e depurador/simulador de programa. A plataforma Arduino consiste em um arcabouo de hardware e software auxiliares ao AVR para facilitar o desenvolvimento de solues que utilizem este microchip da fabricante ATMEL. A grande diferena entre os vrios modelos de Arduino disponveis no mercado reside na memria do microcontrolador, sendo essa uma caracterstica determinante em seu desempenho. No microcontrolador ATMega328 h trs tipos de memria: Flash, SRAM, EEPROM. A memria Flash utilizada para o armazenamento do programa que
1 CISC(Complex Instruction Set Computer) uma linha de arquitetura de processadores capaz de executar centenas de instrues complexas diferentes. Sendo assim, extremamente verstil. Os processadores baseados em um conjunto de instrues complexas contm microprogramao, ou seja, um conjunto de cdigos de instrues, que so gravadas no processador, permitindo-lhe receber as instrues dos programas e execut-las, utilizando as instrues contidas na sua microprogramao.
2 Wacthdog Timer um dispositivo eletrnico temporizador que dispara um reset ao sistema, se o programa principal devido a alguma condio de erro deixar de fazer reset no Watchdog timer. 16
carregado no microcontrolador para ser executado, bem como para o armazenamento do bootloader. O bootloader responsvel pelo gerenciamento da inicializao do microchip, e desempenha algumas tarefas programadas, como determinar quando reprogramar ou passar para a aplicao principal. A memria SRAM (Static Random Access Memory) a memria utilizada para armazenamento das variveis de processamento. Quando o Arduino desenergizado, as informaes armazenadas nesta memria so perdidas. Diferentemente de EEPROM (Electrically Erasable Programmable Read-Only Memory), que responsvel pelo armazenamento de constantes ou dados de configurao, e apresenta longos ciclos de gravao e rpida leitura de dados. O modelo Arduino Uno Verso 3 tem 32 kB de memria Flash, dos quais 0,5 kB so destinados ao bootloader, 2 kB de SRAM e uma EEPROM de 1 kB. O ATMega328, assim como outros microcontroladores, oferece ainda um conversor A/D. Na converso de um sinal analgico em digital, fazem-se amostragens, e representa-se a leitura realizada atravs de um valor equivalente binrio, de acordo com a resoluo do conversor A/D. A preciso do conversor determinada pelo nmero de bits que o mesmo gera para representar as grandezas analgicas. O conversor A/D do ATmega de 10 bits, representando 2 10 nveis de tenso distintos. Assim, a resoluo do conversor pode ser expressa por:
=
em que
a tenso de referncia [V]; e n a nmero de bits.
Desse modo, sendo a opo default da tenso de referncia
= 5 V, para o Arduino, tm-se uma resoluo de:
= 5 2 10 = 4,88
Diz-se, portanto, que o Arduino pode detectar variaes de 5 mV. H, porm, a possibilidade de alterar-se o
, atravs do pino de entrada
. Desse modo, com a
possibilidade de diminuio da resoluo de referncia, tm-se tambm uma diminuio 17
dos valores de tenso detectveis e uma consequente diminuio do nvel mximo de medio de tenso permitido, o que pode no ser desejvel em determinadas aplicaes. O ATmega328 um microcontrolador com elevada capacidade de processamento e um conjunto de perifricos diversificado, conferindo, dessa forma, uma soluo altamente eficaz para muitas aplicaes de controle embarcado. Quando utilizado na placa de desenvolvimento Arduino, se torna uma soluo perfeita para ser a unidade central de processamento do nosso sistema de automao, visto que porttil, apresenta conjunto de entradas e sadas necessrias e possui documentao aberta disponvel para ser acessada e utilizada sem custos adicionais.
3.2 Descrio do Softwaredo Arduino A plataforma de software do Arduino, modelada na linguagem de programao Processing 3 , denominada IDE (Integrated Devolopment Environment), trata-se de um programa executado em um computador, que permite a codificao de programas em linguagem especfica, sketches, a serem carregados na plataforma de hardware. Uma vez requerido o upload do sketch na placa Arduino, o cdigo escrito em linguagem especfica traduzido na Linguagem C. Na sequncia, o mesmo compilado pelo AVR- GCC, responsvel pela traduo final para a linguagem entendida e conhecida pelo microcontrolador, simplificando, dessa forma, a programao de microcontroladores. Desse modo, o ciclo de programao de um Arduino pode ser resumido como: 1. Escreve-se o Sketch; 2. Compila-se o Sketch; 3. Liga-se a placa a uma porta USB do computador; 4. Envia-se o Sketch para a placa, atravs da USB; 5. A placa executa o programa; O IDE pode ser executado em qualquer sistema operacional. dividido em trs partes: o Toolbar no topo, Sketch Windows no centro e a janela de mensagens na base (Figura 05).
3 Processing uma linguagem de programao de cdigo aberto e ambiente de desenvolvimento integrado desenvolvido em 2001 pelo MIT (Massachusetts Institut of Tecnology), construdo para comunidades de projetos visuais com o objetivo de ensinar noes bsicas de programao de computador em um contexto visual. 18
Figura 5 Tela do software utilizado para escrever os sketchs e programar o Arduino.
3.3 Mdulo de expanso e conectividade com a internet Como explicado, uma das vantagens do Arduino a possibilidade de expanso das suas funcionalidades atravs de mdulos adicionais, tambm conhecidos como Shields. Os Shields so placas de circuitos impresso que so encaixadas sobre a placa do Arduino e agregam recursos de hardware ao microcontrolador, portanto, apresenta como principal caracterstica ter o mesmo design da placa do Arduino UNO. Exemplos de Shields desenvolvidos para o Arduino so (Figura 6): Arduino GSM Shield agrega conexo atravs de rede GPRS. Arduino Bluetooth Shield Agrega conectividade bluetooth ao microcontrolador. Arduino WiFi Shield agrega conectividade internet sem fio. Arduino Motor Shield circuito para controle de cargas indutivas, como motores. 19
Arduino Sensor Shield placa desenvolvida para ler sinais de diversos sensores analgicos. Arduino Ethernet Shield Conecta o microcontrolador a internet atravs de rede ethernet.
Figura 6 Diversos shields para ser utilizado como mdulo de expanso das funcionalidades de hardware do Arduino.
Para o projeto do sistema de automao residencial, foi escolhido o Shield Ethernet com o intuito de promover a conexo do sistema com a internet, utilizando protocolo de comunicao TCP/IP. A escolha do Shield Ethernet se justifica pois a maioria dos projetos de automao residencial prov acesso internet, de forma que seja possvel o usurio verificar o status do sistema ou enviar comandos de forma remota. Ele possui menor custo que os demais, apresenta conexo cabeada ethernet com conector padro RJ45, o que implica em maior robustez ao sistema, e disponibilidade em estoque para aquisio imediata. As principais caractersticas desse shield so listadas a seguir: Controlador de ethernet: Wiznet W5100. Velocidade da conexo: 10/100 Mb. Conector padro RJ45. Conexo com o Arduino via protocolo SPI. Conector micro-SD, para criar um servidor de arquivos atravs de carto de memria.
20
Figura 7 Shield Ethernet, acoplado ao Arduino agrega a funo de acesso internet via TCP/IP.
Como explicado, o shield ethernet se comunica com a placa do Arduino atravs de protocolo de comunicao SPI (Serial Peripheral Interface). O SPI um protocolo de dados serial sncrono, utilizado por microcontroladores para comunicao rpida com um ou mais dispositivos perifricos em curtas distncias. Tambm pode ser usado para comunicao entre dois microcontroladores. Em uma comunicao SPI, sempre h um mestre e um ou mais escravos, que se comunicam entre si atravs de uma conexo full-duplex. Os seguintes fios constituem a conexo SPI: MOSI (Master Out Slave In): Canal responsvel pelo envio de dados do mestre para o escravo; MISO (Master In Slave Out): Canal responsvel pelo envio de dados do escravo para o mestre; SCK (Serial Clock): Canal para envio do sinal de clock; SS (Slave Select): Canal utilizado pelo mestre para habilitar ou desabilitar a conexo com o escravo. Se na conexo existir mais de um escravo, todos compartilham os canais citados anteriormente, com exceo deste. Cada escravo possui seu SS. E quando este pino estiver em nvel baixo, h conexo com o mestre e quando estiver em nvel alto, o escravo ignora as informaes do barramento. Na comunicao SPI so utilizados dois registradores de deslocamento para a troca de informaes, um pertencente ao mestre e o outro ao escravo. Os bits so deslocados e enviados um por vez, entre os registradores. medida que um bit 21
transmitido pelo canal MOSI, outro recebido pelo canal MISO, e aps todos serem enviados, os registradores do mestre e do escravo estaro com os dados trocados. A Figura 8 ilustra a troca de informaes neste tipo de comunicao.
Figura 8 Troca de informaes entre mestre e escravo atravs de protocolo de comunicao SPI.
Para utilizar o shield ethernet com o Arduino Uno R3, necessrio adicionar duas bibliotecas de software disponibilizadas gratuitamente no site do Arduino, e que so instaladas junto com a IDE de programao dos sketchs. As bibliotecas Ethernet.h e SPI.h. tem ligao direta com as conexes apresentadas na Figura 9 e possuem funes predefinidas para definir IP, escrever pelo canal ethernet, definir um cliente, definir um servidor, ler e escrever comandos SPI, definir parmetros de configuraes do protocolo.
22
Figura 9 Pinos utilizados pela comunicao SPI do shield de expanso ethernet.
3.4 Conexo com a Internet Como descrito, uma das funcionalidades do projeto promover conexo com a internet, de forma que seja possvel o usurio verificar o status do sistema ou atuar de forma remota, para tomar algumas aes de controle. O meio que o Arduino se conecta a internet atravs do shield ethernet apresentado anteriormente, contudo algumas adaptaes so necessrias para correto funcionamento da conectividade com a internet. No Arduino, com auxlio das funes da biblioteca ethernet.h, disponvel na IDE instalada no PC, possvel criar um pequeno servidor HTTP com uma pgina contendo as informaes que deseja-se apresentar ao usurio. Contudo, para correta configurao do servidor, necessrio que a rede possua IP fixo, e que o roteador da residncia onde o sistema for instalado, seja configurado para liberar o acesso de forma remota ao servidor criado no Arduino. Tambm no roteador local que espera-se que sejam implementadas verificaes de login para segurana do acesso, visto que as limitaes de memria do Arduino no permitem que sejam programados muitos recursos. A Figura 10 apresenta uma arquitetura da conexo com a internet do sistema de automao residencial proposto. 23
Figura 10 Topologia de acesso ao servidor do Arduino de forma remota via internet.
3.5 Controle sem fio via comunicao bluetooth Outro recurso presente no projeto a possibilidade de controlar os circuitos de acionamentos, atravs de um telefone celular, do tipo smartphone, utilizando comunicao sem fio. Esse recurso est presente em praticamente todos os sistemas de automao residencial encontrados no mercado, portanto uma funcionalidade essencial a ser implementada. Para o sistema de automao residencial desenvolvido foi escolhido um smartphone com sistema operacional Android com suporte comunicao bluetooth. Por ser uma tecnologia que permite uma comunicao sem fios entre dispositivos, o bluetooth utiliza a faixa de frequncia de 2.4GHz. Seu padro definido por um grupo de empresas (SIG), as quais possuem interesse no dispositivo, que tambm supervisiona o desenvolvimento das especificaes, bem como promove e protege a marca. 24
O bluetooth tem por objetivo prover um meio de baixo custo, baixo consumo de energia e baixa complexidade de configurao para interligar dispositivos eletrnicos diversos, tais como telefones celulares, notebooks, desktops, cmeras digitais, impressoras e perifricos em geral. Por esta capacidade de interligao com dispositivos diversos, o Bluetooth foi selecionado como meio de comunicao para o envio dos dados deste projeto. Um segundo tipo de comunicao sem fio, diversas vezes utilizado em projetos de automao residencial a ZigBee. No foi utilizado ZigBee pois no possvel comunicao com smartphones ou computadores de forma simplificada e direta, como no caso do bluetooth. Os dispositivos que possuem a tecnologia Bluetooth so divididos em trs classes, de acordo com a potncia do sinal que podem produzir. As classes so especificadas na tabela abaixo.
Tabela 1- Classes de dispositivos Bluetooth Classe Pot Max (mW) Pot Max (Dbm) Cobertura (m) 1 100 20 100 2 2.5 4 10 3 1 0 1
Dependendo do tipo, os dispositivos bluetooth podem fornecer determinados servios para as aplicaes, tais como envio e recebimento de arquivos, conexo a uma rede remota atravs do celular, entre outros. O servio de interesse deste trabalho o SPP (Serial Port Profile), que permite que um dispositivo estabelea conexo com outro a partir da criao de uma porta serial virtual, possibilitando que ambos se comuniquem atravs de uma conexo serial sem fio. Tal servio utiliza um protocolo de emular portas seriais denominado de RFCOMM. A comunicao serial corresponde transmisso e recepo de um bit de dados por vez. Existem dois tipos de comunicao serial, a sncrona e a assncrona. Na comunicao sncrona, deve haver o envio do sinal de clock entre os dispositivos, j na comunicao serial assncrona, no h necessidade de envio do sinal de clock, portanto as informaes s necessitam dos canais de dados para serem trafegados. Na comunicao serial assncrona, utilizada no servio SPP dos dispositivos bluetooth, os dados so enviados em pacotes de bits, resultando em 8 bits de informao (um byte) mais os bits de controle. Os bits de controle so os seguintes: 25
Start Bit: atua como indicador de incio da transmisso, ativando um temporizador interno do receptor para gerar o mesmo clock que o transmissor; Stop Bit: sinaliza a parada, o trmino do envio do pacote de dado. Pode ser 1 ou 2 bits; Bit de Paridade: responsvel pela conferncia da paridade na informao. Este bit opcional e verifica a ocorrncia de erros no envio da informao. Para haver uma comunicao consistente, a comunicao serial assncrona necessita de configuraes prvias. Ambos os dispositivos precisam preestabelecer igualmente a taxa de envio (Baud Rate) dos bits, ou seja, quantos bits por segundos sero enviados na conexo, se h o bit de paridade, quantos Stop Bits sero utilizados e se h controle de fluxo da informao. A Figura 11 ilustra um tpico pacote de dados enviado em uma conexo serial.
Figura 11 Pacote de dados em uma comunicao serial assncrona.
O hardware escolhido para implementar a comunicao bluetooth no Arduino foi o conversor bluetooth para serial desenvolvido pela empresa Sure Electronics, que apresenta as seguinte caractersticas: Frequncia de operao: 2,4 GHz a 2,48 GHz; Protocolo bluetooth V2.0+EDR; Sada de potncia classe 2; Hardware de suporte implementado; Tenso de operao: sinais TTL (5 V).
26
Figura 12 Hardware bluetooth utilizado para comunicao entre Arduino e smatphone.
Esse dispositivo possui apenas dois sinais de sada, um pino para transmisso de dados serial, e outro para recepo de dados serial. Alm disso, necessrio fornecer alimentao de 5 Vdc e um terra. Ele vem preconfigurado para operar a taxa de transmisso e recepo de 9600 bps, portanto configuraes adicionais no so necessrias. Para enviar e receber sinais no Arduino, basta que seja conectado o sinal TX do chip bluetooth a porta RX do Arduino (pino 0) e o sinal RX do chip bluetooth a porta TX do Arduino (pino 1), conforme Figura 12. No necessrio incluir nenhuma biblioteca extra no sketch a ser compilado, bastando apenas configurar a porta serial do Arduino para operar em 9600 bps e utilizar as funes de envio e recepo via porta serial, de acordo com a lgica do programa. 27
Figura 13 Conexo entre o mdulo bluetooth e o Arduino.
3.6 Smartphone Android e AppInventor No segundo trimestre de 2013 foram vendidos 8 milhes de smartphones no Brasil, nmero 110% superior em relao ao mesmo perodo do ano anterior. Os dados foram divulgados pela consultoria IDC. De acordo com o estudo, pela primeira vez no pas, a venda de smartphones superou a de aparelhos convencionais, dominando 54% do mercado local. Do total de smartphones comercializados, 90% esto equipados com o sistema operacional da Google, o Android. Essa uma das principais justificativas para a escolha do Android como sistema operacional adotado para desenvolvimento do aplicativo de controle do sistema. Outra importante informao que o Android um sistema aberto, programvel em JAVA e que possui vasta documentao para elaborao de aplicativos, o que elimina custos associados com aquisio de softwares ou hardware especficos para programao dos aparelhos. A ferramenta utilizada para desenvolver o aplicativo foi o AppInventor, um applet JAVA que roda direto do browser, desenvolvido pelo MIT (Massachusetts Institute of Technology). No applet possvel construir a interface grfica do aplicativo, inserindo 28
botes, textos, figuras ou elementos de hardware (conectividade a internet, conexo bluetooth, etc) e, em seguida, constri-se a lgica por trs de cada elemento, em uma programao fcil e intuitiva atravs do uso de blocos de funes. As Figura 14 e Figura 15 apresentam capturas de tela do mdulo de construo de interface do AppInventor e do mdulo de programao, respectivamente.
Figura 14 Mdulo de construo da interface grfica do aplicativo no AppInventor.
Figura 15 Mdulo de programao do AppInventor. Programao intuitiva atravs da utilizao de blocos para construo da lgica. 29
3.7 Mdulos de entrada e sada Em um sistema de controle e automao residencial vrios parmetros so de interesse para serem monitorados. A temperatura ambiente, a umidade do solo para controle da irrigao, a presena de luminosidade para acionamento da iluminao externa, a deteco de presena para acionamento de circuitos de segurana. Para avaliar todos esses parmetros so necessrios diversos tipos de sensores. No projeto do sistema de automao desenvolvido, foram contemplados trs tipos de sensores. Sensor de presena infravermelho. bastante utilizado em projetos de segurana e alarmes residenciais para identificar a presena de pessoas em ambientes. Ele emite um sinal infravermelho que espalhado pela redoma convexa montada na parte superior. O sinal bate em um objeto e refletido de volta a redoma que agrupa os feixes em um detector infravermelho. Existem ajustes de temporizao e de sensibilidade, de forma que o sensor no capte qualquer variao de movimento instantnea. O sinal de sada do sensor um sinal digital, 1 para deteco e 0 para no deteco de presena.
Figura 16 Sensor de presena infravermelho.
Como descrito anteriormente, um sensor de umidade do solo til para automatizao do processo de irrigao em uma casa. O sensor contm duas barras condutoras, separadas por um espaamento. Quando a umidade do solo muito baixa, no existe contato entre as duas barras condutoras e o circuito no fechado. Caso a umidade do solo aumente, passa a existir condutividade entre as duas barras e o sinal de sada aumenta, a medida que a condutividade aumenta. Portanto, a sada desse sensor 30
um sinal analgico que varia de 0 V a 5 V e linearmente proporcional quantidade de umidade do solo: quanto maior a umidade no solo, maior a tenso medida. Para ler o valor do sensor no Arduino existem duas possibilidades. A primeira consiste em conectar o sensor a uma entrada analgica e medir o valor atual de tenso e decidir qual ao tomar a medida que o valor aumenta ou diminui. A segunda maneira escolher um valor limite, a partir do qual seria necessrio, por exemplo, ligar a vlvula de irrigao, e construir um circuito de acionamento externo que enviasse um sinal para o Arduino indicando que o limite foi atingido.
Figura 17 sensor de umidade do solo.
O terceiro tipo de sensor utilizado tambm tem relao direta com a segurana da residncia. um conjunto de sensor para detectar a presena de gs e chamas. A deteco de gs de suma importncia em uma residncia para verificar o vazamento de gs de cozinha e prevenir problemas maiores como um incndio. Tambm pode ser utilizado em conjunto com um sensor detector de chamas para constatar a presena de fogo e fumaa e acionar alarmes de incndio. A sada de ambos os sensores um valor analgico variando de 0 V a 5 V, proporcional a intensidade de chama ou de gs no ambiente. Ambos os sensores tambm possibilitam que se use uma sada digital quando um determinado valor for medido, ou seja, atravs dos trimpots configura-se um limiar para que a partir daquele valor, seja enviado um sinal ativo da deteco de chama ou de gs no ambiente.
31
Figura 18 Sensor detector de chama e sensor detector de gs.
Alm dos sensores como elementos de entrada, so essenciais a existncia de interruptores para acionamento de circuitos de iluminao ou irrigao, por exemplo. No sistema de automao residencial proposto, pretende-se utilizar interruptores paralelos, que permitem a utilizao do esquema three-way, para conexo de dois circuitos para acionar uma carga de forma simultnea.
Figura 19 Interruptor paralelo ou three-way, necessrio para fazer a instalao eltrica com acionamento em dois pontos distintos de forma simultnea.
Uma das formas mais simples de automao residencial o controle automtico, ou diferenciado, de cargas do tipo liga / desliga. A principal carga que se encaixa nesse perfil a carga de iluminao. Outros tipos de cargas que podem ser automatizadas atravs de controles ON / OFF so eletrodomsticos ou motores de portes de garagem. 32
O principal elemento de circuito para o controle de uma carga, como descrito acima, o rel. Esse componente recebe um sinal de controle a nvel TTL e aciona seus contatos eletromecnicos, podendo acionar uma carga de corrente alternada na tenso de 220 V e at 10 A, mantendo isolado de forma magntica o circuito de acionamento em tenso CC, do circuito da carga em tenso CA. O circuito de acionamento de um rel tal como apresentado na Figura 20. Para cada carga que se deseja controlar o acionamento, necessrio um novo circuito. O circuito U3 uma proteo redundante para desacoplar opticamente o circuito de acionamento e o circuito da carga.
Figura 20 Circuito de Acionamento de um rel para controle de carga.
Apesar de ser um circuito simples de montar e testar, existem placas que podem ser compradas prontas e j apresentam montagem industrial e foram previamente testadas. O preo dessas placas, quando compradas em sites de importao de eletrnicos sai mais em conta do que comprar os componentes e confeccionar uma placa de circuito impresso no Brasil. Uma placa comprada em um desses sites pode ser vista na Figura 21.
33
Figura 21 Placa com quatro rels acionado por sinal TTL 5 V, com sadas 220 Vca 10A.
Outro mdulo que est presente em sistemas de automao comercial so os dimerizadores. Em alguns sistemas esse circuito se apresenta como pulsadores. um circuito que diminui a quantidade de potncia entregue a carga, basicamente com o objetivo de diminuir o consumo de energia. Em alguns tipos de circuitos utilizado um triac para liberar mais ou menos tenso para carga, de acordo com o acionamento. Em outros so utilizados sistemas pulsados, controlados por microcontroladores, mais comuns em lmpadas fluorescentes que no permitem dimerizao. No sistema desenvolvido foi utilizado um circuito com triac, conforme a Figura 22. O acionamento da potncia entregue a carga feito em uma interface no aplicativo no smartphone. O objetivo desse circuito controlar a iluminao ambiente e consequentemente, a potncia entregue a uma lmpada halgena, que tem a possibilidade de ser dimerizvel.
34
Figura 22 Circuito para promover dimerizao com o Arduino e um triac.
Para o caso do circuito de controle de potncia, foi necessrio projetar e montar uma placa externa, pois no foi encontrado no mercado um circuito que pudesse ser adquirido pronto. O circuito montado foi o apresentado na Figura 22. Na Figura 23, pode ser vista uma fotografia da placa aps a montagem e testes de funcionalidade.
Figura 23 fotografia da placa de controle de potncia de cargas.
35
4 DESENVOLVIMENTO DO PROTTIPO EXPERIMENTAL
Com o intuito de validar o sistema de automao residencial proposto, foi pensada, projetada e construda uma plataforma experimental de testes. Essa plataforma visa simular uma instalao monofsica de uma residncia com seus circuitos de instalao eltrica e algumas cargas, no caso do prottipo construdo, apenas cargas de iluminao. Os sistemas de hardware descritos anteriormente foram instalados no prottipo de forma que seja possvel programar o Arduino medida que modificaes fossem necessrias. Nesse captulo so apresentados os diagramas eltricos e aspectos construtivos do prottipo desenvolvido para simular a instalao eltrica de um residncia e testar o sistema de automao residencial.
4.1 Construo do prottipo experimental A construo de um prottipo para testar o correto funcionamento do sistema de automao residencial proposto tem como objetivo verificar a funcionalidade do sistema percebendo os automatismos atuando conforme programado no Arduino e o usurio atuando nos sistemas de controle para obter as sadas esperadas. O prottipo portanto deveria ter como caractersticas: Portabilidade: no ser muito grande, podendo ser transportado para ser utilizado em apresentaes. Baixo Custo: como no o meio fim, os custos com o prottipo deveria ser o menor possvel, devendo ser utilizado material reaproveitado de outras montagens. Simplicidade: com o objetivo de observar o correto funcionamento do sistema de automao, o prottipo deve ser simples o bastante para fornecer entradas e sadas, no sendo fonte de trabalho extra ou fonte de possveis erros de projeto. Baseado nos requisitos mnimos de funcionamento, o prottipo contm trs lmpadas fluorescentes para simular o circuito de iluminao de uma residncia. Contm uma lmpada halgena que pode ser dimerizvel, para testar o controle de potncia entregue as cargas. Contm ainda quatro interruptores eltricos, para ligar e desligar as cargas da forma convencional e uma tomada, para alimentar o circuito DC do Arduino e dos componentes do sistema de automao. A Figura 24 apresenta um esquemtico proposto para a construo do prottipo. Na vista superior pode ser visto o espao reservado para as lmpadas e tambm para a instalao do sistema de automao. 36
Figura 24 Vistas do sistema de prottipo construdo para testar o sistema de automao residencial proposto.
Aps o levantamento dos componentes necessrio para a montagem, foi feita a compra e em seguida a montagem do prottipo. Foram usadas duas chapas de madeira para fazer a base horizontal e vertical. Foi utilizado fio de 1 mm para as conexes eltricas e foram fincados com pregos as placas de circuitos do sistema de automao residencial. As fotografias vistas na Figura 25 exemplificam a evoluo da montagem do projeto e o resultado final. Na Figura 26 apresentado o diagrama multifilar da instalao eltrica do projeto.
37
Figura 25 Construo do prottipo e verso final j com as conexes eltricas efetuadas conjuntamente com o sistema de automao residencial.
38
Figura 26 Diagrama multifilar da instalao eltrica do prottipo, onde RLn so os rels do mdulo de acionamento de cargas e U1 o circuito de controle de potncia entregue a carga, apresentado anteriormente.
39
5 TESTES E RESULTADOS
Nesse captulo apresentado a concepo e teste de cada parte do sistema de forma modular. Sero apresentados algoritmos utilizados para o implementao de cada mdulo de controle do sistema e em anexo os cdigos em linguagem proprietria do Arduino para executar as funes propostas.
5.1 Aplicativo Domotic Blue Server Como explicado anteriormente foi desenvolvido um aplicativo para o sistema operacional Android, de forma que fosse possvel controlar o sistema atravs da conexo bluetooth ou internet. Foi utilizado o applet AppInventor, do MIT, que utiliza programao em blocos e roda atravs de um web browser, para realizar a programao do aplicativo. O programa contm basicamente cinco telas: Tela Inicial Assim que o usurio acessa o programa a tela inicial apresentada e duas opes de ao so permitidas, a escolha de controlar o sistema atravs do bluetooth ou da internet. A seleo feita clicando-se no boto com a opo desejada, conforme Figura 27. Tela Bluetooth Selecionada a opo de controle via bluetooth, o usurio redirecionado para outra tela, onde deve escolher a qual dispositivo bluetooth deseja se conectar. Nesse instante, caso o hardware bluetooth do telefone no esteja ativado, requisitado que ele seja ligado. A Figura 28 apresenta uma captura dessa tela. Nesse momento o elemento voltar introduzido em formato de seta, de forma que possvel que o usurio retorne a tela anterior ao clicar nesse objeto. Tela de Controle Bluetooth Aps conectado corretamente ao dispositivo bluetooth as opes de controle do sistema so apresentadas. Basicamente as opes se resumem a ligar o desligar uma das trs lmpadas fluorescentes do prottipo de testes ou aumentar e diminuir a potncia entregue a lmpada halgena. Novamente o objeto voltar apresentado, dessa vez, caso clique sobre o objeto o usurio levado para tela inicial (Figura 29). Tela Controle Internet Ao clicar na opo internet na tela inicial, o usurio redirecionado para a pgina do servidor que roda no Arduino, conectado a rede 40
local em sua residncia. Essa pgina apresentada em formato web utilizando um dos elementos disponveis no AppInventor, conforme Figura 30. O Aplicativo compilado diretamente no browser de acesso a internet, e pode ser baixado para o computador e instalado em qualquer dispositivo Android que seja de verso 2.3 ou superior. Tambm pode ser instalado em tablets Android, contudo a formatao de tela pode variar.
Figura 27 Tela inicial do aplicativo.
Figura 28 Tela de seleo da conexo com hardware bluetooth ou retorno para tela anterior. 41
Figura 29 Tela de controle dos dispositivos de instalao eltrica do prottipo, trs lmpadas (ao liga / desliga) e uma carga luminosa, (ao aumenta ou diminui intensidade luminosa).
Figura 30 Captura da tela de controle do sistema via internet.
5.2 Mdulos de Controle e Lgica no Arduino Como explicado anteriormente, o Arduino funciona como uma placa de desenvolvimentos que contm toda a lgica de necessria para processar as entradas digitais, analgicas e protocolos de comunicao e acionar os sinais de sada da forma 42
esperada pelo usurio. Alguns controles so feitos atravs da interao com o usurio, utilizando meios como smartphone ou internet, e outros controles so feitos de forma automtica, utilizando leituras provenientes de sensores. Essa seo visa explicar a programao de cada mdulo de controle no Arduino.
5.2.1 Controle dos Rels Um dos principais controles possveis no sistema ligar ou desligar cargas atravs do smartphone, utilizando comunicao bluetooth, ou atravs da internet. Os comandos recebidos pelo Arduino, seja por um ou pelo outro meio de comunicao, so processados e acionam ou no as sadas digitais da placa, que por sua vez comutam os contatos de um rel especfico na placa de rels utilizada. O algoritmo para o controle via comunicao bluetooth apresentado na Figura 31 e a traduo em cdigo para o sketch Arduino apresentada nos anexos.
5.2.2 Automatismos atravs dos sensores Como explicado anteriormente, o sistema possui alguns sensores para monitorar parmetros de interesse. Os sensores tem sua sada em formato analgico, portanto as portas do conversor analgico para digital do Arduino foram utilizadas para ler os dados e converter em um nmero que pudesse ser utilizado em uma lgica de automatismo. Como exemplo podemos citar o sensor de medio da umidade do solo. Esse sensor apresente um sinal de sada que varia de 0 V a 5 V, de forma que, quanto maior a umidade, maior a tenso medida. Acontece que a sada desse tipo de sensor varia bastante, devido a diversos fatores, como por exemplo flutuao na tenso de referncia do microcontrolador. Portanto no cdigo do processamento da leitura analgica utilizado um filtro por software para ter um valor mdio da medida no tempo e enfim acionar a sada digital necessria, no caso um dos rels para acionar uma vlvula. A Figura 32 apresenta o cdigo utilizado no Arduino. 43
Figura 31 Algoritmo para processamento dos dados recebidos na comunicao bluetooth e acionamento das sadas digitais.
44
5.2.3 Pgina Web do Servidor Implementado A pgina web do servidor implementado no Arduino tem a restrio bsica de ocupar a menor quantidade de memria possvel. Isso tem implicao direta na quantidade de comandos client.println(""); utilizados. Portanto um estudo detalhado de somente o que foi necessrio foi colocado na pgina. O cdigo HTTP da pgina apresentado nos anexos, e a Figura 30, apresentada anteriormente apresenta uma captura de tela da pgina. O servidor implementado no Arduino faz uso da biblioteca disponibilizada de forma gratuita na instalao da IDE. Essa biblioteca possui as seguintes funes que foram utilizadas: Ethernet.begin(mac, ip, gateway, subnet): configura uma conexo ethernet com os respectivos valores de IP, gateway e subnet salvos nas variveis. EthernetClient client = server.available(): duas funes utilizadas em conjunto. Uma para criar um objeto cliente e outra para verificar se o cliente est disponvel para se conectar ao servidor. client.connected() e client.available(): funes que retornam 1 ou 0, se o cliente est conectado e se ele est disponvel para escrita ou leitura, respectivamente. /* FUNO: SensorJardim() PARMETROS: Nenhum RETORNO: Nenhum DESCRIO: Primeiramente a funo calcula uma mdia de 50 valores medidos pelo sensor de forma que a medio analgica fique mais suave, uma espcie de filtro por software Aps isso verifica se o valor mdio medido na porta analgica A2 menor que um valor base se for menor, aciona um contato de rel ligado a uma vlvula que por sua vez aciona o sistema de irrigao da casa. O valor medido na porta analgica a umidade do solo. Quando um valor alto significa que o solo est umido, caso contrrio seco. */ void SensorJardim(void) {
if(samplesJardim <= 50){ //verifica se ja atingiu o numero mnimo de amostragens do sinal accJardim = analogRead(sensorIn3) + accJardim;//vai acumulando o valor amostrado pra depois calcular a mdia samplesJardim = samplesJardim + 1; //vai atualizando o nmero de amostras medidas } else{ //quando medir 50 amostras, mediaJardim = accJardim/samplesJardim; //calcula a mdia dos valores amostrados samplesJardim = 0; //reseta o contador de amostras accJardim = 0; //reseta o acumulador de amostras
if(mediaJardim < 100) estadoRele4 = true; //IMPLICA EM UMIDADE MUITO BAIXA, ENTO ATIVA O REL PRA ACIONAR A VLVULA DE IRRIGAO else estadoRele4 = false; //CASO CONTRRIO A UMIDADE EST SUFICIENTE, ENTO DESLIGA A IRRIGAO.
digitalWrite(releJardim, estadoRele4); } } Figura 32 - Cdigo para o sketch do Arduino. 45
char c = client.read(): Ler dados do cliente. Essa funo l apenas um byte, por isso precisa ser executada em loop para ler a quantidade de bytes necessrio para conter uma mensagem de requisio. client.println(" "): funo utilizada para escrever dados para o cliente conectado. Aqui so enviados, por exemplo, as linhas de cdigo da pgina do servidor.
46
6 CONCLUSO E TRABALHOS FUTUROS
Foi realizado um projeto de um sistema para automao residencial utilizando microcontrolador como unidade central de processamento. Sistemas de automao residencial so sistemas modulares, hoje em dia so em sua maioria construdos utilizando-se tecnologia dos modernos processadores ou dos robustos CLPs, buscou-se realizar uma montagem intermediaria fazendo proveito dos benefcios da portabilidade dos microcontroladores para obter um sistema intermedirio entre a performance dos processadores e a robustez dos CLP. Foi desenvolvido um prottipo para testar e validar o sistema de automao desenvolvido. O prottipo teve como objetivo simular a instalao eltrica simplificada de uma residncia e permitir que os sinais bsicos de entrada e sada fossem aplicados ao sistema desenvolvido no microcontrolador a fim de verificar o correto controle e funcionamento das funes pensadas e programadas no Arduino. A programao e montagem do sistema ocorreu de forma positiva e o objetivo esperado foi alcanado. Um sistema completo para auxiliar no estudo e desenvolvimento de tecnologias para automao residencial foi desenvolvido e pode ser usado como modelo para estudos mais avanados. Espera-se que recursos presentes em projetos de automao residencial similares, possam ser acrescentados ao projeto com auxlio da estrutura desenvolvida em futuros trabalhos. Controle de equipamentos via sinais infravermelho, incluso de um sistema em tempo real para insero de um log de eventos ou programao de aes baseadas no tempo, sejam frutos de trabalhos futuros. O presente trabalho aborda vrios aspectos de um projeto de engenharia eltrica, ao se debater sobre temas como eletrnica e microeletrnica, instalaes eltricas prediais, arquitetura de sistemas e programao de processadores e construo de softwares especficos. Tambm contempla a montagem experimental, resultando no desenvolvimento de um produto que pode ser usado como modelo para desenvolvimento de outros produtos e tecnologias e no levantamento para construo de prottipos e atividades experimentais, to importantes no desenvolvimento e formao de um profissional de engenharia eltrica.
47
7 BIBLIOGRAFIA
COSTA, E. M. M.; LIMA, A. M. N. Sistemas dinmicos a eventos discretos: fundamentos bsicos para a moderna automao industrial. Salvador: EDUFBA, 2005. GRILO, L. C. P.; GRILO, M. B.; PEREIRA, E. G. Desenvolvimento de um sistema para medio de temperatura e umidade com comunicao sem fio num secador solar. Congresso Nacional de Engenharia Mecnica (CONEM). So Luis - MA, 2012. JOBSTRAIBIZER, F. Criao de aplicativos para celulares com Google Android. So Paulo: Digerati Books, 2009. McROBERTS, M. Arduino bsico. Trad. Rafael Zanolli. So Paulo: Novatec, 2011. PRUDENTE, F. Automao predial e residencial: uma introduo. 1. ed. So Paulo: LTC, 2011. Revista VEJA. Um lar que obedece ao dono. Edio 2299, 12 de dezembro de 2012, p. 176-178. SURE ELECTRONICS. Bluetooth serial converter UART interface 9600bps users guide. P.R.Chine, Sure Electronics Co. Ltd, 2008. THOMAZINI. D.; ALBUQUERQUE, P. U. B. Sensores Industriais: fundamentos e aplicaes. 7. Ed. rev. e atual. So Paulo: rica, 2010. http://arduino.cc/en/Main/ArduinoBoardUno - Acessado em 10/2013 http://arduino.cc/en/Main/ArduinoEthernetShield - Acessado em 10/2013
48
8 ANEXOS
/********************************************** PROGRAMA FINAL DO TCC - DomoticGrilo * LUIZ CLAVER PEREIRA GRILO * clavergrilo@gmail.com * **********************************************/ #include <DS1302.h> #include <SPI.h> #include <Ethernet.h>
//************** DEFINIO DAS VARIVEIS GLOBAIS UTILIZADAS NO PROGRAMA ************
char inByte; //ARMAZENA O BYTE CHEGANDO NA SERIAL boolean estadoRele1 = false; //ARMAZENA O ESTADO DO REL 1 boolean estadoRele2 = false; //ARMAZENA O ESTADO DO REL 1 boolean estadoRele3 = false; //ARMAZENA O ESTADO DO REL 1 boolean estadoRele4 = false; //ARMAZENA O ESTADO DO REL 1 boolean estadoSensorIn2 = false; boolean estadoSensorIn1 = false; long accJardim, accGas, accIn1; int samplesJardim, samplesGas, samplesIn1; int mediaJardim, mediaGas, mediaIn1;
//DEFINIES DA REDE byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xBE }; //ENDEREO DO MAC DEFINIDO PELO USURIO byte ip[] = { 192, 168, 0, 177 }; //ENDEREO DE IP, DEFINIDO PELO USURIO byte gateway[] = { 192, 168, 0, 1 }; //internet access via router (opcional) byte subnet[] = { 255, 255, 255, 0 }; //subnet mask (opcional) EthernetServer server(3333); //PORTA DO SERVIDOR. NECESSRIA. String readString = String(30); //string para receber as aes de ligar/desligar os pinos
//PINOS DE SADA QUE ESTO SENDO USADOS E PARA O QUE ESTO SENDO USADOS int pinOutRelay = 7; int inByte = 0; //BYTE RECEBIDO PELO BLUETOOTH PARA FAZER A COMPARAO E ATUAR NAS SADAS.
//COMANDOS DE CHEGADA DO CLIENT / QUANDO CLICA NOS BOTES NA PGINA ENVIA ESSES COMANDOS PARA O ARDUINO INTERPRETAR String pinOutRelay_OFF = "GET /?out=5&status=0 HTTP/1.1"; String pinOutRelay_ON = "GET /?out=5&status=1 HTTP/1.1";
//VARIVEL PARA GUARDAR A AO ATUAL, PARA INFORMAR AO USURIO O ESTGIO DO(S) PINO(S) EM CONTROLE int current_action; //***********************CONFIGURAES DE SETUP INICIAL****************************** void setup() { //INICIA A PORTA ETHERNET COM AS CONFIGURAES ESCOLHIDAS Ethernet.begin(mac, ip, gateway, subnet); current_action = 0;
// INICIA A PORTA SERIAL A 9600 bps Serial.begin(9600);
//DEFINE TODOS OS PINOS ONDE ESTO LIGADOS OS RELS, COMO SADA pinMode(releLamp1, OUTPUT); digitalWrite(releLamp1, LOW); pinMode(releLamp2, OUTPUT); digitalWrite(releLamp2, LOW); 49
pinMode(releLamp3, OUTPUT); digitalWrite(releLamp3, LOW); pinMode(releJardim, OUTPUT); digitalWrite(releJardim, LOW); //DEFINE TODOS OS PINOS ONDE ESTO LIGADOS OS INTERRUPTORES COMO ENTRADA }
//********************** PROGRAMA QUE FICA SE REPETINDO ******************************* void loop() { EstadoReles(); //chama a funo de acionamento dos rels por bluetooth serial
SensorJardim(); //chama a funo de leitura do sensor de umidade do solo e acionamento de vlvula de irrigao
SensorGas(); //chama a funo da leitura do sensor de gs
SensorIn1(); //chama a funo da leitura do estado de um terceiro sensor
AtivaAlarme(); //chama a funo pra ativar o alarme, se o sinal dos sensores atingir determinado nvel
internet(); //chama a funo relgio
delay(100); } //LooP
//************************ FUNES ********************************************** /* FUNO: EstadoReles() PARMETROS: Nenhum RETORNO: Nenhum DESCRIO: Verifica se o canal de comunicao serial est disponvel. Caso esteja recebe um byte pelo canal Faz 6 (seis) comparaes para atualizar o estado dos rels, LIGADO ou DESLIGADO Salva nas variveis de estado (BOOLEAN) o estado atual do rel, para futura conferncia. */ void EstadoReles (void) {
if (Serial.available() > 0) { //SE A PORTA SERIAL ESTIVER DISPONVEL inByte = Serial.read(); //L O BYTE DISPONVEL NO CANAL DE COMUNICAO DE ENTRADA
if(inByte == 'A'){ //SE RECEBEU O BYTE 'A' LIGA O REL DA SADA 1 estadoRele1 = true; inByte = 0; }
if(inByte == 'a'){ estadoRele1 = false; //SE RECEBEU O BYTE 'a' DESLIGA O REL DA SADA 1 inByte = 0; }
if(inByte == 'B'){ estadoRele2 = true; //SE RECEBEU O BYTE 'B' LIGA O REL DA SADA 2 inByte = 0; }
if(inByte == 'b'){ estadoRele2 = false; //SE RECEBEU O BYTE 'b' DESLIGA O REL DA SADA 2 inByte = 0; }
if(inByte == 'C'){ estadoRele3 = true; //SE RECEBEU O BYTE 'C' LIGA O REL DA SADA 3 inByte = 0; }
if(inByte == 'c'){ estadoRele3 = false; //SE RECEBEU O BYTE 'c' DESLIGA O REL DA SADA 3 inByte = 0; } } // =Serial Available
digitalWrite(releLamp1, estadoRele1); digitalWrite(releLamp2, estadoRele2); digitalWrite(releLamp3, estadoRele3); } //************************************************************************************* /* FUNO: SensorJardim() PARMETROS: Nenhum RETORNO: Nenhum DESCRIO: Primeiramente a funo calcula uma mdia de 50 valores medidos pelo sensor de forma que a medio analgica fique mais suave, uma espcie de filtro por software Aps isso verifica se o valor mdio medido na porta analgica A2 menor que um valor base se for menor, aciona um contato de rel ligado a uma vlvula que por sua vez aciona o sistema de irrigao da casa. O valor medido na porta analgica a umidade do solo. 50
Quando um valor alto significa que o solo est umido, caso contrrio seco. */ void SensorJardim(void) {
if(samplesJardim <= 50){ //verifica se ja atingiu o numero mnimo de amostragens do sinal accJardim = analogRead(sensorIn3) + accJardim; //vai acumulando o valor amostrado pra depois calcular a mdia samplesJardim = samplesJardim + 1; //vai atualizando o nmero de amostras medidas } else{ //quando medir 50 amostras, mediaJardim = accJardim/samplesJardim; //calcula a mdia dos valores amostrados samplesJardim = 0; //reseta o contador de amostras accJardim = 0; //reseta o acumulador de amostras
if(mediaJardim < 100) estadoRele4 = true; //IMPLICA EM UMIDADE MUITO BAIXA, ENTO ATIVA O REL PRA ACIONAR A VLVULA DE IRRIGAO else estadoRele4 = false; //CASO CONTRRIO A UMIDADE EST SUFICIENTE, ENTO DESLIGA A IRRIGAO.
if(samplesGas <= 50){ //verifica se ja atingiu o numero mnimo de amostragens do sinal accGas = analogRead(sensorIn2) + accGas; //vai acumulando o valor amostrado pra depois calcular a mdia samplesGas = samplesGas + 1; //vai atualizando o nmero de amostras medidas } else{ //quando medir 50 amostras, mediaGas = accGas/samplesGas; //calcula a mdia dos valores amostrados samplesGas = 0; //reseta o contador de amostras accGas = 0; //reseta o acumulador de amostras
if(mediaGas < 100) estadoSensorIn2 = true; //IMPLICA EM UMIDADE MUITO BAIXA, ENTO ATIVA O REL PRA ACIONAR A VLVULA DE IRRIGAO else estadoSensorIn2 = false; //CASO CONTRRIO A UMIDADE EST SUFICIENTE, ENTO DESLIGA A IRRIGAO. } }
if(samplesIn1 <= 50){ //verifica se ja atingiu o numero mnimo de amostragens do sinal accIn1 = analogRead(sensorIn1) + accIn1; //vai acumulando o valor amostrado pra depois calcular a mdia samplesIn1 = samplesIn1 + 1; //vai atualizando o nmero de amostras medidas } else{ //quando medir 50 amostras, mediaIn1 = accIn1/samplesIn1; //calcula a mdia dos valores amostrados samplesIn1 = 0; //reseta o contador de amostras accIn1 = 0; //reseta o acumulador de amostras
if(mediaGas < 100) estadoSensorIn1 = true; //IMPLICA EM UMIDADE MUITO BAIXA, ENTO ATIVA O REL PRA ACIONAR A VLVULA DE IRRIGAO else estadoSensorIn2 = false; //CASO CONTRRIO A UMIDADE EST SUFICIENTE, ENTO DESLIGA A IRRIGAO.
if(estadoSensorIn1 && estadoSensorIn2) digitalWrite(alarme, HIGH); else digitalWrite(alarme, LOW); } //************************************************************************************* /* FUNO: Internet() PARMETROS: Nenhum RETORNO: Nenhum DESCRIO: Ativa o servidor com o cliente e envia a pgina WEB e recebe as requisies ativando as aes esperadas. */ void Internet(void){ current_action = 0; // CRIA UMA CONEXO COM O CLIENT EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read(); //LER CHAR POR CHAR DA REQUISIO HTTP E ARMAZENA OS CHARS EM UMA STRING if (readString.length() < 30) { readString = readString + c; } //SE A REQUISIO HTTP DO CLIENT TERMINOU, RECEBE ESSA INFORMAO if (c == '\n') {
//Serial.print(readString); // COMPARA A STRING RECEBIDA DA REQUISIO HTTP, PARA VERIFICAR O QUE O USURIO DESEJA FAZER // GUARDA A INFORMAO DO QUE VAI SER FEITO EM current_action DE FORMA QUE POSSVEL SABER O ESTADO DO PINO if(readString.startsWith(pinOutRelay_ON)) current_action = action_mypin_ON;
// **************************************************************************************** // CRIA A PGINA HTTP COM CABEALHO PADRO QUE O USURIO VAI VER // E ENVIA PARA ESSA PGINA AS INFORMAES ATUAIS DE ACORDO COM AS REQUISIES DELE. client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html\n"); client.println("<html><head>"); client.println("<title>LuizClaver Server</title></head>"); client.println("<body>"); client.println("<h1>LuizClaver Server</h1>");
//CRIAO DOS BOTES EM HTML. AS LINHAS DO MEIO MOSTRAM A MONTAGEM DA MENSAGEM DE CONTROLE //QUE INDICA out=5&value=1 para ligado e value=0 para desligado. client.println(); client.println("<form METHOD=get action=\"http://189.71.116.227:3333/\">"); //OBSERVAR QUE ESSE O IP_FIXO DO ROTEADOR client.println("<input type=hidden name=\"out\" value=\"5\">"); //SE NO TIVER PLANO DE IP_FIXO, TEM QUE MUDAR TODA VEZ client.println("<input type=hidden name=\"status\" value=\"1\">"); //QUE O ROTEADOR REINICIAR, OU QUE A INTERNET REINICIAR client.println("<input type=submit value=\"LIGAR\">");
client.println("<form METHOD=get action=\"http://189.71.116.227:3333/\">"); //DE FORMA SIMILAR AQUI O COMANDO DEPENDE DO IP client.println("<input type=hidden name=\"out\" value=\"5\">"); //COMO FUTURA SOLUO PODE-SE IMPLEMENTAR ALGO COM client.println("<input type=hidden name=\"status\" value=\"0\">"); //DHCP AUTOMTICO, QUE PEGA O IP DIRETO DA REDE. client.println("<input type=submit value=\"DESLIGAR\">"); client.println("</form>"); client.println();
switch(current_action) { case action_mypin_OFF: digitalWrite(pinOutRelay, LOW); client.println("O PINO: "); 52
client.print(pinOutRelay); client.print(" ESTA DESLIGADO"); client.println("<br/><br/><a href='http://189.71.116.227:8081'>CAMERA</a>"); //NOVAMENTE A QUESTO DO IP E AGORA ACESSANDO UMA PORTA EXTRA client.println("</html>"); //CONFIGURADA TAMBM NO ROTEADOR PARA DAR ACESSO A CMERA IP break;
case action_mypin_ON: digitalWrite(pinOutRelay, HIGH); client.println("O PINO: "); client.print(pinOutRelay); client.print(" ESTA LIGADO"); client.println("<br/><br/><a href='http://189.71.116.227:8081'>CAMERA</a>"); //MAIS UMA VEZ O IP AQUI DEVE SER CONHECIDO PREVIAMENTE DO ROTEADOR client.println("</html>"); break;