Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

8.964 visualizações

Publicada em

A ferramenta InoSensor foi desenvolvida com o objetivo de facilitar o uso de sensores e permitir o gerenciamento e monitoramento da plataforma Arduino remotamente, sem realizar a programação do hardware sempre que houver a necessidade de modificar as configurações dos sensores conectados. A solução da ferramenta InoSensor é composta dos seguintes módulos: (i) Sistema Web para gerenciamento de Arduino, responsável por cadastrar o Arduino, seus sensores e as ações que devem ser executadas na ocorrência de eventos configurados; (ii) Firmware do Arduino, para interpretar as ações e comunicar com o sistema gerenciador Web; e (iii) Sistema para atualização de firmware do Arduino, desenvolvido para simplificar as etapas de atualização do Arduino, sem a necessidade da IDE de desenvolvimento. Entre os diferenciais existentes na ferramenta InoSensor, em comparação a soluções similares existentes, destaca-se a capacidade de monitoramento remoto de sensores através de redes locais ou Internet e de uso da solução por pessoas sem conhecimento em programação, pois as configurações dos sensores e atuadores são realizadas pelo servidor Web.

Publicada em: Tecnologia
1 comentário
2 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
8.964
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
393
Comentários
1
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

  1. 1. HAISSAM YEBAHI INOSENSOR: FERRAMENTA PARA GERENCIAMENTO DE SENSORES PARA ARDUINO Monografia apresentada no Centro de Educação do Planalto Norte/CEPLAN, da Universidade do Estado de Santa Catarina/UDESC, como requisito parcial para conclusão do curso de Pós-graduação Lato Sensu de Especialização em Desenvolvimento de Software. Orientador: Alex Luiz de Sousa SÃO BENTO DO SUL, SC 2013
  2. 2. HAISSAM YEBAHI INOSENSOR: FERRAMENTA PARA GERENCIAMENTO DE SENSORES PARA ARDUINO Monografia apresentada no Centro de Educação do Planalto Norte/CEPLAN, da Universidade do Estado de Santa Catarina/UDESC, como requisito parcial para conclusão do curso de Pós-graduação Lato Sensu de Especialização em Desenvolvimento de Software. Banca Examinadora Orientador: __________________________________________ M.Eng. Alex Luiz de Sousa Universidade do Estado de Santa Catarina Membro: __________________________________________ Dr. Nilson Ribeiro Modro Universidade do Estado de Santa Catarina Membro: __________________________________________ Dr. Mário Ezequiel Augusto Universidade do Estado de Santa Catarina São Bento do Sul, SC, 03/10/2013.
  3. 3. Ao meu amor, Thalita Gabriela Costa, pelo carinho, paciência e apoio durante a realização deste trabalho.
  4. 4. AGRADECIMENTOS Agradeço a todos que direta ou indiretamente contribuíram com a concretização deste trabalho. Em primeiro lugar agradeço a Deus, por ter me guiado diante de tantas dúvidas mesmo quando a esperança parecia não ser suficiente. Ao professor e o orientador Alex Luiz de Sousa, de maneira especial, por confiar na minha capacidade, pelo apoio e contribuição. A minha amiga e coordenadora de TI da empresa Tigre S.A. Palmira Bozzola Serpa por sempre apoiar e permitir a ausência do trabalho para comparecer às aulas da pós graduação durante os dias de semana. Ao meu amigo Bruno Hasse por me apresentar o Arduino e que serviu de base para este projeto. Ao meu amigo Cleomar Roeper pela parceria durante as viagens a São Bento do Sul durante os dias de aula e pela indicação do curso de Pós-Graduação. As demais pessoas, amigos, professores que apoiaram ou contribuíram para este projeto com ideias, sugestões e críticas.
  5. 5. RESUMO YEBAHI, Haissam. InoSensor: Ferramenta para gerenciamento de sensores para Arduino. 2013. 141 f. Monografia apresentada no Centro de Educação do Planalto Norte/CEPLAN, da Universidade do Estado de Santa Catarina/UDESC, como requisito parcial para conclusão do curso de Pós-graduação Lato Sensu de Especialização em Desenvolvimento de Software, São Bento do Sul, 2013. As tecnologias estão cada vez mais inseridas no cotidiano das pessoas. Com o passar do tempo, novas soluções surgem com o intuito de facilitar a execução de tarefas manuais e reduzir o tempo gasto em tarefas rotineiras, que poderiam ser executadas por equipamentos eletrônicos de maneira mais eficaz e controlada. Independente do ambiente em que é aplicada, a Automação pode proporcionar o gerenciamento de recursos de forma bastante eficiente e sustentável em ambientes residenciais, prediais ou industriais. A Domótica, ou automação residencial, é composta por dispositivos e sistemas interconectados através de uma rede de comunicação, responsável por prover os mecanismos necessários à supervisão e gerenciamento do ambiente relacionado. A Domótica está se tornando cada vez mais acessível devido principalmente à grande disseminação e ao baixo custo oriundo do aumento do número de fabricantes desses dispositivos. O emprego de soluções integradas gera inúmeras vantagens como redução de custos, facilidade de instalação e expansão do sistema. Estão disponíveis no mercado diferentes plataformas para prototipação e desenvolvimento de sistemas baseados em microcontroladores de forma bastante simples a custos relativamente baixos. Arduino é uma plataforma open source que combina diferentes tipos de hardware e possui uma arquitetura padrão composta por portas analógicas e digitais e um microcontrolador da família Atmel. O microcontrolador é responsável pelo gerenciamento de sensores e periféricos conectados ao dispositivo. Apesar da simplicidade da plataforma, o desenvolvimento de soluções exige conhecimentos básicos de eletrônica e programação durante a elaboração do firmware do Arduino. Seguindo esse conceito, a ferramenta InoSensor foi desenvolvida com o objetivo de facilitar o uso de sensores e permitir o gerenciamento e monitoramento da plataforma Arduino remotamente, sem realizar a programação do hardware sempre
  6. 6. que houver a necessidade de modificar as configurações dos sensores conectados. A solução da ferramenta InoSensor é composta dos seguintes módulos: (i) Sistema Web para gerenciamento de Arduino, responsável por cadastrar o Arduino, seus sensores e as ações que devem ser executadas na ocorrência de eventos configurados; (ii) Firmware do Arduino, para interpretar as ações e comunicar com o sistema gerenciador Web; e (iii) Sistema para atualização de firmware do Arduino, desenvolvido para simplificar as etapas de atualização do Arduino, sem a necessidade da IDE de desenvolvimento. Entre os diferenciais existentes na ferramenta InoSensor, em comparação a soluções similares existentes, destaca-se a capacidade de monitoramento remoto de sensores através de redes locais ou Internet e de uso da solução por pessoas sem conhecimento em programação, pois as configurações dos sensores e atuadores são realizadas pelo servidor Web. Este projeto teve como objetivo relacionar as diferentes áreas de conhecimento estudadas no curso de Especialização em Desenvolvimento de Software. A solução desenvolvida é responsável por apresentar uma alternativa de baixo custo na área de Domótica e de fácil utilização, pois seu uso não necessita de conhecimentos em programação. Palavras-chave: Arduino. Monitoramento de sensores. Eletrônica. Domótica.
  7. 7. ABSTRACT YEBAHI, Haissam. InoSensor: Management Tool for Arduino Sensors. 2013. 141 f. Monograph (Pós-graduação Lato Sensu de Especialização em Desenvolvimento de Software) - Universidade do Estado de Santa Catarina. Programa de Pós-graduação em Desenvolvimento de Software, São Bento do Sul, 2013. The technologies are becoming more present on people's lives. Over time, new solutions come up to facilitate the execution of manual works and reduce the time spent on routine tasks that could be executed by electronic devices more effectively and controlled. Regardless the environment that it is applied, Automation can provide resource management more efficiently and sustainably in residential and industrial environments. Home Automation consists in devices and systems interconnected through a network, which are responsible for providing a mechanism for monitoring and managing the related environment. Home Automation is increasing its accessibility due to the large spread and low cost provided by the growing number of manufacturers of these devices. The use of integrated solutions generates numerous advantages such as cost reduction, simple installation and system expansion. There are available different platforms for development of systems based on microcontrollers fairly simple and with a relative low costs. Arduino is an open source platform that combines different hardware types and a standard architecture made by analog and digital ports with an Atmel microcontroller. This microcontroller is responsible for managing sensors and peripherals connected to the Arduino. Despite the simplicity of the platform, the development for solutions requires basic knowledge about electronics and programming. According to this concept, the InoSensor tool was developed to facilitate the use of sensors and enable easy management and monitoring of the Arduino platform remotely, with no need to perform programming of the firmware whenever is needed to modify sensors settings. The InoSensor solution consists in the following modules: (i) a Web management system, responsible to register the Arduino, its sensors and the actions that must be performed when an event occurs; (ii) Arduino firmware, to interpret the action and
  8. 8. communicate with the Web Management System; and (iii) firmware update wizard, developed to simplify the steps for updating the Arduino with no need to use Arduino’s IDE. Among the existing differentials in InoSensor tool, compared to existing solutions, there is the ability of remote monitoring sensors across a local network or the Internet, and the use of the solution by people without programming knowledge because the sensors and actuators setting are carried out on the Web server. This Project aimed to relate the different knowledge areas studied in the course of Software Development Specialization. The developed solution is responsible for presenting a low-cost and easy to use alternative in Home Automation area, because no programming knowledge is required to use this tool. Keywords: Arduino. Automation. Home automation. Sensors monitoring. Electronic
  9. 9. LISTA DE ILUSTRAÇÕES Figura 1 – Interdisciplinaridade na Automação .................................... 26 Figura 2 – Exemplos de sensores para Arduino .................................... 28 Figura 3 – Exemplo de sensor de umidade do solo ............................... 31 Figura 4 – Módulo de comunicação sem fio Xbee ................................ 33 Figura 5 – Transmissor X10 .................................................................. 34 Figura 6 – Exemplo de Receptor ........................................................... 35 Figura 7 – Esquemática de comunicação dos módulos IHC ................. 37 Figura 8 – Primeiro modelo de Arduino projetado ............................... 40 Figura 9 – Modelo atual do Arduino Uno ............................................. 40 Figura 10 – Arduino Mega .................................................................... 41 Figura 11 – Principais componentes do hardware do Arduino ............. 41 Figura 12 – Alimentação de energia do Arduino .................................. 42 Figura 13 – Portas de alimentação de energia para sensores ................. 43 Figura 14 – Identificação de operação na comunicação serial .............. 44 Figura 15 – Microcontrolador Atmel no Arduino ................................. 45 Figura 16 – Estrutura interna de um microcontrolador Atmel .............. 46 Figura 17 – Arquitetura Harvard ........................................................... 47 Figura 18 – Botão para reiniciar o Arduino........................................... 49 Figura 19 – Conectores de expansão ..................................................... 51 Figura 20 – Shields sobrepostos e conectados sobre um Arduino ......... 52 Figura 21 – Exemplo de circuito integrado em um sensor .................... 53 Figura 22 – Portas utilizadas pelo shield ethernet no Arduino Mega.... 56 Figura 23 – Exemplo de sketch carregada na IDE do Arduino ............. 57 Figura 24 – Seleção do modelo do Arduino na IDE ............................. 58 Figura 25 – Framework Noduino .......................................................... 60 Figura 26 – Ferramenta Breakout.......................................................... 61 Figura 27 – Visão macro da representação do sistema .......................... 65 Figura 28 – Sensor Temperatura e Umidade DHT11 ............................ 66 Figura 29 – Fotoresistor ........................................................................ 66 Figura 30 – Sensor de chama ................................................................ 67 Figura 31 – Sensor de gás ..................................................................... 67 Figura 32 – Sensor de vibração ............................................................. 68 Figura 33 – Sensor magnético ............................................................... 68 Figura 34 – Sensor presença PIR .......................................................... 69
  10. 10. Figura 35 – Relé .................................................................................... 69 Figura 36 – LED RGB .......................................................................... 70 Figura 37 – Buzzer ................................................................................ 70 Figura 38 – Arduino conectado à protoboard ....................................... 72 Figura 39 – Modelo de protoboard ....................................................... 72 Figura 40 – Shield ethernet ................................................................... 73 Figura 41 – Diagrama de casos de uso .................................................. 82 Figura 42 – Diagrama de pacotes PHP do framework CodeIgniter ...... 84 Figura 43 – Diagrama de pacotes ExtJS ............................................... 87 Figura 44 – Diagrama de classes Java................................................... 88 Figura 45 – Diagrama entidade relacionamento ................................... 90 Figura 46 – Diagrama de atividades...................................................... 92 Figura 47 – Diagrama MVC da aplicação InoSensor ........................... 96 Figura 48 – Prompt de comando do Arduino Builder........................... 98 Figura 49 – Estrutura simplificada do arquivo CSV ........................... 100 Figura 50 – Tela inicial da ferramenta InoSensor ............................... 102 Figura 51 – Tela de usuários da ferramenta InoSensor ....................... 103 Figura 52 – Tela de detalhes do sensor ............................................... 104 Figura 53 – Exibição das configuração de portas do Arduino ............ 105 Figura 54 – Lista de Arduinos cadastrados ......................................... 106 Figura 55 – Tela de cadastro de Arduino ............................................ 107 Figura 56 – Lista de sensores e ações do Arduino .............................. 108 Figura 57 – Tela para cadastro de sensor ............................................ 109 Figura 58 – Tela para cadastro de ação de um sensor ......................... 110 Figura 59 – Tela de verificação de configuração ................................ 111 Figura 60 – Tela de notificações ......................................................... 112 Figura 61 – Tela do assistente de configuração .................................. 113 Figura 62 – Memória utilizada pelo Arduino Mega2560.................... 119 Figura 63 – Memória utilizada pelo Arduino Uno .............................. 120
  11. 11. LISTA DE QUADROS Quadro 1 – Comparação da especificação dos Arduinos ...................... 51 Quadro 2 – Comparativo com ferramentas similares ............................ 62 Quadro 3 – Tipos de portas utilizadas por cada sensore ....................... 71 Quadro 4 – Componentes eletrônicos do projeto ................................ 116 Quadro 5 – Equipamentos para testes do projeto ................................ 117
  12. 12. LISTA DE ABREVIATURAS E SIGLAS ADC AJAX ALU API CABA CEDIA CI CPU DHCP EEPROM ER FTDI GLP GND GPRS GSM HTML HTTP I2C IDE IHC IP JSON KB LCD LDR LED MAC MISO MOSI MVC Analog Digital Convert Asynchronous JavaScript And XML Arithmetic Logic Unit Application Programming Interface Continental Automated Buildings Associations Custom Electronic Design and Installation Association Circuito Integrado Central Processing Unit Dynamic Host Configuration Protocol Electrically Erasable Programmable Read-Only Memory Entidade Relacionamento Future Technology Devices International Gás Liquefeito de Petróleo Ground General Packet Radio Service Global System for Mobile Hyper Text Markup Language Hyper Text Transfer Protocol Inter Integrated Circuit Integrated Development Environment Intelligent Home Control Internet Protocol JavaScript Object Notation Kilobyte Liquid Crystal Display Light Dependent Resistor Light Emitting Diode Media Access Control Master In Slave Out Master Out Slave In Model View Controller
  13. 13. OSGI OSI PC PDT PHP PING PIR PWM P2P RAM RGB ROM RX SCK SMD SPI SRAM TCP TX UDP UML USART USB Open Service Gateway Initiative Open System Interconnection Program Counter PHP Development Tool Hypertext Preprocessor Packet Internet Grouper Passive InfraRed Pulse Width Modulation Peer to Peer Random Access Memory Red Green Blue Read Only Memory Receiver Serial Clock Semi Metalic Disc Serial Peripheral Interface Static Random Access Memory Transmission Control Protocol Transmitter User Datagram Protocol Unified Modeling Language Universal Synchronous Asynchronous Receiver Transmitter Universal Serial Bus
  14. 14. SUMÁRIO 1 INTRODUÇÃO ....................................................................... 18 1.1 FORMULAÇÃO DO PROBLEMA ......................................... 19 1.2 SOLUÇÃO PROPOSTA........................................................... 20 1.3 OBJETIVOS .......................................................................... 201 1.3.1 Objetivo geral .......................................................................... 21 1.3.2 Objetivos específicos ............................................................... 21 1.4 METODOLOGIA ..................................................................... 22 2 FUNDAMENTAÇÃO TEÓRICA ......................................... 25 2.1 AUTOMAÇÃO......................................................................... 25 2.1.1 Sensores.................................................................................... 27 2.2 DOMÓTICA ............................................................................. 29 2.3 SOLUÇÕES PARA AUTOMAÇÃO DOMÓTICA ................. 33 2.3.1 X10............................................................................................ 33 2.3.3 Sistema Lonworks ................................................................... 38 2.4 ARDUINO ................................................................................ 39 2.4.1 Hardware ................................................................................. 39 2.4.1.1 Fonte de alimentação ................................................................ 41 2.4.1.3 Microcontrolador ...................................................................... 44 2.4.1.4 Reset.......................................................................................... 49 2.4.1.5 Conectores de expansão e portas............................................... 49 2.4.1.6 Shields ....................................................................................... 52 2.4.1.7 Sensores .................................................................................... 53 2.4.2 Comunicação ........................................................................... 53 2.4.2.1 Redes e Internet......................................................................... 54 2.4.3 Armazenamento de Dados Externo ....................................... 55
  15. 15. 2.4.4 Plataforma de Desenvolvimento............................................. 56 2.4.4.1 Compilação de código ............................................................... 59 2.4.5 Modelos e variantes ................................................................. 59 2.5 FERRAMENTAS SIMILARES................................................ 60 2.5.1 Noduino .................................................................................... 60 2.5.2 Breakout ................................................................................... 61 2.5.3 Arduino-Homebot ................................................................... 61 2.6 ANÁLISE COMPARATIVA ENTRE AS FERRAMENTAS . 62 2.7 CONCLUSÕES DO CAPÍTULO ............................................. 63 3 PROJETO ................................................................................ 64 3.1 COMPOSIÇÃO DO SISTEMA ................................................ 64 3.1.1 Sensores Utilizados .................................................................. 65 3.1.2 Plataforma de Prototipação.................................................... 71 3.1.3 Shield ethernet e SD ................................................................. 73 3.2 COMPORTAMENTO DO SISTEMA ...................................... 73 3.2.1 Ações ......................................................................................... 74 3.3 PROTOCOLO DE COMUNICAÇÃO...................................... 75 3.3.1 Monitor de Notificações .......................................................... 75 3.4 MODELAGEM DO SISTEMA ................................................ 76 3.4.1 Requisitos ................................................................................. 76 3.4.1.1 Requisitos Funcionais ............................................................... 76 3.4.1.2 Regras de Negócio .................................................................... 77 3.4.1.3 Requisitos Não-Funcionais........................................................ 79 3.4.2 Casos de Uso ............................................................................ 80 3.4.3 Diagramas de Pacotes e Classes ............................................. 83 3.4.4 Diagrama Entidade-Relacionamento..................................... 89
  16. 16. 3.4.5 Diagrama de Atividades ......................................................... 92 3.5 CONCLUSÕES DO CAPÍTULO ............................................. 93 4 IMPLEMENTAÇÃO .............................................................. 94 4.1 PADRÕES DE PROJETO MVC .............................................. 94 4.2 TECNOLOGIAS E FERRAMENTAS ..................................... 94 4.2.1 Servidor Web ........................................................................... 94 4.2.2 ExtJS ........................................................................................ 95 4.2.3 C/C++ ....................................................................................... 96 4.2.4 Java .......................................................................................... 97 4.2.5 Arduino Builder ...................................................................... 97 4.3 BANCO DE DADOS................................................................ 98 4.4 PROTOCOLO DE CONFIGURAÇÕES DO ARDUINO ........ 99 4.5 APRESENTAÇÃO DA FERRAMENTA .............................. 101 4.5.1 Módulo Web InoSensor ........................................................ 101 4.5.1.1 Cadastro de Usuários .............................................................. 102 4.5.1.2 Configuração Geral ................................................................. 103 4.5.1.3 Configuração de E-mail .......................................................... 103 4.5.1.4 Tipo de Ação ........................................................................... 103 4.5.1.5 Sensor...................................................................................... 104 4.5.1.6 Tipo de Porta ........................................................................... 104 4.5.1.7 Modelo de Arduino ................................................................. 105 4.5.1.8 Arduino ................................................................................... 105 4.5.1.9 Monitoramento ........................................................................ 111 4.5.2 Módulo Atualização de Firmware ....................................... 113 4.6 CONCLUSÕES DO CAPÍTULO ........................................... 113 5 TESTES E VALIDAÇÃO .................................................... 115
  17. 17. 5.1 TESTES DO FIRMWARE DO ARDUINO ........................... 115 5.2 TESTES DE INTEGRAÇÃO ................................................. 117 5.3 TESTE DE ESCALABILIDADE DO FIRMWARE .............. 118 5.4 PROBLEMAS IDENTIFICADOS.......................................... 119 5.5 CONCLUSÕES DO CAPÍTULO ........................................... 121 6 CONCLUSÕES ..................................................................... 122 6.1 TRABALHOS FUTUROS ...................................................... 124 REFERÊNCIAS .................................................................... 125 APÊNDICES .......................................................................... 128
  18. 18. 18 1 INTRODUÇÃO O uso de dispositivos eletrônicos, seja para a realização de tarefas do cotidiano ou para Automação industrial, está presente nos mais variados ambientes. O simples fato de utilizar um sensor infravermelho para detectar a presença de movimento, ou ligar uma lâmpada automaticamente ao escurecer, envolve componentes eletrônicos que reduzem a necessidade de executar tarefas manualmente. Independente da aplicação, o uso de tecnologia para Automação, seja para residências, empresas ou indústrias, proporciona o gerenciamento de recursos de forma bastante eficiente e sustentável, além de obter diversos benefícios como redução de custos, manutenção e segurança (DIAS; PIZZOLATO, 2004). A automação residencial, também conhecida como Domótica, é formada por um conjunto de dispositivos e equipamentos interconectados através de uma rede para comunicação. Nesse contexto, as informações são coletadas e processadas, conforme as regras são definidas. Determinadas ações podem ser executadas com o objetivo de supervisionar ou gerenciar o ambiente em que estão inseridas e assim satisfazer as necessidades de comunicação, conforto e segurança (DIAS; PIZZOLATO, 2004). Devido às constantes mudanças e às necessidades individuais de cada cenário, o comportamento de sistemas automatizados deve proporcionar flexibilidade e uma fácil adaptação às condições do ambiente (SGARBI; TONIDANDEL, 2006). Para Sousa (2009), com a crescente popularização da Internet, tornou-se possível desenvolver novos modelos de sistema baseados em ações executadas de forma remota e transparente para controle e atuação de forma bastante rápida e segura. Atualmente a velocidade de acesso a rede mundial de computadores, possibilita que as informações sejam transmitidas por diferentes meios e entre dispositivos geograficamente distribuídos, sem a necessidade de altos investimentos em infraestrutura. Estão disponíveis no mercado, plataformas que permitem a programação de microcontroladores de forma bastante simplificada a custos relativamente baixos se comparados à prototipação de hardware customizado para Automação. Arduino é uma das plataformas para prototipação e desenvolvimento baseada em microcontroladores mais populares da atualidade. Em 2011, já haviam sido vendidas mais de trezentas mil
  19. 19. 19 unidades da versão original. Isso se deve principalmente à sua característica open source1, o que torna possível o desenvolvimento de diversas soluções para uma mesma arquitetura (TORRONE, 2011). Sua concepção envolve a combinação de diferentes modelos de hardware, empregados através de uma arquitetura e software padrão para a prototipação de circuitos eletrônicos sem exigir grandes conhecimentos, pois grande parte dos componentes são construídos para facilitar a utilização de sensores. Desenvolvida para controlar o ambiente em que está inserida, a interação entre os componentes na plataforma Arduino ocorre por meio dos sinais recebidos por sensores conectados as portas analógicas e digitais existentes na placa principal. O gerenciamento é realizado por um microcontrolador Atmel AVR. A programação é feita com o uso de uma variante da linguagem C, que permite criar projetos autônomos ou a comunicação com software de outros dispositivos eletrônicos (Arduino, 2013). Ainda que a simplicidade da plataforma facilite o desenvolvimento das mais variadas soluções, é necessário que os interessados, além de conhecimento em eletrônica básica, também tenham conhecimentos mais avançados de lógica e programação. Devido à ausência de um sistema operacional, a codificação de microcontroladores com limitações de processamento e memória exige maior atenção na elaboração do software que estará embarcado no dispositivo, pois todo controle necessário deve estar presente na solução. 1.1 FORMULAÇÃO DO PROBLEMA Muitas das ações envolvidas ao se criar projetos baseados em sensores incluem padrões e rotinas em código programado bastante semelhantes, mas que necessitam de retrabalho para ajustar as ações executadas. Essas atividades despendem tempo e dificultam a manutenção, quando uma simples parametrização poderia adaptar as regras e comportamentos desejados a um novo contexto. Segundo alguns princípios presentes na Automação e Domótica, é necessário que haja uma forma simples de gerenciar os dispositivos e 1 Software de utilização livre e sem custo que permite a alteração e distribuição de cópias de forma gratuita de acordo com a licença de software livre, visando beneficiar a comunidade de todos os desenvolvedores e usuários (SEABRA, 2007)
  20. 20. 20 as ações que devem ser executadas com base nas regras estabelecidas. Levando-se em conta o ambiente que se deseja controlar ou monitorar, é preciso que se considere a possibilidade de realizar um monitoramento remoto de forma centralizada, para facilitar e acelerar o processo de análise de informações. A plataforma Arduino possui soluções simples para as mais variadas tarefas, porém é necessário programar os sensores sempre que for preciso ajustar as condições e ações que devem ser automatizadas. Estão disponíveis na Internet soluções com as quais é possível executar comandos de forma remota no Arduino com o uso da comunicação serial. Isso acaba por limitar a autonomia do dispositivo em ambientes distribuídos, devido à necessidade de um computador para prover o serviço de conexão da rede ou Internet para o Arduino. 1.2 SOLUÇÃO PROPOSTA Neste trabalho, foi desenvolvida a ferramenta InoSensor, com o propósito de facilitar e simplificar o processo de adição de sensores e permitir o monitoramento e controle de Arduino em uma rede local ou Internet. Sua utilização estende-se como uma ferramenta de apoio para disciplinas como Eletrônica Básica e Redes de Computadores, pois pode facilitar a compreensão de conceitos teóricos aprendidos em cursos de graduação com foco em tecnologia ou para pessoas interessadas em alternativas para Automação de baixo custo. A proposta da solução InoSensor contempla o desenvolvimento dos seguintes módulos: (i) Sistema Web para gerenciamento de Arduino; (ii) Firmware para interpretar as ações e comunicar com o sistema gerenciador Web; e (iii) Sistema para atualização de firmware de Arduino. A execução e desenvolvimento deste projeto justificam-se por contemplar e integrar diversas áreas do curso de Especialização de Desenvolvimento de Software, como engenharia de software, sistemas web, padrões de projeto, programação, sistemas distribuídos, redes de computadores e banco de dados, além de contribuir para o meio acadêmico como uma ferramenta de apoio para disciplinas como Eletrônica Básica, Programação e Sistemas Distribuídos.
  21. 21. 21 1.3 OBJETIVOS Esta subseção define as metas e características necessárias para que a proposta da ferramenta desenvolvida atinja os objetivos definidos para a solução do problema. 1.3.1 Objetivo geral Desenvolver um sistema de monitoramento de sensores para a plataforma Arduino por meio de uma rede local ou Internet para simplificar o processo de ajuste de configurações, sem a necessidade de reprogramar o firmware em caso de mudanças de regras e ações. 1.3.2 Objetivos específicos      Estudar os conceitos relacionados à Domótica, sensores, comunicação via rede ethernet e armazenamento de dados para Arduino; Pesquisar soluções similares de ferramentas para gerenciamento de sensores com Arduino; Pesquisar as tecnologias necessárias para o desenvolvimento do projeto; Elaborar a modelagem conceitual do sistema; Implementar o sistema;  Módulo para gerenciamento de Arduino;  Módulo para cadastro de sensores;  Sensor de temperatura e umidade;  Relé;  Foto resistor;  Sensor de fogo;  Sensor de vibração;  Sensor magnético;  LED RGB;  Buzzer;  Sensor de presença infravermelho.  Módulo para cadastro de ações  Enviar e-mail;  Acionar sensor;  Ligar LED RGB.
  22. 22. 22        Módulo para reset remoto de alarme; Módulo para atualização de configurações; Firmware para controle de sensores e ações para Arduino; Sistema de apoio à atualização de firmware; Desenvolver protocolo para troca de informações entre gerenciador e Arduino. Testar e validar a implementação das funcionalidades propostas pela ferramenta; Documentar o desenvolvimento e resultados alcançados. 1.4 METODOLOGIA A estrutura deste trabalho foi dividida em seis grandes etapas, listadas abaixo:   Levantamento bibliográfico: Documentar os temas envolvidos neste trabalho para facilitar a compreensão e selecionar as soluções mais adequadas para o desenvolvimento da ferramenta InoSensor;  Fundamentação teórica sobre a área de Automação e Domótica na área da Computação;  Fundamentação teórica sobre Arduino, shields e sensores com o objetivo de identificar as características e particularidades da plataforma, bem como os mecanismos necessários para gerenciar os dispositivos conectados;  Pesquisa de soluções similares para Automação com Arduino a fim de avaliar inovações e soluções eficazes existentes. Análise técnica: Estudo das tecnologias necessárias para o desenvolvimento da ferramenta proposta, suas particularidades e compatibilidades;  Estudo das tecnologias envolvidas na ferramenta: JavaScript Object Notation (JSON), framework ExtJS, Javascript, PHP, MySQL, Java e C++ para microcontroladores Atmel presentes no Arduino;  Padrões de projetos Model View Controller (MVC) para PHP e JavaScript, com o objetivo de facilitar a ampliação da ferramenta em versões futuras;  Avaliar os protocolos de comunicação e bibliotecas disponíveis para Arduino, tanto para comunicação via
  23. 23. 23     ethernet quanto para armazenamento de dados em cartão de memória SD;  Pesquisar soluções para atualização de firmware sem a necessidade da IDE de desenvolvimento para Arduino. Levantamento de requisitos e modelagem: Definição dos requisitos e funcionalidades da ferramenta proposta;  Definição dos requisitos e regras de negócio necessários para contemplar o funcionamento da ferramenta InoSensor;  Modelagem Unified Modeling Language (UML) do sistema, a análise deverá abranger a especificação e componentes de software necessários para desenvolver os módulos propostos no escopo do trabalho. Para isto serão modelados, casos de uso, diagrama de atividades e diagrama de pacotes e diagrama de classes;  Definição do modelo Entidade Relacionamento (ER) para o banco de dados utilizado no servidor Web. Desenvolvimento: Desenvolvimento do sistema, seguindo o escopo e a definição do projeto;  Definição da estrutura de banco de dados para suprir as necessidades do sistema;  Implementação dos módulos propostos conforme a definição dos requisitos. Todo o desenvolvimento deve seguir a modelagem e as funcionalidades descritas no escopo do trabalho. Testes e validação: Executar testes e validações da solução proposta e verificar as funcionalidades desenvolvidas, corrigindo-as caso seja necessário;  Testes das funcionalidades presentes, avaliando se os serviços implementados alcançaram os resultados esperados;  Testes de comunicação de rede e atualização de dispositivos via ethernet para certificar-se de que a atualização é executada corretamente. Documentação: Durante o projeto, são registradas as etapas executadas desde o levantamento do problema, a fundamentação teórica, a proposta da solução, o desenvolvimento, testes, validações, os resultados finais e as conclusões. Esta documentação deve permitir que interessados possam compreender a solução, acrescentar novas
  24. 24. 24 funcionalidades em versões futuras e efetuar os mesmos testes executados para a validação do projeto. 1.5 ESTRUTURA DO TRABALHO No primeiro capítulo, é apresentada uma introdução sobre o projeto, objetivos, a devida importância do projeto na assimilação e aplicação dos temas abordados no curso de Especialização em Desenvolvimento de Software. No segundo capítulo (Fundamentação Teórica), são definidos os conceitos relacionados a Automação, Domótica, soluções para automação residencial e Arduino e meios de comunicação, além de um estudo de soluções similares disponíveis, para comparação com a ferramenta InoSensor. O terceiro capítulo (Projeto) descreve as especificações das funcionalidades da ferramenta InoSensor, sua documentação, diagrama de atividades da UML, requisitos e regras de negócio, diagrama de pacotes, diagrama de classes e modelo ER do banco de dados. No quarto capítulo (Implementação) e quinto capítulo (Apresentação da Ferramenta), são apresentados os resultados obtidos durante a implementação da ferramenta, descrevendo as funcionalidades implementadas. O quinto capítulo apresenta os resultados dos testes aplicados para avaliar a conformidade dos requisitos e verificar a integração entre os módulos desenvolvidos. O sexto e último capítulo apresentam as conclusões, dificuldades encontradas durante o desenvolvimento e sugestões para trabalhos futuros que possam aprimorar e expandir as funcionalidades presentes na ferramenta.
  25. 25. 25 2 FUNDAMENTAÇÃO TEÓRICA Neste capítulo, são abordados os conceitos necessários para o projeto, a fim de servir como base para o desenvolvimento da solução proposta pela ferramenta InoSensor. A seção 2.1 apresenta o estudo sobre Automação, sua evolução com o uso de computadores e os conceitos relacionados a esse trabalho, como sensores e atuadores. Na seção 2.2, são abordados os temas relacionados a Domótica e os benefícios que podem ser gerados com o seu uso. Na seção 2.3, são apresentadas algumas das soluções existentes no mercado para a Automação residencial e predial. Os estudos da plataforma Arduino, suas particularidades e os conceitos necessários ao desenvolvimento da solução proposta, são apresentados na seção 2.4. A seção 2.5 apresenta um estudo de ferramentas similares existentes e um comparativo entre as funcionalidades das ferramentas pesquisadas e a ferramenta InoSensor. Por fim, na seção 2.6, são apresentadas as considerações dos estudos da fundamentação teórica. 2.1 AUTOMAÇÃO Desde a antiguidade o homem tem buscado ferramentas para reduzir a carga de trabalho e para facilitar a execução de tarefas de forma automatizada, desenvolvendo instrumentos que o auxiliem a controlar e alcançar seus objetivos de forma mais rápida. A área de Automação foi impulsionada com o crescimento adjunto da Revolução Industrial e trouxe diversos benefícios, tanto para o setor industrial, com a introdução das máquinas para substituir o homem e melhorar os processos produtivos, quanto para as pessoas, que puderam despender seu tempo em atividades mais importantes para melhorar a sua condição de vida (BIONDO, 2011). Para Martins (2012), a Automação pode ser definida por um conjunto de técnicas que possibilitam construir sistemas ativos, capazes de atuar de forma autônoma com base em informações recebidas no meio que atuam, de forma bastante eficiente. Uma das características presentes na Automação é a realização de trabalhos por sistemas apoiados por computadores, com o objetivo de reduzir a intervenção humana e obter maior segurança, qualidade e rapidez. Um erro comum é confundir a Automação com automatização, que está relacionada à execução de movimentos automáticos, repetitivos e mecânicos.
  26. 26. 26 A Automação permite a integração de conhecimentos, substituindo observação, esforços e decisões humanas por dispositivos (mecânicos, elétricos e eletrônicos) e software desenvolvido para gerenciamento e controle. Essa integração é ilustrada na Figura 1 e demonstra a interdisciplinaridade entre áreas afins como: (i) a computação, responsável por prover os mecanismos necessários à modelagem, análise e simulação do software, (ii) a eletrônica, responsável por processar os sinais e controlar os equipamentos, (iii) a mecânica, formada por todos os equipamentos conectados que formam a parte física do sistema e (iv) sistema de controle, responsável por definir o comportamento e ações desejadas do sistema (MARTINS, 2012). Figura 1 – Interdisciplinaridade na Automação Fonte: ROSARIO (2009) Antes da Automação ser realizada por computadores, o controle de tarefas e comandos de máquinas era feito por circuitos com válvulas eletrônicas e equipamentos de controle, medição elétrica e pneumática conectados a fios elétricos. A adaptação a um novo contexto exigia a modificação nas conexões, sendo que em muitos casos tornava-se mais barato substituir o sistema por um novo painel controlador (ROSARIO, 2009).
  27. 27. 27 Por volta da década de 70, os avanços tecnológicos permitiram a substituição das válvulas por transistores e dos fios por circuitos integrados, trazendo inúmeros benefícios. Esses avanços possibilitaram transferir as modificações de hardware para o software e deram origem aos Controladores Lógicos Programáveis (CLPs), que possuem memória programável e executam instruções de entrada e saída (MARTINS, 2012). A produção desses equipamentos em larga escala, possibilitou o desenvolvimento de microprocessadores dedicados a um baixo custo. A utilização de componentes eletrônicos como sensores, atuadores e circuitos controladores não está mais limitada a ambientes industriais e são empregados em diversas áreas de aplicações como robótica, medicina, automação predial e Domótica (MARTINS, 2012). Qualquer que seja o emprego da Automação, é necessário que existam mecanismos para determinar condições variáveis (e.g., temperatura, luminosidade, umidade) do ambiente e informar ao circuito eletrônico a ocorrência de eventos para avaliar e comandar a execução de ações desejadas (WENDLING, 2010). Dois dos principais elementos que podem ser encontrados na Automação são os sensores e os atuadores. 2.1.1 Sensores Um sensor pode ser descrito como um dispositivo eletroeletrônico que possui a propriedade de transformar uma grandeza física (e.g., calor, luz, som, movimento) relacionada ao material utilizado na fabricação do sensor em um sinal elétrico. Pode-se citar como exemplos: (i) sensores de fotodiodos para conversão elétrica/luminosa, (ii) termistores para conversão elétrica/térmica e (iii) sensores magnéticos para conversão elétrica/magnética (WENDLING, 2010). A Figura 2 ilustra diferentes tipos de sensores que podem ser utilizados com a plataforma Arduino.
  28. 28. 28 Figura 2 – Exemplos de sensores para Arduino Fonte: Adaptado de DX2 (2013) Os sinais gerados por sensores podem ser manipulados, armazenados ou servir como base para processamento por outros dispositivos. Podem ser utilizados em sistemas de monitoramento para detectar abertura de portas, movimento de pessoas, vibrações, ruídos, princípios de incêndio e temperatura (SOUSA, 2009). Alguns sensores não possibilitam a leitura do sinal gerado diretamente pelo sistema de controle, sendo necessário um circuito de interface responsável por produzir um sinal que possa ser lido pelo controlador. O dispositivo completo, formado pelo sensor e o circuito de interface, é denominado transdutor. Como exemplos, podem ser citados os transdutores de temperatura, detecção de presença, velocidade, campo eletromagnético, etc. (WENDLING, 2010). 2.1.2 Atuadores Um sistema automatizado deve possibilitar a execução de ações baseadas em eventos e informações coletadas do ambiente pelos sensores. Os atuadores agem sobre o ambiente através de um sinal gerado pelo controlador e normalmente são compostos por uma interface eletromecânica que tem suas características alteradas conforme os impulsos elétricos recebidos (PINHEIRO, 2013). Como os atuadores estão relacionados à interface de saída, existem basicamente dois tipos: 2 Disponível em: http://www.dx.com/
  29. 29. 29   Saídas digitais: representadas por valores discretos, que permitem determinar se uma grandeza física atingiu um valor predeterminado e admitem o estado ligado e desligado. Essas saídas possibilitam controlar dispositivos como relés, solenoides, LEDs (WENDLING, 2010); Saídas analógicas: convertem valores contínuos em sinais de saída de tensão, normalmente variando entre 0V e 5V. Essas saídas podem controlar motores e luminosidade (ALIEVI, 2005). 2.2 DOMÓTICA Por volta dos anos 80, a Automação presente nas indústrias alcançou as edificações corporativas e originou um novo conceito denominado de edifício inteligente, que possibilitou o emprego de componentes e soluções para proporcionar diversos benefícios, tais como: gerenciamento, conforto, economia e prevenção de acidentes (DIAS, PIZZOLATO, 2004). A aplicação dos conceitos de Automação em edifícios torna os ambientes mais produtivos, saudáveis e eficientes, além de contribuir para o aumento da produção e redução de custos operacionais. Estes fatores permitiram o emprego mais fácil da Automação em ambientes comerciais e industriais, em relação aos habitacionais (DIAS, PIZZOLATO, 2004). Com o passar dos anos, os mesmos princípios de Automação passaram a ser aplicados nas residências, utilizando equipamentos direcionados a criação de casas inteligentes com ênfase no controle de recursos, iluminação, segurança, temperatura, conforto e entretenimento. Com a grande popularização, a Automação residencial passou a ter uma designação própria, conhecida como Smart House ou Intelligent House. No Brasil, é empregado o termo Domótica, sob influência do termo francês Domotique (ROSARIO, 2009). A Domótica agrega diversos conceitos de outras ciências, como arquitetura, engenharia, computação e possui o objetivo de oferecer novas possibilidades, introduzidas pelas tecnologias digitais frente as necessidades do usuário, e uma maior interação com a residência (BOLZANI, 2007). Um sistema Domótico é formado por diversos componentes, dispositivos e sistemas interconectados por meio de uma rede de comunicação. Essa rede é responsável pela troca de informações e pela
  30. 30. 30 execução de ações para supervisionar e gerenciar o ambiente no qual o sistema está inserido (DIAS, PIZZOLATO, 2004). A Automação residencial está cada vez mais acessível, devido ao barateamento das tecnologias e ao aumento da concorrência no setor. O uso de soluções integradas gera ainda mais vantagens, podendo ser citadas a redução de custos, maior facilidade para a instalação e expansões do sistema (ROSARIO, 2009). No Brasil, a Associação Brasileira de Automação residencial (AURESIDE) menciona que o emprego da Domótica em construções residenciais e prediais, além de ser uma ferramenta de marketing, é um diferencial para o setor, pois agrada tanto os desejos de pessoas interessadas por tecnologia, que estão sempre em busca de novidades, quanto pessoas que anseiam por maior segurança, ambas características que podem ser encontradas em sistemas de automação predial (DIAS, PIZZOLATO, 2004). As inúmeras soluções tecnológicas que podem ser incorporadas na Domótica criam novas oportunidades, aumentando a qualidade de vida das pessoas e até mesmo removendo impedimentos que dificultam a mobilidade de pessoas portadoras de necessidades especiais, além de possibilitar um maior racionamento no consumo de recursos como água e luz e auxiliar na preservação do meio ambiente (DIAS, PIZZOLATO, 2004). Uma das utilidades da Domótica é aliar o uso de dispositivos eletrônicos à equipamentos da informática de forma sistêmica e possibilitar uma gestão integrada de recursos presentes em um ambiente. Segundo Rosário (2009), essa ciência tem tornado a vida mais confortável, segura e até mais divertida, com a programação de tarefas rotineiras para serem executadas de acordo com as necessidades. De face a essa nova realidade, as residências podem usufruir de benefícios de sistemas denominados complexos, que não atuam somente como controladores, mas sim como gerenciadores, com a troca de informações entre todos os sistemas que compõem as instalações automatizadas, para que as funcionalidades possam ser personalizadas pelo cliente (DIAS, PIZZOLATO, 2004). As necessidades de economia, conforto e segurança criam as condições ideais para viabilizar o emprego da Domótica em questões como (ROSÁRIO, 2009):  Controle de Energia e Água: O uso de módulos apropriados possibilita uma melhor gestão de recursos, levando-se em consideração os aspectos do ambientes que se deseja controlar.
  31. 31. 31 É possível, por exemplo, o acionamento noturno de equipamentos, detecção de presença e desligamento automático após um determinado tempo. Já para o racionamento de água, é possível realizar o controle com o emprego de sensores de presença, botão temporizador, irrigação do solo conforme as condições de umidade da terra (Figura 3); Figura 3 – Exemplo de sensor de umidade do solo Fonte: DX (2013)   Controle de Segurança: Existem diversos sensores para controle da segurança em diferentes níveis, que determinam as ações a serem executadas, baseadas nos eventos ocorridos. Com apenas alguns componentes, é possível detectar situações de emergência como: vazamento de gás, detecção de presença, prevenção de incêndios, controles de acessos, abertura de portas e janelas e emissão de sinais sonoros ou luminosos. O uso de sensoriamento em um sistema de alarme possibilita proteger áreas comercias e residências e foi desenvolvido para manter as dependências seguras de forma simples, executando ações como disparo de alarmes, acendimento de lâmpadas, etc; Controle de Temperatura e Umidade: São fatores de comodidade. Através do controle térmico, é possível programar equipamentos de aquecimento, ventilação, desumidificadores e condicionadores de ar para serem ligados ou desligados e propiciar um melhor nível de conforto, além de gerar maior comodidade e propiciar o uso racional de energia.
  32. 32. 32 Levando-se em conta as necessidades da Automação, é primordial que os equipamentos sejam integrados e interligados com o objetivo de oferecer aos usuários a ampliação dos resultados desejados. Em relação à tecnologia empregada, os sistemas de automação podem ser categorizados de duas formas (DIAS, PIZZOLATO, 2004):   Centralizado: São os sistemas nos quais o processamento ocorre de forma centralizada em uma central de controle, onde são conectados todos os dispositivos presentes no circuito. Essa central é responsável por receber os sinais e informações dos sensores e enviar os comandos das ações e ajustes que devem ser executados no sistema; Distribuído: Os dispositivos conectados possuem processamento inteligente, cada qual com uma função específica para atender uma necessidade do sistema. Os dispositivos apresentam-se conectados por meio de uma rede, realizando a comunicação e troca de informações entre sensores e atuadores, além de possibilitar o controle e monitoramento do sistema. Independente da arquitetura, um sistema de Automação deve prover flexibilidade no desenvolvimento das soluções e na integração dos dispositivos, dessa forma é necessário escolher a tecnologia adequada ao projeto de Automação. Apesar dos benefícios propostos pela Domótica, ainda existem diversos desafios a serem superados principalmente por existirem poucos protocolos e dispositivos padronizados para a aplicação de soluções em residências, onde muitas destas soluções são herdadas dos ambientes de Automação industrial. Devido à crescente demanda, existem diversas entidades nacionais e internacionais que buscam definir mecanismos para padronizar o emprego de soluções tecnológicas residenciais, como a Continental Automated Buildings Associations (CABA), a Open Service Gateway Initiative (OSGI) e a Custom Electronic Design and Installation Association (CEDIA) (BOLZANI, 2007). Atualmente, no Brasil, existem normas internacionais relacionadas à definição dos padrões de cabeamento para sistemas de Automação. Destacam-se a ANSI/EIA/TIA-570-A para cabeamento residencial e a norma ANSI/EIA/TIA-862, para edifícios comerciais (PINHEIRO, 2004).
  33. 33. 33 Um dos destaques no cenário atual do mercado é a Zigbee Alliance, responsável por desenvolver um padrão de redes sem fio (Figura 4) de baixo custo, também conhecido como Xbee, destinado a aplicações embarcadas, formada por dezenas de empresas como Mitsubishi, Samsung, Cisco, Philips, Motorola, entre outras (DIAS, PIZZOLATO, 2004). Figura 4 – Módulo de comunicação sem fio Xbee Fonte: DX (2013) 2.3 SOLUÇÕES PARA AUTOMAÇÃO DOMÓTICA Grandes corporações estão se unindo para formar consórcios e associações para aperfeiçoar e desenvolver soluções integradas de produtos e sistemas de Automação residencial. Nas subseções a seguir, são descritas algumas das soluções convencionais existentes para aplicação da Domótica. 2.3.1 X10 Desenvolvida na década de 70 pela empresa escocesa Pico Electronics, é uma tecnologia para controlar dispositivos em residências através da transmissão de dados binários pela corrente elétrica. Atualmente, o protocolo também está disponível para operar via rádio frequência (WOLLZ, 2012). Devido ao tempo de mercado, o sistema X10 é um dos protocolos mais utilizados no mundo para Automação residencial, principalmente devido a expiração da patente no ano de 1997, que possibilitou a fabricação dos dispositivos por diferentes empresas, além de uma grande difusão e diversificação de produtos (WOLLZ, 2012).
  34. 34. 34 Uma das grandes vantagens desse sistema é a facilidade de instalação, já que a comunicação é feita na própria estrutura de rede elétrica (DIAS, PIZZOLATO, 2004). Existem dois tipos de dispositivos no sistema X10, os transmissores e os receptores. Os transmissores (Figura 5) são responsáveis por enviar sinais de comando para os equipamentos que serão controlados (ROSARIO, 2009). Existem diferentes tipos de controladores, podendo ser citados: (i) módulo transmissor serial, para envio de comandos para a rede elétrica e gerenciamento dos receptores pelo computador; (ii) módulo transmissor termostato, que possibilita ligar e desligar equipamentos com base na temperatura ajustada; (iii) módulo transmissor para controle via telefone, pelo qual pode-se receber comandos via linha telefônica e controlar os equipamentos da rede. Figura 5 – Transmissor X10 Fonte: ROSARIO (2009) Os receptores são os equipamentos que recebem os comandos dos transmissores, sendo que um receptor pode ser controlado por mais de um controlador (ROSARIO, 2009). Entre os modelos convencionais de receptores, podem ser citados: (i) o módulo receptor de lâmpada com função de ligar, desligar, ajuste de intensidade luminosa (dimmer); (ii) módulo receptor para tomada, para ligar e desligar equipamentos elétricos.
  35. 35. 35 O funcionamento é bastante simples. Cada receptor (Figura 6) deve ser configurado com um endereço formado por um código da casa representado por uma letra (A-P), seguido por um identificador para o receptor (A1-A16), totalizando 256 endereços possíveis de serem configurados. Após a configuração, um transmissor conectado na mesma rede elétrica ou frequência pode enviar um comando para controlar um equipamento em um endereço específico ou até mesmo todos os equipamentos configurados em um mesmo código de casa (ROSARIO, 2009). Figura 6 – Exemplo de Receptor Fonte: ROSARIO (2009) Os modelos mais simples de receptores não permitem que seu status seja detectado pelos transmissores. Os modelos que possibilitam desenvolver sistemas mais robustos com comunicação em mão dupla e retroalimentação de status, custam de duas a quatro vezes mais (WOLLZ, 2012). Apesar dos benefícios propostos pelo X10, existem limitações que devem ser consideradas e solucionadas com o emprego de técnicas e recursos apropriados. Em relação à segurança, é necessário instalar filtros nas entradas da residência para impedir a entrada ou saída de
  36. 36. 36 sinais gerados por outros módulos X10. Para casos em que a residência utilize circuito bifásico ou trifásico, a transmissão do sinal deve ser feita em diferentes fases. Outro fator importante é a limitação da velocidade de comunicação, pois a taxa máxima de transmissão é de 60bps. Em condições que necessitam de maior velocidade e confiabilidade, deve-se optar por soluções mais robustas e confiáveis (DIAS, PIZZOLATO, 2004). 2.3.2 IHC A Inteligent Home Control (IHC) é uma tecnologia proprietária para Automação residencial com comunicação via cabeamento estruturado. Baseada em uma arquitetura centralizada, os dispositivos presentes na instalação do sistema são conectados a um equipamento central, responsável pelo gerenciamento local por um controle remoto ou, remotamente, com o uso de telefone, Internet e smartphones (DIAS, PIZZOLATO, 2004). A configuração do sistema é feita através da programação das funções dos dispositivos em um software baseado em perguntas e respostas, responsável por adaptar as necessidades e preferências do usuário. Como o IHC é desenvolvido em uma plataforma modular padronizada, suas funcionalidades podem ser adaptadas e expandidas de forma gradativa e implantadas em etapas (TERUEL, 2008). Entre os principais módulos responsáveis pelo funcionamento existentes no sistema IHC (Figura 7), podem ser citados (DIAS, PIZZOLATO, 2004):    Módulo gerenciador: responsável pelo gerenciamento do sistema, é uma unidade composta por um microprocessador responsável por receber os comandos dos dispositivos e pelas ações feitas com base nas configurações do usuário. Possui uma capacidade máxima de 128 entradas e 128 saídas (SCHNEIDER ELECTRIC, 2013); Módulos de Entrada: Possibilitam ao sistema ler informações do ambiente e são responsáveis por receber os sinais provenientes de dispositivos acionadores conectados na rede. Cada módulo de entrada possui 16 portas digitais; Módulo de Saída: Possui a função de acionar os dispositivos de saída conectados e ativar luzes e LEDs de acordo com o
  37. 37. 37   estado dos equipamentos e do sistema. Cada módulo de saída suporta 8 saídas digitais ou dimmerizadas; Módulos de alimentação de energia: São empregados quando os módulos de entrada e saída não fornecem corrente elétrica suficiente para equipamentos que necessitam de tensão própria para o funcionamento; Módulo de comunicação remota: Permite gerenciar e controlar os equipamentos do sistema pela linha telefônica ou Internet. Figura 7 – Esquemática de comunicação dos módulos IHC Fonte: SCHNEIDER ELECTRIC (2013) A tecnologia IHC pode ser considerada uma plataforma bastante sólida com inúmeras soluções para Automação de residências e edifícios, porém a arquitetura proprietária reduz a possibilidade de
  38. 38. 38 integrar os equipamentos a outros sistemas e as funcionalidades de software estão limitadas às soluções disponibilizadas pela empresa. 2.3.3 Sistema Lonworks Também conhecido como LON, foi projetado pela empresa Echelon Corporation em 2005. Foi originado de um grande conjunto de protocolos e do sistema Fieldbus, empregado na Automação Industrial na década de 60 (BIONDO, 2011). A principal motivação no desenvolvimento de um novo padrão era fornecer uma plataforma comum para a interoperabilidade de dispositivos de diferentes fabricantes. A comunicação entre os equipamentos é feita por cabeamento estruturado através do protocolo LonTalk, implementado com base no modelo Open Systems Interconnection (OSI) que permite distribuir o processamento de carga e controlar de dois até trinta e dois mil dispositivos (TERUEL, 2008). No sistema LON, o controle é descentralizado. Os dispositivos denominados “Nós”, são compostos por um microcontrolador Neuron, comunicando-se por um protocolo Peer to Peer (P2P) entre os atuadores e sensores, sem a necessidade de transmitir as informações para uma central de processamento. Esse sistema também faz a comutação das mensagens em diferentes meios físicos, como fibra ótica, infravermelho, radio frequência, par trançado, bastando para isso que transmissores e receptores sejam compatíveis a um mesmo meio (BIONDO, 2011). Todo o controle é realizado pelo software Lonwork Network Service, composto por uma Application Programming Interface (API) para permitir a programação, gerenciamento e diagnóstico, além de suportar o protocolo IP que possibilita a integração da rede com a Internet (BIONDO, 2011). A aplicação da tecnologia LON é reconhecida pela American National Standards Institute (ANSI) e é adotada como padrão aberto para instalação em ambientes industriais, prediais e residenciais, além de ser uma das três tecnologias recomendadas para automação predial pela Inteligent Building Institute (IBI) (WOLLZ, 2012). Apesar dos benefícios propostos, a interoperabilidade entre equipamentos desenvolvidos por diferentes fabricantes é baixa pois, por serem equipamentos importados, o custo de implantação torna-se caro para o uso na Domótica.
  39. 39. 39 2.4 ARDUINO Arduino é uma plataforma open source criada para a prototipação de circuitos eletrônicos de forma flexível e foi desenvolvida com o intuito de ser utilizado por pessoas com conhecimentos básicos em eletrônica, engenharia ou programação (GERTZ; JUSTO, 2012). Criado originalmente na Itália no ano de 2005 por Massimo Banzi e David Cuartielles, Arduino é um nome próprio originado de um rei italiano que significa “forte amigo” (WHEAT, 2011). A placa normalmente na cor azul é o objeto mais conhecido da plataforma e é composta por portas de conexão para comunicação com outros dispositivos. Um dos principais componentes presentes na placa principal do Arduino é o microcontrolador AVR Atmel, responsável pelo processamento e que pode ser facilmente programado com instruções para possibilitar a interação com o meio externo por meio das portas de entradas e saída (GERTZ; JUSTO, 2012). 2.4.1 Hardware Apesar de existirem diferentes modelos de placas, sua arquitetura de hardware é bastante semelhante, sendo que as principais diferenças estão na capacidade de memória, processamento e o número de portas analógicas e digitais disponíveis (BOXALL, 2013). O Arduino Uno (Figura 8) foi anunciado em setembro de 2011 e foi o marco inicial para o lançamento oficial da versão 1.0 do software de desenvolvimento. Nessa versão, a comunicação serial era feita com um conector SRS-232 e o hardware era equipado com um microcontrolador ATmega8 com frequência máxima de 16MHz e 8KB de memória de programa (WHEAT, 2011). Desde o lançamento oficial, novas versões foram lançadas e suas funcionalidades aprimoradas. Nos modelos mais recentes (Figura 9), a comunicação serial é feita por uma interface Universal Serial Bus (USB), com um circuito Future Technology Devices International (FTDI), que faz a conversão de SRS-232 para USB (WHEAT, 2011).
  40. 40. 40 Figura 8 – Primeiro modelo de Arduino projetado Fonte: WHEAT (2011) Figura 9 – Modelo atual do Arduino Uno Fonte: WHEAT (2011) Semelhante ao Arduino UNO, o Arduino Mega (Figura 10) diferencia-se pelo tamanho um pouco maior, pela quantidade de portas disponíveis e pelo emprego de um processador ATmega com maior capacidade de memória.
  41. 41. 41 Figura 10 – Arduino Mega Fonte: WHEAT (2011) O diagrama da Figura 11 apresenta uma arquitetura simplificada dos principais componentes presentes na placa de um Arduino: porta serial USB, fonte de energia, portas de entrada e saída (também conhecidas como conectores de expansão) e o microcontrolador. Os componentes deste diagrama são descritos nas subseções a seguir. Figura 11 – Principais componentes do hardware do Arduino Interface Serial USB Conectores de Expansão Placa de I/O Arduino Microcontrolador Atmel Fontes de Alimentação Conectores de Expansão Fonte: Adaptado de WHEAT (2011) 2.4.1.1 Fonte de alimentação Por se tratar de um dispositivo eletrônico, é necessário que exista uma fonte de energia para o funcionamento do Arduino. A
  42. 42. 42 alimentação de energia pode ser fornecida de três formas (Figura 12): pela porta USB, pelo conector de alimentação externa ou pela porta de tensão não regulada (VIn) com limite de 5V. Nas placas atuais, mais de uma alimentação de energia pode ser usada, devido à presença de um circuito inteligente capaz de identificar e selecionar a fonte de alimentação com maior voltagem. Este circuito regulador também possui a função de estabilizar a tensão de 5V que será fornecida para o circuito (WHEAT, 2011). Figura 12 – Alimentação de energia do Arduino Fonte: WHEAT (2011) A alimentação de energia, quando fornecida pela porta USB, provê uma tensão de 5V e corrente variando de 100mA quando conectado como um dispositivo não enumerado, e até 500mA quando conectado como um dispositivo enumerado (WHEAT, 2011). Essa energia pode ser suficiente para fornecer tensões de 3.3V e 5V nas portas de alimentação, para sensores de baixo consumo (Figura 13), porém para sensores e dispositivos que necessitam de maior carga (e.g., reles, motores, solenoides), deve-se considerar uma fonte de alimentação alternativa para ligá-los, caso contrário poderá ocorrer uma sobrecarga de tensão, ocasionando a queima do circuito. Em alguns modelos de Arduino, existe um regulador de tensão de 3.3V utilizado principalmente por modelos de placas mais antigos na interface de comunicação USB FTDI (WHEAT, 2011). No mesmo conjunto de portas de energia, existe uma porta denominada reset, para reinicializar o dispositivo ao se fornecer uma tensão de 5V. Os conectores também são equipados com duas portas GND, que estão relacionadas com o polo negativo do circuito.
  43. 43. 43 Figura 13 – Portas de alimentação de energia para sensores Fonte: WHEAT (2011) É importante ressaltar que a alimentação fornecida afeta diretamente a frequência com que o processador irá operar. Por exemplo, o microcontrolador ATmega328 (Arduino Uno) pode operar com tensão variando entre 1.8V e 5.5V, o que permite trabalhar com frequências entre 4MHz e 20 MHz. Para o modelo ATmega2560 (Arduino Mega) a frequência é de 16MHz e não possui variação com tensão menor (WHEAT, 2011). 2.4.1.2 Porta USB Nos modelos convencionais do Arduino, a interface USB possui três funções básicas (BOXALL, 2013):    Alimentação de energia: Fornece energia para o circuito do Arduino e sensores conectados às portas; Gravação de firmware: Um dos mecanismos básicos para a atualização de código do microcontrolador é feito com o envio das instruções programadas através da porta USB, também conhecido como upload de código. Essa tarefa normalmente é feita pela Integrated Development Environment (IDE) do Arduino; Troca de informações: A interface USB oferece conectividade para a troca de informações do computador com os dispositivos conectados e vice-versa.
  44. 44. 44 O modo de operação para comunicação serial é realizado pelo padrão SRS-232. Esse mecanismo é baseado em um modo assíncrono, que opera no mesmo clock do processador durante a comunicação serial. Quando a comunicação serial é feita via interface USB, duas portas são utilizadas para essa tarefa, a porta zero RX para recepção e a porta um TX para transmissão, portanto o uso destas portas para outros fins depende da necessidade da comunicação serial ou não. As placas do Arduino normalmente são equipadas com Light Emitting Diode (LED) para facilitar a identificação da recepção e a transmissão de informações pela comunicação serial (Figura 14). Figura 14 – Identificação de operação na comunicação serial Fonte: WHEAT (2011) 2.4.1.3 Microcontrolador O microcontrolador (Figura 15) é responsável pelo processamento das instruções do firmware e pelo controle das operações do Arduino. Esse componente pode estar presente de duas formas: soldado na placa no modelo Semi Metalic Disc (SMD) ou montado sob um invólucro conectado na placa principal, sendo que o segundo modelo permite a troca do chip apenas desconectando-o da placa principal (WHEAT, 2011). Os microcontroladores são circuitos integrados caracterizados por incorporar diversos elementos dentro de um mesmo componente. Um microprocessador necessita que outros componentes sejam adicionados para poder operar, como por exemplo memória, chipset e barramentos para enviar e receber dados. A existência desses
  45. 45. 45 componentes dentro do mesmo circuito é o principal aspecto que diferencia um microprocessador de um microcontrolador, tornando-o um sistema computacional completo (SALLES, 2009). Figura 15 – Microcontrolador Atmel no Arduino Fonte: WHEAT (2011) Nota: Na parte superior da figura, um exemplo de microcontrolador montado, na parte inferior exemplo de um microcontrolador soldado. Os microcontroladores Atmel AVR possuem a característica de serem eficientes em termos de consumo energético e desempenho. São desenvolvidos com a tecnologia Reduced Complexity Instruction Set Computer (RISC) de 8 bits formado por instruções de 16 e 32 bits (ATMEL, 2013). Apesar de muitos acharem que a arquitetura RISC objetiva reduzir o número de instruções, na realidade o objetivo é reduzir a complexidade das instruções para serem executadas no menor número de ciclos possíveis, fazendo com que não seja necessário executar processamentos adicionais para decodificar as instruções (ATMEL, 2013). O software escrito para Arduino, também denominado firmware, é carregado para a área de memória dos microcontroladores Atmel através de um software conhecido como bootloader. O bootloader fica armazenado na área de memória de programa e sua
  46. 46. 46 responsabilidade é possibilitar a comunicação do dispositivo com a interface USB pela qual o firmware é carregado. Esse código é sempre executado na inicialização e permite ao ambiente de desenvolvimento enviar o comando de reinicialização para começar o envio do novo firmware. Em processadores, a velocidade pode ser medida em Million Instructions Per Second (MIPS). Uma característica importante na família dos microcontroladores AVR é a velocidade de processamento, pois o seu conjunto de instruções necessita de apenas um ciclo de máquina para executar a maioria das instruções. Tomando como exemplo um microcontrolador AVR operando com um oscilador de 4MHz, pode-se considerar que a velocidade de processamento é de 4 MIPS. Essa informação pode ser de grande importância quando for necessário executar operações com alta velocidade e desempenho (SOARES, 1998). A Figura 16 mostra um diagrama simplificado dos principais componentes existentes em um microcontrolador Atmel AVR, descritos na sequência (WHEAT, 2009): Figura 16 – Estrutura interna de um microcontrolador Atmel Fonte: WHEAT (2011)  Central Processing Unit (CPU): As instruções presentes no firmware são executadas pela CPU e normalmente são compostas por: uma Arithmetic Logic Unit (ALU) responsável
  47. 47. 47 por executar operações lógicas e aritméticas, registradores de 8 bits, registrador de status, Program Counter (PC), um decodificador de instruções, interfaces para acesso a memória interna e periféricos (WHEAT, 2009). São baseados na arquitetura Harvard (Figura 17), que utiliza dois barramentos, um para memória de dados e outro para memória de programa, que possibilitam maior velocidade no processamento (SOARES, 1998). Figura 17 – Arquitetura Harvard Modelo Harvard Memória de Dados CPU Memória de Programas Fonte: Adaptado de SOARES (1998)  Memória de programa e dados (ROM, Flash, RAM, EEPROM): As memórias presentes nos microcontroladores são caracterizadas pela volatilidade. Normalmente a capacidade é bastante reduzida (na ordem de KBs) se comparada aos computadores atuais e varia com o modelo. Vale ressaltar que as memórias não voláteis possuem a vida útil reduzida a cada escrita. A Read Only Memory (ROM) é uma memória não volátil responsável por armazenar o conjunto de instruções que formam a aplicação. Um microcontrolador possui apenas um programa na memória que é sempre executado quando é inicializado ou reiniciado (desconsiderando o bootloader). Já a memória Random Access Memory (RAM) é responsável por armazenar as variáveis durante a execução do programa. Como as aplicações são pequenas, não há a necessidade de copiá-las para a memória RAM (WHEAT, 2011). Memória Flash é uma memória não volátil e regravável, cujas informações permanecem salvas mesmo após o desligamento do Arduino.
  48. 48. 48     Suporta até dez mil gravações e pode gravar configurações ou persistir dados em caso de queda de energia. A Electrically Erasable Programmable Read-Only Memory (EEPROM) é semelhante à memória Flash, mas usa uma tecnologia mais antiga. Essa é uma memória bastante limitada (menor que 1KB), porém com uma vida útil bem maior, em torno de cem mil gravações (ARDUINO, 2013); Clock: Também conhecido como circuito de relógio, é um circuito oscilador responsável por controlar a sincronização das operações do sistema. A frequência é ajustada por um cristal de quartzo, presente na placa principal do Arduino. O ajuste da frequência é dependente da alimentação fornecida, permitindo trabalhar em modo de economia de energia ou alto desempenho (WHEAT, 2013); Periféricos: Os microcontroladores Atmel são formados por circuitos adicionais que facilitam a comunicação com outras partes do sistema e a integração com novos componentes. Podese citar: (i) a presença de portas de entrada e saída, sendo essas divididas em analógicas ou digitais, utilizadas para comunicação com outros dispositivos, (ii) interrupção externa para executar ações na ocorrência de eventos externos ao sistema, (iii) temporizador ou contador com a função de controlar tempo ou até mesmo interrupções para serem tratadas por outros sistemas, (iv) watchdog timer para reinicialização do sistema periodicamente para se recuperar de falhas e o (v) Universal Synchronous Asynchronous Receiver Transmitter (USART), um padrão universal para comunicação serial de forma síncrona ou assíncrona; Conversores analógicos-digitais: Os microcontroladores usados no Arduino possuem um periférico Analog Digital Converter (ADC) para a conversão de sinais analógicos em um respectivo sinal digital variando entre 0 e 1023. Estes conversores tornam-se importantes quando se trabalha com dispositivos e sensores que operam com informações variáveis (e.g., som, luminosidade) que necessitam de um meio para mapear e tratar as informações recebidas; Geradores de sinal Pulse Width Modulation (PWM): Permite simular saídas analógicas em uma interface digital, o que torna possível controlar, por exemplo, o escurecimento de lâmpadas e
  49. 49. 49 velocidades de motores devido a oscilação da energia entre 0V e 5V nas portas que possuem essa interface. 2.4.1.4 Reset O Arduino é equipado com um botão (Figura 18) para reiniciar o dispositivo, caso ele se encontre travado ou não esteja operando corretamente. Essa funcionalidade é bastante útil quando se está testando uma solução e se deseja depurar o código pelas saídas enviadas para interface serial. Ao pressionar esse botão, o microcontrolador reiniciará a execução do firmware (WHEAT, 2011). Figura 18 – Botão para reiniciar o Arduino Fonte: WHEAT (2011) 2.4.1.5 Conectores de expansão e portas Uma das características que tornam o uso do Arduino bastante prático, é a possibilidade de adicionar componentes que possam interagir com o ambiente de forma simples e rápida. Através das portas (também conhecidas como sockets) digitais e analógicas, é possível realizar a troca de informações entre os componentes e executar ações baseadas em condições e eventos que venham a ocorrer. O modo de operação é configurado com instruções presentes no firmware e possibilita que elas operem como portas de entrada, ou seja, recebendo sinal, ou como portas de saída, enviando um sinal. Todas as portas são numeradas para facilitar a sua identificação. Normalmente estão agrupadas em conectores de expansão conforme o tipo e estão posicionadas nas laterais e extremidades para facilitar a adição de circuitos mais complexos.
  50. 50. 50 A nomenclatura segue uma convenção e é amplamente adotada na documentação e na programação. As portas analógicas iniciam com a letra “A” seguida de um número sequencial (e.g., A0, A1, A2) e as portas digitais iniciam com a letra “D” seguida de um número sequencial (e.g., D0, D1, D2). As portas (Figura 19) são formadas por conectores que fazem com que não seja necessário soldar os componentes diretamente na placa de prototipação, conhecida também como breadboard, muito usada para conectar e desconectar os fios a sensores e outros componentes eletrônicos. Existem basicamente três tipos de portas no Arduino (ARDUINO, 2013):    Portas digitais sem PWM: trabalham com valores discretos quando configuradas como portas de saída e podem gerar dois níveis de sinais: (i) sinal baixo (0V) ou (ii) sinal alto (5V). Quando configuradas como portas de entrada, permitem ler o sinal elétrico identificado como sinal alto (tensão superior a 3V) ou sinal baixo (tensão inferior a 3V); Portas digitais PWM: Operam da mesma forma que as portas digitais convencionais, porém possuem a capacidade de representar resultado analógico de forma digital. Ao executar um comando de escrita analógica em uma porta digital PWM, é possível obter valores que variam em uma escala de 0 a 255 e esses valores são modulados de forma digital em voltagem variando de 0V a 5V. Assim, por exemplo, pode-se controlar a intensidade de um LED ou a velocidade de um motor. As portas que podem gerar sinal elétrico variável são marcadas com til (~). Portas Analógicas: São utilizadas para ler valores analógicos dos componentes conectados. Os sinais são convertidos em um valor entre 0 e 1023, que será proporcional à tensão elétrica aplicada na porta.
  51. 51. 51 Figura 19 – Conectores de expansão Fonte: WHEAT (2011) Nota: Exemplo de conectores de expansão de portas digitais (superior) e analógicas (inferior) O Quadro 1 apresenta as principais diferenças de processamento, portas e memória entre os modelos mais populares, Arduino Uno e Arduino Mega (WHEAT, 2011). Quadro 1 – Comparação da especificação dos Arduinos Especificação Modelo Processador Clock Processador Memória Programa (FLASH) Memória Dados (SRAM) EEPROM Pinos Processador Portas Entradas/Saídas Portas Analógicas Portas PWM Arduino Uno ATmega 328 16MHz Arduino Mega 1280 ATmega 1280 16MHz Arduino Mega 2560 ATmega 2560 16MHz 32KB 128KB 256KB 2KB 1KB 28/32 14 6 6 8KB 4KB 100 54 16 14 8KB 4KB 100 54 16 14 Fonte: WHEAT(2011)
  52. 52. 52 2.4.1.6 Shields Muitos dos componentes que podem ser integrados à plataforma Arduino são comercializados em módulos (e.g., GPS, GSM, LCD, Sensores). Esses módulos possuem uma interface simplificada e já disponibilizam bibliotecas desenvolvidas para operar com o Arduino. Dessa forma, é possível manter o foco na solução desejada, sem exigir grandes esforços na elaboração de um circuito desde o início (BOXALL, 2013). Quando existe a necessidade de se usar componentes mais complexos, as portas de expansão servem de base para conectar placas diretamente sobre o Arduino, as quais são conhecidas como shields. Como exemplos, podem ser citados: (i) o shield ethernet, para comunicação via conexão ethernet, (ii) shield XBee, para a comunicação sem fio com outras placas Arduino e distâncias variando de trinta a cem metros, (iii) shield para controle de motores, que operam em corrente contínua, (iv) shield GPS, para receber sinal GPS e possibilitar a localização global via satélite e (v) shield GSM, responsável por prover mecanismos de acesso à Internet via rede GPRS. Como nem todas as portas são utilizadas pelos Shields, as portas são expandidas em novos conectores de expansão para possibilitar a adição de novas funcionalidades e sensores ao Arduino. A Figura 20 ilustra dois shields conectados a um Arduino, sendo o primeiro um shield ethernet e o segundo um shield composto por um visor numérico e sensor de temperatura. Figura 20 – Shields sobrepostos e conectados sobre um Arduino Fonte: BOXALL (2013)
  53. 53. 53 2.4.1.7 Sensores A utilização de sensores para ler informações do ambiente torna vasta a possibilidade de soluções que podem ser desenvolvidas. Dependendo do sensor, deve se levar em conta a necessidade de circuitos adicionais, como é o caso de um relé que necessita de um circuito de controle para evitar que uma sobrecarga danifique tanto o Arduino quanto o dispositivo conectado. Quando as pessoas interessadas não possuem muito conhecimento sobre eletrônica, estão disponíveis módulos de sensores, semelhante ao shield, que fornecem uma interface mais simples para a comunicação com o Arduino. Esses sensores são montados com todo o circuito necessário para o correto funcionamento. Em casos mais complexos, são adicionados microcontroladores para traduzir os dados em informações mais claras através de bibliotecas disponibilizadas na Internet pelos fabricantes e pela comunidade de desenvolvedores. Um caso bastante comum é o sensor de temperatura e umidade (Figura 21), também conhecido como DHT11, composto por um Circuito Integrado (CI) com apenas três portas: uma porta para GND (Negativo), uma para os 5V (Positivo) e uma porta digital para leitura das informações. Normalmente, os componentes eletrônicos são acompanhados de uma folha de dados (datasheet), um documento que apresenta de forma resumida todas as características técnicas de um CI. Figura 21 – Exemplo de circuito integrado em um sensor Fonte: DX (2013) 2.4.2 Comunicação Uma das características que expande as funcionalidades do Arduino é a possibilidade de realizar a comunicação de diferentes
  54. 54. 54 formas com outros equipamentos eletrônicos, sendo a comunicação serial via porta USB o método convencional. Com as bibliotecas disponíveis para o Arduino, é possível que a comunicação seja feita por diferentes protocolos, como por exemplo:   Inter Integrated Circuit (I2C): Disponível na biblioteca Wire do Arduino, é um protocolo desenvolvido pela Philips na década de 80, com o objetivo de reduzir a complexidade das conexões em circuitos eletrônicos e torná-los menos suscetíveis a interferências eletromagnéticas. Seu funcionamento consiste em um barramento de dois fios para possibilitar a conexão de periféricos ao barramento de dados e endereços da CPU através de um decodificador de endereços e uma unidade de controle para gerenciar o barramento. Todos os dispositivos conectados no barramento possuem um endereço e podem atuar como mestre (master) ou escravo (slave). O dispositivo que iniciar a transmissão é considerado o master, além disso os dispositivos conectados podem atuar como transmissores ou receptores (PRADO, 2007). Serial Peripheral Interface (SPI): Semelhante ao protocolo I2C, é um protocolo serial síncrono empregado por microcontroladores para controlar um ou mais periféricos, podendo inclusive servir para comunicação entre microcontroladores. Em uma conexão SPI, existe um dispositivo atuando como master (normalmente o microcontrolador) responsável por controlar os periféricos. Nessa comunicação, são usadas três linhas, comuns a todos os dispositivos: (i) Master In Slave Out (MISO), para enviar informações do slave para o master, (ii) Master Out Slave In (MOSI), para envio de informações do master para os periféricos e (iii) Serial Clock (SCK), responsável por sincronizar a transmissão de informações entre os dispositivos. Para cada dispositivo slave é utilizado um pino para o master habilitar ou desabilitar a comunicação que está ativa no barramento em um determinado momento (ARDUINO, 2013). 2.4.2.1 Redes e Internet Os diferentes protocolos disponíveis no Arduino reduzem a complexidade necessária para a comunicação em diferentes meios, seja
  55. 55. 55 via cabo ou sem fio. Muitas das soluções estão disponíveis em shields fabricados e montados para serem conectados diretamente na placa principal de forma bastante prática. Com esses mecanismos, novos horizontes se abrem para prover meios alternativos de acesso a dispositivos de forma remota, em redes locais ou Internet, além de possibilitar o gerenciamento remoto de dispositivos para coleta de informações em ambientes geograficamente distribuídos. Com o uso do shield ethernet ou rede sem fio, a conectividade do Arduino se expande e possibilita sua atuação em uma arquitetura cliente-servidor. Nesse modelo, é possível transferir processamentos mais pesados para serem executado em equipamentos de maior desempenho, como microcomputadores e servidores. As bibliotecas disponíveis para Arduino permitem a comunicação por sockets, requisições HTTP, DHCP, conexões TCP e UDP, etc. Com o shield ethernet, o Arduino pode operar tanto como cliente quanto como servidor. Sua biblioteca suporta um total de quatro conexões simultâneas (Arduino, 2013). A comunicação desse shield é controlada pelo barramento SPI, conectado a quatro portas, sendo três dessas para comunicação e uma para ativar e desativar o acesso ao barramento. 2.4.3 Armazenamento de Dados Externo Alguns shields comercializados, como é o caso do shield ethernet, são equipados com um circuito adicional para manipular arquivos em cartão de memória SD. Consequentemente, se reduz a limitação de memória disponível no Arduino, tornando possível, por exemplo, o gerenciamento de configurações gravadas em arquivo. Para evitar o uso de portas adicionais, a comunicação do circuito de armazenamento em SD com o Arduino é feito sob o mesmo barramento utilizado para ethernet, através do protocolo SPI. Esse controle é feito com a adição de uma única porta adicional, responsável pela seleção do barramento pelo dispositivo controlador (master) (ARDUINO, 2013). Existem diversas bibliotecas para manipulação de arquivo com suporte aos sistemas de arquivos FAT16 e FAT32. Entre as operações disponíveis, podem ser citadas: manipulação de diretório e arquivo e execução de leitura e escrita. A Figura 22 ilustra as portas de comunicação e controle utilizadas pelo shield ethernet em um Arduino Mega.
  56. 56. 56 Figura 22 – Portas utilizadas pelo shield ethernet no Arduino Mega Fonte: ARDUINO (2013) 2.4.4 Plataforma de Desenvolvimento Para facilitar a programação, a plataforma Arduino disponibiliza a Integrated Development Environment (IDE), responsável por prover os mecanismos necessários à comunicação do computador com o Arduino. A IDE para Arduino é desenvolvida em Java e está disponível em ambiente multiplataforma (e.g., Windows, Mac OS X e Linux). Todo desenvolvimento para Arduino é iniciado com a criação de um projeto, também conhecido como sketch, que contém o códigofonte do programa e normalmente é salvo em arquivo com a extensão .ino (ARDUINO, 2013). Dentro da IDE (Figura 23), é possível executar diversas ações, como compilar o código, o monitoramento e troca de mensagens via interface USB e principalmente o upload do firmware para o Arduino. Na parte inferior da IDE (Figura 23), existe uma área de cor preta que exibe informações importantes, como o tamanho do projeto e a memória total do firmware.
  57. 57. 57 Figura 23 – Exemplo de sketch carregada na IDE do Arduino Fonte: produção do próprio autor Outra opção importante existente na IDE, é a escolha do modelo do Arduino (Figura 24). Devido aos diferentes modelos, é necessário definir o modelo correto, para que o código compilado seja possível de ser gravado no microcontrolador, principalmente devido às limitações de memória. Quando houver a necessidade de alterar o modelo do Arduino, basta selecionar o modelo correspondente e todos os ajustes necessários para compilação com o novo hardware serão feitos automaticamente sem afetar o código escrito.
  58. 58. 58 Figura 24 – Seleção do modelo do Arduino na IDE Fonte: produção do próprio autor A linguagem de programação do Arduino foi desenvolvida baseada na plataforma Wiring e implementada em C/C++. Wiring é um framework open source multiplataforma de desenvolvimento de software para controlar dispositivos conectados a microcontroladores da família AVR Xmega, AVR Tiny, TI MSP430 e Microchip PIC24/32. O objetivo principal da plataforma é permitir que pessoas com diferentes níveis de conhecimento em eletrônica possam desenvolver soluções criativas e realizar a interação entre objetos, espaço e experimentos físicos (WIRING, 2013).
  59. 59. 59 2.4.4.1 Compilação de código Quando se desenvolve um software em linguagem de alto nível (e.g., C, Java. .NET), o compilador é responsável por transformar o código em linguagem de máquina, para que as instruções possam ser interpretadas pelo microcontrolador. O Arduino utiliza o pacote AVR LibC, composto por um conjunto de bibliotecas desenvolvidas para operar com os microcontroladores Atmel AVR. Essa biblioteca, juntamente com o compilador GCC, forma o compilador denominado AVR-GCC. Na compilação do código, os objetos gerados são transformados em um arquivo no padrão Intel HEX, um formato de arquivo especial que codifica imagens de arquivos binários, que pode ser reconhecido por outros tipos de software. Existe um utilitário para fazer a gravação do firmware no Arduino, denominado AVRDUDE. Para que seja possível executar essa tarefa, o Arduino vem de fábrica com um código prégravado, denominado de bootloader, uma espécie de código que é sempre executado quando o Arduino é ligado ou reinicializado. Dessa forma, a IDE consegue reinicializar o Arduino e enviar o comando para o bootloader gravar o programa na área de memória correta, sem sobrescrever essa área (WHEAT, 2011). 2.4.5 Modelos e variantes Por se tratar de uma plataforma open source, a equipe responsável pelo Arduino disponibiliza toda a documentação, esquemática, layouts de placas e código-fonte necessário, possibilitando a qualquer pessoa ou fabricante montar o seu próprio Arduino. A única restrição é quanto ao uso do nome Arduino, que é de uso exclusivo. Sendo assim, existem diversos fabricantes que usam nomes similares com características padrões para desenvolver soluções compatíveis com o modelo original (e.g., Freeduino, Meeeno). É importante ressaltar que devido aos diferentes fabricantes, os preços variam, juntamente com a qualidade dos componentes de fabricação. Com isso, a durabilidade do circuito pode ser comprometida, reduzindo a confiabilidade do equipamento, portanto o ideal é sempre optar por fabricantes licenciados oficialmente pelo Arduino.
  60. 60. 60 2.5 FERRAMENTAS SIMILARES Na elaboração deste projeto, foram feitas pesquisas de ferramentas similares para o gerenciamento de sensores com Arduino. 2.5.1 Noduino Framework open source desenvolvido em JavaScript e HTML5, permite a configuração das portas, o envio de comandos e o tratamento de eventos gerados no Arduino em uma interface Web. A comunicação do computador com o Arduino pode ser feita via interface serial ou WebSocket (disponível para HTML 5). Para que as informações sejam interpretadas, foi desenvolvido um firmware para o Arduino denominado duino, que controla e trata as ações recebidas (NODUINO, 2013). Na ferramenta Noduino, é necessário que as funcionalidades sejam programadas com o uso das bibliotecas disponíveis pelo framework. A execução das ações depende da comunicação do servidor com o Arduino. As informações da comunicação com o Arduino (Figura 25) podem ser facilmente atualizadas na tela, utilizando-se os recursos da biblioteca JavaScript Node.js presente no framework da ferramenta Noduino. Figura 25 – Framework Noduino Fonte: NODUINO (2013)
  61. 61. 61 2.5.2 Breakout A ferramenta Breakout foi desenvolvida para controlar as portas de entrada e saída do Arduino através de uma interface Web. É composta por bibliotecas que facilitam a utilização de sensores. Para programá-la, é necessário conhecimento apenas em JavaScript. A comunicação com o Arduino é feita via socket, por uma ferramenta desenvolvida em Java (Figura 26), que atua como servidor e envia os comandos para o Arduino. A ferramenta também disponibiliza um firmware, responsável por interpretar e executar as ações recebidas do cliente (BREAKOUT, 2013). Figura 26 – Ferramenta Breakout Fonte: Breakout (2013) 2.5.3 Arduino-Homebot O Arduino-Homebot é um projeto experimental de Automação residencial para controle de sensores via comunicação sem fio. Os Arduinos são definidos por suas características e são divididos em dois tipos: (i) Arduino robô, que transmite as informações e (ii) Arduino mestre, que recebe as informações. Os robôs são nomeados como: (i) Horai para controle de temperatura e umidade e (ii) Itus para controle de gás e fumaça. O Arduino mestre, denominado Uranus, recebe as informações dos diversos robôs, exibe as informações em um display LCD e opcionalmente pode enviar as informações para tratamento em um servidor Web. O firmware é específico e deve ser gravado no
  62. 62. 62 Arduino de acordo com a responsabilidade desempenhada (HOMEBOT, 2013). 2.6 ANÁLISE COMPARATIVA ENTRE AS FERRAMENTAS O Quadro 2 apresenta uma comparação das funcionalidades existentes nas ferramentas similares pesquisadas, em relação à ferramenta InoSensor em sua versão atual. Quadro 2 – Comparativo com ferramentas similares Descrição Gerenciamento Web Configuração de sensores Monitoramento remoto Conhecimentos em programação Controle de Acesso Envio de notificações Alteração remota de configuração Operação autônoma (sem conectividade) Persistência de configuração (não volátil) InoSensor 1.0 Noduino Breakout Arduino Homebot X X X X X X X X X X X X X X X X X X X X X Fonte: produção do próprio autor Com essa pesquisa, foi possível observar que existem diversos projetos para o controle do Arduino de forma remota, cada um com as suas particularidades e características semelhantes. Um dos aspectos presentes em todas as ferramentas é a capacidade de monitoramento remoto de sensores via rede local ou Internet e a existência de soluções desenvolvidas para serem executadas
  63. 63. 63 diretamente do navegador Web. Vale destacar que a maioria dessas ferramentas necessita de conhecimentos em programação para implementar a lógica de controle dos sensores, o que acaba dificultando o uso e adaptação para alcançar o objetivo desejado. A ausência de um mecanismo para alterar as ações, sem a necessidade de atualizar o firmware do Arduino, é outro fator importante, pois dependendo da situação, pode se tornar inviável o ajuste das ações que devem ser executadas. Em relação à segurança, as ferramentas pesquisadas não possuíam uma forma efetiva para controle de acesso aos dispositivos, diminuindo a segurança e tornando os dispositivos vulneráveis a modificações indevidas. Com exceção da ferramenta Arduino-Homebot, os Arduinos não possuem um mecanismo autônomo para executar ações. Esse fator os torna dependentes do servidor, sendo necessário o envio de comandos pela ferramenta Web toda vez que o usuário desejar realizar uma nova tarefa. Nessa comparação, foi possível identificar alguns aspectos ausentes na ferramenta InoSensor. Um deles se refere à ausência de um meio de comunicação sem fio em ambientes onde não exista uma conexão via rede ethernet. Outro aspecto ausente é um display LCD para exibir informações importantes do funcionamento do dispositivo. De forma geral, a ferramenta InoSensor pode contribuir na área acadêmica, através do uso da ferramenta como objeto de estudo para Arduino, e como uma solução para monitoramento de sensores de baixo custo. 2.7 CONCLUSÕES DO CAPÍTULO Nesse capítulo, foram documentados os estudos relacionados ao tema do projeto, para facilitar a compreensão dos conceitos pertinentes à Automação, Domótica e à arquitetura da plataforma Arduino, além da pesquisa de ferramentas similares relacionadas ao contexto do projeto. Ainda que as soluções existentes para a Domótica não sejam adaptáveis a diferentes situações, existem estudos e projetos que buscam empregar a Automação de forma mais simples. Assim, diferentes dispositivos em uma residência poderão ser integrados e gerenciados por um computador ou smartphone.
  64. 64. 64 3 PROJETO Este capítulo apresenta a definição do escopo, a metodologia, bem como os hardware e software utilizados no desenvolvimento deste trabalho. No que se refere a modelagem física e lógica do sistema, foram adotados alguns dos conceitos convencionais da engenharia de software, para facilitar a compreensão da solução a todos os interessados. 3.1 COMPOSIÇÃO DO SISTEMA A ferramenta InoSensor foi desenvolvida baseada em uma arquitetura distribuída, onde o servidor é responsável por monitorar as informações, enviar e-mails, desligar alarmes remotamente e alterar o comportamento das ações executadas por cada Arduino. Já o Arduino, será responsável por processar as informações geradas pelos sensores e executar as ações com base nas condições configuradas em cada sensor. Para exemplificar o funcionamento do sistema, a Figura 27 ilustra, de forma geral, como é feita a comunicação entre o servidor InoSensor e o Arduino. Após devidamente configurado com o firmware padrão, o Arduino necessita se conectar a uma rede local ou Internet, para permitir a comunicação com o servidor e assim receber as configurações dos sensores. A ferramenta InoSensor foi desenvolvida para gerenciar um ou mais Arduinos. Para adicionar um novo dispositivo ao sistema, é necessário cadastrar e configurar os sensores e ações que irão fazer parte do conjunto. Em seguida, as configurações devem ser transmitidas para o Arduino poder operar com as funções desejadas. A partir desse momento, o Arduino pode controlar os sensores e notificar o servidor sobre a ocorrência de eventos. Caso um Arduino tenha disparado algum alarme, é possível desligá-lo remotamente através do servidor. Se for necessário alterar as ações, adicionar ou remover sensores, os ajustes podem ser feitos no servidor e as configurações serão retransmitidas sem a necessidade de atualizar o firmware do Arduino. Uma das vantagens desse modelo é a possibilidade de alterar remotamente o comportamento geral do Arduino sem a necessidade de programação via código.

×