Utilizando Arduino e Aplicativo Mobile para automatização de Coberturas Adriana Morais da Silva, Anderson David dos Reis, Leandro de Oliveira Mendes, Léo Baccili Silva. Abstract Assuming that the whole idea is born of a need, the project comes with all this focus to bring simplicity and mobility to its users with just a few keystrokes, and applying home automation in the area that is focused on developing solutions for home automation provide its users more comfort and safety. The project seeks to demonstrate the techniques used to create a designed and installed automated coverage according to the structure of the residence so as to cover the whole clothesline, thus avoiding that the clothes get wet during rainy days. The cover will have four forms of control. They are: Through rain sensors connected to an Arduino (electronics free hardware platform with support for input and output), which to capture any hint of rain at the site, check the status of coverage and the same trigger on the clothesline. Also via application developed for Android platform and developed a web page in Java Script, which will bring data regarding current, maximum and minimum rainfall registered in the city, as well as local data of the property that has implemented the project forecast, allowing control of individual coverage anywhere through internet. Finally, to control locally, a button installed near the clothesline, allowing activation and deactivation of the cover with just a squeeze. Resumo Partindo do princípio de que toda ideia nasce de uma necessidade, o projeto vem com este foco de trazer toda simplicidade e mobilidade para seus usuários com apenas poucos toques, e se aplicando na área de domótica que é voltada ao desenvolvimento de soluções de automação residencial para dispor aos seus usuários maior conforto e segurança. O projeto busca demonstrar as técnicas utilizadas para criação de uma cobertura automatizada projetada e instalada de acordo com a estrutura da residência de forma que cubra todo o varal, evitando assim, que as roupas se molhem durante dias de chuva. A cobertura terá quatro formas de controle. São elas: Através de sensores de chuva ligados a um Arduino (plataforma eletrônica de hardware livre com suporte a entrada e saída), que ao captar qualquer indicio de chuva no local, verificará o status da cobertura e acionará a mesma sobre o varal. Também via aplicativo desenvolvido para plataforma Android e uma página da Web desenvolvida em Java Script, que trará dados referente a previsão atual, máxima e mínima de chuva na cidade cadastrada, também dados como locais do imóvel que possua o projeto implantado, possibilitando o controle de cobertura individualmente de qualquer lugar mediante acesso à internet. E por fim, para controle localmente, um botão instalado próximo ao varal, que permitirá ativação e desativação da cobertura apenas com um aperto. Introdução Ao longo de toda a história, o conforto dos indivíduos sempre foram preocupações persistentes, evoluíram paralelamente ao desenvolvimento tecnológico. Este projeto tem com seu foco essencialmente no tema da automação, que visa justamente que o conforto seja alcançado de forma prática e simples, apenas com o comando de um celular ou computador ou por um botão. A automação residencial, também conhecida como domótica, é caracterizada pelo conjunto de tecnologias com o objetivo de melhorar a qualidade de vida de seu usuário por meio da automatização de tarefas que anteriormente demandariam muito tempo e esforço. A automação surgiu inicialmente nas áreas industriais e comerciais. Os investidores voltaram-se para essas áreas pelo rápido retorno do investimento, graças à grande escala de produção. Somente depois foram desenvolvidas as tecnologias específicas para a área residencial. Os últimos anos revelam que a automação está cada vez mais acessível e barata, podendo ser controlada por celulares, tablets e smartphones. Tais recursos, que até pouco tempo tinham que ser acessados em um único ponto de conexão, podem agora fazer com que qualquer lugar seja o centro da casa graças à tecnologia wireless. Com a automação residencial o que se objetiva é a integração de tecnologias de acesso à informação e entretenimento, com otimização dos negócios, da Internet, além de total integração da rede de dados, voz, imagem e multimídia. Isso é obtido através de um projeto único que envolve infraestrutura, dispositivos e software de controle cuja meta é garantir ao usuário a possibilidade de controle e de acesso à sua residência à distância, dentro ou fora da mesma, e o projeto nasce para contemplar esta ideia, que tudo pode ser mais fácil e mais acessível para o usuário. Estudos ainda revelam que a Mobilidade e a Internet tem sido uma grande propulsora de negócios e obviamente de comodidade, sendo que segundo o IBGE quase metade dos domicílios brasileiros tem conexão com a internet, 7em cada dez brasileiros possuem telefones celulares e em 2013, brasileiros compraram 68 smartphones por minutos. Entendendo o Arduido e as tecnologias utilizadas. Ainda pensando em automação, estudos recentes realizados pela Berg Insight as instalações de casas inteligentes se destacam na América do Norte e contou com 2,3 milhões no ano de 2013 o que significa um aumento de 66% a cada ano. Isso é o reflexo do forte crescimento da área de automação na América, o que leva a prever que no ano de 2017 o número saltará para 12,8 milhões. Gráfico 1 Número de Casas Inteligentes --- Fonte: Berg Insight No Brasil temos um cenário também em crescente evolução conforme afirma o Diretor Executivo da Associação Brasileira de Automação Residencial (Aureside): “...as vendas de produtos com esse fim cresceram 100% no ano de 2006 em relação ao ano anterior. Em 2007 a associação contou com um aumento de 35%, e contavam com a possibilidade de superação deste índice.” (Thales Cavalcanti, Diretor Executivo da ABAR) Por se tratar de um projeto que conta com mais de uma funcionalidade, nada melhor que um Arduino para atender esta necessidade. É incrível como o mesmo tem ganhado destaque quando assunto é automação e liberdade. No livro “Arduino Básico”, o autor menciona a dimensão que o mesmo vem tomando: “Se você fizer uma pesquisa online por “Arduino”, ficará surpreso com o grande número de sites dedicados ao Arduino, ou que apresentam projetos interessantes criados com ele. O Arduino e um dispositivo incrível, e possibilitara que você crie de tudo, desde obras de arte interativas até robôs”. (MCROBERTS, 2011, p.25). O mesmo é baseado em um micro-controlador, e dessa forma é logicamente programável, ou seja, é possível a criação de programas utilizando uma linguagem própria baseada em linguagem C/C++, que quando implementadas fazem com que o hardware execute certas ações, possibilitando receber e enviar informações. “Para programar o Arduino você utiliza o IDE do Arduino, um software livre no qual você escreve o código na linguagem que o Arduino compreende. O IDE permite que você escreva um programa de computador, que e um conjunto de instruções passo a passo, das quais você faz o upload para o Arduino. Seu Arduino, então, executará essas instruções, interagindo com o que estiver conectado a ele”. (MCROBERTS, 2011, p.24). Além de controlar praticamente qualquer sistema eletrônico, como por exemplo, motores, botões, sensores, interruptores e displays de LCD. A utilização desses circuitos integrados não só diminui o custo mas como também proporciona mais flexibilidade para a automação. E nessas plataformas de desenvolvimento que utilizam micro-controladores que Arduino tem garantido seu espaço e ganhado cada vez mais destaque. (TAVARES, 2013). No projeto utilizamos o Arduino Mega que possui um micro controlador ATmega 2560 nele temos 54 pinos de entrada/saída digitais, 16 entradas analógicas nos quais 14 podem ser saídas PWM Push Width Modulation (Modulação por Largura de Pulso utilizado para controle de velocidade de motores de corrente contínua. Possui também 256KB de Memória Flash no qual 4KB são utilizados para o bootloader (processo de inicialização). O Arduino pode ser alimentado pela conexão USB ou por uma fonte externa que pode variar entre 6 a 20 Volts. Sendo recomendado fontes entre 7 a 12 volts. Figura 1 Arduino Mega Neste projeto utilizaremos 2 tipos de sensores: Sensores de Chuva, que nada mais são que placas com várias trilhas que se encarregam de detectar água quando a mesma cai sobre eles fechando um “curto-circuito” que envia um pulso ao Arduino. Figura 2 Sensor de Chuva O outro sensor utilizado no projeto é o Reed Switch – sensor magnético. Ele é composto por uma cápsula de vidro contendo duas lâminas magnéticas dentro, bastando somente induzir magnetização entre as duas lâminas, fazendo que se atraiam magneticamente, ou seja, ao aproximar um imã, as lâminas se unem e acionam. No projeto este sensor tem a função de identificar quando a cobertura chega até o final e quando retorna ao começo da estrutura do varal, dessa forma confirmará que a cobertura foi acionada e desativada com sucesso. Figura 3 Sensor Magnético (Reed Switch) Além de sensores, o Arduino possibilita conexão com placas de circuito, como de Ethernet, Wireless, Bluetooth, apelidadas de Shields. Com a dimensão que vem tomando a comunidade Arduino no mundo e no Brasil, o número de shields está cada vez maior. Atualmente, com toda tecnologia dos smartphones, nós fazemos a pergunta: “Será que existe um app para isso?”. Já no mundo do Arduino não é muito diferente, pois fazemos a seguinte pergunta: “Será que existe um shield para isso?”. (LEMOS, 2014). Para o projeto utilizamos o Ethernet Shield, que possui uma porta ethernet utilizada para enviar e receber comandos através da rede local ou internet. Esse Shield possui um acoplamento perfeito com o Arduino Mega e barras empilháveis para que outros Shields possam ser conectados sobre ele. No projeto essa placa é ligada diretamente a um roteador Wireless que fará a comunicação entre o Arduino e os dispositivos de rede que enviarão comandos para acionar ou desativar a cobertura. Figura 4 Arduino Ethernet Shield Outro componente utilizado é o driver do motor L298N Ponte H, com ele conseguimos controlar dois motores DC (corrente contínua) ou um motor de passo Bipolar (será explicado abaixo) o qual utilizamos em nosso projeto. Essa ponte possui uma alimentação externa para que consiga enviar corrente suficiente par fazer o motor girar e também consegue controlar para qual lado o motor irá girar e a velocidade e os passos que o motor irá executar. Figura 5 Driver do Motor Existem diversos tipos de motores e para nosso projeto optamos por usar o motor de passos pois ele proporciona uma maior precisão e ao mesmo tempo velocidade e torque. Utilizamos um motor hibrido modelo 23KMC041-07V que pode trabalhar no modo Unipolar que utiliza cinco ou seis fios e no modo Bipolar que utiliza quatro ou oito fios, como nosso driver tem suporte apenas para motores Bipolar optamos por utilizar essa opção. Figura 6 Motor híbrido 23KM-C041-07V Quando quisermos obter uma rotação específica de um certo grau, calculamos o número de rotação por pulsos, o que nos possibilita uma boa precisão no movimento. No livro “Arduino Básico”, o autor cita a forma que o motor funciona: “Em volta da parte externa do motor temos eletromagnetos dentados. Uma bobina é energizada, fazendo com que os dentes do rotor de ferro se alinhem aos dentes do eletromagneto. Os dentes do próximo eletromagneto ficam levemente deslocados em relação aos primeiros; quando ele é o eletromagneto energizado, e a primeira bobina é desligada, isso faz com que o eixo rotacione um pouco mais em direção ao próximo eletromagneto. Cada vez que um eletromagneto é energizado e o rotor se move um pouco, ele executa um passo. Invertendo a sequência dos eletromagnetos que energizam o rotor, ele gira na direção oposta”. (MCROBERTS, 2011, p.236). Para integração e comunicação das aplicações do projeto optamos pela criação do Web Service, utilizando a plataforma .Net com linguagem em C#(sharp) para o desenvolvimento. Através dos métodos fornecidos por ele a aplicação irá interagir com o Arduino e vice-versa, executando solicitações efetuadas pelo aplicativo, ativando e desativando a cobertura e recebendo informações do dispositivo referente a atual situação do mesmo. Já para o desenvolvimento da página Web e do Aplicativo optamos pela linguagem JavaScript, utilizando as aplicações Eclipse e WorkLight da IBM. E o banco de dados para armazenar todos os dados envolvidos no projeto, utilizamos o SQL Server 2012. Visão de um Projeto utilizando ARDUINO para Criação da Cobertura Abaixo teremos análise e definições das necessidades e requisitos dos envolvidos do projeto Rain Cover que contará com o desenvolvimento de um software que comunicará diretamente com a plataforma Arduino, possibilitando interação por várias formas, tanto automaticamente quanto por uma simples ação do usuário. O Projeto Rain Cover tem como intuito principal automatizar atividade rotineira, de modo que reduza o tempo perdido para retirar roupas do varal devido à chuva no local e recolocá-las quando a chuva passar. Através de quatro formas de controle da cobertura, o usuário não terá receio em estender roupas no varal, se preocupando com a possibilidade de chuva. Principais Características São quatro formas de interação com a cobertura. O sistema contará com a ação do usuário apenas em três delas: Via aplicativo de celular, página da Web e um botão físico. A outra forma funciona automaticamente, através de sensores de chuva, que ao captarem gotículas de agua enviarão pulsos ao Arduino, e farão com que a cobertura seja acionada. O aplicativo e a página Web indicarão a previsão do tempo, previsão máxima e mínima de chuva na cidade pré-cadastrada do usuário, e também o sistema trará os imóveis (para clientes que possuem mais de um imóvel com o projeto implantado) e localizações dos equipamentos implantado pré-cadastrado como quintal, garagem, varanda, entre outros, permitindo o usuário optar por qual cobertura deseja acionar ou desativar. O botão físico será instalado próximo a cobertura, com intuito de facilitar o acesso quando o usuário estiver em casa, bastando somente apertar o botão para a cobertura ser acionada ou desativada. Desta forma se o usuário estiver sem um dispositivo (Smartphone/Computador/Notebook) em mãos, não precisará se preocupar, pois haverá o sensor de chuva funcionando normalmente e possuirá um botão físico para interação direta. Ambiente de Desenvolvimento O ambiente de desenvolvimento terá como referência a Análise de outros projetos envolvendo Arduino e para automação residencial ou comercial. Visando disponibilizar uma maior mobilidade e integração entre todas as unidades do projeto, a adoção da utilização de um WebService se tornou extremamente necessária, devido à atual facilidade de se realizar solicitações e respostas através de requisições seguras e retornos de informações rápidas e dinâmicas em XML(Linguagem que define um conjunto de regras para codificação de um documento) No que se concerne a Banco de Dados, a opção pelo SQL Server 2012 se exemplifica pela sua qualidade, robustez, segurança, estabilidade e de fácil manutenção. Para a elaboração do Site e do App, com a utilização das ferramentas Eclipse + Worklight Studio da IBM obtivemos maior qualidade na elaboração dos mesmos, pelo fato da ferramenta oferecer a possibilidade de se desenvolver toda a aplicação em JavaScript e HTML, junto com o Jquery Mobile (framework de interface gráfica), cujo foco é voltado para aplicações Web em dispositivos móveis. As ferramentas utilizadas durante o desenvolvimento do projeto estão relacionadas na tabela a seguir: Tipo de Aplicação Descrição da Ferramenta Sistema de Desenvolvimento para Arduino Arduino 1.0.5 Sistema Gerenciador de Banco de Dados SQL Server 2012 Desenvolvimento do Aplicativo Android Eclipse e Worklight Studio Desenvolvimento Web Service C#(Sharp) Tabela 1 Ferramentas necessárias para o desenvolvimento do Projeto Fluxo Primário, Secundários dos Casos de Uso e Modelagem Segundo Sommerville(2007), funcional, rastreando e os Fluxos modelam o modelam o sistema em uma perspectiva documentando como os dados associados com um processo são úteis para o desenvolvimento de um entendimento geral do sistema. Eles também podem ser usados para mostrar a troca de dados dados entre um sistema em seu ambiente. Abaixo temos os principais fluxo para utilização de todo um sistema envolvendo Arduino e gerenciamento Via Web e Botão que posteriormente foram transformados em Diagramas UML de Fluxo de Dados para melhor entendimento durante o processo de desenvolvimento. Ativar Cobertura via aplicativo ou página Web Fluxo Primário 1- Usuário informa usuário e senha 2- Validação dos dados de login 3- Usuário seleciona o Imóvel cadastrado 4- Carrega status da cobertura e dados do tempo da região 5- Usuário informa opção Ativar 6- Solicita confirmação da opção do Usuário 7- Usuário confirma opção 8- Verifica status da cobertura 9- Ativa cobertura 10- Registra data, horário, usuário, meio(Aplicativo ou Web) da ativação. Fluxo Secundário 1- No passo 2, se usuário digitar senha ou usuário inválido, retorna para passo 1. Caso acesso seja inválido por 10 vezes consecutivas, usuário será bloqueado. 2- No passo 6, se usuário não confirmar opção, voltará para passo 5. 3- No passo 8, se cobertura estiver com status de Coberta, retorna para passo 4. Desativar Cobertura via aplicativo ou página Web Fluxo Primário 1- Usuário informa usuário e senha 2- Validação dos dados de login 3- Usuário seleciona o Imóvel cadastrado 4- Carrega status da cobertura e dados do tempo da região 5- Usuário informa opção Desativar 6- Solicita confirmação da opção do Usuário 7- Usuário confirma opção 8- Verifica status da cobertura 9- Desativa cobertura 10- Registra data, horário, usuário, meio(Aplicativo ou Web) da desativação. Fluxo Secundário 1- No passo 2, se usuário digitar senha ou usuário inválido, retorna para passo 1. Caso acesso seja inválido por 10 vezes consecutivas, usuário será bloqueado. 2- No passo 6, se usuário não confirmar opção, voltará para passo 5. 3- No passo 8, se cobertura estiver com status de Descoberta, retorna para 4- passo 4. Ativar Cobertura via botão Fluxo Primário 1- Usuário se dirije até a cobertura 2- Usuário aperta botão 3- Ativa cobertura 4- Registra data, horário, usuário, meio(Botão) da ativação. Desativar Cobertura via botão Fluxo Primário 1- Usuário se dirije até a cobertura 2- Usuário desaperta botão 3- Desativa cobertura 4- Registra data, horário, usuário, meio(Botão) da desativação. Recebimento de Senha Fluxo Primário 1- Usuário clica em “Esqueci Senha” 2- Usuário digita e-mail 3- Validação de e-mail válido 4- Envia senha para e-mail Fluxo Secundário 1- No passo 3, se usuário não digitar e-mail inválido, retornará para passo 2. Após o Levantamento dos fluxo passou-se então a pensar na modelagem da base de dados. Para Machado (2010), a modelagem é um estudo das informações existentes em um contexto sob a observação para a construção de um modelo de representação e entendimento do contexto. Na Modelagem deve-se então: Observar os elementos de um ambiente; Observar os elementos de um ambiente; Elaborar conceitos sobre estes elementos; Caracterizá-los; Abstrair características; Reuni-los em conjuntos que os denominem; Representá-los; Defini-los Manipulá-los. Tendo entendimento dos conceitos e preceitos da modelagem chegou-se ao seguinte Modelo Lógico. Figura 7 Modelagem de Dados Conclusões Conclui-se que com a ideia inicial é possível contemplar não somente um simples varal de roupas, mas também garagens, janelas, e outras áreas que necessitam de cobertura contra a chuva. As tecnologias utilizadas possibilitam o desenvolvimento de uma solução de baixo custo, uma vez que foi utilizado o microcontrolador Arduino e tecnologias de software de uso gratuito. Como pontos positivos com o desenvolvimento de um projeto utilizando as tecnologias descritas, pode-se destacar alguns itens: O aumento nos conhecimentos da linguagem C, seus tipos de dados e suas bibliotecas. Ampliação de conhecimento na linguagem Java Script utilizando a aplicação WorkLight da IBM, a criação de um Web Service desenvolvido na linguagem C#(Sharp). O aumento no aprendizado em eletrônica, no uso de protoboard, multímetro, fio-de-solda e componentes eletrônicos em geral. A aquisição de conhecimentos na tecnologia Arduino e a ampliação de horizontes em relação a desenvolvimento de sistemas, pois com o desenvolvimento de softwares para microcontroladores, um novo leque de opções para a criação de soluções se abre. Os objetivos foram parcialmente alcançados conforme a equipe havia elaborado, somente foi excluído do projeto inicial, a possibilidade do usuário interagir com a cobertura via SMS, devido ao alto custo e a pouca funcionalidade, entre tanto não impossibilita ser uma futura implementação caso o usuário solicitar. Pois a ideia é exatamente essa, um projeto versátil, afim de se adaptar a qualquer costume, ou preferência do cliente. Assim, com o foco no requisito do cliente, fará com que o projeto construa seu espaço no mercado de inovações atual. Referências ABREU, Mauricio Pereira de, Projeto de Banco de Dados: Uma Visão Prática, Érica, 2010. MCROBERTS, Michael. Arduino Básico. Novatec Editora Ltda. São Paulo, 2011. BANZI, Massimo. Primeiros Passos com o Arduino. Novatec Editora Ltda. São Paulo, 2012. LARMAN, Craig. Utilizando UML e Padrões. Porto Alegre: Bookman, 2007. MACHADO, Felipe Nery Rodrigues, Projeto de Banco de Dados: Uma Visão Prática, Érica, 2010 SOMMERVILLE, Ian. Engenharia de software, 8ª ed. São Paulo: Pearson, 2007. TAVARES, Luis Antônio. Uma solução com Arduino para controlar e monitorar processos industriais. Artigo disponível em: < www.inatel.br/pos/index.php/down loads/doc.../26-luis-tavares-arduino> Acesso em: 10 de maio 2014. Arduino Ethernet Shield. Disponível em: <http://www.arduino.cc/en/Main/Arduino EthernetShield> Acesso em: 10 de maio 2014. LEMOS, Manoel. Conheça os Shields e incremente seu Arduino com eles, 2014. Disponível em <http://imasters.com.br/desenvolvimento/conheca-os-shields-e-incremente-seu-arduino-com-eles> Acesso em 17 de maio de 2014. Introdução a Domótica. Disponível em: <http://www.din.uem.br/ia/intelige/domoti ca/int.htm> Acesso em 17 de maio de 2014. Wikipédia. Domótica Disponível em <http://pt.wikipedia.org/wiki/Dom%C3%B3tica> Acesso em 17 de maio de 2014. Automação Industrial – Definição e História, 2013. Disponível em: <http://blog.comatreleco.com.br/automacaoindustrial-historia/> Acesso em 17 de maio de 2014. www.berginsight.com/ Acesso em 24 de setembro de 2014. Mercado da Automação Residencial sofre um grande boom, Disponível em http://www.obra24horas.com.br/entrevistas/thales-cavalcanti-17> Acesso em 24 de setembro de 2014. < Tutorial Sensor Magnético/Reed Switch com Arduino, 2011. Disponível em <http://engcomper.blogspot.com.br/2011/09/tutorial-sensor-magnetico-com-arduino.html> Acesso em 3 de maio de 2014. Tutorial: Como utilizar o Sensor de Chuva com Arduino, 2012 Disponível em < http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-sensor-de-chuva-com-arduino> Acesso em 3 de maio de 2014.