implementação de um sistema de automação residencial...

109

Upload: vanhuong

Post on 29-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

  • 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