Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

141
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

description

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.

Transcript of Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

Page 1: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 2: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 3: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

Ao meu amor, Thalita Gabriela Costa,

pelo carinho, paciência e apoio durante

a realização deste trabalho.

Page 4: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 5: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 6: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 7: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 8: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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. Sensors monitoring. Electronic

Automation. Home automation.

Page 9: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 10: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 11: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 12: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

LISTA DE ABREVIATURAS E SIGLAS

ADC Analog Digital Convert

AJAX Asynchronous JavaScript And XML

ALU Arithmetic Logic Unit

API Application Programming Interface

CABA Continental Automated Buildings Associations

CEDIA Custom Electronic Design and Installation Association

CI Circuito Integrado

CPU Central Processing Unit

DHCP Dynamic Host Configuration Protocol

EEPROM Electrically Erasable Programmable Read-Only Memory

ER Entidade Relacionamento

FTDI Future Technology Devices International

GLP Gás Liquefeito de Petróleo

GND Ground

GPRS General Packet Radio Service

GSM Global System for Mobile

HTML Hyper Text Markup Language

HTTP Hyper Text Transfer Protocol

I2C Inter Integrated Circuit

IDE Integrated Development Environment

IHC Intelligent Home Control

IP Internet Protocol

JSON JavaScript Object Notation

KB Kilobyte

LCD Liquid Crystal Display

LDR Light Dependent Resistor

LED Light Emitting Diode

MAC Media Access Control

MISO Master In Slave Out

MOSI Master Out Slave In

MVC Model View Controller

Page 13: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

OSGI Open Service Gateway Initiative

OSI Open System Interconnection

PC Program Counter

PDT PHP Development Tool

PHP Hypertext Preprocessor

PING Packet Internet Grouper

PIR Passive InfraRed

PWM Pulse Width Modulation

P2P Peer to Peer

RAM Random Access Memory

RGB Red Green Blue

ROM Read Only Memory

RX Receiver

SCK Serial Clock

SMD Semi Metalic Disc

SPI Serial Peripheral Interface

SRAM Static Random Access Memory

TCP Transmission Control Protocol

TX Transmitter

UDP User Datagram Protocol

UML Unified Modeling Language

USART Universal Synchronous Asynchronous Receiver Transmitter

USB Universal Serial Bus

Page 14: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 15: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 16: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 17: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 18: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 19: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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)

Page 20: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 21: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 22: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 23: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 24: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 25: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 26: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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).

Page 27: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 28: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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/

Page 29: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 30: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 31: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 32: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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).

Page 33: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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).

Page 34: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 35: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 36: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 37: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 38: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 39: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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).

Page 40: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 41: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Conectores de Expansão

Fontes de Alimentaçã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

Page 42: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 43: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 44: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 45: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 46: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 47: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

CPUMemória de

DadosMemó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.

Page 48: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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. Pode-

se 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

Page 49: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 50: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 51: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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 Arduino

Uno

Arduino

Mega 1280

Arduino

Mega 2560

Modelo Processador ATmega

328

ATmega

1280

ATmega

2560

Clock Processador 16MHz 16MHz 16MHz

Memória Programa

(FLASH) 32KB 128KB 256KB

Memória Dados (SRAM) 2KB 8KB 8KB

EEPROM 1KB 4KB 4KB

Pinos Processador 28/32 100 100

Portas Entradas/Saídas 14 54 54

Portas Analógicas 6 16 16

Portas PWM 6 14 14

Fonte: WHEAT(2011)

Page 52: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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)

Page 53: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 54: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 55: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 56: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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ódigo-

fonte 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.

Page 57: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 58: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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).

Page 59: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 60: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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)

Page 61: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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

Page 62: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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 InoSensor

1.0

Noduino Breakout Arduino

Homebot

Gerenciamento

Web X X X

Configuração de

sensores X X X

Monitoramento

remoto X X X X

Conhecimentos em

programação X X X

Controle de Acesso X

Envio de

notificações X

Alteração remota

de configuração X X

Operação

autônoma (sem

conectividade)

X X

Persistência de

configuração (não

volátil)

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

Page 63: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 64: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

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.

Page 65: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

65

Figura 27 – Visão macro da representação do sistema

Rede/Internet

InoSensor

Arduino 1

Arduino 2

Arduino 3

Sensores

Sensores

Sensores

Fonte: produção do próprio autor

3.1.1 Sensores Utilizados

A escolha dos sensores foi feita com base nos módulos

disponíveis para o estudo da solução proposta, evitando gerar custos

financeiros desnecessários ao projeto. Os sensores são fabricados em

circuitos prontos para o uso, bastando conectar as portas do sensor

diretamente às portas do Arduino. A alimentação de energia é de 5V

para todos os sensores. Os componentes selecionados podem ser

considerados os mecanismos básicos para o monitoramento e segurança

de ambientes residenciais ou prediais. Dependendo da aplicação do

sistema, deve-se avaliar a aquisição de sensores mais robustos e mais

precisos, reduzindo a chance de ocorrência de falhas.

Abaixo são detalhados os principais aspectos técnicos dos

sensores para a comunicação com o Arduino.

Sensor de Temperatura e Umidade: Foi usado o sensor

conhecido como DHT11 (Figura 28), um sensor digital de baixo

custo para efetuar a leitura de informações de temperatura e

umidade do ambiente. Esse sensor é composto por um sensor

capacitivo de umidade e um termistor para medir a temperatura

do ar. A leitura das informações é simplificada, com o uso de

uma biblioteca (DHT11) disponível junto a IDE do Arduino,

que possibilita ler a umidade e converter a temperatura em

diferentes unidades de medida, através de uma porta digital.

Como uma alternativa, existe o modelo DHT22, com maior

Page 66: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

66

precisão na medição das informações. Esse sensor pode servir

para acionar equipamentos de acordo com a temperatura ou

umidade.

Figura 28 – Sensor Temperatura e Umidade DHT11

Fonte: DX (2013)

FotoResistor: Também conhecido como Light Dependent

Resistor (LDR), nada mais é do que um resistor sensível a

luminosidade para detectar a presença ou ausência de luz em

um ambiente (Figura 29). É um componente simples, que pode

apresentar grande variação, portanto seu uso se torna limitado.

Quanto maior a luminosidade, maior será a resistência e menor

será o valor de leitura na porta analógica. Por se tratar de uma

porta analógica, a leitura varia entre 0 (zero) para alta

luminosidade até 1023 para baixa luminosidade.

Figura 29 – Fotoresistor

Fonte: DX (2013)

Page 67: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

67

Sensor de Fogo: Esse sensor (Figura 30) serve para detectar a

presença de fogo em distâncias de vinte a cem centímetros do

dispositivo. Não requer o uso de bibliotecas e pode detectar a

presença ou ausência de fogo pela leitura de uma porta digital,

sendo retornado o valor 1 (um) para presença de fogo ou 0

(zero) para ausência de fogo.

Figura 30 – Sensor de chama

Fonte: DX (2013)

Sensor de Gás: É um sensor eletroquímico (Figura 31) que

reage à presença de gás no ar, em temperatura ambiente.

Existem diferentes modelos para identificar gases como

metano, butano, LPG, fumaça, gases inflamáveis e

combustíveis, etc. O gás é detectado através de uma porta

analógica que retorna um valor entre 0 (zero) para ausência de

gás e 1023. Quanto maior o valor retornado, maior a presença

de gás no ar.

Figura 31 – Sensor de gás

Fonte: DX (2013)

Page 68: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

68

Sensor de Vibração: É um sensor digital (Figura 32) composto

por um circuito para detectar vibração. O sinal é lido por uma

porta digital que retorna o valor 0 (zero) quando detectar algum

tipo de vibração ou 1 (um) para ausência de vibração. Pode ser

utilizado como mecanismo de detecção de arrombamento.

Figura 32 – Sensor de vibração

Fonte: DX (2013)

Sensor Magnético: Também conhecido como sensor de

proximidade ou sensor de efeito hall (Figura 33), pode detectar

a presença de objetos que tenham campo magnético. É

composto por uma porta digital que retorna o valor 0 (zero)

quando detectar a presença de magnetismo ou 1 (um) para

ausência de campo magnético. Pode servir como mecanismo

para detectar abertura de portas e janelas.

Figura 33 – Sensor magnético

Fonte: DX (2013)

Detector de presença InfraVermelho: Seu funcionamento é

baseado em um sensor infravermelho passivo (PIR) que detecta

o movimento por calor infravermelho (Figura 34). Esse sensor

utiliza uma porta digital que retorna o valor 1 (um) quando

Page 69: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

69

detectar a presença de movimento ou o valor 0 (zero) na

ausência de movimento.

Figura 34 – Sensor presença PIR

Fonte: DX (2013)

Relé: O uso do relé (Figura 35) estende-se como um circuito

eletromecânico para acionar equipamentos elétricos com

corrente elétrica maior que a fornecida pelo Arduino. O

funcionamento é semelhante a um interruptor e pode ser

acionado através da aplicação de um sinal alto (valor um), em

uma porta digital que fecha o circuito elétrico ou um sinal baixo

(valor zero), que abre o circuito e interrompe a passagem da

corrente elétrica. Pode ser utilizado para ligar ou desligar

equipamentos elétricos como motores e eletrodomésticos

ligados à rede elétrica convencional com tensão de até 240V e

corrente máxima de 10 amperes.

Figura 35 – Relé

Fonte: DX (2013)

Page 70: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

70

LED RGB: É um componente eletrônico (Figura 36) que

possui a capacidade de emitir luz nas três cores primárias:

vermelho (Red), verde (Green) e azul (Blue). O acionamento de

mais de uma cor ao mesmo tempo permite combiná-las e gerar

novas cores. Esse circuito possui três portas digitais, uma para

cada cor. A luz se acende quando é enviando um sinal alto

(valor um) e se apaga quando se envia um sinal baixo (valor

zero) para a porta do módulo.

Figura 36 – LED RGB

Fonte: DX (2013)

Buzzer: É um pequeno alto-falante (Figura 37) que pode emitir

sons em diferentes frequências e intervalos. Pode ser

empregado quando houver a necessidade de emitir alertas e

alarmes. Para o funcionamento do buzzer, é necessário conectá-

lo a uma porta digital PWM, responsável por definir a

frequência do som. Ao aplicar um sinal na porta conectada (1-

255), o buzzer irá soar um alarme. Ao aplicar o valor zero, o

som será desligado.

Figura 37 – Buzzer

Fonte: DX (2013)

Page 71: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

71

O Quadro 3 apresenta os tipos de portas e as respectivas quantidades

utilizadas por cada sensor.

Quadro 3 – Tipos de portas utilizadas por cada sensor

Sensor Portas

Digitais

Portas

Analógicas

Portas

PWM

DHT11 1

Fotoresistor 1

Fogo 1

Gás 1

Vibração 1

Magnético 1

Infravermelho 1

Relé 1

LED RGB 3

Buzzer 1

Fonte: produção do próprio autor

3.1.2 Plataforma de Prototipação

Um dos benefícios da plataforma Arduino, é a facilidade de

criar protótipos de circuitos eletrônicos sem a necessidade de soldar os

componentes, conectando-os a fios elétricos em placa de ensaio,

também conhecidas como protoboard ou breadbord (Figura 38).

A protoboard é composta de diversos orifícios adjacentes,

conectados em trilhas verticais e horizontais, formando uma matriz, que

variam de oitocentos até seis mil furos, dependendo do modelo. O

espaçamento entre cada orifício é de 2,54 mm (0,1 polegada), uma

medida que foi padronizada e seguida por diversos fabricantes de

componentes eletrônicos (WHEAT, 2011). A Figura 39 mostra um

desenho esquemático de como os furos estão conectados no modelo de

protoboard deste projeto. Em cada lateral, existem duas trilhas com os

furos conectados verticalmente, as quais são normalmente utilizadas

para conexão dos componentes no polo positivo e negativo do circuito.

Já os furos verticais são conectados horizontalmente e separados por

uma fenda, agrupados de cinco em cinco furos. Para facilitar a

identificação, os furos das trilhas verticais são identificados por números

e os furos nas linhas horizontais, por letras (MARGOLIS, 2011).

Page 72: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

72

Figura 38 – Arduino conectado à protoboard

Fonte: MARGOLIS (2011)

Figura 39 – Modelo de protoboard

Fonte: ClarkZapper.net (2004)

Ao manipular uma protoboard, deve-se atentar à alguns

cuidados. O uso constante e a má qualidade do produto podem causar

intermitência nos sinais elétricos, ocasionando a leitura de informações

erradas e até mesmo o mau funcionamento do circuito (MARGOLIS,

2011).

Page 73: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

73

3.1.3 Shield ethernet e SD

Para possibilitar a comunicação do Arduino com a ferramenta

InoSensor, foi utilizado um shield ethernet, conforme ilustrado na

Figura 40.

Esse shield funciona tanto no modelo Uno quanto no modelo

Mega2560. Por ser conectado na parte superior do Arduino, acaba

cobrindo parte da placa principal. Dessa forma, os conectores, o botão

de reset e os LEDs indicadores de transmissão (RX e TX) são

expandidos e disponibilizados na parte superior do shield ethernet.

Figura 40 – Shield ethernet

Fonte: DX (2013)

3.2 COMPORTAMENTO DO SISTEMA

A ferramenta InoSensor permite cadastrar os sensores e

atuadores para executarem as ações de acordo com as necessidades. De

forma simplificada, o processo é iniciado com o cadastro dos sensores.

Ao cadastrar um sensor, deve-se informar as portas disponíveis que

serão utilizadas para o módulo do sensor, em seguida são cadastradas as

ações que devem ser executadas com base nas condições específicas para cada tipo de sensor e, ao finalizar a configuração, deve ser feita a

transmissão, para o Arduino entrar em funcionamento.

O Arduino é responsável pelo gerenciamento dos sensores

conectados e pela execução das ações que foram configuradas por meio

Page 74: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

74

da ferramenta InoSensor. As configurações, condições e ações são

armazenadas em um arquivo na memória externa no cartão SD.

Ao iniciar o Arduino, o firmware configura todas as portas de

entrada e saída com base nas informações coletadas do arquivo de

configuração e em seguida, a interface ethernet é inicializada para

possibilitar a troca de informações com o servidor. A partir desse

momento, é iniciada a leitura das informações dos sensores que estão

configurados e caso uma condição seja verdadeira, é iniciada a execução

dos atuadores. Além disso, o Arduino pode notificar o servidor

InoSensor da ocorrência de um evento e até mesmo solicitar ao servidor

o envio de um e-mail para notificação dos responsáveis.

3.2.1 Ações

O sistema foi desenvolvido com a capacidade de responder à

ocorrência de eventos externos e possibilitar o controle e gerenciamento

dos sensores conectados, sendo assim, o Arduino possui a capacidade de

executar três tipos de ações distintas, descritas abaixo:

Acionar Atuador: Possui a função de executar um atuador do

sistema, disparar alarmes através de um buzzer, ligar ou

desligar algum equipamento elétrico por meio de um relé ou

ligar e desligar LED RGB;

Enviar e-mail: Para situações de emergência que devem

notificar algum responsável, é possível configurar o Arduino

para disparar para o servidor uma solicitação de envio de e-

mail. Isso permite deixar todo o trabalho necessário para envio

de e-mail, como autenticação, configuração e tratamento de

erros, a cargo do servidor e manter a responsabilidade do

Arduino no gerenciamento dos sensores;

Notificar servidor: É possível configurar quando da ocorrência

de um condição de um sensor, o envio de uma notificação para

o servidor InoSensor. Essa ação irá aparecer no painel de

monitoramento do servidor, informando a data, hora,

dispositivo e informação relativa ao sensor (e.g., temperatura,

fogo) que disparou a ação.

Page 75: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

75

3.3 PROTOCOLO DE COMUNICAÇÃO

Uma característica importante, implementada na ferramenta

InoSensor, é a possibilidade de ajustar as configurações dos sensores e

atuadores sem a necessidade de atualizar o firmware do Arduino,

facilitando o uso da ferramenta e eliminando a necessidade de

conhecimento em linguagem de programação do firmware.

Em relação à conectividade do Arduino ao Servidor InoSensor,

foi usado o protocolo TCP/IP para viabilizar a comunicação através da

Internet ou Local Area Network (LAN). Entre as vantagens desse

protocolo, podem ser citadas: (i) a grande utilização, (ii) velocidade de

comunicação, (iii) ser um protocolo roteável, ou seja, permite interligar

computadores em diferentes redes, (iv) disponível na arquitetura

ethernet, (v) comunicar-se com o servidor PHP via socket de forma

bastante prática e (vi) testar a conectividade com o uso do utilitário de

rede PING.

Devido à capacidade de ajuste variável das configurações, as

informações são armazenadas em arquivo texto, gravadas na memória

externa do cartão SD. O uso da memória externa diminui as limitações

de memória do Arduino, pois as particularidades de cada dispositivo são

ajustadas e gravadas na memória externa, sem comprometer o

funcionamento do hardware por estouro de memória. Outra vantagem é

tornar o firmware do Arduino mais robusto e facilitar a depuração de

erros, já que o firmware se torna padrão.

3.3.1 Monitor de Notificações

O Arduino pode controlar os sensores de forma isolada,

executando as ações com base nas condições configuradas, desde que as

configurações estejam devidamente gravadas na memória do cartão SD.

Nesse modelo, a operação do Arduino está restrita aos atuadores

conectados no próprio dispositivo, como relé, buzzer e LED RGB.

Já para possibilitar o monitoramento remoto do dispositivo, é

necessário que haja uma conexão ativa. Nesse modo de operação o

Arduino pode trocar informações com o servidor InoSensor e notificá-lo

da ocorrência de eventos e, se necessário, o servidor pode enviar e-mail

para notificar os responsáveis.

A ferramenta InoSensor conta com um painel de notificações

atualizado constante e automaticamente, responsável por mostrar os

últimos eventos ocorridos em cada Arduino configurado no sistema.

Page 76: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

76

3.4 MODELAGEM DO SISTEMA

A fase de modelagem tem como objetivo confeccionar um

documento para delimitar o escopo e mapear as tarefas e atividades que

serão executadas pelo sistema InoSensor.

A modelagem do sistema foi elaborada seguindo a notação

UML. Os artefatos gerados possibilitam avaliar o projeto em diferentes

visões, definir a estrutura necessária para a implementação e mostram as

características particulares do sistema.

3.4.1 Requisitos

As subseções seguintes apresentam o levantamento de

requisitos da ferramenta InoSensor.

3.4.1.1 Requisitos Funcionais

Os requisitos funcionais estão descritos abaixo. O termo

“manter” empregado nos requisitos está relacionado às operações de

listar, cadastrar, editar e deletar.

RF01. O sistema deve permitir ao administrador manter o

cadastro de administradores no sistema;

RF02. O sistema deve permitir ao administrador manter as

configurações do serviço de envio de e-mail;

RF03. O sistema deve permitir ao administrador manter as

configurações do servidor InoSensor;

RF04. O sistema deve permitir ao administrador visualizar os

tipos de ações disponíveis para o Arduino;

RF05. O sistema deve permitir ao administrador visualizar os

tipos de sensores/atuadores disponíveis para uso com o

Arduino;

RF06. O sistema deve permitir ao administrador visualizar os

tipos de portas disponíveis no Arduino;

RF07. O sistema deve permitir ao administrador visualizar os

modelos compatíveis de Arduino;

RF08. O sistema deve permitir ao administrador manter o

cadastro de Arduinos gerenciados pela ferramenta;

Page 77: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

77

RF09. O sistema deve permitir ao administrador manter

sensores e atuadores em um Arduino;

RF10. O sistema deve permitir ao administrador manter as

ações de um sensor;

RF11. O sistema deve permitir ao administrador resetar os

alarmes de um Arduino;

RF12. O sistema deve permitir ao administrador enviar

configuração de ações para o Arduino;

RF13. O sistema deve permitir ao administrador monitorar os

Arduinos cadastrados no sistema e identificar as notificações

geradas por cada sensor;

RF14. O sistema deve permitir ao administrador fazer upload

do firmware para o Arduino;

RF15. O sistema deve permitir ao administrador validar as

configurações antes de enviar as configurações para o Arduino.

3.4.1.2 Regras de Negócio

As regras de negócio são:

RN01. O acesso ao sistema deve ser restrito a administradores

cadastrados;

RN02. Os tipos de ações serão somente visualizados e não

podem ser cadastrados ou alterados pelos administradores. As

ações disponíveis são: enviar e-mail, acionar atuador e ligar

LED RGB;

RN03. Os tipos de sensores serão somente visualizados e não

podem ser cadastrados ou alterados pelos administradores;

RN04. Os tipos de portas serão somente visualizados e não

podem ser cadastrados ou alterados pelos administradores. Os

tipos de portas são: digital com PWM, digital sem PWM e

analógica;

RN05. Os modelos de Arduino serão somente visualizados e

não podem ser cadastrados ou alterados pelos administradores.

Para a versão 1.0 da ferramenta InoSensor, só está disponível o Arduino Mega;

RN06. Ao cadastrar um sensor em um Arduino, o sistema deve

restringir as portas necessárias para o funcionamento do sensor

selecionado;

Page 78: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

78

RN07. Para a versão 1.0 da ferramenta InoSensor, estarão

disponíveis os sensores: temperatura e umidade, fotoresistor,

fogo, vibração, magnético, presença (PIR) e fumaça;

RN08. Para a versão 1.0 da ferramenta InoSensor, estarão

disponíveis os atuadores: relé, LED RGB e buzzer.

RN09. Um Arduino pode ter vários sensores. Um sensor

cadastrado pertence a um único Arduino;

RN10. Um sensor pode ter várias ações. Uma ação deve estar

relacionada a um sensor que está cadastrado em um Arduino.

Atuadores não podem ter ações;

RN11. Ao reiniciar o alarme de um Arduino pela ferramenta

InoSensor, todos os alarmes do dispositivo são desligados;

RN12. A configuração de um Arduino só pode ser transmitida

se não forem encontrados erros na validação da configuração;

RN13. Ao modificar uma configuração, o Arduino deve ser

marcado como não sincronizado para alertar o administrador.

Após sincronizar, deve ser marcado como sincronizado;

RN14. Ao cadastrar uma ação, deve ser possível informar se o

servidor deve ser notificado da ocorrência do evento;

RN15. Um Arduino deve possuir um IP e MAC Address, que

devem ser únicos no sistema;

RN16. O envio de configuração para o Arduino deve ser

validado com o usuário e senha, antes de gravar a nova

configuração no dispositivo;

RN17. A atualização de firmware só pode ser feita por

administradores com cadastro no sistema;

RN18. Ao atualizar o firmware, deve ser selecionado o

dispositivo já cadastrado no sistema;

RN19. Uma porta analógica de um sensor só pode ser

conectada em uma porta analógica do Arduino;

RN20. Uma porta digital sem PWM de um sensor pode ser

conectada a uma porta digital com PWM ou uma porta digital

sem PWM do Arduino;

RN21. Uma porta digital com PWM de um sensor só pode ser

conectada a uma porta digital com PWM do Arduino;

RN22. Uma porta do Arduino só pode ser conectada a um único

sensor;

RN23. A tela de monitoramento de sensores deve ser atualizada

automaticamente, de cinco em cinco segundos;

Page 79: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

79

RN24. As configurações do servidor devem ser gravadas no

firmware, para permitir a comunicação entre o servidor e o

Arduino;

RN25. O envio de e-mails deve ser configurável e permitir a

modificação da conta de e-mail pelo administrador;

RN26. Cada Arduino deve possuir um usuário e senha no

cadastro, que será utilizado para atualizar as configurações.

3.4.1.3 Requisitos Não-Funcionais

Os requisitos não-funcionais identificados são:

RNF01. O sistema Web da ferramenta INOSensor será

desenvolvido para ser executado em um servidor PHP

utilizando o framework MVC CodeIgniter;

RNF02. O banco de dados utilizado será o MySQL versão 5.1;

RNF03. O acesso às funcionalidades do sistema será realizado

por controle de acesso através de login e senha;

RNF04. O sistema InoSensor deve ser compatível com os

navegadores Firefox 10 ou superior, Internet Explorer 8 ou

superior e Google Chrome;

RNF05. A camada de visão da ferramenta InoSensor será

desenvolvida utilizando o padrão MVC do framework

JavaScript ExtJS versão 4.1;

RNF06. O módulo para atualização de firmware será

desenvolvido em Java;

RNF07. O desenvolvimento do firmware para Arduino será

desenvolvido em C utilizando a IDE do Arduino;

RNF08. Para o funcionamento da comunicação USB na

atualização do Arduino, será utilizada a biblioteca Java

RXTXcomm;

RNF09. A comunicação do Arduino com o módulo Web

InoSensor será feita via socket pela porta 80 do próprio servidor

PHP;

RNF10. A comunicação dos dispositivos com o servidor será

feita utilizando o protocolo TCP/IP;

RNF11. As configurações devem ser gravadas em um arquivo

texto, denominado config.dat, no formato Comma Separated

Value (CSV), salvo em cartão SD no Arduino;

Page 80: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

80

RNF12. Para facilitar a atualização de firmware pelo

administrador sem conhecimentos em programação, será

utilizada a ferramenta ArduinoBuilder, que deverá ser integrada

ao módulo de atualização de firmware;

RNF13. Para simplificar o processo de envio de notificação por

e-mail, deve ser utilizada a biblioteca PHPMailer.

3.4.2 Casos de Uso

Esta seção apresenta, resumidamente, os casos de uso das

funcionalidades implementadas. A Figura 1 apresenta o diagrama

contendo os casos de uso da ferramenta InoSensor.

UC01. Manter usuário: O acesso a ferramenta InoSensor é

restrito a usuários cadastrados. Esse caso de uso, possibilita ao

administrador do sistema cadastrar, editar e excluir usuários por

meio de um formulário;

UC02. Configurar e-mail: Devido a capacidade de enviar e-

mails pelo servidor Web em que a ferramenta InoSensor está

configurada e instalada, essa funcionalidade possibilita a

configuração do serviço de envio de mensagens eletrônicas;

UC03. Configurar Servidor: O Arduino precisa se comunicar

com a ferramenta InoSensor. Essa função permite configurar as

informações de rede do servidor;

UC04. Monitorar Eventos de Sensores: Permite ao

administrador monitorar os eventos disparados pelos sensores

de todos os Arduinos que estão configurados no sistema,

informando o total de eventos disparados na última hora e, caso

necessário, os detalhes desses eventos;

UC05. Visualizar tipo de ações: Permite ao administrador

visualizar os tipos de ações possíveis de serem executadas

quando uma condição verdadeira ocorrer em um sensor.

Pensando na capacidade de expansão do sistema, a ferramenta

foi desenvolvida de forma flexível, permitindo que ações

possam ser adicionadas sem interferir no funcionamento das

ações existentes;

UC06. Visualizar tipo de portas: Permite ao administrador

visualizar os tipos de portas existentes no Arduino;

UC07. Visualizar Modelo Arduino: Permite ao administrador

visualizar os modelos de Arduino suportados pela ferramenta

Page 81: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

81

InoSensor. Para permitir a expansão do sistema, a ferramenta

foi desenvolvida de forma flexível, permitindo que novos

modelos sejam adicionados sem interferir no funcionamento

dos modelos existentes;

UC08. Visualizar tipos de sensores: Permite ao administrador

visualizar os tipos de sensores e atuadores possíveis para serem

conectados ao Arduino. Para facilitar a conexão dos sensores ao

Arduino, essa funcionalidade exibe detalhes de cada sensor,

informando as características físicas, modo de funcionamento e

portas utilizadas além de apresentar a identificação de cada pino

à respectiva porta;

UC09. Manter Arduino: Essa é uma das funções mais

complexas da ferramenta, pois permite ao administrador

cadastrar, editar e excluir os Arduinos através de um formulário

com as informações de identificação e dados para conexão de

rede. Após o cadastro, é possível adicionar, editar e excluir os

sensores e atuadores. Depois de selecionar um sensor, são

exibidas as portas disponíveis para sua conexão com o Arduino.

Para os sensores, é possível cadastrar as ações disponíveis.

Dependendo do sensor selecionado, deve ser configurada a

condição para executar a ação e informar se o servidor deve ser

notificado da ocorrência do evento;

UC10. Validar Configuração: Após o cadastro do Arduino e

configuração dos sensores, essa função permite ao

administrador validar se o cadastro, sensores e ações estão

devidamente configurados e se comunicação com o Arduino

está ativa, para que a transmissão possa ser realizada;

UC11. Atualizar Firmware: Para que o Arduino possa

interpretar as ações e se comunicar com o servidor, inicialmente

ele deve estar cadastrado no sistema. Em seguida, deve-se

utilizar o utilitário para atualização de firmware. Esse utilitário

permite ao administrador gravar o firmware com versão mais

recente, com as devidas configurações necessárias para a

comunicação em rede.

Page 82: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

82

Figura 41 – Diagrama de casos de uso

Fonte: produção do próprio autor

uc

Vis

ão

Ca

so

s d

e U

so

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

Ad

min

istr

ad

or

UC

01

. M

an

ter

Us

rio

UC

02

. C

on

fig

ura

r E

-Ma

il

UC

03

. C

on

fig

ura

r

Se

rvid

or

UC

09

. M

an

ter

Ard

uin

o

UC

04

. M

on

ito

rar

Ev

en

tos

UC

10

. V

ali

da

r

Co

nfi

gu

raç

ão

UC

01

3.

Ma

nte

r

Se

ns

or/

Atu

ad

or

UC

14

. M

an

ter

õe

s

UC

16

. A

tua

liza

r

Fir

mw

are

UC

12

. R

es

eta

r A

larm

e

UC

07

. V

isu

ali

za

r

Mo

de

lo A

rdu

ino

UC

06

. V

isu

ali

za

r Tip

o

Po

rta

s

UC

08

. V

isu

ali

za

r Tip

os

Se

ns

ore

s

UC

05

. V

isu

ali

za

r Tip

o

õe

s

UC

15

. V

isu

ali

za

r

De

talh

es

Se

ns

or

UC

11

. A

tua

liza

r

Fir

mw

are

«extend»

«extend»

«extend»

«extend»

«extend»

Page 83: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

83

3.4.3 Diagramas de Pacotes e Classes

A ferramenta InoSensor foi desenvolvida com dois frameworks

de desenvolvimento Web. A escolha dessas plataformas foi feita com

base em trabalhos anteriores, que demonstraram qualidade e estabilidade

na execução das aplicações através de padrões de desenvolvimento de

software. Outra característica importante é a documentação existente na

Internet, que facilita o estudo das tecnologias empregadas.

Para o servidor Web, foi escolhido o framework MVC

CodeIgniter. Para a camada de apresentação, foi usado o framework

ExtJS 4.1, que em sua versão mais recente emprega uma arquitetura

baseada também no padrão MVC, facilitando inclusive a manutenção

por diferentes desenvolvedores.

Devido à complexidade da estrutura de ambos os frameworks,

optou-se por elaborar um diagrama de pacotes da UML contendo as

principais estruturas implementadas na ferramenta e dividir o sistema

em agrupamentos lógicos, para facilitar a compreensão. Somente para a

modelagem da camada de apresentação do framework ExtJS, existem

cento e sete classes responsáveis por controlar todos os componentes.

Para a ferramenta de upload de firmware, foi elaborado um

diagrama de classes, com a modelagem da ferramenta desenvolvida.

Conforme ilustrado na Figura 42, os pacotes no servidor da

aplicação InoSensor são divididos nas três camadas correspondentes a

arquitetura MVC:

Controller: Para cada funcionalidade, existe uma classe

responsável por tratar as requisições vindas do cliente. O

controlador inosensor.php é o controlador principal da

aplicação e possui a função de carregar a aplicação da camada

de visão desenvolvida através do framework ExtJS;

Model: Responsável por acessar o modelo de dados. O

framework possui uma camada de abstração com funções

genéricas para acesso a diferentes bancos de dados;

View: Como a camada de visão foi implementada com o

framework ExtJS, todas as informações retornadas são geradas

no padrão JSON e são tratadas pelo arquivo json_result.php.

Page 84: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

84

Figura 42 – Diagrama de pacotes PHP do framework CodeIgniter

Fonte: produção do próprio autor

Page 85: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

85

A arquitetura da camada de visão utiliza o padrão do framework

ExtJS e é ilustrada na Figura 43. Cada classe é salva em um arquivo

separado. As classes são organizadas conforme a sua responsabilidade e

são carregadas através de uma classe principal denominada Ext. Para

iniciar a aplicação, é definida uma classe que executa o método launch

da classe Application presente no pacote ExtJS. A partir desse ponto, a

chamada das funcionalidades ocorre conforme as requisições feitas pelo

cliente. Abaixo são descritos os principais pacotes com suas respectivas

responsabilidades:

App: Pacote que possui o agrupamento de todas as classes que

fazem parte da aplicação ExtJS;

UX: Nesse pacote são armazenadas classes de extensão do

framework, desenvolvidas pela comunidade. Para essa

aplicação, foram usadas e adaptadas para a ferramenta duas

extensões: gerenciamento de layout e autenticação definido na

classe Initialization.js e gerenciamento de rotas de ação,

responsável por gerenciar as funções executadas dentro da

aplicação;

Controller: Possui as classes separadas de acordo com as

responsabilidades e funções disponíveis na ferramenta. Dentro

dos controladores, são definidas: (i) as classes de modelo que

serão acessadas, (ii) ações de botões, (iii) criação de objetos de

janela para cadastro, edição, listagem e exclusão, (iv) validação

das informações e (v) submissão dos dados para o servidor de

aplicação. A classe Viewport é responsável por controlar a

divisão das áreas da aplicação, como: menu, tela principal e

cabeçalho;

View: Esse pacote possui todas as classes responsáveis por

montar os formulários e demais objetos visíveis na aplicação.

Esse objeto é criado pela classe da camada de controle. Dentro

de cada diretório, existem subdiretórios contendo basicamente

duas classes principais: List, para montar as telas de listagem

dos registros exibidos na tela e Edit, responsável por exibir o

formulário para cadastro ou edição de informações;

Model: Todos os modelos de dados acessados pela ferramenta

devem estar criados em classes específicas. Ao definir uma

classe de modelo, é feito o mapeamento de todos os campos e

seus respectivos tipos de dados. Essa classe também pode

Page 86: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

86

conter informações de associação com outras classes (um para

muitos, muitos para muitos);

Store: O framework ExtJS possui uma camada adicional,

responsável por configurar o acesso às informações e permitir o

armazenamento em cache, fornecendo funções de ordenação,

filtro e consulta local no lado cliente. Para cada modelo, existe

uma respectiva classe Store. Para valores estáticos (e.g., Sim,

Não, Ligado, Desligado) é possível definir as informações

dentro da própria classe, para o uso em listas de valores

(Combo Box).

A ferramenta InoSensor conta com um aplicativo desenvolvido

em Java para facilitar o processo de atualização de firmware do

Arduino. Esse aplicativo se comunica com três ferramentas: (i) o

servidor InoSensor, responsável por prover as informações de

identificação do dispositivo e versões de firmware, (ii) a biblioteca

RXTXComm para comunicação via interface serial USB e (iii) o

utilitário ArduinoBuilder, responsável por compilar o código e fazer o

upload do firmware para o Arduino. A biblioteca RXTXComm e o

utilitário ArduinoBuilder são descritos em mais detalhes na seção 4.2.5.

As classes relacionadas são ilustradas na Figura 44 e são

descritas abaixo:

InoSensor: Classe principal, responsável por iniciar a execução

do utilitário de atualização de firmware e controlar as etapas

existentes no processo;

DefaultStep: Classe responsável por definir uma janela padrão,

desenvolvida com a toolkit Swing. A ferramenta é composta por

três etapas, todas herdadas desta mesma classe, alterando-se

apenas as particularidades de cada janela;

ArduinoDao: Classe contendo as informações relacionadas ao

modelo de dados da entidade Arduino;

FirmwareDao: Classe contendo as informações relacionadas

ao modelo de dados da entidade firmware;

Output: Classe responsável por exibir o log de atualização do

firmware.

Page 87: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

87

Figura 43 – Diagrama de pacotes ExtJS

Fonte: produção do próprio autor

Page 88: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

88

Figura 44 – Diagrama de classes Java

Fonte: produção do próprio autor

cla

ss

Cla

ss

Mo

de

l

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

EA

9.3

Unre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion E

A 9

.3 U

nre

gis

tere

d T

rial V

ers

ion

Step

3

+ at

ualiz

arPo

rtaS

eria

l() :

void

# bt

Ava

ncar

Clic

k(ja

va.a

wt.

even

t.A

ctio

nEve

nt)

:voi

d-

btLo

gAct

ionP

erfo

rmed

(java

.aw

t.ev

ent.

Act

ionE

vent

) :v

oid

- bt

Refr

eshA

ctio

nPer

form

ed(ja

va.a

wt.

even

t.A

ctio

nEve

nt)

:voi

d+

disp

lay(

) :v

oid

+ G

etIn

stan

ce(In

oSen

sor)

:D

efau

ltSt

ep-

getW

inO

utpu

t()

:Out

put

- in

itCo

mpo

nent

s()

:voi

d-

sele

cion

arA

rdui

no(ja

va.a

wt.

even

t.It

emEv

ent)

:vo

id-

Step

3(In

oSen

sor)

Step

2

+ di

spla

y()

:voi

d+

getA

rdui

no()

:A

rdui

noD

ao+

getF

irm

war

e()

:Fir

mw

areD

ao+

Get

Inst

ance

(InoS

enso

r) :

Def

ault

Step

- in

itCo

mpo

nent

s()

:voi

d-

sele

cion

arA

rdui

no(ja

va.a

wt.

even

t.It

emEv

ent)

:vo

id-

sele

cion

arVe

rsao

(java

.aw

t.ev

ent.

Item

Even

t) :

void

+ se

tArd

uino

(Ard

uino

Dao

) :v

oid

+ se

tFir

mw

are(

Firm

war

eDao

) :v

oid

- St

ep2(

InoS

enso

r)

Step

1

- bt

Test

arA

ctio

nPer

form

ed(ja

va.a

wt.

even

t.A

ctio

nEve

nt)

:voi

d#

Def

ault

Step

(InoS

enso

r)+

Get

Inst

ance

(InoS

enso

r) :

Def

ault

Step

- in

itCo

mpo

nent

s()

:voi

d-

Step

1(In

oSen

sor)

+ te

star

Cone

xao(

) :v

oid

java

x.sw

ing

.JF

ram

e

Out

put

- in

itCo

mpo

nent

s()

:voi

d+

mai

n(St

ring

[])

:voi

d+

Out

put(

)+

setT

ext(

Stri

ng)

:voi

d

InoS

enso

r

+ ge

tCur

rent

Step

() :

I...

+ In

oSen

sor(

)+

mai

n(St

ring

[])

:voi

d+

Nex

tSte

p()

:voi

d+

Prev

ious

Step

() :

void

+ se

tCur

rent

Step

(Inte

...

java

x.sw

ing

.JF

ram

e

Def

ault

Step

- bt

Ava

ncar

Act

ionP

erfo

rmed

(java

.aw

t.ev

ent.

Act

ionE

vent

) :v

oid

# bt

Ava

ncar

Clic

k(ja

va.a

wt.

even

t.A

ctio

nEve

nt)

:voi

d-

btVo

ltar

Act

ionP

erfo

rmed

(java

.aw

t.ev

ent.

Act

ionE

vent

) :v

oid

# D

efau

ltSt

ep(In

oSen

sor)

+ di

spla

y()

:voi

d-

init

Com

pone

nts(

) :v

oid

Dat

abas

e

+ ge

tCon

nect

ion(

) :C

onne

ctio

n+

setS

ervi

dor(

Stri

ng)

:voi

d-

setU

ser(

) :v

oid

Ard

uino

Dao

+ ge

tAti

vo()

:St

ring

+ ge

tDes

cric

ao()

:St

ring

+ ge

tId(

) :in

t+

getI

p()

:Str

ing

+ ge

tMac

_add

ress

() :

Stri

ng+

getM

asca

ra_r

ede(

) :S

trin

g+

getM

odel

o_ar

duin

o_id

() :

int

+ ge

tSen

ha()

:St

ring

+ ge

tUsu

ario

() :

Stri

ng+

setA

tivo

(Str

ing)

:vo

id+

setD

escr

icao

(Str

ing)

:vo

id+

setI

d(in

t) :

void

+ se

tIp(

Stri

ng)

:voi

d+

setM

ac_a

ddre

ss(S

trin

g) :

void

+ se

tMas

cara

_red

e(St

ring

) :v

oid

+ se

tMod

elo_

ardu

ino_

id(in

t) :

void

+ se

tSen

ha(S

trin

g) :

void

+ se

tUsu

ario

(Str

ing)

:vo

id+

toSt

ring

() :

Stri

ng

Firm

war

eDao

+ ge

tDat

a()

:Dat

e+

getF

onte

() :

Stri

ng+

getI

d()

:int

+ ge

tMod

elo_

ardu

ino_

id()

:in

t+

getV

ersa

o()

:Str

ing

+ se

tDat

a(D

ate)

:vo

id+

setF

onte

(Str

ing)

:vo

id+

setI

d(in

t) :

void

+ se

tMod

elo_

ardu

ino_

id(in

t) :

void

+ se

tVer

sao(

Stri

ng)

:voi

d+

toSt

ring

() :

Stri

ng

RXTX

com

m

Ard

uino

Build

er

-win

Ou

tpu

t

+a

rdu

ino

+fi

rmw

are

-win

do

ws 0..

*

#m

ain

Page 89: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

89

3.4.4 Diagrama Entidade-Relacionamento

Na Figura 45, é apresentado o Diagrama Entidade

Relacionamento (DER) do banco de dados da ferramenta InoSensor. A

descrição das entidades geradas são descritas na sequência.

Page 90: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

90

Figura 45 – Diagrama entidade relacionamento

Fonte: produção do próprio autor

Page 91: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

91

config_email: Entidade responsável por armazenar as

configurações, para que o servidor Web possa enviar e-mail;

config_sistema: Entidade responsável por armazenar as

configurações de rede do servidor de aplicação que serão

utilizadas para a atualização do firmware do Arduino;

usuario: Entidade responsável por armazenar o cadastro de

administradores que terão acesso à ferramenta e à atualização

de firmware;

tipo_acao: Entidade responsável por armazenar os tipos de

ações possíveis de serem executadas pelo Arduino;

tipo_porta: Entidade responsável por armazenar os tipos de

portas existentes em um Arduino;

porta_arduino: Entidade responsável por mapear as portas

existentes em cada modelo de Arduino, de acordo com a

identificação existente;

sensor: Entidade responsável por armazenar os tipos de

sensores suportados pela ferramenta, a descrição dos sensores e

a classe JavaScript correspondente ao sensor para carregamento

dinâmico;

porta_sensor: Entidade responsável por armazenar o número e

os tipos de portas utilizadas por cada sensor.

arduino: Entidade responsável por armazenar os Arduinos

cadastrados para gerenciamento no sistema;

sensor_arduino: Entidade responsável por armazenar os

sensores conectados a cada Arduino, sua descrição e estado

inicial;

sensor_arduino_porta: Entidade responsável por armazenar a

porta em que um sensor está conectado à respectiva porta do

Arduino;

acao_sensor_arduino: Entidade responsável por armazenar as

condições de verificação dos sensores e ações que devem ser

executadas quando uma condição verdadeira ocorrer;

notificacao: Entidade responsável por armazenar as

notificações geradas pelo Arduino, para serem exibidas no

painel de notificações;

email: Entidade responsável por armazenar as solicitações de

envio de e-mail geradas pelo Arduino;

Firmware: Entidade responsável por armazenar as versões de

firmware por modelo de Arduino.

Page 92: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

92

3.4.5 Diagrama de Atividades

O diagrama de atividades da Figura 46 apresenta a sequência

das atividades que devem ser executadas na ferramenta, para possibilitar

o gerenciamento do Arduino.

Figura 46 – Diagrama de atividades

Fonte: produção do próprio autor

Page 93: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

93

3.5 CONCLUSÕES DO CAPÍTULO

A elaboração do projeto foi responsável por delimitar o escopo

da ferramenta InoSensor, visando contemplar os objetivos propostos

pelo trabalho.

Os artefatos e diagramas gerados durante a especificação da

ferramenta serviram de base para o desenvolvimento e são importante

fonte de referência para trabalhos futuros, pois além de simplificar a

compreensão, são responsáveis por abstrair a complexidade de todos os

componentes utilizados na fase de desenvolvimento. Durante a

implementação, algumas funcionalidades sofreram alterações e foram

posteriormente atualizadas na documentação.

Page 94: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

94

4 IMPLEMENTAÇÃO

Neste capítulo, são apresentados os resultados obtidos durante a

fase de implementação e integração das soluções da ferramenta

InoSensor. Também são abordadas as bibliotecas utilizadas, capazes de

acelerar o desenvolvimento em versões futuras do sistema.

4.1 PADRÕES DE PROJETO MVC

Visando oferecer uma plataforma robusta e facilitar a expansão

das funcionalidades existentes na versão inicial da ferramenta

InoSensor, optou-se por utilizar na camada do servidor Web, padrões e

bibliotecas bastante difundidos e documentados na Internet. A

arquitetura MVC é bastante comum em linguagens como PHP, Java e

.NET.

Durante as pesquisas em busca de soluções para serem

empregadas no projeto, foi encontrada a biblioteca JavaScript ExtJS em

uma versão reformulada para adotar o padrão MVC através do

framework Sencha. Entre as inúmeras vantagens dessa solução, está a

capacidade de separação das funcionalidades, além da possibilidade de

identificar os componentes de forma rápida, durante uma manutenção

ou expansão.

4.2 TECNOLOGIAS E FERRAMENTAS

O desenvolvimento da ferramenta InoSensor envolveu o uso de

diferentes tecnologias, linguagens de programação e ferramentas. Com

exceção da modelagem dos diagramas da UML, que foram elaborados

na ferramenta Enterprise Architect em versão de avaliação, as demais

tecnologias e ferramentas são todas open source.

4.2.1 Servidor Web

Para o desenvolvimento da camada de aplicação da ferramenta

InoSensor, foi utilizado o servidor Web Apache3 juntamente com a

linguagem de programação PHP4 na versão 5.3.0, uma linguagem

bastante prática que conta com diversos recursos para realizar tarefas

3 Disponível em: http://www.apache.org/ 4 Disponível em: http://www.php.net/

Page 95: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

95

como comunicação via socket, geração de arquivos e acesso a banco de

dados de forma bastante simples e rápida.

Juntamente com o PHP, foi utilizado o framework MVC

CodeIgniter versão 2.1, para separar as camadas da aplicação, prover os

mecanismos de acesso ao banco de dados e para a comunicação com a

camada de visão com o uso de requisições Asynchronous JavaScript And XML (AJAX) e JSON.

O sistema foi implementado na IDE de desenvolvimento

Eclipse, juntamente com o plug-in PHP Development Tools (PDT),

responsável por suportar as particularidades e extensões da linguagem.

4.2.2 ExtJS

Toda a interface do servidor InoSensor foi desenvolvida com a

nova SDK do framework EXTJS5, baseada nos padrões MVC e de

orientação a objetos. A partir da versão 4.0, toda a arquitetura do

framework foi remodelada seguindo os mais recentes padrões de

desenvolvimento de software. Sua API é composta de centenas de

componentes, para criar as mais diversas soluções com interfaces

semelhantes à aplicações desktop, com a vantagem de serem executadas

diretamente do navegador Web, inclusive com suporte para recursos do

HTML5.

O desenvolvimento de aplicações para Web exige grande

esforço durante a elaboração da interface, pois os navegadores usam

mecanismos de renderização diferentes, sendo necessário adaptar

diferentes versões de código e layout para manter a compatibilidade. No

framework ExtJS, essa tarefa é feita de forma transparente, devido a

compatibilidade com as versões mais recentes dos principais

navegadores, como Internet Explorer, Mozilla, Opera, Chrome e Safari.

A Figura 47 exemplifica a arquitetura do framework. Ao

desenvolver um projeto, é definida uma aplicação, carregada uma única

vez pela página principal. Essa aplicação gerencia todos os componentes

e carrega o controlador de acordo com a função selecionada. Ao

executar uma ação, o controlador é responsável por enviar as

solicitações para buscar os dados do servidor e por instanciar os objetos

e componentes que fazem parte da camada de visão para serem exibidos

para o usuário. O framework ExtJS permite manipular os dados

localmente (e.g., ordenação, armazenamento em cache), reduzindo o

5 Disponível em: http://www.sencha.com/products/extjs

Page 96: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

96

número de acessos ao servidor da aplicação. Outra característica

importante do framework é a possibilidade de carregar classes

JavaScript de forma dinâmica, fazendo com que as classes sejam

baixadas do servidor na medida em que as solicitações são feitas, o que

gera uma menor sobrecarga na inicialização da aplicação.

Figura 47 – Diagrama MVC da aplicação InoSensor

App.js Aplicação

Controlador

Modelo Visão

Navegador Web

Fonte: produção do próprio autor

Como não existem ferramentas com suporte total a

programação em JavaScript, foram utilizados o editor Notepad++ para

codificação e o utilitário Firebug do navegador Mozilla Firefox, para

depuração do código.

4.2.3 C/C++

Para implementar o firmware do Arduino, foram estudadas as

particularidades da linguagem C/C++, para o desenvolvimento da

solução. A documentação das bibliotecas e exemplos existentes na

Page 97: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

97

Internet facilitaram o aprendizado e auxiliaram durante o

desenvolvimento da comunicação entre o Arduino e o Servidor Web

InoSensor. A ferramenta para o desenvolvimento foi a própria IDE do

Arduino.

4.2.4 Java

A forma convencional de atualizar o firmware do Arduino é

através da IDE, com o dispositivo conectado à porta USB do

computador.

Como o objetivo da ferramenta InoSensor era facilitar o

gerenciamento de Arduino, mesmo por pessoas sem conhecimentos em

programação, optou-se por desenvolver um utilitário para atualizar o

firmware sem a necessidade de instalar a IDE. Devido à necessidade de

enumerar os dispositivos USB conectados ao computador, foi

encontrada a biblioteca Java RXTXComm. Desenvolvida pela empresa

americana MFizz, é responsável por prover os mecanismos necessários

para detecção e comunicação de dispositivos conectados à interface

serial ou paralela, a qual se mostrou bastante prática e eficiente.

Entre outros benefícios obtidos com o uso do Java, estão a

capacidade de comunicação com o banco de dados do servidor

InoSensor para controlar o acesso a usuários cadastrados e a

possibilidade do usuário selecionar versões sempre atualizadas, já que o

código fonte fica armazenado no servidor. O desenvolvimento das

interfaces foi feito pela IDE NetBeans versão 7.1.2 que facilitou a

integração com todas as bibliotecas.

4.2.5 Arduino Builder

O firmware é padrão para todos os Arduinos usados com a

ferramenta, porém devido às necessidades de configuração da

comunicação (e.g., IP, máscara, MAC Address) e segurança (e.g., usuário, senha), foi necessário compilar o código com as

particularidades de cada Arduino. Essas informações são gravadas no

código fonte, no momento de iniciar a compilação do código. A

compilação de código exige diversas etapas como compilação, geração

de arquivo-objeto e linking, para finalmente gerar o arquivo final (HEX)

para upload no Arduino.

A IDE do Arduino não possui uma versão simplificada para

execução via linha de comando, por isso optou-se por utilizar o Arduino

Page 98: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

98

Builder, uma ferramenta alternativa para compilação de código e

atualização de firmware para Arduino, formado pelo compilador AVR-

GCC, juntamente com as bibliotecas da própria IDE do Arduino.

O Arduino Builder6 conta com um utilitário via linha de

comando, denominado Arduino Uploader, tanto para compilar o código

quanto para atualizar o firmware do Arduino conectado na interface

USB do computador. Sua execução é bastante simples, sendo necessário

informar basicamente três parâmetros: nome do arquivo de sketch,

modelo do Arduino e porta USB.

Figura 48 – Prompt de comando do Arduino Builder

Fonte: produção do próprio autor

4.3 BANCO DE DADOS

Para armazenar as informações no servidor InoSensor, foi

utilizado o SGBD relacional MYSQL7 versão 5.1. Esse banco de dados

foi escolhido devido à sua popularidade em aplicações Web e

principalmente à velocidade, facilidade e ao suporte pela grande maioria

das linguagens de programação. A modelagem do banco de dados foi

feita com a ferramenta MySQL Workbench CE na versão 5.1.

6 Disponível em: http:// arduinodev.com/arduino-uploader/ 7 Disponível em: http:/www.mysql.com/

Page 99: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

99

4.4 PROTOCOLO DE CONFIGURAÇÕES DO ARDUINO

Para a comunicação entre o Servidor InoSensor e o Arduino, foi

definido um protocolo de comunicação com socket TCP/IP. O Arduino

pode atuar de duas formas: como um cliente socket, responsável por

enviar as notificações da ocorrência de eventos diretamente para o

servidor PHP, ou através do envio de mensagens com o protocolo HTTP

1.18. Já para receber novas configurações do servidor InoSensor, o

Arduino cria um servidor socket, realiza a autenticação para validar o

usuário e senha armazenados no Arduino e em seguida inicia a

transmissão das informações para finalmente gravá-las em um arquivo

texto no padrão CSV.

Para evitar que uma nova configuração seja transmitida

incompletamente e impeça o funcionamento, a nova configuração é

gravada em um arquivo temporário e só passa a ser válida após a devida

finalização da conexão entre o Servidor InoSensor e o Arduino.

A Figura 49 mostra a estrutura simplificada do arquivo de

configurações. Cada nó possui um identificador iniciado com o prefixo

begin (e.g., beginauth) seguido do nome do bloco e pela palavra end

(e.g., endauth), que informa o fim de um bloco.

8 Disponível em: http://w3.org/Protocols/rfc2616/

Page 100: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

100

Figura 49 – Estrutura simplificada do arquivo CSV

Page 101: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

101

Fonte: produção do próprio autor

Os cinco nós principais existentes no arquivo de configuração

são descritos abaixo:

Authorization: É formado pelas informações para autenticação.

Como o Arduino possui uma senha, no arquivo devem ser

informados os respectivos usuário e senha cadastrados no

sistema. Caso a autenticação falhe, o firmware irá abortar as

verificações e ações dos sensores;

Version: Possui as informações da versão do firmware,

permitindo ao servidor identificar a versão instalada no

Arduino;

Network: Possui as informações necessárias à configuração e ao

acesso à rede, além de conter as informações para comunicação

com o servidor InoSensor;

Pins: Possui as informações relacionadas às configurações das

portas do Arduino, identificando-as como portas de entrada ou

saída e inicializando seu estado;

Checks: Esse bloco pode conter uma ou mais verificações,

armazenadas linha a linha. Para cada tipo de sensor existe uma

regra padrão para montar o registro. Ao final de cada registro de

verificação existe a ação que deve ser executada quando a

condição do sensor for verdadeira. Em cada registro também

está presente um flag, informando se o servidor deve ser

notificado da ocorrência do evento ou não.

4.5 APRESENTAÇÃO DA FERRAMENTA

Nesta seção, são apresentados todos os módulos desenvolvidos

na ferramenta InoSensor e são relacionados com os devidos

identificadores dos requisitos funcionais e regras de negócio a que se

referem, com o objetivo de demonstrar a execução das atividades

previstas na etapa de projeto.

4.5.1 Módulo Web InoSensor

A interface principal do sistema possui uma estrutura padrão de

navegação. Em sua parte central são carregadas as funcionalidades, de

acordo com a função que deve ser selecionada no menu, posicionado à

esquerda da tela (Figura 50). O painel de notificações fica disponível na

Page 102: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

102

parte inferior da aplicação para que, durante o uso da ferramenta, novas

notificações possam ser visualizadas rapidamente.

Figura 50 – Tela inicial da ferramenta InoSensor

Fonte: produção do próprio autor

4.5.1.1 Cadastro de Usuários

Para manter a segurança e garantir que as modificações sejam

feitas somente por usuários autorizados, é necessário que os

responsáveis tenham um usuário cadastrado (RF01, RN01; ver subseção

3.4.1) no servidor InoSensor. Esse usuário é necessário para acessar a

ferramenta Web e controlar a atualização do firmware do Arduino. Ao

acessar a função do menu, são listados todos os usuários cadastrados no

sistema (Figura 51). Caso necessário, um usuário pode ser desativado

diretamente da lista.

Ao clicar no botão superior direito, no sinal positivo (+), é

exibida a janela para o cadastro de usuário. Para alteração, basta

executar um duplo clique na linha em que se encontra o usuário que se

deseja alterar.

Page 103: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

103

Figura 51 – Tela de usuários da ferramenta InoSensor

Fonte: produção do próprio autor

4.5.1.2 Configuração Geral

Para tornar as configurações da ferramenta mais flexíveis, foi

desenvolvido um módulo para armazenar o endereço do servidor (RF03,

RN24) e permitir ao firmware do Arduino se comunicar com a

ferramenta. Estão disponíveis nessa configuração três temas, que

modificam as características e cores do layout.

4.5.1.3 Configuração de E-mail

Para gerar maior flexibilidade na configuração do serviço de e-mail (RF02, RN25), é possível alterar as informações da conta de e-mail

responsável pelo envio das mensagens.

4.5.1.4 Tipo de Ação

Essa função exibe uma relação de todos os tipos de ações

(RF04, RN02) possíveis de serem executadas pelo Arduino e que estão

disponíveis na versão atual. No caso de novas ações serem adicionadas

em versões futuras, elas serão facilmente visualizadas dentro da

ferramenta. Os tipos de ações não podem ser alterados, pois impactam

em mudanças no Servidor e no firmware do Arduino.

Page 104: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

104

4.5.1.5 Sensor

Essa função exibe uma relação de todos os sensores e atuadores

(RF05, RN03) disponíveis na versão atual, exibindo os detalhes dos

sensores suportados pela ferramenta InoSensor e facilitando a conexão

dos sensores ao Arduino.

Ao executar um duplo clique sobre um registro da lista, é

exibida uma janela contendo informações como a identificação dos

pinos e detalhes do sensor ou atuador selecionado (Figura 52). Os tipos

de sensores não podem ser alterados, pois impactam em mudanças no

Servidor e no firmware do Arduino.

Figura 52 – Tela de detalhes do sensor

Fonte: produção do próprio autor

4.5.1.6 Tipo de Porta

Os tipos de portas existentes no Arduino são categorizados e

exibidos nessa função (RF06, RN04). Essas categorias são utilizadas na

fase de configuração dos sensores, conforme as suas características. Os

Page 105: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

105

tipos de portas não podem ser alterados, pois estão relacionados ao

hardware do Arduino.

4.5.1.7 Modelo de Arduino

Os modelos de Arduino (RF07, RN05) compatíveis com a

ferramenta InoSensor são listados nessa função. Para cada modelo são

informadas as portas e as respectivas quantidades.

Ao executar um duplo clique, é possível visualizar os detalhes

(Figura 53) de todas as portas, como número, identificação presente no

hardware, tipo de porta correspondente e se possui suporte a PWM.

Figura 53 – Exibição das configuração de portas do Arduino

Fonte: produção do próprio autor

4.5.1.8 Arduino

Para iniciar a configuração de um Arduino, é necessário

cadastrar o dispositivo (RF08, RN15, RN26). Ao acessar a listagem, são

exibidos todos os Arduinos cadastrados (Figura 54), com indicação de

conectividade e sincronização. Caso um Arduino esteja com o alarme

disparado, é possível desligar o alarme remotamente, através do botão

de reset de alarme (RF11, RN11).

Page 106: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

106

Figura 54 – Lista de Arduinos cadastrados

Fonte: produção do próprio autor

Page 107: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

107

Ao clicar no botão para cadastrar um Arduino, é exibida uma

janela com as informações necessárias para o funcionamento e

identificação do dispositivo na rede (Figura 55).

Figura 55 – Tela de cadastro de Arduino

Fonte: produção do próprio autor

Após o cadastro, devem ser configurados todos os sensores que

estarão presentes no Arduino. Ao selecionar um sensor, são listadas as

respectivas ações cadastradas (Figura 56). Também é possível excluir e

alterar tanto as ações quanto os sensores, com um duplo clique.

Page 108: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

108

Figura 56 – Lista de sensores e ações do Arduino

Fonte: produção do próprio autor

Page 109: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

109

Inicialmente, ao cadastrar um novo sensor (RF09, RN06, RN07,

RN08, RN09, RN19, RN20, RN21, RN22), deve ser selecionado um dos

tipos de sensores suportados (Figura 57). Abaixo do lado esquerdo da

janela, são exibidas todas as portas disponíveis no Arduino para serem

conectadas. Essas portas estão categorizadas por tipo e nome, para

facilitar a identificação. Do lado direito, são exibidas as portas

necessárias para o sensor selecionado. Para conectar uma porta do

Arduino à porta do sensor ou atuador, basta arrastar a porta desejada do

Arduino até a respectiva porta do sensor, respeitando-se o tipo de porta.

Após uma porta ser conectada a um sensor, ela não estará mais

disponível para uso por outro sensor.

Figura 57 – Tela para cadastro de sensor

Fonte: produção do próprio autor

Após um sensor ser cadastrado, é possível adicionar uma ou

mais ações (RF10, RN10, RN14) disponíveis na ferramenta. Ao abrir a

janela para cadastro de ação, deve ser informada uma descrição e a

condição desejada (Figura 58). Essa condição é dependente do tipo de

sensor. Em seguida, deve ser informada a ação que será executada caso

a condição informada seja verdadeira. Nesse momento, deve ser

Page 110: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

110

informado se a ocorrência da condição deve notificar o servidor

InoSensor.

Figura 58 – Tela para cadastro de ação de um sensor

Fonte: produção do próprio autor

Após a configuração, deve ser executada a validação (RF15),

para certificar-se de que nenhuma informação importante esteja faltando

ou seja incorreta (Figura 59). As verificações são categorizadas em dois

tipos: uma advertência é simplesmente responsável por alertar o usuário

de possíveis problemas que possam ocorrer, como uma senha muito

curta, já uma mensagem de erro informa que alguma informação está

ausente ou incorreta e irá impedir o envio das configurações para o

Arduino.

Somente após a correção dos erros, será possível atualizar as

configurações do Arduino (RF12, RN12, RN13, RN16). Antes de um

Arduino receber as configurações, é realizada uma autenticação com o

usuário e senha armazenados no firmware do Arduino, impedindo que

novas configurações sejam gravadas indevidamente. Caso ocorra

alguma alteração no Arduino, será exibido um ícone, informando que as

configurações devem ser sincronizadas novamente.

Page 111: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

111

Figura 59 – Tela de verificação de configuração

Fonte: produção do próprio autor

4.5.1.9 Monitoramento

Com o Arduino atualizado e devidamente configurado no

servidor, já é possível monitorar os sensores (RF13, RN23) conectados a

cada dispositivo. Periodicamente, o sistema verifica se novas

notificações estão disponíveis e as exibe em um painel com detalhes

como identificação do Arduino, o sensor que criou a notificação e a data

em que o servidor foi notificado (Figura 60).

Page 112: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

112

Figura 60 – Tela de notificações

Fonte: produção do próprio autor

Page 113: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

113

4.5.2 Módulo Atualização de Firmware

O utilitário é responsável por atualizar o firmware (RF14,

RN17, RN18, RN24) com a versão mais recente disponível no servidor

InoSensor. Para utilizá-lo, é necessário ter um usuário cadastrado no

servidor InoSensor. O utilitário é executado localmente em um

computador com interface USB, através da qual será conectado o

Arduino para atualização (Figura 61). O processo é composto de três

etapas. Na primeira fase, devem ser informados os dados do servidor e

usuário para autenticação. No segundo passo, deve ser selecionado o

Arduino que se deseja atualizar e, por fim, deve ser conectado o

Arduino à interface USB, para que o sistema possa detectá-lo e assim

iniciar a gravação do firmware.

Figura 61 – Tela do assistente de configuração

Fonte: produção do próprio autor

4.6 CONCLUSÕES DO CAPÍTULO

Para a implementação dos módulos da ferramenta InoSensor, as

tecnologias do servidor Web tiveram que ser estudadas para tornar

viável o emprego do padrão MVC proposto pelos framework. O material

da fundamentação teórica do Arduino serviu de base para a

implementação do firmware. A documentação existente na Internet

Page 114: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

114

também foi fundamental para resolver todos os problemas identificados

durante o desenvolvimento.

Page 115: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

115

5 TESTES E VALIDAÇÃO

Este capítulo apresenta os resultados dos testes executados para

validação da ferramenta, com o objetivo de avaliar seu funcionamento

em condições normais de uso.

Segundo Dijkstra (1972 apud GOLDMAN; KON, 2004), a

realização de testes é uma maneira eficaz de detectar a presença de

erros, porém insuficiente para demonstrar a sua total ausência.

A execução de testes pode ser considerada uma tentativa

sistemática para encontrar erros em programas que espera-se estar em

pleno funcionamento (GOLMAN; KON, 2004).

Os testes da ferramenta InoSensor foram efetuados em paralelo

ao desenvolvimento, com o objetivo de identificar possíveis falhas e

garantir a integração entre todos os módulos.

5.1 TESTES DO FIRMWARE DO ARDUINO

Durante o desenvolvimento do firmware do Arduino, foram

realizados testes individuais para avaliar o funcionamento das

características específicas de cada sensor e atuador. Foram testados dois

modelos de Arduino, o Arduino Uno e Arduino Mega2560.

Todos os componentes de hardware do projeto foram

conectados ao Arduino com o uso de uma protoboard. O Quadro 4

mostra a relação de todos os equipamentos utilizados durante os testes e

o preço médio unitário, em dólares, dos componentes comprados pela

Internet no site http://www.dx.com.

Page 116: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

116

Quadro 4 – Componentes eletrônicos do projeto

Componente Quantidade Preço

USD

Arduino Uno 1 18,6

Arduino Mega2560 1 23,0

Shield ethernet com interface para cartão SD 1 15,0

Cartão Memória MicroSD 2GB 1 4,9

Protoboard 1 4,5

Sensor Fogo 1 3,0

Sensor de Fumaça 1 3,8

Sensor de Temperatura e Umidade 1 3,1

Fotoresistor 1 2,2

Sensor Vibração 1 3,1

Sensor Magnético 1 2,4

Sensor IR de presença 2 5,3

Relé 3 2,4

LED RGB 2 2,0

Buzzer 2 2,6

Fonte: produção do próprio autor

Durante os testes, optou-se por definir rotinas específicas para

cada sensor, visando facilitar os testes individuais e uma melhor

integração entre todas as partes que compõem o firmware do Arduino.

Após os testes dos sensores e atuadores, foi desenvolvido o

firmware do Arduino. Para simular o arquivo de configurações que

posteriormente seria gravado na memória externa do cartão SD, foi

montada uma estrutura de dados para armazenar as informações. A

partir desse ponto, foi possível ter uma ideia de como o sistema se

comportaria após as configurações serem transmitidas do servidor

InoSensor para o Arduino.

A qualidade dos sensores é um ponto que merece destaque.

Devido ao baixo custo dos sensores adquiridos inicialmente, observou-

se que a acurácia das informações lidas de alguns senores acabava sendo

afetada, tornando o sistema ineficaz e em alguns casos até gerando

informações incorretas. Para resolver esse problema, foram adquiridos

novos sensores com um custo um pouco mais alto, porém que

mostraram ser mais precisos e tolerantes a falhas.

Page 117: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

117

Os testes dos sensores e atuadores foram realizados com o uso

do monitor da interface serial USB presente na IDE do Arduino, para

verificar o comportamento do firmware.

5.2 TESTES DE INTEGRAÇÃO

Após testar todos os sensores individualmente, foram iniciados

os testes de integração entre o servidor InoSensor e o Arduino, para

avaliar o comportamento de todo o conjunto.

Nessa fase, iniciaram-se os testes do shield ethernet, através da

comunicação com o servidor em uma rede TCP/IP e do armazenamento

das configurações do Arduino em memória externa. Para isso, foram

utilizados os equipamentos listados no Quadro 5.

Quadro 5 – Equipamentos para testes do projeto

Componente Descrição Quantidade

Roteador TP-

LINK

Roteador com 4 portas ethernet 1

Cabo ethernet Cabos para conectar o Arduino e o

servidor no roteador 2

Servidor

InoSensor

Microcomputador

Processador Intel Core i7 2.4GHz,

8GB RAM,

256GB SDD,

Sistema Operacional Windows 8

Professional,

XAMPP LITE (PHP 5.3, MySQL

5.1, APACHE)

1

Fonte: produção do próprio autor

Para facilitar o estudo das funções de rede disponíveis para o

Arduino, inicialmente foram feitos os testes através dos exemplos

disponíveis na própria IDE do Arduino. Em seguida, foram criadas as

rotinas de conexão via socket no servidor PHP, necessárias tanto para o

envio de notificações do Arduino para o Servidor, quanto para a

transmissão de configurações do Servidor para o Arduino. As

bibliotecas disponíveis em ambos os ambientes facilitaram a integração

Page 118: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

118

e se mostraram bastante estáveis durante o envio e recebimento de

informações.

O mesmo processo foi realizado para testar o armazenamento

das configurações no cartão de memória SD, disponível no shield

ethernet. Foi identificada uma característica interessante, que facilitou

bastante o uso de ambas as soluções: a seleção automática do

barramento de comunicação serial entre o microcontrolador e os

periféricos, já que somente um periférico por vez pode acessar o

barramento. Em versões mais antigas das bibliotecas do Arduino, o

controle era feito de forma manual e a responsabilidade ficava por conta

do desenvolvedor. Nas versões mais recentes, é possível deixar que a

própria biblioteca gerencie os periféricos no barramento SPI.

Após a integração entre todos os módulos, foi testada a

atualização do firmware do Arduino através do assistente de

configurações desenvolvido com o Arduino Builder. Essa ferramenta se

mostrou bastante simples e funcional para a compilação do firmware

sem a utilização da IDE.

5.3 TESTE DE ESCALABILIDADE DO FIRMWARE

Ao desenvolver soluções de firmware para microcomputadores,

convencionalmente não é necessário controlar a alocação de memória, já

que esses recursos possuem grande capacidade de armazenamento.

Normalmente, essa tarefa é controlada pelo sistema operacional, que

gerencia a memória. Porém, o desenvolvimento para microcontroladores

exige um conhecimento aprofundado da plataforma e deve se levar em

consideração as limitações de processamento e memória de cada

dispositivo.

A ferramenta Arduino Builder possui um recurso para exibir o

percentual de consumo por cada tipo de memória. Essas informações

são geradas pelo compilador AVR para os microcontroladores Atmel e

são exibidas em gráficos para facilitar a visualização da memória total.

Na Figura 62 são exibidos três gráficos. O primeiro para a memória

Flash, onde fica armazenado o firmware do Arduino, o segundo para a

memória SRAM e o terceiro e último para a memória EEPROM.

O tamanho total da versão do firmware ficou em

aproximadamente 53KB (53954 bytes) e a memória das variáveis em

torno de 3KB (3116 bytes). Como o Arduino Mega2560 possui uma

memória de programa de 256KB, isso representa aproximadamente

20,6% da capacidade total do Arduino, o que permite ampliar as

funcionalidades sem comprometer as limitações do hardware.

Page 119: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

119

Figura 62 – Memória utilizada pelo Arduino Mega2560

Fonte: produção do próprio autor

5.4 PROBLEMAS IDENTIFICADOS

Para testar o desempenho e disponibilidade do hardware, foi

aplicado um teste de estresse do firmware com o objetivo de avaliar o

funcionamento do Arduino. Após algumas iterações no programa

principal, observou-se o congelamento do microcontrolador, tornando o

sistema inoperante. O microcontrolador voltou ao funcionamento

somente após a reinicialização feita pelo botão reset. Para identificar o

problema, as partes do sistema foram isoladas e testadas

individualmente até que se identificou que o problema estava sendo

ocasionado na leitura das configurações em variáveis do tipo String.

Após pesquisas feitas na Internet, identificou-se que o problema

era causado pela biblioteca String.h, responsável por controlar a

memória para alocação de variáveis. Esse problema havia sido corrigido

Page 120: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

120

na versão 1.0.5 da IDE do Arduino, então após a atualização da IDE não

ocorreram mais travamentos.

Inicialmente, a proposta contemplava o uso de ambos os

modelos do Arduino citados anteriormente, porém somente o Arduino

Mega2560 se mostrou compatível, devido ao tamanho final do firmware

e à memória para o Arduino Uno ser de apenas 32KB.

Mesmo com as configurações armazenadas no cartão SD e com

a otimização do código, não foi possível utilizá-lo na versão 1.0 da

ferramenta InoSensor. Para tentar identificar os códigos do programa

que estavam consumindo a maior quantidade de memória, todas as

funcionalidades foram isoladas. Ao final dos testes, foi identificado que

somente as bibliotecas para comunicação via ethernet e SD consumiam

aproximadamente 19KB (18716 bytes), cerca de 57,1% da memória

total do Arduino Uno, conforme ilustra a Figura 63.

Figura 63 – Memória utilizada pelo Arduino Uno

Fonte: produção do próprio autor

Page 121: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

121

A biblioteca nativa para manipulação de memória SD era

bastante limitada, pois não permitia, por exemplo, renomear arquivos.

Sendo assim, foram pesquisadas bibliotecas alternativas e mais

eficientes para tornar essa tarefa mais segura e fazer com que a nova

configuração somente seja ativada após a conclusão da transmissão das

informações pelo servidor.

5.5 CONCLUSÕES DO CAPÍTULO

Os testes de integração entre os módulos da ferramenta foram

fundamentais para garantir o funcionamento de acordo com os objetivos

propostos pelo trabalho. As informações disponíveis na Internet foram

essenciais para a solução dos problemas encontrados durante as fases de

desenvolvimento e testes do projeto.

Para testar a compatibilidade da interface visual do framework

ExtJS, foram executados os testes nos principais navegadores

disponíveis (Internet Explorer versão 10, Firefox versão 23 e Google

Chrome na versão 28). Os resultados mostraram total funcionamento no

Firefox e no Google Chrome. Já o navegador Internet Explorer se

comportou de maneira inesperada em algumas situações, sendo

necessária a atualização da página Web do servidor para continuar a

utilização da ferramenta.

A otimização do código para a execução do firmware no

modelo Uno necessitaria de um grande trabalho e maior conhecimento

da linguagem C. Para tentar solucionar o problema, o firmware deveria

ser programado com recursos de baixo nível, porém ainda assim, o

desenvolvimento de novas versões da ferramenta seria limitado.

Page 122: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

122

6 CONCLUSÕES

Esse trabalho teve como objetivo desenvolver uma ferramenta

para gerenciamento de sensores na plataforma Arduino e facilitar o

processo de atualização de configurações sem a necessidade de

reprogramar o firmware, além de permitir que interessados possam

utilizar a plataforma mesmo sem conhecimentos em programação.

A ferramenta InoSensor também pode servir de apoio à

disciplinas como Programação, Redes de Computadores e Eletrônica

Básica, pois muitos dos componentes e bibliotecas podem ser facilmente

adaptados e modificados, melhorando a absorção de conhecimento com

exemplos práticos.

Devido aos diferentes sensores disponíveis, foram selecionados

os módulos com características similares e que poderiam atuar em

conjunto para serem empregados no monitoramento de ambientes.

Na fundamentação teórica (Capítulo 2), foram apresentados os

estudos relacionados à Automação e a sua consequente evolução, que

deram origem a Domótica. Também foram analisadas algumas das

soluções atuais para Automação residencial e as particularidades da

plataforma Arduino, com o objetivo de compreender o seu

funcionamento e aplicar a solução mais adequada ao projeto. Para

finalizar esses estudos, foram pesquisadas e comparadas soluções

similares disponíveis, a fim de verificar as contribuições geradas pela

ferramenta InoSensor.

Na parte de projeto (Capítulo 3), foi definida a solução proposta

através da especificação e modelagem da ferramenta, com o uso da

notação UML. Para a documentação, foram elaborados os casos de uso,

requisitos e regras de negócio. Também foram elaborados diagrama de

classe, ER, pacotes e atividades, para que as pessoas interessadas

possam compreender a solução desenvolvida.

Todas as etapas da fase de implementação (Capítulo 4) foram

documentadas com os módulos desenvolvidos. Optou-se pelo emprego

de framework para facilitar que novas versões possam ser desenvolvidas

em trabalhos futuros.

Para melhorar a usabilidade da ferramenta e garantir

compatibilidade com os navegadores, devido as características Web da

ferramenta InoSensor, optou-se por um framework desenvolvido com os

padrões da Web 2.0. A escolha do framework ExtJS foi feita com base

em trabalhos acadêmicos já realizados anteriormente e que se mostraram

bastante práticos e funcionais.

Page 123: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

123

Com a versão 4.0 do ExtJS, foi necessário estudar as novas

particularidades, devido aos padrões e a estrutura MVC do framework.

Mesmo com a complexidade, a solução proposta por essa versão se

mostrou bastante eficiente, principalmente durante a manutenção do

código.

Após a implementação da solução, foi testada a integração entre

todos os módulos, para avaliar o funcionamento correto em condições

normais de uso. Devido à limitação do tempo disponível, não foi

possível executar um teste mais elaborado para avaliar o uso da

ferramenta em condições reais de utilização, portanto essa tarefa fica

como sugestão de um trabalho futuro.

Inicialmente, a proposta era empregar os dois modelos

convencionais de Arduino, Uno e Mega. Porém, durante o

desenvolvimento, foi identificado que a limitação de 32KB de memória

disponível no Arduino Uno impediu seu uso na versão final da

ferramenta. Apesar do custo maior do modelo Mega em relação ao

modelo Uno, a diferença é compensada pela maior capacidade de

memória e quantidade de portas do modelo Mega, que

consequentemente permite adicionar uma maior quantidade de sensores.

Em relação à estabilidade do firmware, foi identificado um problema na

biblioteca de Strings, que acabava congelando o processamento do

Arduino. Após pesquisas feitas na Internet, foi identificado que o

problema havia sido solucionado em uma nova versão da IDE. Como o

microcontrolador Atmel possui o recurso Watchdog, foi inserida no

firmware a rotina responsável por reinicializar o dispositivo

automaticamente, caso ocorra o travamento inesperado.

Ao avaliar a versão final do trabalho, pode-se concluir que

todos os objetivos foram alcançados, baseados na solução proposta, e

novos conhecimentos foram absorvidos. Com o desenvolvimento da

ferramenta InoSensor, foi possível aplicar, na prática, os principais

conteúdos vistos no curso de Especialização, como ambientes de

desenvolvimento de software, padrões de projeto, redes de

computadores e sistemas distribuídos. A versão final da solução integra

quatro linguagens de programação: Java, PHP, JavaScript e C. Essa

integração demonstra que, apesar das particularidades de cada

tecnologia, elas podem se complementar, para que a solução

desenvolvida alcance os objetivos desejados.

Page 124: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

124

6.1 TRABALHOS FUTUROS

A proposta da ferramenta InoSensor pode ser de grande

contribuição para soluções baseadas em monitoramento de sensores na

plataforma Arduino, sem a necessidade de conhecimentos em

programação.

Como existe a dependência de um meio físico para

comunicação com o servidor, sugere-se o desenvolvimento de um

firmware para comunicação sem fio, através do padrão XBee, ou até

mesmo via GPRS, para o monitoramento em ambientes em que não seja

possível realizar o uso de rede ethernet.

Em relação ao comportamento dos sensores, fica como sugestão

a aplicação de alguma técnica de inteligência artificial para melhorar o

gerenciamento e apoio à tomada de decisões de todo o conjunto,

inclusive com o emprego de autômatos para modelar e analisar os

estados do sistema.

Sugere-se também como proposta, a adição de novos sensores e

atuadores e a inclusão de um relógio de tempo real (RTC) para executar

ações ou verificações de acordo com o tempo. Como o Arduino não

possui um relógio interno, o RTC serviria de base para atuar como

temporizador, acionador de atuadores e verificador de sensores.

Page 125: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

125

REFERÊNCIAS

ALIEVI, C. Automação residencial com utilização de controlador

lógico programável, 2008. Disponível em: <http://www.aureside.org.br

/temastec/tcc_0410.pdf>. Acesso em: 05 jul. 2013.

ARDUINO. Arduino Reference, 2013. Disponível em:

<http://arduino.cc/en/Reference/HomePage>. Acesso em: 13 June 2013.

ATMEL. AVR 8-bit and 32-bit Microcontroller, 2013. Disponível

em:<http://www.atmel.com/products/microcontrollers/avr/default.aspx>

Acesso em: 10 July 2013.

BIONDO, R. Domótica: Sistemas e Aplicabilidade, 2011. Disponível

em: <http://www.tcc.sc.usp.br/tce/disponiveis/18/180450/tce-19102011-

122815/>. Acesso em: 15 jun. 2013.

BOLZANI, C. Desmistificando a Domótica, 2007. Disponível em:

<http://www.bolzani.com.br/artigos/art01_07.pdf>. Acesso em: 05 jul.

2013.

BOXALL, J. Arduino Workshop. 1st. ed. California. No Starch Press,

2013.

BREAKOUT, Breakout, 2013. Disponível em: <http://breakoutjs

.com/>. Acesso em: 22 ago. 2013.

DIAS, C, L. de A.; PIZZOLATO N. D. Domótica: Aplicabilidade e

Sistemas de Automação residencial, 2004. Disponível em:

<http://www.essentiaeditora.iff.edu.br/index.php/vertices/article/view/9

8/86>. Acesso em: 10 jun. 2013.

GERTZ, E.; JUSTO, P. Environmental Monitoring with Arduino.

1st. ed. California. O’Reily Media, 2012.

GOLDMAN, A.; KON, F. Testes de Software, 2004. Disponível em:

<www.ime.usp.br/~kon/presentations/testes2004.ppt>. Acesso em: 25

out. 2013.

Page 126: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

126

HOMEBOT. Arduino Homebot, 2013. Disponível em: <https://github

.com/indyfromoz/Arduino-Homebot/>. Acesso em: 22 ago. 2013.

MARGOLIS, M. Arduino Cookbook. 1 st. ed. California. O’Reily

Media, 2011.

MARTINS, G. Princípios de Automação Industrial, 2012. Disponível

em: <www.ufsm.br/desp/geomar/automacao/Apostila_032012.pdf>.

Acesso em: 15 jun. 2013.

NODUINO. Noduino, 2013. Disponível em: <http://semu.github.io/nod

uino/>. Acesso: 22 ago. 2013.

PINHEIRO, J. Sistema de Automação, 2004. Disponível em:

<http://www.projetoderedes.com.br/artigos/artigo_sistemas_automacao.

php>. Acesso em: 07 jul. 2013.

PINHEIRO, J., Automação e controle de processos, 2013. Disponível

em: <http://www.projetoderedes.com.br/aulas/unifoa_automacao_contro

le_processos/aula02_unifoa_automacao_controle_processos.pdf>.

Acesso em: 02 jul. 2013.

PRADO, S. Barramento I2C, 2007. Disponível em:

<http://www.embarcados.com.br/Artigos/Hardware-Embarcado/Barram

ento-I2C.html>. Acesso em: 20 jul. 2013.

ROSARIO, J. Automação Industrial. 1. ed. São Paulo. Editora

Baraúna, 2009.

SALLES, T. Projeto do Controle de Varredura Automática do

Tanque Acústico, 2009. Disponível em:

<http://www.tcc.sc.usp.br/tce/disponiveis/18/180500/tce-20042010-135

025/publico/Salles_Tito_Pagoto.pdf>. Acesso em: 01 jul. 2013.

SCHNEIDER ELECTRIC. Automação residencial IHC, 2013.

Disponível em: <http://www.schneider-electric.com.br/documents/electr

icians/manual-residencial.pdf>. Acesso em: 20 jul. 2013.

SEABRA, R. M. S. O que é Software Livre, 2007. Disponível em:

<http://ansol.org/filosofia>. Acesso em: 20 ago. 2013.

Page 127: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

127

SGARBI, J. A.; TONINANDEL, F. Domótica Inteligente: Automação

residencial baseada em Comportamento, 2006. Disponível em:

<http://fei.edu.br/~flaviot/pub_arquivos/wtdia06.pdf>. Acesso em: 10

jun. 2013.

SOARES, M. Os microcontroladores AVR Atmel - Noções Básicas,

1998. Disponível em: <http://www.arnerobotics.com.br/eletronica/Micr

ocontroladores_AVR_basico.htm>. Acesso em: 15 jul. 2013.

SOUSA, A. Um sistema de apoio à tomada de decisão para o

monitoramento remoto de centrais de alarmes patrimoniais, 2009.

Disponível em: <http://www.tede.udesc.br/tde_busca/arquivo.php?codA

rquivo=2943>. Acesso em: 20 mar. 2013.

TERUEL, E. Uma proposta de framework para sistemas de

Automação residencial com interface Web, 2008. Disponível em:

<http://www.centropaulasouza.sp.gov.br/posgraduacao/Trabalhos/Disse

rtacoes/evandro-carlos-teruel.pdf>. Acesso em: 15 jul. 2013.

TORRONE, P. Why the Arduino won and why it’s here to stay,

2011. Disponível em: <http://makezine.com/2011/05/12/why-google-

choosing-arduino-matters-and-the-end-of-made-for-ipod-tm/>. Acesso

em: 11 June 2013.

WENDLING, M. Sensores. Disponível em: <http://www2.feg.unesp.br/

Home/PaginasPessoais/ProfMarceloWendling/4---sensores-v2.0.pdf>.

Acesso em: 01 jul. 2013.

WHEAT, D. Arduino Internals. 1st. ed. New York. Apress, 2011.

WIRING. Wiring, 2013. Disponível em: <http://wiring.org.co/about.ht

ml>. Acesso em: 25 July 2013.

WOLLZ, F. Estratégias para Otimização da Iluminação e Redução

do Consumo Energético em Edifícios Residenciais, 2012. Disponível

em: <http://www.ipog.edu.br/uploads/arquivos/bdeddbda29d57021a03d

bc9cb249abe7.pdf >. Acesso em: 07 jul. 2013.

Page 128: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

128

APÊNDICE A – Dicionário de dados

O dicionário de dados apresenta a relação de todas as entidades

do banco de dados do servidor InoSensor.

ENTIDADE CONFIG_EMAIL

Esta entidade é responsável por armazenar as configurações

utilizadas para conexão com a conta responsável por enviar os e-mails

de notificação.

Atributo Definição do atributo Tipo Dado

id Identificador único para configuração. int

servidor_email Endereço do servidor de e-mail. varchar(45)

porta_email Porta do servidor de e-mail. int

usuario_email Usuário da conta de e-mail. varchar(50)

senha_email Senha da conta de e-mail. varchar(50)

autenticacao Informa se o servidor de e-mail

requere autenticação. Os valores

possíveis são:

S – Sim

N – Não

char(1)

Page 129: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

129

ENTIDADE CONFIG_SERVIDOR

Esta entidade é responsável por armazenar as configurações de

rede utilizadas para permitir ao Arduino realizar a comunicação com o

Servidor.

Atributo Definição do atributo Tipo Dado

id Identificador único para configuração. int

servidor Endereço IP do servidor InoSensor. varchar(20)

mascara_rede Máscara de rede do Servidor

InoSensor. varchar(20)

gateway Gateway da rede do Servidor

InoSensor. varchar(50)

porta_gateway Porta do Gateway da rede do Servidor

InoSensor. int

tema Define o tema visual utilizado pela

aplicação Web. Os valores possíveis

são:

Neptune

Classic

Gray

Accessibility

varchar(20)

Page 130: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

130

ENTIDADE USUARIO

Esta entidade é responsável por armazenar os usuários com

acesso ao sistema.

Atributo Definição do atributo Tipo Dado

id Identificador único para usuário. int

nome Nome do usuário. varchar(45)

email E-mail do usuário varchar(45)

usuario Identificador do usuário. varchar(45)

senha Senha do usuário. varchar(45)

ativo Define se o usuário está ativo. Os valores

possíveis são:

S – Ativo

N – Não Ativo

char(1)

Page 131: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

131

ENTIDADE MODELO_ARDUINO

Esta entidade é responsável por armazenar os modelos de

Arduino disponíveis na ferramenta InoSensor. Um modelo pode estar

relacionado a um Arduino e às portas que compõem o Arduino.

Atributo Definição do atributo Tipo Dado

id Identificador único para modelo de

Arduino. int

modelo Nome do modelo do Arduino. varchar(50)

ativo Define se o modelo está ativo. Os

valores possíveis são:

S – Ativo

N – Não Ativo

char(1)

ENTIDADE FIRMWARE

Esta entidade é responsável por armazenar as versões de

firmware de um Arduino. Um firmware é relacionado a um modelo de

Arduino.

Atributo Definição do atributo Tipo Dado

id Identificador único do firmware. int

versao Descrição da versão do firmware. varchar(5)

fonte Armazena o código fonte do

firmware. text

modelo_arduino_id Identificador de um modelo de

Arduino. int

data Data de criação do firmware. datetime

Page 132: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

132

ENTIDADE TIPO_PORTA

Esta entidade é responsável por armazenar os tipos de portas

existentes no Arduino. Um tipo de porta é relacionado às portas de cada

modelo de Arduino e às portas utilizadas por cada tipo de sensor.

Atributo Definição do atributo Tipo Dado

id Identificador único para tipo de porta de

Arduino. int

nome Nome do tipo de porta do Arduino. varchar(50)

porta_pwm Define se a porta possui a função PWM.

Os valores possíveis são:

S – Possui PWM

N – Não possui PWM

char(1)

tipo Define se a porta é digital ou analógica.

Os valores possíveis são:

A – Analógica

D – Digital

char(1)

Page 133: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

133

ENTIDADE TIPO_ACAO

Esta entidade é responsável por armazenar os tipos ações para

serem executadas pelo Arduino. Um tipo de ação é relacionado à ação

de um sensor de um Arduino.

Atributo Definição do atributo Tipo Dado

id Identificador único do tipo de ação Int

nome Nome do tipo de ação. varchar(45)

descricao Descrição detalhada da ação. Text

classe Nome da classe JavaScript para

carregamento dinâmico durante a

inclusão de uma ação.

varchar(100)

ENTIDADE PORTA_ARDUINO

Esta entidade é responsável por definir as portas existentes em

cada Arduino de acordo com o modelo. Uma porta do Arduino pode ser

relacionada a um sensor conectado em um Arduino.

Atributo Definição do atributo Tipo Dado

id Identificador único de uma porta de

Arduino. int

modelo_arduino_id Identificador de um modelo de

Arduino. int

id_porta Identificador da porta do Arduino. varchar(5)

num_porta Número real da porta do

microcontrolador. int

tipo_porta_id Identificador do tipo de porta. int

Page 134: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

134

ENTIDADE SENSOR

Esta entidade é responsável por definir os tipos de sensores e

atuadores existentes e suportados pela ferramenta InoSensor. Um tipo de

sensor é relacionado a um sensor conectado em um Arduino e às portas

utilizadas por cada tipo de sensor.

Atributo Definição do atributo Tipo Dado

id Identificador único de um tipo de

sensor/atuador. Int

nome Nome do tipo de sensor. varchar(45)

descricao Descrição detalhada do tipo de sensor. varchar(5)

imagem Endereço da imagem do tipo de sensor. varchar(45)

tipo_sensor Identificador do tipo de sensor. Os

valores possíveis são:

E – Entrada (Sensor)

S – Saída (Atuador)

char(1)

classe Nome da classe JavaScript para

carregamento dinâmico da condição de

acordo com o tipo de sensor durante a

inclusão de um sensor.

varchar(50)

caracteristicas Características das portas utilizadas por

cada tipo de sensor. Text

codigo Identificador para o tipo de sensor,

utilizado internamento no firmware do

Arduino e no arquivo de configuração.

Os valores possíveis são:

rele - Rele

temp – Sensor Temperatura

varchar(10)

Page 135: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

135

foto - Fotoresistor

fogo – Sensor Fogo

vibr – Sensor Vibração

magn – Sensor Magnético

rgb – LED RGB

buzz - Buzzer

gend – Sensor Genérico Porta Digital

pres – Sensor de Presença

ENTIDADE PORTA_SENSOR

Esta entidade é responsável por definir os tipos de portas e as

respectivas quantidades utilizadas por cada tipo de sensor. Um sensor

pode ter uma ou várias portas.

Atributo Definição do atributo Tipo

Dado

sensor_id Identificador para tipo de sensor. int

tipo_porta_id Identificador do tipo de porta. int

qt_porta_id Quantidade de portas utilizadas. int

Page 136: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

136

ENTIDADE ARDUINO

Esta entidade é responsável por armazenar os Arduinos que

serão controlados pela ferramenta InoSensor. Um Arduino deve ser

relacionado a um modelo de Arduino e pode ter vários sensores.

Atributo Definição do atributo Tipo Dado

id Identificador único para o

Arduino. Int

modelo_arduino_id Identificador de um modelo de

Arduino. Int

descricao Descrição do Arduino. varchar(100)

usuario Usuário gravado no firmware,

utilizado para autenticação

durante a gravação e leitura de

novas configurações.

varchar(50)

Senha Senha gravado no firmware para

autenticação. varchar(50)

ip IP do Arduino na rede. varchar(50)

mascara_rede Máscara de rede do Arduino. varchar(50)

mac_address MAC Address do Arduino. varchar(50)

ativo Identificador de status do

Arduino no sistema. Os valores

possíveis são:

S – Sim

N – Não

char(1)

sincronizado Informar se as últimas

configurações foram enviadas char(1)

Page 137: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

137

para o dispositivo. Os valores

possíveis são:

S – Sim

N – Não

gateway Gateway da rede do Arduino. varchar(50)

porta_gateway Porta do Gateway da rede do

Arduino. int

ENTIDADE SENSOR_ARDUINO

Esta entidade é responsável por definir os sensores conectados

ao Arduino.

Atributo Definição do atributo Tipo Dado

id Identificador único do sensor do

Arduino.

int

sensor_id Identificador para tipo de sensor. int

arduino_id Identificador do Arduino. int

descricao Descrição do sensor. varchar(100)

estado_inicial Estado inicial do Sensor para

informar se está ligado ou desligado.

Os valores possíveis são:

S – Sim

N – Não

char(1)

Page 138: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

138

ENTIDADE SENSOR_ARDUINO_PORTA

Esta entidade é responsável por definir as portas utilizadas por

cada sensor conectado a um Arduino. Um sensor de um Arduino deve

estar conectado a uma ou mais portas.

Atributo Definição do atributo Tipo

Dado

porta_arduino_id Identificador de uma porta de um tipo

de Arduino.

int

sensor_id Identificador de um sensor de um

Arduino. int

ordem Ordem de conexão da porta. int

Page 139: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

139

ENTIDADE ACAO_SENSOR_ARDUINO

Esta entidade é responsável por definir as ações para cada

sensor de um Arduino. Uma ação é relacionada a um tipo de ação e a

um sensor de um Arduino.

Atributo Definição do atributo Tipo Dado

id Identificador único de uma ação

de um sensor.

int

sensor_arduino_id Identificador de um sensor de um

Arduino. int

tipo_acao_id Identificador do tipo de ação. int

descricao Descrição da ação. varchar(50)

acao[1-5] Campo flex para armazenar

detalhes da acao executada. varchar(45)

condicao[1-9] Campo flex para armazenar

detalhes da condição da ação. varchar(45)

notificar_servidor Identificador para informar se o

servidor será notificado da

ocorrência do evento. Os valores

possíveis são:

S – Sim

N – Não

Page 140: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

140

ENTIDADE NOTIFICACAO

Esta entidade é responsável por armazenar as notificações

enviadas pelos sensores de um Arduino. Uma notificação é relacionada

a um sensor de um Arduino.

Atributo Definição do atributo Tipo Dado

id Identificador único da

notificação.

int

acao_sensor_arduino_id Identificador da ação

relacionada a notificação int

dt_notificacao Data e hora em que o servidor

foi notificado. timestamp

mensagem Mensagem da notificação. text

verificada Identificador se a notificação

já foi exibida no painel. Os

valores possíveis são:

S – Sim

N – Não

char(1)

Page 141: Inosensor Ferramenta para Gerenciamento de Sensores para Arduino

141

ENTIDADE EMAIL

Esta entidade é responsável por armazenar as solicitações de

envio de e-mail enviadas pelo Arduino, na ocorrência de um evento. Um

e-mail é associado a uma ação de um Arduino.

Atributo Definição do atributo Tipo Dado

id Identificador único de

envio de e-mail.

int

acao_sensor_arduino_id Identificador da ação

relacionada a notificação int

dt_notificacao Data e hora em que o

servidor foi notificado. timestamp

destinatario E-mail do destinatário da

mensagem varchar(45)

assunto Assunto da mensagem de e-

mail Varchar(200)

mensagem Mensagem do corpo do e-

mail. text