Implementação de um sistema de automação residencial...
Transcript of Implementação de um sistema de automação residencial...
-
IMPLEMENTAO DE UM SISTEMA DE AUTOMAO RESIDENCIAL
UTILIZANDO A PLATAFORMA ARDUINO E OS MDULOS DE RDIO
FREQUNCIA XBEE
Jonas Karst Simes
Projeto de Graduao apresentado ao Curso de
Engenharia de Controle e Automao da Escola
Politcnica, Universidade Federal do Rio de
Janeiro, como parte dos requisitos necessrios
obteno do ttulo de Engenheiro.
Orientador: Lilian Kawakami Carvalho
Rio de Janeiro
Agosto de 2018
-
IMPLEMENTAQAO DE UM SISTEMA DE AUTOh{AqAO RESIDENCIAL
UTILIZANDO A PLATAFORMA ARDUINO E OS MODU-LOS DE RADIO
TREQUENCIA XBEE
Jonas Karst Simdes
PROJETO DE GRADUAq.q.O SUBh{ETIDO AO CORPO DOCENTE DOcuRso DE ENGBIIHARIA DE CONTROLE E AUTOh{AqAO DA ESCOLAPOLITECNICA DA U}flVERSiDADE FEDtrRAL DO RIO DE JANEIBO COMO
PARTE DOS REQUISITOS I'IECESSA'RIOS PARA A OBTENqAO DO GRAUDE ENGENHEIRO DE AUTON4AQAO.
Examinado por:
{o*'*ryt tt &'w*l*Prof. Lilian Kawakami Cam'aiho. D.Se.
DE JANEIRO, RJ * BRASILAGOSTO DE 2018
RlO
-
Karst Simes, Jonas
Implementao de um sistema de automao residencial
utilizando a plataforma Arduino e os mdulos de rdio
frequncia XBee/Jonas Karst Simes. Rio de Janeiro:
UFRJ/ Escola Politcnica, 2018.
XI, 98 p.: il.; 29, 7cm.
Orientador: Lilian Kawakami Carvalho
Projeto de Graduao UFRJ/ Escola Politcnica/
Curso de Engenharia de Controle e Automao, 2018.
Referncias Bibliogrcas: p. 47 48.
1. Automao Residencial. 2. Arduino. 3. XBee.
I. Kawakami Carvalho, Lilian. II. Universidade Federal do
Rio de Janeiro, Escola Politcnica, Curso de Engenharia
de Controle e Automao. III. Ttulo.
iii
-
Agradecimentos
Gostaria de agradecer em primeiro lugar aos meus pais, Jos Carlos e Soraya. No
poderia ser diferente. Sem todo o incentivo e apoio deles, a concluso deste projeto
e do curso de Engenharia de Controle e Automao no seriam possveis. Vocs
so meus pilares e exemplos de pessoas para mim. Sou imensamente grato pela
educao que vocs me proporcionaram. Muito obrigado! Eu amo vocs!
Gostaria de agradecer tambm a todos os amigos que tive o prazer de conhecer
ao longo do curso, que tornaram essa jornada muito menos complicada e mais
prazerosa. Vocs tem um lugar especial junto de mim. Um agradecimento especial
ao Eduardo Brando, minha eterna dupla de todos os trabalhos!
No poderia deixar de agradecer a todos os membros da Equipe Minerva Aero-
design que tive o prazer de trabalhar, que me mostraram o verdadeiro signicado
da palavra Equipe, e que zeram o curso de engenharia ser muito mais interessante.
Por m, a ltima pessoa que fez parte da minha caminhada, minha orientadora,
Lilian Kawakami Carvalho. Muito obrigado por acreditar no meu projeto e por
toda a ateno dedicada durante esse perodo. Sua ajuda foi muito imporante para
a realizao deste trabalho.
iv
-
Resumo do Projeto de Graduao apresentado Escola Politcnica/ UFRJ como
parte dos requisitos necessrios para a obteno do grau de Engenheiro de
Automao.
IMPLEMENTAO DE UM SISTEMA DE AUTOMAO RESIDENCIAL
UTILIZANDO A PLATAFORMA ARDUINO E OS MDULOS DE RDIO
FREQUNCIA XBEE
Jonas Karst Simes
Agosto/2018
Orientador: Lilian Kawakami Carvalho
Curso: Engenharia de Controle e Automao
O avano tecnolgico dos celulares e a evoluo das redes sem o revolucionou
a maneira como as pessoas se relacionam entre si e tambm com o ambiente a sua
volta, possibilitando que as pessoas interajam com o mundo atravs de dispositivos
eletrnicos. O surgimento da internet das coisas, permitiu avano em diversas reas
da tecnologia, como por exemplo a domtica, tambm conhecida como automao
residencial . Neste trabalho, implementamos um sistema de automao residencial
que controlado atravs de aplicativo em smartphone, que foi desenvolvido atra-
vs da ferramenta MIT App Inventor. Para o desenvolvimento do sistema, foram
utilizados a plataforma Arduino e os mdulos de comunicao por radio frequncia
XBee. Este sistema foi projetado para acionar atuadores rel e leds infravermelhos,
capazes de controlar iluminao e eletrnicos que fazem uso de controle remoto. O
desenvolvimento do sistema foi descrito passo a passo para permitir a replicao
deste projeto por terceiros.
v
-
Abstract of Undergraduate Project presented to POLI/UFRJ as a partial fulllment
of the requirements for the degree of Engineer.
IMPLEMENTATION OF A HOME AUTOMATION SYSTEM USING
ARDUINO AND THE RADIO FREQUENCY XBEE MODULES
Jonas Karst Simes
August/2018
Advisor: Lilian Kawakami Carvalho
Course: Automation and Control Engineering
The technological advancement of mobile phones and the evolution of wireless
networks has revolutionized the way people relate to each other and also to the
environment around them, enabling people to interact with the world through elec-
tronic devices. The emergence of the Internet of Things (IoT) has allowed advances
in several areas of technology, such as domotics, also known as home automation. In
this work, we implemented a home automation system that is controlled through a
smartphone application, which was developed through the MIT App Inventor tool.
For the development of the system, the Arduino platform and XBee radio frequency
communication modules were used. This system is designed to drive relay actuators
and infrared leds, capable of controlling lighting and electronics that make use of
remote control. The development of the system has been described step by step to
allow the replication of this project by third parties.
vi
-
Sumrio
Lista de Figuras ix
Lista de Tabelas xi
1 Introduo 1
2 Descrio dos componentes 3
2.1 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 XBee Pro s2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Congurao dos XBees . . . . . . . . . . . . . . . . . . . . . 16
2.3 MIT App Inventor 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3 Implementao do sistema de automao residencial 24
3.1 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 Rede Zigbee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3 Mdulo central . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4 Mdulos atuadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4.1 Mdulo de atuador rel . . . . . . . . . . . . . . . . . . . . . . 35
3.4.2 Mdulo atuador infravermelho . . . . . . . . . . . . . . . . . . 35
3.5 Aplicativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.6 Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4 Concluses e trabalhos futuros 43
4.0.1 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.0.2 Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . 44
Referncias Bibliogrcas 47
A Cdigos Arduino 49
A.1 Mdulo central . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
A.2 Mdulo atuador infravermelho . . . . . . . . . . . . . . . . . . . . . . 69
A.3 Aquisio de sinais IR . . . . . . . . . . . . . . . . . . . . . . . . . . 83
vii
-
B Cdigos Aplicativo 85
B.0.1 Janela screen1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
B.0.2 Janela Quarto . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
B.0.3 Janela Lampadas . . . . . . . . . . . . . . . . . . . . . . . . . 86
B.0.4 Janela Ventilador . . . . . . . . . . . . . . . . . . . . . . . . . 88
B.0.5 Janela Ar condicionado . . . . . . . . . . . . . . . . . . . . . . 90
viii
-
Lista de Figuras
2.1 Pinagem da placa Arduino Uno R3 . . . . . . . . . . . . . . . . . . . 4
2.2 Mdulo rel de dois canais para arduino . . . . . . . . . . . . . . . . 6
2.3 Shield XBee para arduino . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 Ethernet Shield para arduino . . . . . . . . . . . . . . . . . . . . . . 8
2.5 IDE do Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.6 Mdulo XBee Pro s2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.7 Redes Zigbee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.8 Modo de operao AT . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.9 Estrutura dos frames API . . . . . . . . . . . . . . . . . . . . . . . . 15
2.10 Exemplo de comando AT . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.11 Digi XCTU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.12 XBee Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.13 Seo Designer do MIT App Inventor 2 . . . . . . . . . . . . . . . . . 22
2.14 Seo Blocks do MIT App Inventor 2 . . . . . . . . . . . . . . . . . . 23
2.15 Blocos e lgica de programao do MIT App Inventor 2 . . . . . . . . 23
3.1 Arquitetura do sistema de automao residencial . . . . . . . . . . . . 25
3.2 Janela do Digi XCTU . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Janela de seleo da porta serial . . . . . . . . . . . . . . . . . . . . . 26
3.4 Janela de seleo dos parmetros do xbee procurado . . . . . . . . . . 27
3.5 Janela de erro solicitando reset fsico do xbee . . . . . . . . . . . . . . 27
3.6 Janela com dispositivos encontrados . . . . . . . . . . . . . . . . . . . 28
3.7 Conguraes gerais dos XBees . . . . . . . . . . . . . . . . . . . . . 29
3.8 Congurao do modo de operao do XBee . . . . . . . . . . . . . . 29
3.9 Esquema de montagem do mdulo rel . . . . . . . . . . . . . . . . . 31
3.10 Fluxograma de funcionamento da sketch do mdulo central . . . . . . 31
3.11 Esquema de montagem do mdulo rel . . . . . . . . . . . . . . . . . 35
3.12 Esquema de montagem do mdulo atuador infravermelho . . . . . . . 36
3.13 Fluxograma de funcionamento da sketch do mdulo atuador infraver-
melho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.14 Esquema do circuito para recepo de sinais IR . . . . . . . . . . . . 38
ix
-
3.15 Janela inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.16 Janela do ambiente a ser controlado . . . . . . . . . . . . . . . . . . . 40
3.17 Janela de controle das lampadas . . . . . . . . . . . . . . . . . . . . . 40
3.18 Janela de controle do ventilador . . . . . . . . . . . . . . . . . . . . . 41
3.19 Janela de controle do ar condicionado . . . . . . . . . . . . . . . . . . 42
4.1 Esquema de montagem do mdulo rel idealizado . . . . . . . . . . . 45
B.1 Lgica de programao dos botes da janela Screen1 . . . . . . . . . 85
B.2 Lgica de programao dos botes da janela Quarto . . . . . . . . . . 85
B.3 Lgica de programao do boto Acender da lmpada 1 . . . . . . . . 86
B.4 Lgica de programao do boto Apagar da lmpada 1 . . . . . . . . 86
B.5 Lgica de programao do boto Acender da lmpada 2 . . . . . . . . 86
B.6 Lgica de programao do boto Apagar da lmpada 2 . . . . . . . . 87
B.7 Lgica de programao de recepo da resposta html . . . . . . . . . 87
B.8 Lgica de programao do boto voltar do dispositivo . . . . . . . . . 88
B.9 Lgica de programao do boto power do ventilador . . . . . . . . . 88
B.10 Lgica de programao do boto slow dwon do ventilador . . . . . . . 88
B.11 Lgica de programao do boto speed up do ventilador . . . . . . . 89
B.12 Lgica de programao do boto reverse do ventilador . . . . . . . . . 89
B.13 Lgica de programao do boto voltar do dispositivo . . . . . . . . . 89
B.14 Lgica de programao do boto On do ar condicionado . . . . . . . 90
B.15 Lgica de programao do boto O do ar condicionado . . . . . . . 90
B.16 Lgica de programao do boto AC do ar condicionado . . . . . . . 91
B.17 Lgica de programao do boto DES do ar condicionado . . . . . . . 92
B.18 Lgica de programao do boto Move/Stop do ar condicionado . . . 92
B.19 Lgica de programao do boto de aumentar temperatura do ar
condicionado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
B.20 Lgica de programao do boto de diminuir a temperatura do ar
condicionado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
B.21 Lgica de programao do boto de aumentar vazo do ar condicionado 95
B.22 Lgica de programao do boto de diminuir vazo do ar condicionado 96
B.23 Lgica de programao da recepo de resposta html . . . . . . . . . 97
B.24 Lgica de programao do boto voltar do dispositivo . . . . . . . . . 98
x
-
Lista de Tabelas
2.1 Especicaes tcnicas do Arduino Uno R3 . . . . . . . . . . . . . . . 5
2.2 Leds indicadores do Shield Ethernet . . . . . . . . . . . . . . . . . . . 8
2.3 Pinagem do XBee Pro s2 . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Especicaes tcnicas XBee Pro s2 . . . . . . . . . . . . . . . . . . . 13
2.5 Tipos de frame API . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.6 Exemplo de Zigbee Transmit Request . . . . . . . . . . . . . . . . . . 17
2.7 Exemplo de comando AT remoto . . . . . . . . . . . . . . . . . . . . 18
3.1 Congurao dos mdulos XBee . . . . . . . . . . . . . . . . . . . . . 30
3.2 Remote AT command API Frame . . . . . . . . . . . . . . . . . . . . 33
3.3 Zigbee transmit request API Frame . . . . . . . . . . . . . . . . . . . 34
xi
-
Captulo 1
Introduo
Na ltima dcada vivemos a evoluo da internet das coisas (IoT) graas aos
avanos tecnolgicos na rea das redes sem o e da telefonia mvel. A internet
das coisas uma rede de dispositivos fsicos que possuem componentes eletrnicos,
sensores, atuadores, e conexo internet, permitindo assim a comunicao entre
esses dispositivos e o compartilhamento de dados entre eles. A ideia por trs da
internet das coisas extender a conexo internet alm de dispositivos comuns
como tablets, celulares e computadores, para quaisquer dispositivos tradicionais
que no so conectados internet, como: veculos, eletrodomsticos, tubulaes,
equipamentos mdicos. A integrao destes dispositivos em uma rede, permite
o monitoramento, controle e automao de processos em diversas aplicaes:
transporte, industria, sade, construo, casas inteligentes, dentre outros. Em meio
a esses avanos, o homem se tornou de capaz de interagir com outras pessoas e com
o mundo a sua volta atravs de dispositivos eletrnicos portteis, melhorando a sua
qualidade de vida. Um dos campos mais beneciados com esses recentes avanos
foi o da automao residencial, tambm conhecida como domtica. A domtica, da
juno Domus "casa"com Imotique "automtico, denida como a integrao de
mecanismos automticos em um ambiente, tornando o cotidiano das pessoas mais
simples, solucionando necessidades de comunicao, conforto e segurana [1]. Ela
permite o uso de dispositivos com o objetivo de automatizar ou complementar as
rotinas e tarefas de uma residncia, permitindo o controle de temperatura ambiente,
iluminao e acionamento de outros eletrodomsticos. Na rea da automao
residencial, porm, nem sempre todos os dispositivos so conectados internet.
Existem diferentes arquiteturas que podem ser utilizadas para a implementao
de um sistema de automao residencial. Uma arquitetura horizontal, onde os
dispositivos so todos conectados internet, como na denio de internet das
coisas, ou uma rede centralizada, em que um dispositivo principal conectado
internet e distribui os comandos atravs de outro protocolo de comunicao, como
ser visto nesse trabalho.
1
-
A motivao para o desenvolvimento deste trabalho surgiu dentro de casa, a
partir de pequenos conitos e situaes encontradas no dia a dia. Pra comear, s no
meu quarto so cinco controles remotos para controlar ar condicionado, ventilador
de teto, televiso, net e porta retrato digital, sendo que alguns dos dispositivos so
controlados apenas pelo controle remoto, impossibilitando assim controlar esses
aparelhos quando os controles desaparecem. Outro fator que me motivou a desen-
volver este trabalho foi a preguia. Quem nunca deitou na cama pra dormir e depois
lembrou que havia deixado algo ligado em outro cmodo, ou at mesmo esqueceu de
apagar a luz, cujo interruptor ca longe da cama? Por m, e principal motivo para
este projeto: meus pais. No sei quantas vezes ao dia eles reclamam de que alguma
coisa na casa est ligada, ou que eu ou meus irmos esquecemos algo ligado, e temos
que parar imediatamente o que estamos fazendo para ir desligar. Aps vinte e cinco
anos de reclamaes eu falei irnicamente que iria fazer um aplicativo para meu pai
poder controlar tudo da casa sem sair do quarto dele, j que ele adorava brincar de
scal. Como eu estava a ponto de comear o projeto nal, decidi ento por este tema.
O objetivo deste trabalho, portanto, desenvolver um sistema de acionamento
remoto de atuadores, a partir de um aplicativo no celular, utilizando uma tecnolo-
gia mais barata, de fcil manuseio e aprendizado, para que outras pessoas pudessem
usufruir dos benefcios deste trabalho no futuro, mesmo no tendo muita experin-
cia com projetos eletrnicos. Portanto, desde o incio decidiu-se pela implementao
dessa idia utilizando a plataforma Arduino, uma plataforma de prototipagem ele-
trnica de hardware livre, to conhecido por ser um componente open source e que
incentiva a troca de conhecimento constante entre os membros de sua comunidade.
Para realizar a comunicao do arduino com os atuadores perifricos, optou-se por
utilizar os mdulos de rdio frequncia XBee, pois possuem bom alcance, vasta
opo de modos de operao, baixo consumo e alta conabilidade.
Os componentes utilizados na realizao deste trabalho esto descritos no
captulo 2, que detalha o funcionamento e a congurao de todos os elementos
utilizados no sistema: Arduino, XBee e MIT App Inventor. Em seguida, no
captulo 3, est explicado a metodologia proposta e como feita a integrao entre
os componentes do sistema. Por m, no captulo 4, so apresentados os resultados
obtidos com a realizao deste projeto, bem como as diculdades encontradas
durante a sua realizao. Ao longo deste trabalho h a presena de tabelas
e paragrafos contendo palavras em ingls, por se tratarem de termos tcnicos
retirados do manual de um dos componentes utilizados. A traduo livre destes ter-
mos poderia resultar no no entendimento do leitor ao tentar reproduzir este projeto.
2
-
Captulo 2
Descrio dos componentes
Nesse capitulo so apresentados os componentes utilizados na implementao do
sistema de automao residencial deste trabalho: plataforma arduino, mdulos de
comunicao por rdio frequncia XBee e o ambiente de desenvolvimento de aplicati-
vos MIT App Inventor. Sero descritos as especicaes tcnicas, seus componentes
fsicos, e os seus ambientes de desenvolvimento, focando, principalmente, nos recur-
sos de cada componente que sero utilizados para implementao do sistema.
2.1 Arduino
O Arduino uma plataforma eletrnica de cdigo aberto desenvolvido com o
objetivo de oferecer uma maneira mais simples e fcil de utilizar e integrar software
e hardware. Essa plataforma combina as versteis placas eletrnicas e o software
de desenvolvimento do Arduino (IDE), em que os cdigos so escritos utilizando a
linguagem de programao C++. Existem diferentes modelos de placas Arduino,
e todas elas so compostas por um micro controlador, diversas portas digitais e
analgicas, pinos de alimentao de entrada e sada, e comunicao serial. Alm da
simplicidade de integrao entre software e hardware, essa plataforma se destaca
pelo baixo custo, pela versatilidade de utilizao em vrios sistemas operacionais,
e principalmente pela ampla comunidade de usurios que se criou, devido sua
ideologia de cdigo aberto, incentivando a troca de experincias e informaes
entre os membros da comunidade, facilitando aprendizado atravs de exemplos
e bibliotecas de cdigos disponveis na internet. Somado a isso, o custo das
placas Arduino bem pequeno se comparado a outras plataformas um pouco mais
sosticadas, sendo mais um atrativo para a escolha dessa plataforma. Uma placa
arduino uno custa vinte reais no varejo, valor quatro vezes menor que uma placa
Raspberry pi e dez vezes menos que uma placa raspberry pi 3, por exemplo.
A placa escolhida para esta aplicao foi o Arduino Uno R3, que baseada no
3
-
micro controlador ATmega328P, e est representada na gura 2.1. Pode-se observar
que a placa composta 14 portas digitais que podem ser congurados como entrada
ou sada (portas 0 a 13 na parte superior da imagem), das quais seis funcionam
como sada analgica (portas 3, 5, 6, 9, 10 e 11) e duas para comunicao serial
(pino 0 de entrada e pino 1 de sada). Ela possui ainda 6 portas de entradas
analgicas (A0 at A5 no canto inferior direito), dois pinos de alimentao de sada,
uma de 3.3V e outra de 5V, um pino de alimentao de entrada (5V), alm de um
pino de reset. A placa conta tambm com uma conexo USB para comunicao
serial, um boto de reset fsico, uma entrada para fonte externa, e um header ICSP
(In-circuit serial programming), que serve para comunicao com perifricos, como
mdulos externos e Shields 1, atravs do protocolo SPI (serial peripheral interface).
O header ICSP possui dois pinos de alimentao (VCC e terra), um pino de controle
(reset), e trs pinos para conexo SPI: MOSI, pino que envia dados ao perifrico,
MISO, que recebe dados do perifrico, e SCK, que controla o pulso/clock da conexo.
Figura 2.1: Pinagem da placa Arduino Uno R3
A tabela 2.1 mostra as especicaes tcnicas da placa Arduino Uno R3. Ela
opera com cinco volts de tenso, podendo ser alimentada com tenso entre seis
e vinte volts. O consumo de corrente nas portas digitais baixo, de apenas 20
1placa de circuito impresso com conectores que se encaixam na parte superior de uma placaarduino (Citar wikipedia)
4
-
Tabela 2.1: Especicaes tcnicas do Arduino Uno R3Microcontroller ATmega328POperating Voltage 5VInput Voltage(recommended)
7-12 V
Input Voltage(limit)
6-20 V
Digital I/O Pins 14 (6 provide PWM output)PWM Digital I/O Pins 6Analog Input Pins 6DC Current per I/O Pin 20 mADC Current for 3.3 pins 50 mA
Flash Memory32 KB (ATmega328P)0.5 KB used by bootloader
SRAM 2 KB (ATmega328P)EEPROM 1 KB (ATmega328P)Clock Speed 16 MHzLED_BUILTIN 13Lenght 68.6 mmWidth 53,4 mmWeight 25 g
mA por porta, exceto a porta de alimentao com 3.3V que fornece 50 mA. A
memria ash do micro controlador de 32 KB, considerada baixa se comparada
a outros micro controladores. Em aplicaes de monitoramento de sensores e
controle de atuadores, porm, essa congurao suciente, e foi utilizada devido
aos seguintes pontos: simplicidade, ampla comunidade interativa e capacidade
de se agregar funcionalidades ao micro controlador atravs de mdulos externos
e Shields. A comunidade do Arduino incentiva a troca de experincia entre os
usurios, e possui fruns online ociais e no ociais para troca de contedo, ideias
de projetos, bibliotecas de programao, dentre outras informaes. Somado a
isso, as placas arduino so muito intuitivas de serem utilizadas, elas funcionam
atravs da congurao das portas digitais como entrada ou sada, para realizar
uma innidade de aplicaes distintas, atravs da integrao dos mais variados de
mdulos ou Shields.
Os mdulos externos e Shields so placas eletrnicas, sensores, ou atuadores,
que quando conectados ao Arduino agregam alguma nova funcionalidade ao mesmo.
A grande diferena entre eles a maneira com que so conectados ao Arduino,
como ser visto a seguir.
5
-
Na gura 2.2, temos o diagrama de conexo entre o Arduino Uno R3 e um
mdulo rel de dois canais. Pode-se perceber que a conexo realizada por meio de
os interligando a placa e o mdulo rel. Este recebe o positivo (5 volts) e negativo
(terra) da alimentao do arduino, alm de dois os de controle dos rels, um para
cada canal.
Os Shields, em contrapartida, so projetados para serem acoplados em cima
do Arduino, como visto na gura 2.3, em que temos uma placa Arduino Uno R3
junto a um XBee Shield, possibilitando ao Arduino utilizar comunicao por rdio
frequncia com outros mdulos XBee. Os shields podem ainda ser empilhados,
quando vrios so utilizados, caso no haja conito entre as portas utilizadas por
cada um, ou incompatibilidade fsica entre eles.
Figura 2.2: Mdulo rel de dois canais para arduino
6
-
Figura 2.3: Shield XBee para arduino
Para a aplicao deste trabalho, que utiliza a internet ou rede local para acionar
os atuadores, foi utilizado o Ethernet Shield W5100, que possibilita o Arduino se
conectar internet atravs de um cabo de rede ethernet. Esse shield, que est
representado na gura 2.4, baseado no chip WIZnet ethernet 5100 que fornece
acesso rede (IP) atravs dos protocolos TCP ou UDP. Ele compatvel com o
Arduino Uno e Arduino Mega, e possui um slot para carto de memria micro SD
para armazenar dados, que podem inclusive ser utilizados na rede. A comunicao
do Arduino Uno R3 com o chip WIZnet ethernet 5100 e com o carto micro SD
ocorre pelos pinos 11, 12 e 13, que espelham em paralelo os pinos MOSI, MISO
e SCK do header ICSP. A entrada digital 10 usada para selecionar o W5100,
e o pino 4 para o carto micro SD, impossibilitando o uso destes para outros
propsitos. O shield ainda conta com um boto de reset, que reinicia tanto o
shield quanto a placa Arduino a que ele esteja acoplado, como uma srie de leds
que indicadores de status como: se o shield est energizado, se h conexo
rede, ocorrncia de envio e recepo de dados, velocidade da conexo de rede e
indicador de coliso na rede. A tabela 2.2 relaciona os leds a suas respectivas funes.
7
-
Figura 2.4: Ethernet Shield para arduino
Tabela 2.2: Leds indicadores do Shield EthernetPWR indicates that the board and shield are powered
LINKindicates the presence of a network link and ashes
when the shield transmits or receives data
FULLHD indicates that the network connections is full duplex
100Mindicates the presence of a 100 Mb/s network
connection (as opposed to 10 Mb/s)
RX ashes when the shield receives data
TX ashes when the shield sends data
COL ashes when network collisions are detected
IDE Arduino
A gura 2.5 mostra o IDE do Arduino, o Ambiente de desenvolvimento integrado
que utilizado para criar os rotinas que sero utilizadas pelo micro controlador
ATmega328P para comandar sua aplicao.
8
-
Figura 2.5: IDE do Arduino
Os cdigos das rotinas no IDE do Arduino so escritos em C++, e algumas das
bibliotecas de suporte esto em C/C++. Os programas criados so denominados
sketches, e seu nome aparece ao topo da pgina. Logo acima, h uma aba com seis
botes. O primeiro boto esquerda serve para compilar a sketch, seguido pelo
boto de upload, que carrega a sketch para a placa Arduino atravs de um cabo
USB. Em seguida vem os botes de criar nova sketch, carregar uma sketch salva, e
salvar sketch, nessa ordem. O ltimo boto, no lado direito desta aba o boto
de monitoramento serial, que serve para monitorar o que o Arduino conectado
porta USB do envia para a sada serial, atravs do mtodo Serial.print() ou Se-
rial.write(), possibilitando a anlise em tempo real da aplicao. Abaixo desta aba
h a rea reservada para escrever o cdigo, com uma coluna a esquerda indicando
as linhas do cdigo escrito. Abaixo da rea de cdigo ca a rea de depurao,
onde o IDE informa os erros de compilao ou carregamento para a placa, caso
algum ocorra, e tambm informa quanto de memria ash e ram o programa utiliza
do total disponvel. Logo a esquerda no rodap, temos a indicao da linha de
cdigo em que est o cursor do teclado, e do lado direito do rodap temos a indica-
o do modelo da placa conectada a porta serial, e em qual porta ela est conectada.
9
-
Como pode-se notar na rea de codicao da gura 2.5, a sketch possui
duas funes em branco: funo setup e funo loop. Toda vez que uma nova
sketch criada, ela j vem com essas duas funes escritas, pois toda e qualquer
sketch para Arduino deve conter essas duas funes, ambas do tipo void, que
signica que elas no retornam nenhum valor quando chamadas. A funo setup
chamada automaticamente pelo ATmega328P toda vez que o programa for
inicializado, seja pelo carregamento deste para a placa, ou quando reinicializado
por um reset. Nela so realizadas todas as conguraes iniciais do programa,
como congurao das portas digitiais e analgicas, inicializao da comunicao
serial, quando utilizada, e quaisquer outra congurao que seja necessria realizar
assim que o programa iniciar. Assim que a funo setup termina, a funo loop
ser chamada continuamente at o m da execuo do programa, seja por uma
parada forada pelo prprio cdigo, ou pelo desligamento da placa Arduino,
caso contrrio, a funo loop continuar sendo chamada ininterruptamente toda
vez que ela terminar de ser executada. Na funo loop encontra-se o cdigo
responsvel pelo comando da aplicao em si. possvel criar outras funes alm
das duas obrigatrias, e elas podem ser chamadas de dentro das funes setup e loop.
2.2 XBee Pro s2
O mdulo XBee Pro s2 um micro controlador produzido pela Digi International,
e est representado na gura 2.6. A comunicao entre os mdulos XBee segue
o protocolo ZigBee (IEEE 802.15.4). A escolha desse protocolo foi feita baseado
em seu alcance e sua resiliencia a interferncia. Realizando um comparativo
com os protocolos bluetooth e WiFi (IEEE 802.11), constata-se que ela pos-
sui alcance efetivo muito superior ao bluetooth, que possui apenas 10 metros
contra 90 metros do protocolo ZigBee, e equivalente ao wi , diferenciando-se
deste pela melhor resiliencia interferencia. O custo dos mdulos porm um
pouco mais elevado, cerca de 100 reais por mdulo XBee no varejo, contra 20
reais dos mdulos bluetooth e 15 reais dos mdulos WiFi ESP 8266. Apesar
do maior custo, a conabilidade dos mdulos XBee em relao a interferncia
e seu maior alcance fornecem uma boa soluo para a aplicao proposta. As
comunicaes por este protocolo so realizadas nas faixas de frequncia que no
necessitam de licena (ISM industrial, scientic and medical radio band) com
taxa de transferncia de dados diferente para cada uma delas. O modulo XBee uti-
lizado opera na faixa de 2.4 GHz, com 16 canais e taxa de transferncia de 250 kbps.
10
-
Figura 2.6: Mdulo XBee Pro s2
A tabela 2.3 mostra a pinagem do mdulo XBee Pro S2. Ele composto por
vinte pinos, sendo dois de alimentao: VCC (pino 1) e terra (pino 10), dois pinos
de transferncia de dados serial (pino 2 de sada e pino 3 de entrada) e doze pinos
que podem ser congurados como entrada ou sada digitais (pinos 4, 6, 7, 9, 11, 12,
13, 15, 16, 17, 18, 19 e 20). Desses doze pinos, quatro, deles operam tambm como
entrada analgica (pinos 17, 18, 19 e 20) e dois podem ser congurados pra realizar
outras funes: o pino 13, de sada, que indica se o mdulo est em repouso ou no,
e o pino 9, de entrada, para controlar o modo de repouso do mdulo. Alm disso,
h tambm outros dois pinos de entrada: um para reiniciar o mdulo (pino 5) e
um que fornece a tenso de referncia para as entradas analgicas e digitais (pino 14).
11
-
Tabela 2.3: Pinagem do XBee Pro s2Pin # Name Direction Default State Description
1 VCC - - Power supply
2 DOUT Output Output UART Data Out
3 DIN / CONFIG* Input Input UART Data In
4 DIO12 Both Disabled Digital IO 12
5 RESET Both
Open
Collector
with pull-up
Module Reset (reset
pulse must be at least
200 ns)
6 RSSI PWM / DIO10 Both Output
RX Signal Strnght
Indicator
or Digital IO 10
7 DIO11 Both Input Digital IO 11
8 [reserved] - Disabled Do not connect
9DTR* / SLEEP_RQ/
DIO8Both Input
Pin Sleep Control Line
or Digital IO 8
10 GND - - Ground
11 DIO4 Both Disabled Digital IO 4
12 CTS* / DIO7 Both Output
Clear-to-Send Flow
Control
or Digital IO 7.
13 ON / SLEEP* Output OutputModule Status Indicator
or Digital IO 9
14 VREF Input -
Reference Voltage pin
connected when sampling
an analog input
15 Associate / DIO5 Both OutputAssociated Indicator
or Digital IO 5
16 RTS* / DIO6 Both Input
Request-to-Send
Flow Control
or Digital IO 6.
17 AD3 / DIO3 Both DisabledAnalog Input 3
or Digital IO 3
18 AD2 / DIO2 Both DisabledAnalog Input 2
or Digital IO 2
19 AD1 / DIO1 Both DisabledAnalog Input 1
or Digital IO 1
20AD0 / DIO0 /
Comissioning ButtonBoth Disabled
Analog Input 0
or Digital IO 0
A tabela 2.4 mostra as especicaes tcnicas do mdulo XBee PRO S2. Como
se pode notar, ele possui alcance de 90 metros em ambientes fechados e reas
urbanas. Essa distncia essa que aumenta para at 1500 metros em reas abertas.
Sua tenso de operao de 3.3 volts, com potncia de transmisso de 10 mW,
e taxa de transferncia de dados de 250 kbps atravs da comunicao por rdio
frequncia, e at 1 Mbps pela comunicao serial.
12
-
Essas caractersticas tornam este mdulo uma excelente escolha em aplicaes
de automao utilizando redes sem o. Principalmente pelo baixssimo consumo,
devido ao eciente sistema de modo de repouso dos mdulos, e tambm pelo alcance
obtido com a sua utilizao, muito superior ao bluetooth (10 metros) e superior ao
WI-FI (70 metros). Para aplicaes que utilizem udios e vdeos, porm, essa no
a melhor alternativa, devido baixa taxa de transferncia de dados se comparado
s outras tecnologias.
Tabela 2.4: Especicaes tcnicas XBee Pro s2Specication XBee Pro (s2)
Supply voltage 3.0 - 3.4 V
Operating Current (transmit) 295 mA (@3.3 V)
Operating Current (receive) 45 mA (@3.3 V)
Idle Current
(receive o)15 mA
Operating frequency band ISM 2.4 Ghz
Dimensions 2.438 cm x 3.294 cm
Operating temperature -40 to 85 Celsius (industrial)
Transmit power output17 mW (+17 dBm)
10 mW (+10 dBm) for international variant
RF data rate 250.000 b/s
Data throughput up to 35.000 b/s
Serial interface data rate1200 b/s - 1 Mb/s
(non-standard baud rates also supported)
Indoor / urban rangeUp to 300 ft. (90 m)
Up to 200 ft. (60 m) international variant
Outdoor RF line of sight rangeUp to 2 miles (3200 m)
Up to 5000 ft (1500 m) international variant
Atravs da integrao dos mdulos XBee, possvel criar redes sem o de
diversas topologias, como: par, estrela, malha e rvore. Cada mdulo atua como
um n da rede, e pode realizar trs possveis papis: coordenador, roteador ou
dispositivo nal. Esses papis servem para denir uma hierarquia de comunicao
entre os mdulos, e tambm para denir as funes que cada um deles dever
exercer na mesma. A gura 2.7 abaixo ilustra um exemplo de rede Zigbee e os
papis exercidos pelos mdulos na rede: coordenador (C), roteador (R) e dispositivo
nal (E).
13
-
Figura 2.7: Redes Zigbee
Cada rede ZigBee dever possuir um nico coordenador, que responsvel por
congurar o resto da rede. Ele responsvel por congurar as caractersticas nicas
da rede local ZigBee, permitir entrada de roteadores e dispositivos nais na rede,
e auxilia no roteamento de dados, nunca podendo entrar em modo de economia de
energia.
Os roteadores podem ser vrios em uma rede ZigBee e eles realizam basicamente
as mesmas funes do coordenador, mas, diferentemente do coordenador, ele no
participa das conguraes da rede. Aps se juntar a rede, ele pode permitir
a entrada de outros roteadores e dispositivos nais ligados a ele e auxilia no
roteamento de dados.
Os dispositivos nais tambm podem ser inmeros numa rede ZigBee e ge-
ralmente so utilizados juntos a sensores e atuadores devido sua capacidade
de entrar em modo de economia de energia. Ao contrrio do coordenador e dos
roteadores, porm, eles no podem auxiliar no roteamento de dados.
Em uma rede ZigBee os mdulos XBee possuem ainda dois modos de operao:
AT e API. O modo de operao AT o mais simples, e utilizado para mdulos
desempenhando papel de dispositivo nal, ou em redes com topologia par. Um
mdulo congurado desta maneira pode-se conectar a apenas um outro mdulo,
e todo dado recebido pelo seu pino de entrada serial, ou pelos dados recebidos
nas portas de entrada solicitados por outro mdulo, so transmitidos ao mdulo
adjacente via radio frequncia, como mostrado na gura 2.8.
14
-
Figura 2.8: Modo de operao AT
O modo de operao API mais complexo, pois permite ao XBee se conectar
a vrios XBees adjacentes, sejam eles API ou AT. Neste modo de operao, os
mdulos podem enviar frames de bytes para os outros mdulos da rede, permitindo
assim o envio de comandos ou dados a diversos mdulos da rede, e no apenas a
um mdulo como acontece no modo AT. Esses frames possuem a estrutura padro
mostrada na gura 2.9, sendo composto por um byte inicial, o tamanho do frame,
e os bytes correspondentes a cada tipo de frame disponvel. A tabela 2.5 lista os
tipos de frames API existentes.
Figura 2.9: Estrutura dos frames API
Dentre os tipos de frame disponveis, apenas dois foram utilizados neste traba-
lho: Remote AT Command e Zigbee Transmit Request. O Remote AT command
o tipo de frame utilizado quando se deseja realizar uma congurao remota de um
outro mdulo, como por exemplo acionamento das portas digitais ou alterao de
conguraes padro. A tabela 2.7 mostra um exemplo de remote AT command,
em que a porta digital D1 congurada como em estado alto (3.3 volts). O Zigbee
Transmit Request o tipo de frame utilizado quando se deseja enviar bytes de
dados a um outro mdulo da rede. A tabela 3.3 mostra um exemplo em que
enviado oito caracteres ("fanpower") de dados para o mdulo XBee conectado ao
mdulo capaz de controlar o ventilador de teto.
15
-
Tabela 2.5: Tipos de frame APIAPI Frame Names API IDAT Command 0x08AT Command - Queue Parameter Value 0x09Zigbee Transmit Request 0x10Explicit Addressing Zigbbe Command Frame 0x11Remote Command Request 0x17Create Source Route 0x21AT Command Response 0x88Modem Status 0x8AZigbee Transmit Status 0x8BZigbee Receive Packet (AO=0) 0x90Zigbee Explicit Rx Indicator (AO=1) 0x91Zigbee IO Data Sample Rx Indicator 0x92XBee Sensor read Indicator (AO=0) 0x94Node Identication Indicator (AO=0) 0x95Remote Command Response 0x97Over-the-air rmware update status 0xA0Route Record Indicator 0xA1Many-to-one Route Request Indicator 0xA3
2.2.1 Congurao dos XBees
Para congurar uma rede ZigBee, preciso congurar cada um dos mdulos
presente na mesma individualmente. Essa congurao pode ser realizada de trs
maneiras distintas: atravs do software Digi XCTU, atravs de comandos enviados
pela porta serial, ou atravs de comandos por radio frequncia a partir de um
mdulo operando em modo API, adjacente ao mdulo a ser congurado, ou pelo
coordenador da rede.
Congurao pela porta serial
A congurao via porta serial pode ser utilizada tanto para alterar parmetros
de mdulos j conectados rede, como para congurar mdulos que ainda no esto
conectados ela. Para congurar ou ler os parmetros do mdulo, necessrio que
o mesmo entre em modo de comando, modo no qual os caracteres na porta serial
so interpretados como comandos. Para entrar no modo de comando, deve-se enviar
a sequencia de caracteres +++ na porta de entrada serial, e aguardar a resposta
ok\r na sada serial. Dentro do modo de comando, basta utilizar a sequncia
ilustrada na gura 2.10, composta pelo prexo AT, a sigla do comando composta
por dois caracteres, um espao, o parmetro em hexadecimal (caso esteja em branco
congura uma leitura daquele parmetro), seguido por ultimo dos caracteres de
16
-
Tabela 2.6: Exemplo de Zigbee Transmit RequestFrame Fields Byte Example DescriptionStart Delimiter 0 0x7E Byte inicial
Lenght1 0x00
Nmero de bytes do frame-specic-data2 0x16
Frame-specicData
Frame Type 3 0x10 Tipo de frame (Zigbee transmit request)
Frame ID 4 0x01Mensagem de status de transmisso0x00 = desabilita mensagem
64-bitDestinationAddress
5 0x00
Endereo do mdulo XBee de destinodo Zigbee Transmit Request
6 0x137 0xA28 0x009 0x4010 0x9B11 0x1212 0x6B
16-bitDestinationNetworkAddress
130xFF
.Endereo da rede de destino doZigbee transmit request
FFFE = broadcast140xFE
.
BroadcastRadius
15 0x00Dene nmero mximo de saltos de umatransmisso broadcast.0x00 = nmero mximo de saltos
Options 16 0x00Opes de transmisso0x00 = opes padro
RF Data
17 f
Dados a serem transmitidos
18 a19 n20 p21 o22 w23 e24 r
Checksum 25 checksum0xFF - 8 bits da soma dos bytes doFrame-specic-data
17
-
Tabela 2.7: Exemplo de comando AT remotoFrame Fields Byte Example DescriptionStart delimiter 0 0x7E Byte inicial
LenghtMSB 1 0x00 Comprimento da mensagem
(Nmero de bytes do frame specic data)LSB 2 0x10
Frame-Specicdata
Frame Type 3 0x17 Especica o tipo de frame
Frame ID 4 0x00Mensagem de status de transmisso0x00 = desabilita mensagem
64-bit Destination Address
5 0x00
Endereo do mdulo XBee de destinodo comando AT
6 0x137 0xA28 0x009 0x4010 0x9B11 0x1212 0x5F
16-bit Destination Network Address13 0xFF Endereo da rede de destino do comando
FFFE = broadcast14 0xFE
Remote Command Options 15 0x02Opes de comando remoto0x02 = aplicar mudanas
AT Command16 0x44 Comando AT
D1 (ASCII) = 4431 (hexadecimal)17 0x31
Command Parameter 18 0x05Parametro do comando enviado0x05 = Sada digital alta (3.3 V)
Checksum Checksum 19 0x6E Byte de vericao
concluso do comando \r. Por exemplo, o comando representado na gura 2.10,
ATD1 05\r, possui os dois primeiros dgitos referentes ao comando AT, depois
os caracteres D1, referentes congurao da porta de entrada e sada digital 1,
seguido pelos dois caracteres de parmetro 05, equivalentes a congurar a porta
como sada em estado alto (3.3v), e por ltimo os caracteres \r de retorno. Para
cada comando enviado, uma mensagem de conrmao ser emitida em resposta,
assim como ao entrar no modo de comando. Para que os comandos quem salvos
na memria do mdulo aps um reset fsico futuro, deve-se enviar o comando WR
(write), logo aps a resposta de conrmao. No apndice h a tabela que mostra
todos os comandos AT existentes e suas siglas e parmetros.
Figura 2.10: Exemplo de comando AT
Congurao pelo Digi XCTU
O software Digi XCTU, oferece uma interface mais amigvel e fcil para a
congurao dos mdulos XBee, e assim como na congurao via serial, pode-se
tanto alterar parmetros de mdulos j conectados, como tambm congurar
18
-
mdulos que ainda iro se juntar rede. O software ir converter os parmetros
denidos nele em comandos que sero enviados pela porta serial, como mostrado
na congurao pela porta serial. No exemplo ilustrado na gura 2.11, est sendo
realizada a congurao da porta digital 1 como sada e denindo seu estado lgico
como alto (3.3v). Para congurar o mdulo atravs do software, necessria a
utilizao do XBee Explorer, representado na gura 2.12, um adaptador serial que
conecta o mdulo XBee ao computador via USB.
Figura 2.11: Digi XCTU
Figura 2.12: XBee Explorer
19
-
Congurao remota
Ao contrrio da congurao via porta serial e atravs do software, a congu-
rao remota utilizada somente para alterar parmetros de mdulos que j esto
conectados rede ZigBee. Ela realizada a partir de um mdulo operando em
modo API, que envia os comandos AT via radio frequncia para o mdulo que se
deseja congurar. O comando AT enviado dentro de um frame com vinte bytes,
ilustrado na tabela, que especica os campos do frame nas duas primeiras colunas,
a numerao dos bytes na terceira, os valores de exemplo para congurar a porta
digital D1 como porta de sada em estado alto na quarta coluna, e por ultimo a
descrio dos bytes. O frame composto por um byte de inicio da mensagem, dois
bytes para determinar o tamanho em bytes da mensagem, um byte para especicar
se a mensagem um comando ou uma requisio de dados, um byte para requisitar
status de envio da mensagem, oito bytes do endereo de destino, dois bytes do
endereo da rede de destino, um byte de opes de comandos remotos, dois bytes
para o comando AT (um para cada caractere da sigla do comando), um byte com o
valor do parmetro a ser mudado, e um byte nal de vericao do numero de bytes
da mensagem. Este ltimo byte deve ser calculado corretamente, caso contrrio a
mensagem no enviada. Para calcular o byte checksum, deve-se somar todos os
bytes de 3 a 18, selecionar apenas os 8 bits menos signicativos e subtrair de 0xFF.
No exemplo da tabela 2.7, a soma dos bytes em hexadecimal 0492, cujos 8 bits
menos signicativos so 1001 0010. Subtraindo isso de 1111 1111, temos: 0x6E em
hexadecimal.
2.3 MIT App Inventor 2
O MIT App Inventor um ambiente de programao visual de aplicativos para
smartphones e tablets que utilizam sistema operacional Android, e foi desenvolvido
com o objetivo de tornar a programao de aplicativos acessvel a todos, incluindo
pessoas que no tm conhecimento de programao e at crianas. Devido sua
ferramenta baseada em blocos, que so arrastados com o mouse do computador
para adicionar as funcionalidades do aplicativo e para criar a lgica que comanda
o programa, possvel criar aplicativos sem ser preciso escrever uma nica linha
de comando. Sua escolha foi realizada visando otimizar o tempo disponvel para a
realizao do projeto, devido a sua simplicidade de desenvolvimento. Como o foco
do projeto era o desenvolvimento do sistema de automao como um todo e no
apenas o aplicativo, a utilizao desta ferramenta permitiu o desenvolvimento de
um aplicativo funcional em bem menos tempo.
20
-
O ambiente permite ainda o acompanhamento e teste em tempo real do apli-
cativo que est sendo criado. Para isso, necessria a utilizao de um emulador
de android no computador (aiStarter), ou a utilizao do aplicativo MIT AI2
Companion, que pode ser baixado para seu smartphone ou tablet. Para realizar o
acompanhamento em tempo real, basta clicar no menu Connection e selecionar
a opo desejada: AI Companion, para fazer upload dos arquivos referentes ao
aplicativo para um smartphone ou tablete que esteja conectado mesma rede
WIFI, USB, para enviar os arquivos pela porta USB para o dispositivo desejado,
ou Emulator, para transferir os dados do browser para o computador. O aplicativo
ir aparecer na tela do dispositivo ou emulador, e qualquer mudana efetuada no
browser ser realizada em tempo real no dispositivo.
O ambiente de desenvolvimento do MIT App Inventor dividido em duas
sees: design e blocks. Na seo design, representada na gura 2.13, o usurio
adiciona e congura todos os componentes e funcionalidades desejadas em seu
aplicativo, organiza a interface grca do mesmo e adiciona mdias que sero
utilizados na sua execuo. Ela dividida em quatro reas: Palette, Viewer,
Components e Properties. Na rea Palette (retngulo amarelo) encontram-se todos
os componentes disponveis para desenvolvimento do aplicativo, e dividida em
onze tipos de componentes: user interface, layout, media, drawing and animation,
sensors, social, storage, connectivity, lego mindstorms, experimental e extension.
Para adicionar qualquer componente ao seu aplicativo, basta clicar sobre ele com o
mouse e arrast-lo para a rea Viewer (retngulo vermelho), rea em que possvel
organizar a disposio em que os componentes aparecero no aplicativo. Quando
o componente adicionado rea Viewer, ele automaticamente aparece listado
na rea Components (retngulo verde), que serve para selecionar os diferentes
componentes que fazem parte do aplicativo. Por tltimo, a rea Properties serve
para congurar as propriedades dos componentes selecionados na rea Components.
Cada componente possui caractersticas distintas, e portanto, diferentes proprieda-
des que podem ser conguradas.
21
-
Figura 2.13: Seo Designer do MIT App Inventor 2
J na seo blocks, mostrada na gura 2.14, o usurio estrutura a lgica e o
funcionamento do aplicativo atravs da integrao dos variados componentes que
foram adicionados na seo de design. Essa estruturao realizada atravs de
blocos de texto, lgica, variveis, cores, dentre outros, que so organizados pelo
usurio utilizando o mouse do computador para arrast-los para a rea de criao,
conectando um bloco ao outro. Esta seo dividida em duas reas: Viewer
(retngulo vermelho) e Blocks (retngulo amarelo). Na rea blocks esto contidos
todos os blocos que sero utilizados para determinar o funcionamento do aplicativo.
Nela esto disponveis blocos built-in, que so responsveis pela lgica funcional
do aplicativo, e blocos referentes aos componentes adicionados na seo de design.
Dentre os blocos built-in, existem: blocos de controle, lgica, matemtica, texto, lis-
tas, cores, variveis e procedimentos. Ao clicar sobre qualquer das opes de blocos
disponveis, uma paleta ir se abrir (retngulo verde), mostrando todas as opes
de blocos referentes quela opo. A gura 2.15, ilustra o arranjo ampliado presente
da rea viewer da gura 2.14, que determina o comportamento do aplicativo quando
o boto turn_o do aplicativo for pressionado. Nesse arranjo, tem-se um bloco
do componente Boto, dois blocos do componente WEB e trs blocos de texto. Ao
clicar no boto turn_o, boto vermelho na rea Viewer da gura 2.13, o bloco
marrom ativado, completando assim a ao determinada nos blocos englobados
por ele. Primeiro, temos o bloco verde, que congura a URL do componente WEB
para o texto contido nos blocos em cor rosa (unio dos blocos de texto direita do
bloco verde), formando a URL http://192.168.0.200/80/ReqL01_0m. Em seguida
h a ativao do bloco roxo que envia uma solicitao GET para a URL citada, que
corresponde URL do web server rodando no arduino, como ser visto a seguir.
22
-
Figura 2.14: Seo Blocks do MIT App Inventor 2
Figura 2.15: Blocos e lgica de programao do MIT App Inventor 2
23
-
Captulo 3
Implementao do sistema de
automao residencial
Neste captulo ser abordada a metodologia utilizada para a implementao do sis-
tema de automao residencial utilizando a plataforma Arduino e o protocolo de
comunicao por rdio frequncia Zigbee. Inicialmente ser explicado a arquitetura
do sistema, que composto por um mdulo central, um mdulo de atuador rel e
um modlo de atuador infravermelho. Sero apresentados tambm os componentes
fsicos e os cdigos de programao utilizados em cada um desses mdulos. Em se-
guida, ser mostrado como foi congurada a rede Zigbee para realizar a comunicao
entre os mdulos do sistema. Por m, ser explicado o funcionamento do aplicativo
para smarthphone e a lgica de programao utilizada em seu desenvolvimento.
3.1 Arquitetura
O mtodo proposto o sistema de automao residencial consiste na substituio
do acionamento de aparelhos eltricos e eletrnicos, e iluminao de um ambiente
atravs de aplicativo em celulares ou tablets. O sistema, representado na gura
3.1, possui uma arquitetura centralizada, em que os comandos so recebidos
pelo mdulo central, que interpreta, e os redireciona aos mdulos atuadores, que
so encarregados de controlar os dispositivos nais (lmpadas, ar condicionado
e ventilador de teto). So dois os tipos de mdulos atuadores: mdulo atuador
de rels, responsvel pelo acionamento das lmpadas e o mdulo atuador por
infravermelho, responsvel por enviar os sinais infravermelhos ao ar condicionado e
ao ventilador de teto.
24
-
Figura 3.1: Arquitetura do sistema de automao residencial
A comunicao entre os usurios, atravs do aplicativo, e o sistema se d atravs
de um servidor web, criado no mdulo central. Ele possibilita o envio de comandos
do aplicativo ao mdulo central do sitema atravs da internet, ou atravs da rede
local mesmo que sem acesso internet. A comunicao entre os mdulos do
sistema, por sua vez, realizada atravs de rdio frequncia, via protocolo zigbee
como apresentado na seo 2.2, atravs dos XBees presentes em cada mdulo do
sistema, que formam uma rede zigbee.
3.2 Rede Zigbee
A rede Zigbee utilizada no projeto possui uma topologia bem simples, visto que
composta apenas por 3 XBees, sendo: um XBee conectado ao mdulo central
do sistema de automao na funo de coordenador da rede em modo API, e dois
XBees conectados aos mdulos atuadores na funo de roteador, sendo um em modo
AT e outro em modo API. A congurao dos XBees foi feita utilizado o software
digi XCTU e um XBee explorer. Cada XBee foi congurado individualmente, mas
todos eles utilizando os mesmos procedimentos, que sero mostrados a seguir. O
primeiro passo consiste em adicionar o XBee ao programa. Para isso deve-se clicar
no cone envolvido em vermelho na gura 3.2, e selecionar a porta USB onde o
XBee est conectado, como na gura 3.3, apertando next em seguida.
25
-
Figura 3.2: Janela do Digi XCTU
Figura 3.3: Janela de seleo da porta serial
A janela, mostrada na gura 3.4, se abre para denio dos parmetros do XBee
que se deseja localizar. Caso o mdulo XBee ainda esteja com as conguraes
de fbrica, como no caso deste projeto, selecione set defaults. Caso no se saiba
a congurao daquele XBee, escolha select all, ou caso saiba as conguraes
do XBee, selecione as caixinhas correspondentes e clique em nish. Note que ao
escolher "select all", o tempo de busca ir aumentar consideravelmente.
26
-
Figura 3.4: Janela de seleo dos parmetros do xbee procurado
Caso acontea que algum XBee esteja com o rmware corrompido ou em modo
de repouso, a janela mostrada na 3.5 ser exibida e ser necessrio realizar um reset
fsico no dispositivo. Para tal, utilize o boto de reset do XBee Explorer caso o ele
possua, ou, caso contrrio, utilize um jumper para ligar o pino de reset do modulo
XBee (pino 5) ao pino ground (pino 10). Note que ligar os pinos de reset e ground
do XBee explorer no tem o mesmo efeito.
Figura 3.5: Janela de erro solicitando reset fsico do xbee
27
-
Figura 3.6: Janela com dispositivos encontrados
Os dispositivos localizados so listados na janela ilustrada na gura 3.6.
Para adicion-lo, basta selecion-lo e clicar em add selected devices. O XBee
adicionado ser exibido dentro do retngulo vermelho ilustrado na gura, e aps
clicar sobre ele, suas informaes sero lidas pelo programa e posteriormente
exibidas no retngulo amarelo, onde todas as conguraes desejadas podem ser
realizadas. Para escolher a funo e modo de operao do XBee, deve-se clicar no
cone update, que ir abrir a janela mostrada na gura 3.7. Escolhe-se ento o
modelo do XBee, a funo que deseja congur-lo e o rmware a ser utilizado por ele.
28
-
Figura 3.7: Conguraes gerais dos XBees
Figura 3.8: Congurao do modo de operao do XBee
As demais conguraes podem ser todas realizadas na rea do retngulo
laranja citada anteriormente. Os mdulos utilizados neste projeto foram todos
congurados com mesmo PAN ID (AAA000), para que pertenam mesma rede,
e foram mantidas todas as conguraes de fbrica, menos as mostradas na tabela
3.1 para cada XBee.O XBee conectado ao mdulo central foi congurado como
coordenador API, podendo assim enviar frames API para cada um dos mdulos
atuadores. O XBee conectado aos rels que controlam as lmpadas foi congurado
29
-
Tabela 3.1: Congurao dos mdulos XBeeModo de operao Conguraes alteradas
Mdulo Central Coordenador API ID: AAA000
Mdulo do atuador rel Roteador ATID: AAA000D0: Digital Output, LOWD1: Digital Output, LOW
Mdulo do atuador infravermelho Roteador API ID: AAA000
como roteador em modo AT, para que possa receber frames de comandos AT
remotamente. Alm disso, ele teve todas as portas digitais desabilitadas, menos as
portas D0 e D1, conguradas como pinos de sada digital, para controle dos dois
rels. Por m, o XBee conectado ao mdulo infravermelho foi congurado como
roteador API, para poder receber dados atravs de frames de transmit request, e
teve todas os pinos digitais desabilitados.
3.3 Mdulo central
O mdulo central composto por uma placa Arduino Uno com o ethernet shield
acoplado e conectada a um XBee atravs de jumpers, como visto na gura 3.9. O
shield ethernet possibilita a conexo do Arduino ao modem da residncia atravs de
um cabo ethernet, enquanto que o ca responsvel por permitir a comunicao do
mdulo central com os mdulos atuadores (rel e infravermelho) da residncia por
rdio frequncia. O arduino por sua vez, ca encarregado de criar um servidor web,
atravs do qual os comandos oriundos dos dispositivos dos usurios chega ao sistema
de automao, interpretar esses comandos e redirecion-los aos mdulos necessrios.
Como visto na seo 2.2, a alimentao do XBee se d pela conexo do pino 1
sada 3.3V do arduino, e o pino 10 ao terra, enquanto que a comunicao serial se
d pela conexo dos pinos Tx e Rx do arduino aos pinos Din e Dout, respectivamente.
30
-
Figura 3.9: Esquema de montagem do mdulo rel
A congurao do mdulo central foi realizada em algumas etapas. Primeira-
mente, congurou-se o XBee, como visto na seo 3.2, para que ele seja coordenador
em modo API, permitindo assim enviar frames com dados ou comandos para os
demais XBees do sistema.
Em seguida criou-se a sketch para o arduino do mdulo central, disponvel no
apndice. A sketch Modulo_central composta pelas duas funes obrigatrias
setup e loop, alm de quatro outras funes: redirect_commands, set_relay, set_ir
e send_app.
Figura 3.10: Fluxograma de funcionamento da sketch do mdulo central
A etapa de inicializao responsvel pela incluso de bibliotecas e declarao
e/ou denio das variveis globais, e a primeira etapa que acontece ao ligar a
placa arduino. Ao m da inicializao o Arduino chama a funo Setup, onde so
inicializados a comunicao serial, responsvel pela comunicao do arduino com o
31
-
XBee, com taxa de 9600 bits por segundo, e o servidor web, que deve possuir os
7 primeiros dgitos iguais ao da rede local a que se deseja conectar, e o nmero
que sucede o ltimo ponto nal distintos dos outros dispositivos da rede (devendo
este ser menor que 255). Alm disso, o MAC address utilizado deve ser nico na
rede. Neste trabalho, utilizou-se o endereo IP 192.168.0.103, pois o IP do modem
utilizado era 192.168.0.1.
A funo Loop faz a leitura do servidor web procura de dados. Caso encontre
dados disponveis, ela preenche o buer (buf) com eles, extrai o comando enviado
desses dados, e o envia para a funo redirect_commands atravs de um array de
oito caracteres. Em seguida esvazia os buers e variveis e reinicia o loop. Caso no
haja dados, ela continua o loop normalmente at que algum dado esteja disponvel.
A funo redirect_commands recebe um array de oito caracteres com o co-
mando enviado pela funo loop, decodica o comando, e o encaminha ao modulo
atuador atravs das funes set_ir e set_relay. Em seguida ela envia a resposta
ao aplicativo atravs da funo send_app e se encerra, voltando assim funo Loop.
A funo set_relay responsvel por criar um frame API para envio de comando
AT remoto ao XBee localizado no mdulo atuador rel. Ela recebe o comando com
a lmpada que se deseja controlar e a ao desejada (ligar ou desligar), e envia
um frame API do tipo remote AT command (frame type 0x10), para controlar os
rels correspondentes.O frame criado nesta funo para ser enviado ao mdulo de
atuador rel est disponvel na tabela 3.2. O primeiro byte o byte inicial (0x7E),
seguido por dois bytes que indicam o tamanho do frame entre o byte numero 3
e o byte de checksum (0x10 para 16 bytes). O byte seguinte indica o tipo de
frame que est sendo enviado (0x17 para remote AT command). O quinto byte
determina o tipo de resposta esperada (0x00 indica que no h resposta). Os bytes
de 6 a 13 contm o endereo fsico do XBee ao qual se envia o frame (O XBee no
mdulo infravermelho tem endereo 0013A200409B125F. Os bytes 14 e 15 contm
o endereo da rede Zigbee, que no caso foi denido como envio broadcast (FFFE).
Os bytes 16 e 17 denem o tipo de comando AT ('D' e '1' para escolher a con-
gurao da porta digital D1). Em seguida vem os byte do parmetro do comando
escolhido nos bytes 16 e 17 (0x04 para porta digital em 0 volts e 0x05 para porta
digital em 3.3 volts). Por m, o byte de checksum para conrmao de m do frame.
A funo set_ir, por sua vez, cria um frame API para envio de dados ao
XBee localizado no mdulo atuador infravermelho. Ela recebe o comando de
oito caracteres e reenvia este comando atravs de um frame API do tipo zigbee
32
-
Tabela 3.2: Remote AT command API FrameByte 1 0x7EByte 2 0x00Byte 3 0x16Byte 4 0x17Byte 5 0x01Byte 6 0x00Byte 7 0x13Byte 8 0xA2Byte 9 0x00Byte 10 0x40Byte 11 0x9BByte 12 0x12Byte 13 0x5FByte 14 0xFFByte 15 0xFEByte 16 0x00Byte 17 'D'Byte 18 '1'Byte 19 0x05Byte 20 0x6E
transmit request (Frame type 0x17), que ser interpretado pelo mdulo atuador
infravermelho para emitir o sinal infravermelho adequado. O frame criado nesta
funo para ser enviado ao mdulo de atuador infravermelho est disponvel na
tabela 3.3. O primeiro byte o byte inicial (0x7E), seguido por dois bytes que
indicam o tamanho do frame entre o byte numero 3 e o byte de checksum (0x16
para 22 bytes). O byte seguinte indica o tipo de frame que est sendo enviado (0x10
para zigbee transmit request). O quinto byte determina o tipo de resposta esperada
(0x00 indica que no h resposta). Os bytes de 6 a 13 contm o endereo fsico do
XBee ao qual se envia o frame (O XBee no mdulo infravermelho tem endereo
0013A200409B126B. Os bytes 14 e 15 contem o endereo da rede Zigbee, que no
caso foi denido como envio broadcast (FFFE). Os bytes 16 e 17 denem o numero
de pontos da rede para trasmisso (0x00 para mximo de pontos) e as opes do
envio (0x00 para nenhuma opo especial). Em seguida vem os 8 bytes de dados
que possuem o comando a ser enviado, que no exemplo da tabela um comando
de oito caracteres para ligar ou desligar o ventilador(fanpower). Por ltimo, o
byte de checksum para conrmao de m do frame. A funo send_app, por sua
vez, responsvel por criar um cdigo HTML com a resposta a ser enviada ao
aplicativo, com a conrmao de reenvio daquele comando. A resposta, quando re-
cebida pelo aplicativo ser interpretada para atualizar o status do sistema no mesmo.
33
-
Tabela 3.3: Zigbee transmit request API FrameByte 1 0x7EByte 2 0x00Byte 3 0x16Byte 4 0x10Byte 5 0x01Byte 6 0x00Byte 7 0x13Byte 8 0xA2Byte 9 0x00Byte 10 0x40Byte 11 0x9BByte 12 0x12Byte 13 0x6BByte 14 0xFFByte 15 0xFEByte 16 0x00Byte 17 0x00Byte 18 'f 'Byte 19 'a'Byte 20 'n'Byte 21 'p'Byte 22 'o'Byte 23 'w'Byte 24 'e'Byte 25 'r'Byte 26 0x82
34
-
3.4 Mdulos atuadores
O sistema de automao residencial implementado conta com dois mdulos distintos
de atuadores: o mdulo de atuador rel e o mdulo de atuador infravermelho.
Ambos os mdulos possuem XBees para se comunicar com a central, mas sem
comunicao entre eles. Os mdulos recebem os comandos redirecionados pela
central e atuam de maneira a controlar os dispositivos nais.
3.4.1 Mdulo de atuador rel
Os mdulos rel atuam no controle das lmpadas e foram implementados para subs-
tituir o acionamento mecnico atravs dos interruptores. Como mostra a gura 3.11,
este mdulo composto por um XBee e um rel de dois canais (um para cada lm-
pada), um regulador de tenso (para alimentar o XBee com 3.3 volts) e conectado
a duas lmpadas, representadas na gura por duas resistncias. Cada rel alimen-
tado com 5 volts, e possui um pino de controle conectado aos pinos 11 (D0) e 12 (D1)
do XBee. Alm disso, possuem outros trs pinos: o pino comum, conectado fase
da tomada, e os pinos normalmente fechado (desconectado) e normalmente aberto
(conectado lmpada). Quando o boto de acender a lmpada acionado, o pino
digital do XBee referente lmpada desejada energizado com 3.3 volts, acionando
o pino de controle do rel, permitindo que a tenso de 110 volts da tomada chegue
at a lmpada acendendo-a.
Figura 3.11: Esquema de montagem do mdulo rel
3.4.2 Mdulo atuador infravermelho
Os mdulos IR atuam no controle de dispositivos que normalmente precisam de
um controle remoto para control-los, como ar condicionados, ventiladores de teto,
televises, dvd-players, dentre outros. Neste projeto foram controlados apenas
um ar condicionado e um ventilador de teto. Como mostrado na gura 3.12, este
35
-
mdulo composto por um arduino uno, um led infravermelho associado a uma
resistncia para regular a corrente e um XBee. A alimentao do XBee se d pelo
arduino, atravs de jumpers, utilizando os pinos de energia do arduino (3.3 Volts
e ground), e sua comunicao serial com o arduino realizada conectando-se os
pinos Din e Dout aos pinos Tx e Rx do arduino respectivamente. Um pino digital
do arduino ligado ao led infravermelho atravs de um resistncia de 10 ohm. Os
XBees recebem os comandos vindos do mdulo central e redireciona atravs da
comunicao serial ao arduino, que atravs da sketch interpreta o comando e aciona
os dispositivos nais a partir do led infravermelho.
O cdigo para acionamento do led IR, disponvel no A.2, e cujo uxograma est
representado na gura 3.13, responsvel por decodicar o frame API enviado pelo
modlo central, e enviar o respectivo sinal IR atravs do led ao dispositivo que se
deseja controlar. Na etapa de inicializao, realizada a incluso das bibliotecas
necessrias e declarao e denio das variveis globais. Aps a inicializao,
o programa roda a funo setup, responsvel por iniciar a comunicao serial.
Em seguida, ser chamada a funo loop que ir extrair do frame recebido pelo
XBee apenas o comando desejado, redirecionando-o funo rf_data_decoder. Ao
receber o comando, ela ir interpretar o comando, e chamar uma das duas funes
responsveis por comandar os dispositivos nais: air_conditioner e fan. Nestas
funes o comando recebido convertido em um sinal infravermelho a ser enviado
pelo led.
Figura 3.12: Esquema de montagem do mdulo atuador infravermelho
36
-
Figura 3.13: Fluxograma de funcionamento da sketch do mdulo atuador infraver-
melho
A aquisio dos sinais infravermelhos do ar condicionado e do ventilador se deu a
partir de uma outra sketch, disponvel no apndice . Atravs dessa sketch, possvel
recriar sinais infravermelhos de qualquer protocolo. Isso possvel pois ao invs de
decodicar o sinal recebido do led do controle remoto utilizado, ela armazena os
intervalos de tempo em que o led est aceso ou apagado, permitindo assim recriar
esse sinal posteriormente. Para realizar a aquisio dos sinais do controle remoto
foi utilizado um arduino uno, um receptor de sinais infravermelhos (o modelo uti-
lizado foi Pna4602m), e o controle remoto do qual deseja-se obter os sinais IR. Os
valores negativos adquiridos na leitura do sinal do controle remoto so relativos aos
intervalos em que o led estava apagado, ao passo que os positivos correspondem ao
led aceso. importante notar que os arrays contendo os sinais IR no cdigo do
apndice A.2 devem possuir apenas valores positivos, logo, deve-se apagar todos os
sinais '-' que antecipam os valores negativos dentro dos arrays.
37
sec:aquisiao-sinais-ir
-
Figura 3.14: Esquema do circuito para recepo de sinais IR
3.5 Aplicativo
O aplicativo funciona como a interface entre usurio e sistema. Nele, o usurio
dispe de botes para acionamento dos dispositivos desejados, e displays que
indicam o status desses dispositivos.
O cdigo do programa, disponvel no apndice, bem simples e o ambiente
de desenvolvimento do aplicativo no MIT APP Inventor facilita a visualizao do
mesmo. O aplicativo est dividido em 5 janelas: screen1, Quarto, Lampadas, Ar
Condicionado e Ventilador. Note que a janela inicial no pode ter o nome alterado,
por isso chama-se screen1.
Os botes de comando presentes no aplicativo funcionam atravs da solici-
tao de um comando GET HTML ao servidor com uma URL denida como
http://IPADDRESS/COMANDO, onde IPADDRESS o endereo IP do servidor
web, com a porta TCP inclusa no endereo, e COMANDO o comando enviado
ao mdulo central, que neste projeto composto por um identicador de incio
do cdigo Req, seguido pelo comando de 8 caracteres, e um identicador de m
do comando m. Por exemplo o comando ReqA/CSTF18m o comando de
denir a temperatura do ar condicionado em 18 graus celsius. A lista com todos os
comandos esta disponvel no apndice.
O cdigo da janela screen1, disponvel no apndice 1, bem simples e existem
apenas duas aes disponveis nesta janela: clicar no boto de voltar do celular ou
38
-
no boto de avanar. Clicar no boto de voltar do celular encerra o aplicativo, ao
passo que clicar no boto de avanar dene a varivel ip_address com o endereo
ip digitado na caixa de texto, e posteriormente chama a janela Quarto.
Figura 3.15: Janela inicial
Na janela quarto, cujo cdigo est pode ser lido no apndice 2 esto disponveis
os dispositivos que podem ser controlador naquele ambiente, no caso deste projeto
so: ventilador, lmpadas e ar condicionado. Ao clicar em cada um dos botes ele
chama a respectiva janela, enquanto que clicar no boto de voltar do celular fecha
esta janela e chama a janela screen1 novamente.
39
-
Figura 3.16: Janela do ambiente a ser controlado
Na janela Lmpadas, existem dois botes e um display para cada uma das
duas lmpadas que se pode controlar. Os botes de acender e apagar enviam os
respectivos comandos ao mdulo central. Este, executa as aes correspondentes
e envia uma resposta html ao aplicativo, que atualiza o status das lmpadas nos
displays, como visto na gura 3.17.
Figura 3.17: Janela de controle das lampadas
40
-
Na janela Ventilador, existem quatro botes de controle: Power, Reverse,
Speed up e slow down. Cada um desses botes, ao ser pressionado, envia o
respectivo comando ao mdulo central, mas ao contrrio da janela lmpadas e
ar_condicionado, elas no vericam a resposta html enviada pela central, visto que
ela no possui displays de status do ventilador.
Figura 3.18: Janela de controle do ventilador
A janela Ar_condicionado a que possui uma lgica de programao um
pouco mais complexa. Ela possui os botes de ligar e desligar o ar condicionado,
localizados na parte superior esquerda, os botes de seleo do modo de operao
(ar condicionado ou desumidicador) e de movimento das palhetas, localizados na
parte superior direita, e os botes de controle da temperatura e da vazo localizados
na parte inferior da janela. Alm disso, ela conta com dois displays localizados na
faixa central da janela, uma para a temperatura a esquerda, e outra para a vazo ao
lado direito. O display de temperatura varia entre 18 e 30 graus celsius, e conta com
a opo D, quando o ar condicionado se encontra em modo de desumidicao. J
o display da vazo conta com apenas duas opes: vazo total e vazo parcial. Os
botes de ligar, desligar e do movimento das ps tem uma lgica mais simples. Eles
possuem um comando especico, que so enviados central quando esses botes so
apertados. Os botes de seleo do modo de operao, vericam primeiramente o
status da vazo atual, para posteriormente enviar o comando do modo de operao,
mantendo a mesma vazo. Os botes de controle da temperatura, assim como os
de controle da vazo, quando apertados, realizam a leitura da temperatura e vazo
41
-
atual em primeiro lugar, para depois enviar o comando adequado de temperatura e
vazo ao mdulo central.
Figura 3.19: Janela de controle do ar condicionado
3.6 Video
O sistema de automao residencial foi implementado e testado, garantindo o funcio-
namento e a viabilizao de utilizao do mesmo para o propsito desejado. O video
disponibilizado neste link (https://www.youtube.com/watch?v=gLtuVMA7Bxo)
mostra o sistema implementado e em funcionamento.
42
https://www.youtube.com/watch?v=gLtuVMA7Bxo
-
Captulo 4
Concluses e trabalhos futuros
4.0.1 Resultados
Foi desenvolvido neste trabalho um sistema de automao residencial controlado
por aplicativo em smartphone, que foi implementado utilizando a plataforma
arduino e o mdulo de rdio frequncia XBee. Os resultados obtidos com este
projeto foram bastante satisfatrios no que diz respeito ao funcionamento do
mesmo, sendo capaz de realizar o acionamento dos mdulos rel e do mdulo
infravermelho, possibilitando portanto o controle das lmpadas, ventilador de
teto e ar condicionado, apesar de algumas diculdades e limitaes que foram
encontradas ao longo do desenvolvimento do projeto. O mdulo de rdio frequencia
XBee se sobressaiu como um dos pontos fortes deste projeto. Ele se mostrou
muito convel, cumprindo as especicaes de alcance, e muito robusto quanto
a comunicao, sem falhas ou perda de dados. Alm disso um mdulo muito
verstil, podendo funcionar em diversos modos de operao. A utilizao do
arduino para este projeto tambm se mostrou uma boa escolha, principalmente
pela simplicidade de utilizao, grande quantidade de material divulgado entre a
comunidade de usurios dessa plataforma, e em relao ao custo. A utilizao de
outras plataformas, como por exemplo o Raspberry, porm, poderia melhorar o
desempenho do sistema, devido a maior memria, possuir WIFI integrado e muitas
outras funcionalidades. Entretanto, durante a realizao deste projeto foram
encontradas algumas diculdades e limitaes, mas solues foram encontradas
para viabilizar a concluso e funcionamento do mesmo. Dentre as diculdades,
pode-se mencionar a utilizao do mdulo ENC28J60, um mdulo ethernet de
baixo custo, que foi adquirido na etapa inicial do projeto para permitir a conexo
do mdulo central internet. Esse mdulo era capaz de criar conexo internet,
mas no de manter a mesma estvel por mais de cinco minutos, fazendo com que
fosse necessrio realizar um reset fsico no arduino constantemente. Aps muito
tempo perdido tentando estabilizar o mdulo com diversas bibliotecas, optou-se
43
-
pela utilizao do shield ethernet, que na primeira tentativa j foi capaz de manter
uma conexo estvel por dias.
O sistema de automao implementado neste projeto, como dito anteriormente,
possui uma arquitetura centralizada, em que apenas o mdulo central conectado
internet, e a comunicao entre os dispositivos do sistema realizada atravs do
protocolo ZigBee. Entretanto, existem outros tipos de arquitetura disponveis para
o desenvolvimento de um sistema de automao residencial. Como abordado na
seo 1, possvel utilizar uma arquitetura horizontal, em que todos os dispositivos
do sistema funcionem como um ponto de acesso internet, como no conceito de
internet das coisas. Para isso, porm, necessrio que todos esses dispositivos
estejam dentro do alcance da rede WiFi utilizada. Nos testes realizados dentro de
casa, por exemplo, os mdulos XBee possuiam alcance dentro de toda a residncia,
ao passo que a rede WiFi era capaz de cobrir apenas 70% da rea dela. Para
utilizao de uma arquitetura horizontal, seria necessria a incluso de repetidores
de sinal na residncia para uma cobertura total.
4.0.2 Trabalhos futuros
O projeto que foi montado e implementado um pouco mais simples que o projeto
idealizado no incio. Desejava-se, a princpio, complementar o acionamento dos
dispositivos utilizados no projeto, e isso foi possvel apenas para o ar condicionado
e ventilador (dispositivos comandados pelo mdulo atuador infravermelho). Para
as lmpadas, porm no foi possvel utilizar o rel em paralelo com os interruptores
devido a ausncia de um sensor de corrente (ou de um regulador de tenso)
conectado fase da lmpada por no possu-los e devido falta de tempo hbil para
adquir-los e implement-los at a data determinada para concluso deste trabalho.
A gura 4.1 mostra o projeto inicialmente idealizado, que pode ser comparado ao
implementado, representado pela gura 3.11 na pgina 35.
44
-
Figura 4.1: Esquema de montagem do mdulo rel idealizado
A diferena entre os projetos se d pela presena dos sensores de corrente, co-
nectados entre a sada dos interruptores e o XBee. Sem o sensor e com a conexo
threeway no possvel saber se a lmpada se encontra ligada ou desligada, pois caso
algum acione mecanicamente as lmpadas, essa ao no reconhecida no mdulo
central, e um comando dado no aplicativo pode ter efeito contrrio dependendo da
posio do interruptor. Com os sensores, o mdulo central pode efetuar uma leitura
da porta digital do XBeel ligada ao sensor, permitindo obter o status atual da lm-
pada antes de enviar o comando para o mdulo rel, fazendo com que o comando
realizado sempre seja igual ao enviado. Na realizao do projeto, poucas seriam as
mudanas necessrias com a adio dos sensores: seria necessrio criar uma funo
no arduino do mdulo central para criar frames API de solicitao remota de amos-
tra da porta digital do XBee do mdulo atuador rel (ZigBee IO Data Sample Rx
Indicator - frame type 0x92) e efetuar uma pequena mudana na funo send_re-
lay(), para que ele enviasse o comando de ativao ou desativao do pino digital
do XBee ligado ao rel de acordo com o status atual da lmpada e do comando
desejado. O mdulo infravermelho tambm poderia receber algumas melhorias. No
projeto testado, com o mdulo comandando apenas o ventilador, o ar condicionado
e o ventilador do quarto, a memria do arduino suciente se utilizado o modelo
Mega. No modelo Uno, de apenas 2kb de sram, no h espao para os 3kb utilizados
em variveis globais. Isso acontece devido ao grande tamanho de dados utilizados
pelos arrays contendo os sinais infravermelhos. H soluo porm para este pro-
blema, possvel utilizar um cartao de memria SD contendo todos esses sinais, o
que deixaria o programa com memoria SRAM disponvel. Outra soluo utilizar
um Arduino Mega, como de fato ocorreu no projeto (por no contar com dois ardui-
nos uno). Em relao a trabalhos futuros, a aplicao do sistema desenvolvido neste
projeto no se limita a automao residencial. Com pequenas modicaes, este
sistema poderia ser aprimorado para outras aplicaes de smart buildings, como
45
-
tambm para diversas outras aplicaes que necessitem de sensoriamento remoto
e/ou acionamento remoto de atuadores em diversas reas, principalmente em ambi-
entes em que haja diculdade de implementar uma rede com protocolo wi, em que
o protocolo ZigBee (que no depende de acesso a internet) seria mais eciente, como
no monitoramento e controle de irrigao em lavouras [2], monitoramento e controle
de iluminao em grandes reas externas, monitoramento e controle de temperatura
de estufas, e tambm em ambientes que necessitem de mudanas frequentes na dis-
posio fsica dos componentes, uma instalao temporria, como na automao de
feiras de exposio e eventos.
46
-
Referncias Bibliogrcas
[1] LINS, V., MOURA, W. DOMTICA: AUTOMAO RESIDENCIAL. Dispo-
nvel em: . [Acesso em 20 de julho de 2017].
[2] PODEROSO, F., SOBRAL, V., LIMA, R., et al. Rede ZigBee Aplicada
Medio em Agricultura, VIII Semetro, 2009.
[3] EVANS, M., NOBLE, J., HOCHENBAUM, J. Arduino em Ao. So Paulo,
Novatec, 2013.
[4] DIGI. Zigbee RF Modules User Guide. Disponvel em: .
[Acesso em 20 de junho de 2017].
[5] RATHNAYAKA, A. J., POTDAR, V. Evaluation of Wireless Home Automation
Technologies, 5th IEEE International Conference on Digital Ecosystems
and Technologies, 2011.
[6] VARCHOLA, M., DRUTAROVSK, M. Zigbee Based Home Automation Wi-
reless Sensor Network, Acta Electrotechnica et Informatica, v. 7, n. 4,
2007.
[7] JADHAV, P., CHAUDHARI, A., VAVALE, S. Home Automation using ZigBee
Protocol, International Journal of Computer Science and Information
Technologies, v. 5, n. 2, 2014.
[8] C.GOMEZ, PARADELLS, J. Wireless home automation networks: A survey of
architectures and technologies, IEEE Communications Magazine, v. 48,
n. 6, 2010.
[9] MIT. Making Mobile Apps with App Inventor. Disponvel em: . [Acesso
em 2 de outubro de 2017].
47
http://www.unibratec.edu.br/tecnologus/wp-content/uploads/2010/12/lins_moura.pdfhttp://www.unibratec.edu.br/tecnologus/wp-content/uploads/2010/12/lins_moura.pdfhttps://www.digi.com/resources/documentation/digidocs/pdfs/90000976.pdfhttps://www.digi.com/resources/documentation/digidocs/pdfs/90000976.pdfhttp://appinventor.mit.edu/explore/ai2/beginner-videos.htmlhttp://appinventor.mit.edu/explore/ai2/beginner-videos.html
-
[10] ANALYSIR. Air conditioners: Recording long infrared Remote control signals
with Arduino.
https://www.analysir.com/blog/2014/03/19/
air-conditioners-problems-recording-long-infrared-remote-con
trol-signals-arduino/. [Acesso em 15 de maio de 2018].
48
"https://www.analysir.com/blog/2014/03/19/air-conditioners-problems-recording-long-infrared-remote-control-signals-arduino/""https://www.analysir.com/blog/2014/03/19/air-conditioners-problems-recording-long-infrared-remote-control-signals-arduino/""https://www.analysir.com/blog/2014/03/19/air-conditioners-problems-recording-long-infrared-remote-control-signals-arduino/"
-
Apndice A
Cdigos Arduino
A.1 Mdulo central
// -Incluir bibliotecas
#include
#include
// Strings de leitura de comandos
const int size_buer = 20;
char * buf_ptr;
char * cmd_ptr;
bool start_index_found = false;
int cmd_start_index;
int cmd_end_index;
char buf[size_buer]={};
//String readString;
const int lim_readString = 50;
char cmd[12]={};
// Conguraes de IP
// MAC Adress deve ser nico na rede
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
// Endereo de IP utilizado pelo arduino
IPAddress ip(192, 168, 0, 103);
49
-
// Cria um servidor para ouvir uma porta especica
// (porta 80 para http)
EthernetServer web_server(80);
void setup() {
Serial.begin(9600); //XBee serial also set to 9600 on digi xctu
Serial.println("Conexo serial estabelecida!");
Serial.println("Iniciando sistema...");
// Inicializar biblioteca Ethernet web_server_init();
}
void web_server_init(){
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
web_server.begin();
Serial.println("Inicializando servidor web");
Serial.print("IP local do servidor: ");
Serial.println(Ethernet.localIP());
Serial.println("Servidor web inicializado com sucesso!");
Serial.println(-");
}
void send_app(EthernetClient sendAns, char* ans){
const int size_app_ans = 12;
char app_ans[size_app_ans]={};
Serial.println("Send app na area");
for (int i=0; i
-
sendAns.println("HTTP/1.1 200 OK");
sendAns.println("Content-Type: text/html");
sendAns.println("Connection: close"); // the connection will be closed after
completion of the response
sendAns.println();
sendAns.print(app_ans);
sendAns.println(/html>");
return;
}
void set_relay(char* dev, char* cmd_l){
long checksum;
Serial.println("Set_relay");
Serial.write(0x7E); //Start Byte
Serial.write((byte)0x0); // lenght MSB
Serial.write(0x10); // lenght LSB
Serial.write(0x17); //0x17: Frame ID pra envio de comando AT
Serial.write((byte)0x0); //Frame ID (no reply needed)
Serial.write(0x00); // Inicio do endereo de 64 bits
Serial.write(0x13);
Serial.write(0xA2);
Serial.write(0x00);
Serial.write(0x40);
Serial.write(0x9B);
Serial.write(0x12);
Serial.write(0x5F); // Fim do endereo de 64 bits
Serial.write(0xFF); // Destination newtwork
Serial.write(0xFE); // (set to 0xFFFE se no souber)
Serial.write(0x02); // Set to 0x02 to apply these changes
if (dev == "L01"){
Serial.write('D'); // AT Command: D0
51
-
Serial.write('0');
checksum = 0x17 + 0x0 + 0x00 + 0x13 + 0xA2 + 0x00 + 0x40 + 0x9B + 0x12 +
0x5F + 0xFF + 0xFE + 0x02 + 'D' + '0';
}
else if (dev == "L02"){
Serial.write('D'); // AT Command: D1
Serial.write('1');
checksum = 0x17 + 0x0 + 0x00 + 0x13 + 0xA2 + 0x00 + 0x40 + 0x9B + 0x12 +
0x5F + 0xFF + 0xFE + 0x02 + 'D' + '1';
}
if (cmd_l == "on"){
Serial.write(0x05);
checksum = checksum + 0x05;
}
else if (cmd_l == "o"){
Serial.write(0x04);
checksum = checksum + 0x04;
}
Serial.write(0xFF - (checksum & 0xFF)); //Checksum
Serial.println();
}
void set_ir(char *cmd){
//Serial.println("entrou na funcao xbee on");
char byte_1 = cmd[0];
char byte_2 = cmd[1];
char byte_3 = cmd[2];
char byte_4 = cmd[3];
char byte_5 = cmd[4];
char byte_6 = cmd[5];
char byte_7 = cmd[6];
char byte_8 = c