CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA
ETEC JORGE STREET
TELECOMUNICAÇÕES
IWAN POCZEKWA MACIEL PEREIRA PAREDES
LUIZ OTAVIO BARBOSA DE FREITAS
RAFAEL XAVIER RAMON
WELLINGTON ROMÃO
PROJETO DE AUTOMATIZAÇÃO RESIDENCIAL CONTROLADA
POR DISPOSITIVO COM ANDROID
SÃO CAETANO DO SUL – SP
2015
CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA
ETEC JORGE STREET
TELECOMUNICAÇÕES
IWAN POCZEKWA MACIEL PEREIRA PAREDES
LUIZ OTAVIO BARBOSA DE FREITAS
RAFAEL XAVIER RAMON
WELLINGTON ROMÃO
PROJETO DE AUTOMATIZAÇÃO RESIDENCIAL CONTROLADA
POR DISPOSITIVO COM ANDROID
Trabalho de conclusão de curso apresentado
como pré-requisito para obtenção do Diploma de
Técnico em Telecomunicações.
Orientador:
Prof. Luiz Carlos da Cunha e Silva
SÃO CAETANO DO SUL – SP
2015
DEDICATÓRIA
Aos familiares, pais, esposas, noivas e filhos pelo apoio e dedicação nos
momentos desacreditados, paciência e compreensão nas ausências nos finais de
semana de lazer, e o mais motivador, o amor destes, que nos fortalece dia após dia.
Por último, porém não menos importante, aos amigos e professores pelos
ensinamentos, troca de experiências e companheirismo.
AGRADECIMENTOS
Acima de tudo à Deus, por guiar os passos, pois sem ele nada é possível.
Aos pais por todo incentivo, aos amigos de classe pelo apoio múltiplo nos
momentos de estudo, pela troca de experiências e boa vontade em ajudar.
A todo o corpo docente da ETEC Jorge Street, pelos ensinamentos que
contribuíram para formação profissional, pessoal e a conclusão deste projeto.
RESUMO
O projeto em questão visa o Controle e Monitoração Residencial via dispositivo
móvel com acesso a Internet e Sistema Operacional Android em conjunto com o
Módulo de Automatização Residencial, baseado no kit de prototipagem Arduino Uno.
Para ilustrar esse sistema, foi desenvolvido um protótipo que simula a automação
dos ambientes de uma residência que conta com uma fechadura eletrônica, um
sensor de porta aberta, temperatura, umidade, presença e lâmpadas LED (Light
Emitting Diode), controladas e dimerizadas. Todos esses equipamentos, conhecidos
como drivers, são conectados ao Módulo de Automatização Residencial,
responsável por transmitir informações captadas pelos sensores e receber
comandos provenientes do dispositivo móvel. O módulo Ethernet Shield, é
conectado ao Módulo de Automatização Residencial, utilizado para conexão com a
internet via roteador WI-FI, em uma rede local (LAN). A tecnologia Android utilizada
em um dispositivo móvel, seja um tablet ou smartphone, tem como finalidade a
interface entre o usuário e a residência controlada. Como diferencial, este projeto
apresenta a possibilidade de controlar e monitorar diversos parâmetros e
equipamentos de uma residência, e visa promover maior acessibilidade à
automatização residencial.
Palavras-chave: Automatização Residencial, Segurança Residencial, Conforto.
ABSTRACT
The objective of this project is to monitor and control residential automation devices through an
Android mobile device with internet access using the Residential Automation Module, which is
developed on the Arduino Uno prototyping kit. To exemplify this system was developed a prototype
that simulates a residence, with an electronic locker, open door sensor, temperature monitor, humidity
monitor, presence sensor and controlled and dimmed LED (Light Emitting Diode) lamps. All these
devices, also known as drivers, are connected with the Residential Automation Module which is
responsible to transmit all information captured by the sensors and receive and process commands
send from the mobile device. Ethernet Shield, which is a module connected to the Residential
Automation Module, is used to connect through internet Wi-Fi router in a local area network (LAN).
The Android technology used on a mobile device, which can be a tablet or smartphone, is used as an
interface between the user and the controlled residence. As a differential, this project can control and
monitor various parameters and equipment of a residence, and provide greater accessibility to the
home automation system.
Keywords: Safety. Comfort. Residential Automation.
OBJETIVO
Demonstrar que as plataformas utilizadas em código aberto (Android e
Arduino), permitem a monitoração de inúmeros equipamentos e eletrodomésticos,
por meio da tecnologia sem fio. Desta forma, contribuir com a popularização da
automatização residencial.
LISTA DE ABREVIATURAS E SIGLAS
ADK – Android Development Kit.
ADT - Android Development Tools.
ANSI - American National Standard Institute.
AP - Access Point.
CDMA - Code Division Multiple Access.
DNS - Domain Name System.
DVM - Dalvik Virtual Machine.
ICSP - In Circuit Serial Programming.
IDE – Integrated Development Environment.
IEEE - Institute of Electrical and Eletronics Engineers.
IP - Internet Protocol.
JPEG - Joint Pictures Expert Group.
JVM - Java Virtual Machine.
LAN – Local Area Network.
LDR - Light Dependent Resistor.
LED – Light Emitting Diode.
MIMO - Multiple Input-Multiple Output.
OHA - Open Handset Alliance.
OSI - Open Systems Interconnection.
PCI - Placa de Circuito Impresso.
PLC - Power Line Carrier.
PWM - Pulse Width Modulation.
SDK - Software Development Kit.
SMTP - Simple Mail Transfer Protocol.
SPI - Serial Peripheral Interface.
TCP - Transmission Control Protocol.
UDP - User Datagram Protocol.
WI-FI - Wireless Fidelity.
XML - eXtensible Markup Language.
SUMÁRIO
1.
INTRODUÇÃO .............................................................................................................................. 9
2.
INTERFACE ANDROID ............................................................................................................ 10
2.1.
Introdução .......................................................................................................................... 10
2.2.
Sistemas Operacionais ................................................................................................... 10
2.3.
Aplicação para Android OS ......................................................................................... 111
2.4.
Interface ............................................................................................................................ 133
2.5.
Java .................................................................................................................................... 155
2.5.1.
2.6.
Máquina Virtual Dalvik ................................................................................................ 1717
2.7.
Eclipse ................................................................................................................................. 17
2.8.
Estrutura do Programa ................................................................................................... 19
2.8.1.
3.
5.
Modelo OSI (Open Systems Interconnection) .......................................................... 26
REDES SEM FIO........................................................................................................................ 30
4.1.
Wireless .............................................................................................................................. 30
4.2.
Wi-Fi ..................................................................................................................................... 32
HARDWARE ............................................................................................................................... 34
5.1.
Arduino Uno....................................................................................................................... 34
5.1.1.
5.2.
Descrição .................................................................................................................... 35
Módulo de Automatização Residencial ...................................................................... 35
5.2.1.
Descrição .................................................................................................................... 36
5.2.2.
Estrutura do Programa ........................................................................................... 38
5.3.
Ethernet Shield.................................................................................................................. 39
5.3.1.
6.
Fluxo do Programa .................................................................................................. 19
PROTOCOLOS DE COMUNICAÇÃO (TCP/IP) ................................................................... 25
3.1.
4.
Detalhamento da Tecnologia Java..................................................................... 155
Descrição .................................................................................................................... 39
5.4.
Sensor de Presença......................................................................................................... 40
5.5.
Sensor de Temperatura e Umidade ............................................................................. 40
5.6.
Sensor de Luminosidade ............................................................................................... 40
5.7.
Sensor de Porta Aberta .................................................................................................. 41
5.8.
Fechadura Eletrônica ...................................................................................................... 41
5.9.
Protótipo ............................................................................................................................. 41
SOFTWARE ................................................................................................................................ 43
6.1.
Linguagem de Programação ......................................................................................... 43
6.2.
Interpretador ...................................................................................................................... 44
6.3.
Compilador......................................................................................................................... 44
6.4.
Linguagem C ..................................................................................................................... 44
6.4.1.
História ........................................................................................................................ 44
6.4.2.
Visão Geral ................................................................................................................. 45
6.4.3.
Estrutura de Programação ..................................................................................... 46
6.4.4.
Diretivas de Compilação ........................................................................................ 47
6.4.5.
Variáveis e Constantes ........................................................................................... 47
6.4.6.
Tipos de Variáveis .................................................................................................... 48
6.4.7.
Operadores ................................................................................................................ 48
6.4.8.
Instruções................................................................................................................... 49
6.4.9.
Funções ...................................................................................................................... 51
6.4.10.
7.
Comentários .......................................................................................................... 52
CONCLUSÃO ............................................................................................................................. 53
REFERÊNCIAS .................................................................................................................................. 54
9
1. INTRODUÇÃO
Automação Residencial surgiu no final da década de 70 nos Estados Unidos,
com funções atualmente simples, como a programação via PLC (Power Line Carrier)
para o acionamento de uma lâmpada ou algum eletrodoméstico.
“Na década de 80 quando companhias com a Leviton e X-10 Corp
começaram a desenvolver sistemas de automação predial, alcançando 4 milhões de
edifícios e casas já no ano de 1996” (Bolzani, 2004, p.59).
Com a chegada da internet esse mercado tomou um novo rumo, que além de
abrir novas possibilidades para o controle e monitoramento remoto, despertou o
interesse e a popularização dessa tecnologia, antes vista como luxo, que passou a
ser instrumento de conforto e segurança.
Sobretudo esse mercado está em pleno crescimento. Prova disso é que
metade dos prédios hoje em construção em São Paulo conta com algum tipo
automação residencial, e construtoras conceituadas possuem dos seus dez
lançamentos imobiliários em 2010, nove com automação residencial.
As tarefas e compromissos domésticos e cotidianos são inúmeros, o que
torna muito útil o uso de tecnologias que proporcionam maior conforto e segurança a
vida do usuário, além de poupar tempo e dinheiro.
Com a automatização residencial, tecnologia que possibilita ao usuário ter
total controle de sua casa, à distância, via dispositivo móvel ou computador com
acesso à internet, é possível ter soluções diversificadas em controle e monitoração
de residência ou estabelecimento comercial tais como; Temperatura e Umidade,
Acesso e Segurança, Aparelhos Domésticos, Abertura ou Fechamento de janelas e
persianas, Iluminação, Áudio e Vídeo.
A automação residencial é cada vez mais procurada pelas pessoas. Nos últimos
4 anos, o serviço cresceu 300%, segundo a Aureside, a associação brasileira do setor.
10
2. INTERFACE ANDROID
2.1. Introdução
No programa desenvolvido o objetivo da interface é interagir com o usuário de
uma forma simples, que através de seus métodos e características, envie comandos
e receba respostas em um dos módulos do sistema, e sempre apresentar ao
operador a forma mais simples e natural de se executar uma ação do sistema.
A interface do usuário desenvolvida utiliza o sistema operacional Android,
justificado por ser durante o período em que o projeto foi desenvolvido, o sistema
open source mais utilizado no mundo, segundo a TELECO.
2.2. Sistemas Operacionais
O mundo da telefonia móvel nunca esteve tão aquecido quanto às demandas
do mercado consumidor. De acordo com a consultoria TELECO, as fabricantes de
smartphone (telefone celular com funcionalidades avançadas) estão em pleno
crescimento. Com foco neste mercado em constante crescimento, diversas
empresas, entre elas a Google, juntaram-se para formar, em novembro de 2007, a
OHA (Open Handset Alliance) e lançar a plataforma Android.
“Every day more than 1 million new Android devices are activated worldwide”
(Developer.Android 2012)
Como o Android detém 81,5% de participação do mercado, pode-se atingir a
grande maioria dos usuários de dispositivos moveis.
Por ser um Sistema Operacional de Código Aberto, a quantidade de
documentação é de maior abrangência do que o seu maior concorrente (iOS da
Apple), além de custo zero para desenvolver aplicativos e o licenciamento para
publicação com menor custo.
11
Há diversas versões do sistema Android, que sempre acompanham a
evolução de hardware dos dispositivos contemporâneos ao seu lançamento, que
oferecem mais recursos de processamento, economia de energia e telas maiores.
2.3. Aplicação para Android OS
Aplicações para Android são desenvolvidas em Java. O código, depois de
compilado, é empacotado juntamente com outros recursos utilizados pela aplicação,
em um pacote com o sufixo .apk que executa através da Máquina Virtual Dalvik,
chamada aqui de DVM (Dalvik Virtual Machine). Este pacote é o meio de distribuição
para que os usuários instalem as aplicações em seus dispositivos.
Cada aplicação é executada seu próprio processo e cada processo tem a sua
DVM. Para cada aplicação é designado uma identificação de usuário no Kernel
Linux único e as permissões de acessibilidade de recursos são dadas de forma que
os arquivos fiquem visíveis apenas para a aplicação dona.
Uma aplicação pode ter vários pontos de entrada. Elas são criadas com a
utilização de componentes que são instanciados somente no momento em que são
necessários. São quatro tipos de componentes: atividades, serviços, provedores de
conteúdo e receptores de Difundidores.
Atividade usualmente corresponde à geração de uma interação através da
tela para o usuário. Serviços não geram uma interface visual, nem as possuem e
são utilizados para executar atividades em segundo plano. Os provedores de
conteúdo têm o objetivo de disponibilizar dados de uma aplicação para outras
aplicações. Já os receptores de Difundidores são componentes ociosos e
respondem somente a eventos.
Com exceção dos provedores de conteúdo, todos os componentes são
inicializados através de mensagens assíncronas. Intent é o objeto que possui a
mensagem com a ação a ser executada. Para iniciar uma atividade deve-se enviar
um Intent com a especificação desta intenção.
Há os tipos de Intents explícitos e Intents implícitos. Os Intents implícitos, o
componente que deve ser executado está definido explicitamente. Nos Intents
12
implícitos, a escolha do componente é realizada pelo sistema operacional que se
baseia em critérios pré-definidos, que determinam o componente que retorna a
melhor intenção neste determinado momento.
O pacote .apk possui um arquivo de manifestação onde estão especificados
os componentes desta aplicação. Possui estrutura XML, utilizado para declaração
das bibliotecas aplicadas, permissões, versão do programa e requisições para ser
executado.
Ao primeiro componente da aplicação que deva ser inicializado, um processo
com uma única linha é executado. Por padrão, todos os componentes da aplicação
são executados nesta linha. Existe no Android um mecanismo que permite chamar
procedimentos remotos executados em outros processos ou aplicações.
Caso a memória estiver ocupada, o Android pode destruir um processo. Por
consequência, os demais componentes da aplicação que estão em execução
também são destruídos. Para tomar esta decisão, releva-se a importância dos
processos para o usuário, já que o sistema destruirá primeiro os processos que
possuem atividades que já não são utilizados pelo usuário.
Os componentes da aplicação têm ciclos de vida determinados, que iniciam
quando são instanciados e finalizam ao serem destruídos. Quando executados, seus
estados podem ser alterados indefinidamente.
Atividades possuem os estados ativos, em pausa e paralisados. As transições
destes estados são informadas através de chamadas de métodos específicos,
observado na figura 1. Métodos são utilizados principalmente para realizar ações
apropriadas para determinada alteração de estado.
13
Figura 1 - Ciclo de Vida de uma Atividade.
Fonte: Autoria Própria.
O tempo entre o acionamentos dos métodos onStart() e onStop(), a atividade
poderá ser observada pelo usuário. Entre os métodos onResume() e onPause() a
atividade priorizada em relação de todas as demais atividades e o usuário está em
interação com ela. Pelo fato de o onPause() ser o método especifico que cuja
chamada é garantida antes do processo ser eventualmente destruído, ele deve ser
utilizado para armazenar informações para posterior restauração.
Devido atividades e serviços também possuírem estados e métodos de ciclo
de vida que podem ser implementados com o objetivo de responder a mudanças de
estado. Os receptores de Difundidores possuem apenas o método de ciclo de vida é
chamado no instante em que a mensagem chega ao método e o componente é
considerado ativado somente enquanto estiver em execução do método, ou de outra
maneira, durante a reação da mensagem.
2.4. Interface
No sistema operacional Android a interface com o usuário está construída na
forma de hierarquia de objetos View e ViewGroup. Com esta hierarquia, que é
representada em forma de árvore, os pontos extremos são do tipo View e a
ramificação é do tipo ViewGroup, como na Figura 2 apresentada abaixo. Uma
instância View é responsável por controlar uma área específica da tela, que serve de
base para implementar objetos como texto ou botões, conhecidos como widgets.
ViewGroup é uma classe base para layouts, sua meta é organizar os objetos na tela.
14
Figura 2.
ViewGroupe
View
ViewGroup
View
View
View
View
Fonte: Autoria Própria.
A organização dos objetos pode ser de forma automática, em uma região
específica da tela de forma linear, de forma relativa ou de forma absoluta. Para cada
tipo, deve-se utilizar um layout próprio. Como exemplo, os objetos filhos do
ViewGroupLinearLayout são distribuídos na tela linearmente e os filhos do
ViewGroupAbsoluteLayout, de forma absoluta.
É possível especificar as coordenadas ou tamanho do componente a ser
implementado na tela, mas deve-se evitar esta ferramenta. A organização em
layouts ajustáveis possui uma característica que lhe dá vantagem, pois possibilita
uma adaptação de forma mais adequada da interface da aplicação às diferentes
resoluções de tamanhos distintos de telas dos dispositivos nos quais pode ser
executada.
O ADK disponibiliza diversos Widgets e layouts que permitem criar uma
interface rica com seu utilizador. De qualquer forma, caso haja necessidade, podese criar e adicionar componentes próprios. Se o objetivo é customizar objetos de
forma harmoniosa, pode-se aplicar estilos e temas.
15
2.5. Java
A definição utilizada no próprio site Java não é de uma linguagem de
programação, mais sim um conjunto de ferramentas que juntas formam uma
tecnologia que atualmente atraiu mais de 9 milhões de desenvolvedores de software
Utilizados em diversos seguimentos.
Dentre os dados sobre a tecnologia pode-se destacar que mais de 1,1 bilhão
de Desktops, 3 bilhões de celulares (smartphones ou não) e 100% dos reprodutores
Bluray utilizam a tecnologia Java. Esta se faz presente desde uma casa lotérica,
consultório médico ou até em um estacionamento pode haver algum dispositivo que
possua esta tecnologia embarcada.
2.5.1. Detalhamento da Tecnologia Java
Para entender melhor a definição do termo “Tecnologia Java” deve-se
subdividirem:
Linguagem de programação;
o Baseia-se na linguagem propriamente dita, geralmente escrita em
textos e salva com a extensão de arquivo *.Java, compilada para ser
executada na JVM, detalhada abaixo.
o Java Script que muitas vezes não é definida como linguagem de
programação, pois não é compilada para ser executada pela máquina,
porém suas características de lógica e parâmetros assemelham-se
com a linguagem.
Plataforma embarcada;
o Maquina Virtual Java - JVM Java Virtual Machine.
o Interface de programação e Java API Java Application Programming
Interface.
16
A Figura 3 demonstra as subdivisões da Tecnologia Java atuando em conjunto.
Figura 3 - Execução de um Programa Exemplo.
Fonte: ORACLE. Aboutthe Java Technology.Disponível em:
<http://docs.oracle.com/Javase/tutorial/getStarted/intro/definition.html>. (com adaptações). Acesso
em: 07 mar. 2015.
Detalhamento do processo:
1. O
programa
escrito
em
texto
comum,
como
por
exemplo,
“MeuPrograma.Java” deve ser interpretado.
2. O Compilador interpreta o texto como uma sequência de instruções e o
transforma em um arquivo que pode ser interpretado pela JMV.
3. O programa compilado, também conhecido como arquivo binário, pois
está na mesma linguagem da máquina. Como demonstrado no campo 1,
agora o arquivo tem a extensão .class.
4. Com o Arquivo binário, a Máquina Virtual pode interpretar os comandos,
realizar a interface entre o usuário, executar as funções descritas no
programa e acessar o hardware do dispositivo.
5. A Máquina Virtual Java nada mais é do que um programa que simula uma
máquina padrão Java porem é capaz de integra-se junto a diferentes tipos
de hardware.
6. O equipamento então executa o programa inerente ao usuário, que utiliza
o programa como se fosse nativo ao produto.
Fica evidente que um programa Java pode ser executado nos mais diversos
dispositivos, independente do sistema operacional que o executa, desde que seja
capaz de executar o programa da Máquina Virtual (JVM). Esta característica é
apresenta como ponto positivo a diversidade de equipamentos que podem ser
programados. Porém, na pratica, deve-se sempre observar qual dispositivo será o
17
destinatário do programa, devido a diferentes características de hardware como, por
exemplo, o tamanho da tela de um smartphone.
2.6. Máquina Virtual Dalvik
A interface do usuário será programada em Java em um dispositivo de
sistema operacional Android. Este possui uma característica que o diferencia dos
demais dispositivos que utilizam o Java: Ele não possui Máquina Virtual Java (JVM).
Pode parecer contraditório em um primeiro momento, que sem a máquina
virtual o programa compilado não pode ser compreendido diretamente pelo sistema
operacional do dispositivo, mas o ponto é que o Android possui sua própria máquina
virtual, A Máquina Virtual Dalvik.
Esta máquina virtual tem certa semelhança com a JVM, se diferencia nos
seguintes pontos:
Consolidação dos pools de constantes dos arquivos *.Class, reduz o
tamanho do programa.
Desempenho melhorado, tanto em consumo de energia, quanto em
velocidade de processamento devido à redução do programa.
Segurança contra softwares mal-intencionados, pois ao padronizar as
classes, acessos suspeitos podem ser analisados e interrompidos pela
Máquina Dalvik.
2.7. Eclipse
Para desenvolver a interface do usuário, foi selecionado o IDE Eclipse (última
versão disponível no início do projeto), por ser um ambiente de desenvolvimento
gratuito muito difundido na atualidade deste projeto, além de que é o recomendado
pelas referências oficiais também por assimilar ao plugin oficial para o kit de
desenvolvimento de software, o ADT (Android Development Tools) em sua última
versão. Foi cogitada a utilização da IDE Netbeans como alternativa ao Eclipse,
porém como a grande parte de documentação está baseada em Eclipse que
18
também pode invocar métodos instantaneamente ao desenvolver códigos além de
que o ADT ser projetado para integração com Eclipse. Por este motivo o uso do
Netbeans foi descartado.
O plugin torna mais fácil criar arquivos XML, editar layouts, gerenciar o uso de
recursos
com
integração
sinergética
com
o
emulador.
Apesar
da
não
obrigatoriedade do uso do ADT, este proporciona produtividade no desenvolvimento
do programa.
O SDK do Android é fundamental no desenvolvimento de aplicativos, pois
contém toda estrutura de arquivos e bibliotecas, além de ferramentas para compilar
o código. Neste trabalho foram utilizados os pacotes da versão (5.0). Estão
presentes ferramentas de apoio, como o emulador, capaz de simular um dispositivo
Android.
O SDK é de fácil familiarização, tanto com ambiente quanto com as
ferramentas importantes, assim como ocorreu com documentações pesquisadas e
com o plugin.
A integração do ADK é simples, basta executar o comando HelpInstall New
Software e selecionar o pacote baixado do ADK do site.
19
2.8. Estrutura do Programa
O programa é somente um bloco do sistema completo que tem seu diagrama
ilustrado na figura abaixo:
Figura 4 - Visão Geral do Sistema
Fonte: Autoria Própria
O usuário seleciona uma das funções através do dispositivo móvel que por
sua vez conecta-se ao circuito controlador formado pelo Módulo de Automação
Residencial e a Ethernet Shield que processa as informações enviadas pelo usuário
e comanda o circuito driver que faz o acionamento do objetivo inicial, como ascender
uma lâmpada ou abrir uma porta.
Para que o sistema seja harmonioso quanto a sua utilização e para que se
obedeça A uma lógica intuitiva, foi projetado o fluxo de atuação da interface de
usuário, onde todo a programação da interface do usuário e do circuito atuador foi
baseada.
2.8.1. Fluxo do Programa
O fluxo foi pensado de forma que o usuário possa ativar o programa a
qualquer momento e o circuito atuador mantenha os seus estados até que receba
um comando do dispositivo móvel, caracterizada como configuração MestreEscravo. A figura a seguir ilustra a parte de interface do usuário:
20
Figura 1 - Fluxo de Funcionamento do Aplicativo.
Fonte: Autoria Própria.
Figura 6 - Tela do Programa Instalado no Dispositivo Android.
Fonte: Autoria Própria.
21
Ao abrir o programa é criada uma atividade que apresenta o menu em forma
de aba, nesta o usuário pode optar por navegar por funções ou pelos cômodos da
residência.
Assim que o usuário seleciona uma função, como acender uma lâmpada, por
exemplo, é enviada através da rede (interna ou externa) para o atuador (Módulo
Automatização Residencial + Ethernet Shield) que por sua vez envia uma
mensagem de resposta para informar que a função foi recebida e executada, além
da possibilidade de armazenar as informações em seus registradores internos.
A estrutura de dados é dada pelas três abas principais:
1. Ambiente - Aba que separa as funcionalidades pelos cômodos da residência,
para que se o usuário quiser controlar todas as funcionalidades do ambiente
ao qual ele está localizado no momento. Possui as seguintes subdivisões.
a. Sala - Comanda todas as funções do cômodo sala;
i. Luzes;
ii. Temperatura;
iii. Porta.
b. Quarto - Comanda todas as funções do cômodo;
i. Luzes;
ii. Temperatura;
iii. Porta.
c. Cozinha - Comanda todas as funções do cômodo;
i. Luzes;
ii. Temperatura;
iii. Porta.
d. Piscina - Comanda todas as funções do cômodo;
i. Filtrar;
ii. Encher;
iii. Esvaziar.
e. Sair- encerra o programa;
22
Figura 7 - Tela do Programa na Aba Ambiente
Fonte: Autoria Própria.
2. Funções - Aba que segrega as principais funções como Luzes, temperatura,
portas, segurança. O objetivo é proporcionar a comodidade e facilidade ao
usuário para que, como exemplo, controle todas as luzes, independente do
cômodo.
a. Luzes - comanda todas as luzes, independente do cômodo;
i. Luzes da sala;
ii. Luzes do quarto;
iii. Luzes da cozinha;
iv. Luzes externas.
b. Temperatura- informa a temperatura de todos os cômodos da
residência;
i. Temperatura da sala;
ii. Temperatura do quarto;
iii. Temperatura da cozinha;
iv. Temperatura externa;
v. Temperatura da agua da piscina.
c. Acesso - Controla todos os acessos da casa;
i. Porta da sala
ii. Porta de acesso ao quintal;
iii. Portão da garagem.
23
d. Segurança - Monitora os acessos através de câmeras de vídeo.
e. Equipamentos - Para equipamentos que podem ser acionados por uma
tomada especifica ligada ao dispositivo acionador.
f. Som & TV - São dispositivos de áudio e vídeo que podem ser ligados
através de uma saída especifica do dispositivo acionador;
g. Sair - Encerra o programa.
Figura 8 - Tela do programa na Aba Funções.
Fonte: Autoria Própria.
3. Configurações - Aba destinada a configurar o programa para ajustar o
dispositivo controlador.
a. Conexão- configura o tipo de conexão da rede para acessar o
dispositivo acionador:
i. Número do IP do acionador.
ii. Portas.
b. Adicionar Função;
i. Adiciona uma função de atalho
c. Adicionar Domotic.
i. Adiciona mais um dispositivo acionador.
d. Sobre
-
Informações
desenvolvedores.
e. Sair-termina o programa.
sobre
o
programa
como
versão
e
24
Figura 9 - Tela da aba Configurações.
Fonte: Autoria Própria.
Descrição do programa:
Quarto
Cozinha
Piscina
Sair
Luzes
Temperatura
Acesso
Equipamentos
Som & Tv
Segurança
Aba Configurações
Sala
Aba Funções
Aba Ambiente
Figura 10 - Descrição da Interface do Programa.
Perfil
Conexão
Sobre
Sair
Sair
Fonte: Autoria Própria.
De uma forma sucinta, a hierarquia do programa obedece a ordem de
que as abas são elementos principais de navegação do aplicativo, e as funções são
25
segregadas conforme as abas de Funções e Ambientes. A Aba configuração é o
elemento utilizado principalmente na primeira utilização do programa.
O envio e recebimento de mensagens são feitos sobre a camada OSI, onde o
estudo apresentado sobre ethernet e redes foi de fundamental importância para o
desenvolvimento.
Figura 11 - Hierarquia das Funcionalidades do Programa.
Abas
Funçoes
Envia comando
Configurações
Lê funções
Ajustes para conexão
Fonte: Autoria Própria.
3. PROTOCOLOS DE COMUNICAÇÃO (TCP/IP)
Os Protocolos TCP (Transmission Control Protocol) e IP (Internet Protocol)
são usados na comunicação de dados entre dois microcomputadores ou entre um
microcomputador e um servidor numa rede, são ferramentas fundamentais para a
internet. Eles funcionam como um interprete de informações entre duas máquinas,
onde coletam informações desejadas, depois elas são empacotadas para o formato
de rede que o requisitante utiliza em sua rede.
Na verdade, TCP/IP não é apenas um protocolo, e sim um conjunto de
protocolos, que trabalham em parceria para enviar e receber dados de uma rede ou
um servidor. Quando ocorre uma solicitação na rede, o endereço de IP do
computador é identificado junto ao endereço de IP da rede de onde vai ser retirada a
informação requisitada, depois essas informações são organizadas em pacotes.
Toda essa rotina é coordenada pelo Protocolo IP.
26
Quando esses pacotes IP são enviados, passam por diversos computadores
ou servidores pela rede, o que cria a possibilidade de se perderem no caminho ou
chegarem danificados. Para que essa falha na transmissão de dados não ocorra, o
Protocolo TCP tem a função de:
Verificar se o destinatário está pronto para receber os dados.
Identificar os pacotes recebidos e requisitar um novo, caso algum pacote
chegue com problema.
Comprimir grandes pacotes de dados para que o IP os aceite.
Como já mencionado os Protocolos TCP/IP são um conjunto de Protocolos,
esses protocolos atuam em diferentes camadas do Modelo OSI.
3.1. Modelo OSI (Open Systems Interconnection)
O Modelo de Referência OSI é utilizado no tráfego de rede, se houver alguma
solicitação na rede essa solicitação tem que se transformar naquilo que o usuário
quer para um formato que possa ser entendido pela rede.
Essa transformação é possível através das sete camadas que formam o
Modelo OSI. Na rede, as sete camadas do Modelo OSI, funcionam como blocos na
construção de um pacote de dados. Cada camada aplica uma informação ao pacote
de dados, que são os cabeçalhos, para que a informação seja mais clara para a
camada seguinte a ser percorrida pelos dados. Ao chegarem ao computador de
destino, fazem o caminho de volta para desfazer as alterações feitas pelos
cabeçalhos.
Cada camada do Modelo OSI tem uma função particular explicada a seguir:
A. Camada de Aplicação;
É a sétima camada do Modelo OSI responsável por interagir com o aplicativo
que o usuário utiliza, sincroniza os dados que trafegam entre servidores e usuários,
manipula funções como transferências de arquivos, gerenciamento da rede e
serviços de processos. Alguns exemplos de transformação de dados na camada de
Aplicativo são:
27
Acessar um site www.google.com.br no seu navegador colocará uma
solicitação na camada Aplicativo para conversão do nome por meio do
DNS (Domain Name System), que é a tradução do IP para o nome do
site.
Se um usuário envia um e-mail, a camada de Aplicativo fornece o acesso
ao serviço do Simple Mail Transfer Protocol (SMTP), que é o servidor do
provedor de acesso encarregado de enviar e-mails.
B. Camada de Apresentação:
A sexta Camada é a tradutora do Modelo OSI, tem a função de transformar as
informações enviadas pela Camada de Aplicação em um formato aceitável pelas
outras camadas. É nela que também é feita a compactação, decodificação de dados
e controle de todas as funções de áudio e vídeo. Abaixo alguns exemplos de
serviços que atuam na Camada de Apresentação:
Real Vídeo (Software de execução de áudio e vídeo);
Jpeg (Arquivo de imagem);
MP3 (arquivo de áudio).
C. Camada de Sessão:
Graças a essa Camada, dois diferentes computadores com o mesmo
aplicativo se comunicam através do nome de usuário do computador e credenciais
de rede. A Camada de Sessão gerencia essa conexão virtual e confirma com o outro
computador quais dados foram recebidos. Se o sistema identificar uma falha na
comunicação, a camada de sessão recomeça a transferência a partir do dado
perdido ao invés de recomeçar toda a transferência.
D. Camada de Transporte:
A função desta camada é monitorar e facilitar a transmissão de dados,
através de duas rotinas.
Na primeira, desmonta o pacote de dados transmitidos, que geralmente ocupa
o espaço de 4096 bytes, e monta em pacotes menores de 1500 bytes, esses blocos
de pacotes menores que são montados são chamados de segmentos.
28
Na segunda, o cliente receptor envia uma confirmação de recebimento de um
pacote de dados ao remetente. Na falta desta confirmação, o mesmo pacote será
retransmitido.
É na Camada de Transporte que os protocolos TCP e UDP (User Datagram
Protocol) funcionam. A principal diferença entre eles é que, o TCP, possui uma
entrega de dados mais confiável, enquanto o UDP, não segue a rotina de
confirmação de recebimento de dados, porém sua transmissão é mais rápida.
E. Camada de Rede
Essa camada do Modelo OSI é responsável pelo endereçamento e
roteamento da Rede, é considerada uma das camadas mais importantes na
transmissão de dados. Sua principal função é criar uma rota mais fácil e rápida para
o tráfego de dados, dessa forma desvia de percursos mais congestionados que
atrasariam esse processo.
Essa rota é criada a partir do momento que a Camada de Transporte envia
seus segmentos e logo os converte em pacotes, que são enviados à Camada de
Enlace para receberem um endereçamento e em seguida enviados para Camada de
Rede no intuito de funcionarem como um explorador. Ao chegar a seu destino, as
informações do remetente são divididas em faixas e armazenadas em uma tabela.
Quanto mais informações essa tabela adquire mais completo é o roteamento
da rede.
Todo IP tem um endereço com a forma padrão de, 4 seções de 4 bytes cada
um ou 32 bits. Como por exemplo, o endereço de IP 128.95.95.178. Para uma
melhor organização, os endereços de IP foram divididos em 5 grupos demonstrados
abaixo:
Endereços da Classe A: Utilizam o primeiro byte para informar o endereço
da rede, que podem variar de 1 a 127 e os 3bytes restantes informam o
host, que é o endereço da máquina do usuário na rede. Um exemplo de
endereço dessa classe é 56.0.0.0
29
Endereços da Classe B: Utilizam os 2 primeiros bytes para identificar a
rede e os 2 bytes restantes para identificar o host, variam de 128 a 191.
Um exemplo de endereço dessa classe é 128.0.0.0
Endereços da Classe C: Utilizam os 3 primeiros bytes para o
endereçamento da rede e o último byte para o host, variam de 192 a 223.
Endereços da Classe D: São utilizados apenas para multicasting, que são
pacotes enviados a uma faixa especifica de hosts, variam de 224 a 239.
Endereços da Classe E: Endereços reservados para uma utilização futura
variam de 240 a 255.
Para o Protocolo IP distinguir numa rede o endereço de host do endereço de
rede, utiliza a máscara de sub-rede, que identifica os endereços de rede e preenche
as 4 seções de byte com 1 em binário, e valor máximo de 255 para cada seção
conforme sua classe de rede como mostra tabela abaixo.
Tabela 1 – Classes dos Protocolos IP.
Fonte: PINTO, Pedro. Redes – Classe de Endereços IP, Sabe Quais São?. Disponível em:
<http://pplware.sapo.pt/networking/classes-de-endereos-ip-sabe-quais-so/>. Acesso em: 07 mar.
2015.
Por exemplo, os endereços da Classe A, utilizam o primeiro byte para a rede,
portanto para o endereço de IP 120.0.0.0 seu endereço de sub-rede será 255.0.0.0.
Para endereços da Classe B que utilizam os 2 primeiros bytes para a rede,
como por exemplo o endereço de IP 170.10.0.0, o endereço de sub-rede será
255.255.0.0.Para os endereços da Classe C, por exemplo o endereço de IP
216.20.18.0 seu endereço de sub-rede será 255.255.255.0.
30
F. Camada de Enlace de Dados.
A segunda camada do Modelo OSI, é responsável por verificar se os
parâmetros de mapeamento realizado pela Camada de Rede são confiáveis. Para
isso a Camada de Enlace de Dados realiza um teste de redundância, que é o cálculo
de paridade do pacote de dados, esse teste é realizado tanto no pacote de dados do
remetente como no do receptor.
Se o resultado é semelhante a informação é
armazenada, do contrário descartada.
E. Camada Física
Conhecida também como camada de hardware é ela que define as
especificações do tipo do cabo ou tipo do conector a ser usado na transmissão de
dados, além de limitar os níveis de tensão e corrente usados.
4. REDES SEM FIO
4.1. Wireless
É conhecida como uma conexão wireless qualquer comunicação entre dois
aparelhos eletrônicos sem a utilização de fios. Como exemplo a comunicação entre
o controle remoto e uma TV, por transmissão via infravermelho.
Há diversos tipos de tecnologia wireless, entre as mais famosas estão; Wi-Fi,
Bluetooth e 3G/4G. A principal utilização de tais tecnologias é para a conexão entre
um dispositivo móvel e a Internet, que é justamente a condição que se encontra no
presente projeto, para que o usuário consiga utilizar das funções que a Automação
Residencial disponibiliza.
Os principais elementos em uma rede sem fio são;
A. Hospedeiros Sem Fio
São os equipamentos no qual o usuário final executa os aplicativos.
Exemplos desses equipamentos são laptop´s e celulares.
31
B. Enlaces Sem Fio
São tecnologias de transmissão de dados utilizadas para comunicar os
hospedeiros sem fio a estação base (explicada a seguir). Possuem taxas
de transmissão diferentes e tem diferentes autonomias em distâncias, o
Wi-Fi é um exemplo dessa tecnologia. Essa situação é conhecida como
modo de infraestrutura, se houver situação em que um hospedeiro sem fio
se comunica sem uma estação base, será denominada como rede ad
hoc. Nesse tipo de rede os próprios hospedeiros sem fio fazem os
serviços de transmissão de dados e roteamento.
C. Estação Base
Responsável pelo envio e recebimento de dados, faz a comunicação
entre o hospedeiro sem fio e uma rede ou internet. Uma torre de celulares
ou um Roteador Wireless, também conhecido como Access Point (AP) ou
Pontos de Acesso, são exemplos de Estação Base.
D. Infraestrutura de Rede
É a rede máxima com a qual o Hospedeiro sem Fio pode se comunicar.
Na transmissão de dados sem fio é possível haver obstáculos que dificultam
seu perfeito funcionamento. Entre eles estão a redução da força do sinal devido a
barreiras física ou até mesmo por distância máxima atingida entre o hospedeiro sem
fio e a estação base, interferência de outras fontes que operam na mesma faixa de
frequência, propagação multi-vias que ocorre quando objetos que se movimentam
entre o hospedeiro sem fio e a estação base, e fazem com que as ondas
eletromagnéticas se percam no caminho.
Para toda comunicação de dados é necessário um protocolo de comunicação,
em redes sem fio é utilizado um protocolo bem específico, já que há maiores
possibilidades de erros na transmissão do que uma rede cabeada. Esse protocolo se
chama CDMA (Code Division Multiple Access) que significa Acesso Múltiplo por
Divisão de Código.
32
Todos os usuários usam a mesma frequência por isso para diferencia-los é
utilizado um sistema que codifica cada bit enviado pelo usuário através da
multiplicação do bit, com isso muda sua velocidade, chamada de velocidade de
chipping.
Há subdivisões do protocolo CDMA, por exemplo, o CDMA-ONE que é utilizado
na tecnologia 2G para acesso a internet via celular e a W-CDMA que é o 3G.
4.2. Wi-Fi
Conhecida também como padrão IEEE 802.11(Instituite of Electrical and
Eletronics Engineers) a tecnologia Wi-Fi é a que geralmente é usada para conectar
um laptop à internet em ambientes externos como cafés, restaurantes ou instituições
de ensino.
Abaixo tabela dos principais padrões 802.11 e seus detalhes;
Tabela 2 – Detalhes dos Padrões 802.11.
PADRÃO
Frequência (GHz)
Banda
Alocação de
(MHz)
Taxa Máxima de
Transmissão
(Mbps)
Vantagens
Desvantagens
802.11b
2,4
ISM
802.11a
5,7
UNII
802.11g
2,4
ISM
802.11n
5
ISM,UNII
83.5
300
83.5
83.5
11
Custo
Reduzido
e intervalo de
Frequência
Satisfatório
Lento,
propenso
a interferências
54
54
Rápido e
144
Rápido,
menos
propenso
a interferência
Custo mais
elevado,
intervalo de
frequência
mais curto
intervalo de
frequência
satisfatório
Propenso a
interferências
Fonte: SALVO, Rodrigo. Wireless – Wlan Introdução.Disponível
em:<http://www.tiredes.com/wireless/wlan-intro/>. Acesso em: 07 mar.2015.
Taxa de dados
satisfatórias
e intervalo
apropriado
33
Pela tabela fica claro que os quatro padrões possuem algumas características
semelhantes. Todos podem aumentar o limite de alcance de sinal e diminuir sua
taxa de transmissão, também trabalham tanto no modo de infraestrutura como no
modo de ad hoc. Já em outros conceitos existem suas diferenças, o padrão 802.11b
como trabalha na faixa de frequência de 2,4Ghz e taxa de dados de 11Mbps, a
mesma frequência que um telefone, pode ocorrer interferências. O padrão 802.11ª
pode trabalhar com taxas de bits mais altas, mas em faixas de frequência mais altas,
com isso é prejudicada no limite de sinal atingido.
O Padrão IEEE 802.11n possui mais de um grupo de transmissores e
receptores de saída e entrada múltipla, que recebe e transmiti sinais diferentes, essa
tática é conhecida como MIMO (Multiple Input- Multiple Output) dessa forma foi
atingida a tão esperada taxa de transmissão de mais de 100Mbps.
Usuários de redes Wi-Fi sabem que é muito comum haver mais de uma rede
Wi-Fi disponível para cada hospedeiro sem fio, já que nos dias de hoje a maioria dos
roteadores doméstico ou corporativos contam com a tecnologia Wireless, o que
possibilita diversas redes Wi-Fi que trafegarem pela cidade. Porém para se obter o
sinal de internet através dessas redes, o hospedeiro sem fio deve se comunicar
somente com uma rede sem fio, que estabelece um envio e recebimento de dados
único. Ao instalar um AP (Access Point), que pode ser um roteador Wireless, é
configurado no equipamento o SSID-Service Set Identifier (Identificador de Conjunto
de Serviços). Se o usuário acessa em seu dispositivo móvel, a opção “veja redes
disponíveis” mostra uma lista de SSID de cada AP nomeada pelo administrador de
cada rede. Para se conectar ao AP geralmente os administradores de rede utilizam
uma senha e usuário, mas também há outras formas de fazer essa autenticação.
Após essa autenticação o hospedeiro envia uma solicitação via DHCP á subrede para adquirir um endereço IP, com esse endereço a Rede Internet identifica o
usuário e conclui o processo de autenticação.
34
5. HARDWARE
Composto pelo Módulo de Automatização Residencial, Ethernet Shield, e
sensores são responsáveis pela gerência, controle, supervisão, processamento,
envio e recebimento das informações para dispositivo móvel.
5.1. Arduino Uno
Desenvolvido pelo professor Massimo Banzi, em 2005, com o intuito de criar
uma ferramenta de ensino de eletrônica e programação aos seus alunos do curso de
design que a necessitavam para seus projetos de arte.
Com a ajuda do engenheiro espanhol, David Cuartielles, e um de seus
alunos, David Mellis, o professor criou com sucesso a placa nomeada de Arduino
Uno. Daí em diante tornou-se referência no aprendizado de programação de micro
controladores, devido sua facilidade em interagir com o usuário.
Prova de tal popularidade é que no ano de 2006 foi premiado com uma
menção honrosa pela Prix Ars Electronica, importante prêmio de arte e tecnologia
promovido desde 1987 pela empresa austriaca Ars Electronica, na categoria
comunidades digitais, e até outubro 2008 alcançou a incrível marca de 50.000
unidades vendidas.
Sua versão original, Uno, é fabricada pela companhia italiana Smart Projects,
porém existem versões derivadas fabricadas pela americana Spark Eletronics.
Figura 12 - Arduino Uno R3.
Fonte: ARDUINO. Arduino Uno.
Disponível em: <http://www.arduino.cc/en/Main/arduinoBoardUno>. Acesso em: 07 mar.2015.
35
5.1.1. Descrição
É um kit de desenvolvimento baseado no microcontrolador ATmega 328.
Possui 14 pinos de entrada/saída digital dos quais 6 podem ser usados como saídas
PWM (Pulse Width Modulation ou Modulação de Largura de Pulso), 6 entradas
analógicas, um cristal oscilador de 16MHz, uma conexão USB, uma entrada de
alimentação uma conexão ICSP (In Circuit Serial Programming ou Programação
Serial no Circuito) e um botão de reset. Ele contém todos os componentes
necessários para suportar o microcontrolador.
Características:
Tabela 3 – Características Arduino Uno. ARDUINO.
Tensão Operacional:
Tensão de entrada
(recomendada):
Tensão de entrada (limites):
Corrente CC por pino E/S:
Corrente CC para o pino
3,3V:
Memória Flash:
SRAM:
EEPROM:
Velocidade de Clock:
5Vdc;
7~12Vdc;
6~20Vdc;
40 mA;
50 mA;
32 KB (ATmega328) dos quais 0,5KB são utilizados pelo
bootloader;
2 KB (ATmega328);
1 KB (ATmega328);
16 MHz;
Fonte: Arduino Uno. Disponível em: <http://www.arduino.cc/en/Main/arduinoBoardUno>. Acesso em:
07 mar.2015.
5.2. Módulo de Automatização Residencial
Os testes iniciais foram realizados com o kit de prototipagem Arduino Uno,
porém houve a necessidade de uma placa que atende as necessidades especificas
do projeto. Adquiriu-se então o Módulo de Automatização Residencial, uma placa
baseada no kit Arduino Uno, porém dedicada as funcionalidades do projeto.
36
Figura 2 – Placa do Módulo de Automatização Residencial.
Fonte: Autoria Própria.
5.2.1. Descrição
É uma PCI (placa de circuito impresso) dedicada ao projeto de Automatização
Residencial. Conta com uma fonte Low Dropout, que regula qualquer tensão entre
4Vdc e 30Vdc para 3,3Vdc e 1 A de saída, quatro entradas de sinais digitais, dentre
elas duas pré configuradas para entrada analógica, quatro saídas que suportam até
4,5A de corrente contínua ou até 8A de corrente pulsante, isoladas do por um
circuito integrado (uLN 2003A) que também amplifica a corrente de saída. Uma
saída para dimerização de lâmpada à LED, cinco pinos configuráveis para entradas
ou saídas de sinais. Conexão com o Módulo Ethernet Shield via SPI (Serial
Peripheral Interface), protocolo síncrono de comunicação que opera no modo full
duplex.
37
Características:
Tabela 4 - Características do Módulo de Automatização Residencial.
Tensão Operacional:
Tensão de entrada:
Corrente CC por pino E/S:
Consumo de Corrente
Memória Flash:
SRAM:
EEPROM:
Velocidade de Clock:
3,3Vdc;
4~30Vdc;
40 mA;
200 mA;
32 KB (ATmega328) dos quais 0,5KB são utilizados pelo
bootloader;
2 KB (ATmega328);
1 KB (ATmega328);
16 MHz;
Fonte: Autoria Própria.
38
5.2.2. Estrutura do Programa
Figura 14 - Fluxograma da Programação do Módulo de Automatização Residencial.
Fonte: Autoria Própria.
39
5.3. Ethernet Shield
Junto ao módulo de automatização residencial é utilizada a placa Shield
Ethernet, que fornece conexão com uma rede ethernet, e possibilita o acesso a uma
rede local e até mesmo a Internet. Abaixo segue foto ilustrativa do item citado.
Figura 15 - Arduino Ethernet Shield.
Fonte: ARDUINO Ethernet Shield. Disponível em:
<http://www.arduino.cc/en/Guide/ArduinoEthernetShield>. Acesso em: 07 mar.2015
5.3.1. Descrição
O módulo Arduino Ethernet Shield é baseado no chip Wizenet W5100, que
fornece uma rede IP capaz de empilhar tanto TCP quanto UDP. Suporta até quatro
conexões simultâneas.
É conectada ao Módulo de Automatização Residencial por longos terminais,
isso mantém a pinagem intacta e permite que outros conectores sejam acoplados.
Possui um conector padrão RJ-45, que é integrado com um transformador de
linha e Power Over Ethernet (Alimentação Sobre Ethernet) habilitado, que permite
receber alimentação diretamente do cabo de rede, o Shield Ethernet tem integrado
um slot de cartão de memória Micro-SD, que pode ser usado para armazenar
arquivos para serem utilizados na rede. Possui também um controle de reset, para
garantir que o módulo seja corretamente resetado:
40
IEEE802.3af;
Baixa voltagem de Ripple (100mVpp);
Tensão de entrada: 36-57V;
Proteção contra sobrecarga e curto circuito;
Saída 9V;
Alta eficiência no conversor DC/DC;
Isolação de 1500V de entrada e saída;
5.4. Sensor de Presença
Utilizado para a detecção, o sensor ultrassônico HC-SR04, caso precise, pode
também detectar a distância de objetos que por ele passarem. Tal funcionalidade é
possível através de um som emitido em alta frequência na ordem de 40kHz, que
quando refletida no objeto retorna ao sensor que mede o tempo de retorno para
estimar a distância.
5.5. Sensor de Temperatura e Umidade
DHT11 é um preciso sensor de temperatura (em °C, erro de +/- 2°C e campo
de atuação de 0 a 50°C), e umidade (em %, erro de +/- 5% e range de 20 a 90%), à
um fio, isso significa que além dos terminais para alimentação Vdc, necessita de
apenas um terminal para envio dos dados lidos. Possui em seu encapsulamento
interno um processador de alto desempenho de 8bits que garante confiabilidade e
estabilidade de leitura.
5.6. Sensor de Luminosidade
Para efetuar a dimerização do LED, foi utilizado o LDR (Light Dependent
Resistor), um simples e útil sensor de luminosidade que varia sua resistência
conforme a intensidade de luz sobre ele incidida.
41
5.7. Sensor de Porta Aberta
É uma chave do tipo magnética "NA” (normalmente aberta), que indica se a
porta se encontra aberta ou fechada.
5.8. Fechadura Eletrônica
Fechadura eletromagnética com solenoide interno, acionada por 12 Vdc
comandados pelo dispositivo com Android através do Módulo de Automatização
Residencial. Utilizada para o controle de acesso a residência ou estabelecimento
comercial.
5.9. Protótipo
Para melhor ilustrar a automatização residencial, foi elaborado um protótipo
em madeira que representa uma residência com dois dormitórios. Nele foram
distribuídos os sensores, LEDs e a fechadura eletrônica, conforme figura 16, 17 e 18
abaixo.
Figura 16 - Protótipo, Pré Fabricação.
Autoria Própria.
42
Figura 17 - Protótipo, Pós Fabricação.
Fonte: Autoria Própria.
Figura 183 - Protótipo, Pós Fabricação.
Fonte: Autoria Própria.
43
6. SOFTWARE
6.1. Linguagem de Programação
É a padronização de métodos para que seja possível o envio de instruções para
um computador. Essas instruções são um conjunto de regras sintáticas, estas
influenciam na maneira de como os programas são escritos, lidos e reconhecidos
por computadores e por outros programadores e regras semânticas, que
determinam como os programas são resolvidos e entendidos por outros
programadores e como o computador ira interpreta-lo.
A linguagem de programação possibilita ao programador com precisão quais,
como serão armazenados ou que decisões serão tomadas aos dados em um
computador. Por essa precisão linguagens de programação são comumente
utilizadas para expressar algoritmos, que por sua vez são sequencias de tamanho
finito de instruções bem definidas e não ambíguas.
O conjunto destas instruções que seguem estas regras constitui o código
fonte de um software, este código depois traduzido para um código de máquina
através de compiladores ou por um processo denominado interpretação.
Se neste processo de tradução o código é totalmente traduzido e só após é
executado o programa, este processo foi realizado por um compilador, mas, se o
código for executado à medida que é traduzido, este foi realizado por um
interpretador.
44
6.2. Interpretador
São programas de computador que leem um código fonte de uma linguagem
de programação interpretada. O interpretador executa o código-fonte como o código
objeto e traduz o programa linha a linha, nesta etapa é realizado um processo que
faz uma análise sintática e semântica do código. Se nesta análise as duas etapas
estiverem corretas o código está pronto para ser executado. Este programa é
executado na medida em que é traduzido.
6.3. Compilador
É um programa ou até mesmo um grupo de programas de computador que, a
partir de um código fonte cria um programa semanticamente equivalente, porém
escrito em outra linguagem, que resulta no código objeto. Os compiladores analisam
o código em três partes, hierarquia, léxica e semântica. Na maior parte de sua
utilização os compiladores traduzem linguagem de níveis mais altos como, por
exemplo, “C” para linguagens de nível mais baixo, linguagem de máquina.
Alguns compiladores contam com um pré-processamento, que são utilizados
para modificar o código-fonte segundo suas necessidades.
6.4. Linguagem C
6.4.1. História
Em 1970, nos laboratórios da AT&T, Bell Denis Ritchie elabora uma nova
linguagem a partir da linguagem BCPL, conhecida como linguagem B. Anos mais
tarde com a ajuda de Brian Kerningham esta linguagem foi aperfeiçoada e então
surge uma nova versão desta linguagem, a linguagem C. Seu primeiro marco foi o
de reescrever o sistema UNIX. Depois de seu notavel potencial em 1980 a
linguagem C é padronizada pelo American National Standard Institute, surge a ANSI
C.
45
Após quase uma década do surgimento do ANSI C a Borland International
Corporation escolhe a linuagem C e também Pascal para seu ambiente de
desenvolvimento, o que deu origem ao Turbo C. Logo apos a origem do Turbo C, a
linguagem C já é um ponto comum entre desenvolvedores de programações
orientadas a objeto, oque originouse a linguagem C++.
Apesar de possuírem instruções e declarações semelhantes a linguagem C e
C++ tem algumas diferenças, a mais marcante é orientação a objeto, utilizada na
linguagem C++, em que todos os atributos e métodos estão dentro de um conjunto
de objetos com características semelhantes denominados classe. Diferentemente a
linguagem estruturada utilizada na linguagem c e também na C++, dever conter
todos seus métodos e atributos no programa principal.
6.4.2. Visão Geral
C é uma linguagem de programação:
Estruturada;
Imperativa;
Procedural;
Baixos requerimentos do hardware.
Pertence a linguagens cujas características são:
Portabilidade;
Modularidade;
Flexibilidade;
Confiabilidade;
Regularidade;
Simplicidade;
Compilação separada;
Recursos de baixo nível;
Geração de código eficiente;
Linguagem de alto nível.
46
6.4.3. Estrutura de Programação
Um programa em C é constituído de:
Um cabeçalho que contém as diretivas de compilador onde se definem:
Valor de constantes simbólicas;
Declaração de variáveis;
Inclusão de bibliotecas;
Declaração de rotinas.
Um bloco de instruções principal;
Blocos de rotinas;
Comentários.
Exemplo de programa em C:
#include<stdio.h>; (Diretiva de compilação)
Int c;
nome C)
(Declarada variável numérica inteira de
main ()
(Função principal do programa)
{
c=50; ⁴//Atribuir 50 a variável C
(Comentário)
)
printf (“O valor de c é: %d” , c);
}
Ao iniciar um programa, o compilador reconhece as variáveis criadas e
avança diretamente para função principal. Nesta função principal pode haver uma
47
sub-rotina, que desvia o programa para outro lugar a fim de executar alguma função
especifica.
6.4.4. Diretivas de Compilação
São instruções ao compilador para execuções de tarefas antes da compilação
de parte ou de todo o programa. As diretivas são iniciadas com #include, e seus
arquivos possuem extensão .h.
6.4.5. Variáveis e Constantes
Para que o programa interprete tais instruções é necessária a utilização de
identificadores, que são nomes usados para se fazer referência a variáveis, funções,
rótulos e quaisquer outros objetos definidos pelo programador. Além de fazer a
distinção de letras maiúsculas e minúsculas, deve sempre utilizar letras ou
sublinhado para o primeiro caractere do identificador.
Exemplo:
1) int valor 1;
2) int Valor1; (por ser case sensitive o exemplo 1 é diferente do exemplo
2).
3) int _Valor1;
Os demais caracteres podem ser compostos por letras, números e
sublinhado. Outro importante ponto se dá pelo comprimento do identificador, que
tem os seus 32 primeiros caracteres significativos.
Exemplo:
Intresultado_Prova_1;
Existem duas maneiras para declarar as variáveis. As variáveis globais que
podem ser utilizadas em todas as rotinas e funções dentro do programa e as
variáveis locais que se restringem somente a sua rotina ou função.
48
6.4.6. Tipos de Variáveis
Int
Representa um número
inteiro
void
Dado que não retorna valor
nenhum a variável ou
função
char
Representa um caractere
float
Representa números reais,
por utilizarem 4bytes,
alcançam um range de
3,4e-38 a 3,4e38
Similar a float, porém
possui 8 bytes chega a um
range de 1,7e-308 a
1,7e308
Double
6.4.7. Operadores
É uma classe de operações que atuam em determinadas variáveis ou
elementos pré-definidos. Foi utilizado três tipos de operadores:
Operadores Aritméticos– Utilizados para resolver operações matemáticas;
Operadores Lógicos– Utilizados nas representações lógicas nas quais
não é possível o uso de operadores aritméticos;
Operadores Relacionais – Utilizados para estabelecer relações entre as
variáveis
Tabela 5 – Principais Operações.
Operadores Aritméticos Exemplo
(=) Atribui valor a uma
x=0
variável
x=x+1
(+) Operador de soma
x++ (é o mesmo que
(++) Incrementa variável
x=x+1)
(-) Operador de subtração x=x-1
x-- (é o mesmo que
(--) decrementa variável
x=x-1)
(*) Operador de
x=x*1
multiplicação
49
(/) Operador de divisão
(%) Resto da divisão
(^) Exponencial
Operadores Relacionais
(>) Maior que
(>=) Maior ou igual a
(<) Menor que
(<=) Menor ou igual a
(==) Igual a (comparação)
(!=) Diferente de
Operadores Lógicos
(&) Função E
(|) Função OU
(~) Função INVERSORA
x=x/1
x=y%z
x=x^2
Exemplo
x>1
x>=1
x<1
x<=1
x==1
x!=1
Exemplo
x&y
x|y
x~y
Fonte: JÚNIOR, V.P.Linguagem ’C’ para Microcontroladores PIC. Disponível em:
<http://usuarios.upf.br/~fpassold/PIC/C_PIC.PDF>. Acesso em: 07 mar 2015.
6.4.8. Instruções
Todas as instruções que vierem a ser executadas na mesma rotina devem
estar contidas neste bloco de declarações, iniciado com “{“ e finalizado com “}”.
Abaixo breve descrição das principais utilizadas.
IF
Verifica se a condição é verdadeira ou não, caso seja verdadeira ela
executara a declaração feita na próxima linha da instrução if, caso seja falsa a
verificação será executada a declaração feita na próxima linha do else.
Exemplo:
If (x==0)
y=5;
else
y=12;
FOR
50
Executa uma instrução ou bloco de instruções em repetidas vezes por um
determinado tempo.
Exemplo:
y=0;
for(x=1; x>=10; x++)
y=y+1;
WHILE
Executa uma instrução ou bloco de instruções enquanto a condição definida
for verdadeira.
Exemplo:
y=0;
while(x>10)
y=y+1;
DO-WHILE
Semelhante à instrução while se diferencia por executar ao menos uma vez a
instrução declarada, por ter a condição de teste no final da instrução.
Exemplo:
do
x=x+1;
while(x>12)
SWITCH
Verifica a variável e conforme seu valor executa diretamente uma instrução do
bloco de instruções.
Exemplo:
switch(x)
{
Case 1
{
51
x=x+1;
break;
}
Case 2
{
x=x-1;
break;
}
Default://caso a verificação seja falsa
{
x=x+1;
break;
}
}
6.4.9. Funções
Bloco de instruções que tem como finalidade realizar uma tarefa, pode ser
definido basicamente toda sub-rotina de um programa.
Tabela 6 - Funções mais utilizadas na Linguagem C.
Função
Descrição
Envia nível alto ao pino do
output_high() microcontrolador (1)
output_low() Envia nível baixo ao microcontrolador (0)
Verifica status de um pino do
input()
microcontrolador
output_n()
Envia um byte para o PORT N
52
input()_n
Verifica um byte no PORT N
printf()
Exibi dados no dispositivo de saída
Fonte: JÚNIOR, V.P. Linguagem ’C’ para Microcontroladores PIC. Disponível em:
<http://usuarios.upf.br/~fpassold/PIC/C_PIC.PDF>. Acesso em: 07 mar 2015.
6.4.10. Comentários
São informações que os programadores utilizam para o auxílio da escrita do
software. Podem ser dados, palavras ou até mesmo frases. Existem dois tipos de
comentários:
Para uma linha;
//Comentário
Para múltiplas linhas;
/*Comentário */
53
7. CONCLUSÃO
A evolução da comunicação móvel e o surgimento de novas tecnologias tornam
cada vez mais viável a monitoração remota de qualquer equipamento ou residência,
via dispositivos móveis como tablets e smartphones.
A dificuldade encontrada na execução do projeto foi a aquisição do kit de
desenvolvimento em C++, Arduino Uno, pois é um produto de difícil importação e em
ascensão no mercado, devido sua facilidade na programação, que torna a demanda
maior que a oferta.
A programação do sistema operacional Android, por ser tecnologia não dominada
previamente pelos componentes do grupo, demandou muitos esforços, pesquisas e
dedicação.
O projeto abordou tecnologias atuais e populares presentes no dia a dia, além de
desenvolver o Módulo de Automatização Residencial baseado na plataforma Arduino
- desde o projeto do circuito eletrônico, confecção da placa do modulo até a
montagem dos componentes, que agregou conhecimentos teóricos e práticos no
processo de pesquisa e desenvolvimento do produto.
Por meio da utilização de plataformas em código aberto - a IDE Eclipse, o
Sistema Operacional Android e plataforma de prototipagem Arduino - é possível a
popularização do produto, o controle e monitoração de diversos equipamentos
eletrodomésticos e auxílio nas atividades domésticas. Aplicável tanto para usuários
comuns como para pessoas com mobilidade reduzida.
Por se tratar de Automatização Residencial são inúmeras as possibilidades de
implementação, configurações, adaptações e melhorias. Com as linhas dos
eletrodomésticos inteligentes em ampliação constante e cada vez mais acessíveis
(geladeiras, televisores, etc.) é possível agregá-las ao sistema de automatização.
A comunicação entre o Sistema Operacional Android e o Módulo de
Automatização Residencial, via WAN, ou seja, externamente, permite o acesso de
qualquer lugar do mundo, por meio da estrutura de rede local disponível.
54
REFERÊNCIAS
Open Handset Alliance. Overview. Disponível em:
<http://www.openhandsetalliance.com/oha_overview.html>. Acesso em: 07 mar.
2015.
Arduino The Documentary. Produção de Rodrigo Calvo e Raúl Alejos. Gijón,
Espanha. 2010. Disponível em: <http://www.benarent.co.uk/revolve/video/the-historyof-arduino/>. Acesso em: 07 mar. 2015
Arduino The Documentary. Produção de Rodrigo Calvo e Raúl Alejos. Gijón,
Espanha. 2010. Disponível em: <http://www.benarent.co.uk/revolve/video/the-historyof-arduino/>. Acesso em: 07 mar. 2015
ARDUINO. Arduino Playgroud. Disponível em:
<http://www.arduino.cc/playground/Portugues/HomePage>. Acesso em: 07 mar.
2015
THOMPSON, Clive. Build It. Share It. Profit. Can Open Source Hardware Work?.
Wired Magazine. San Francisco, Califórnia, out. 2008. Disponível em:
<http://www.wired.com/techbiz/startups/magazine/1611/ff_openmanufacturing?currentPage=all>. Acesso em: 07 mar. 2015.
GREGO, Maurício. O hardware em código “aberto”. Info, mar. 2009. Disponível em:
<http://info.abril.com.br/professional/tendencias/hardware-livre-leve-e-solto.shtml>.
Acesso em: 07 mar. 2015
STUDIO, Itead. Ultrasonic ranging module: HC-SR04. Disponível em:
<http://jaktek.com/wp-content/uploads/2011/12/HC-SR04.pdf>. Acesso em: 07 mar.
2015
Android e iOS dominam mais de 96% do mercado de smartphones. Disponível
em: <http://www.folhadaregiao.com.br/Materia.php?id=341242>. Acesso em: 07 mar.
2015