• Nenhum resultado encontrado

Smart lighting: solução para controle de lâmpadas em smart homes

N/A
N/A
Protected

Academic year: 2021

Share "Smart lighting: solução para controle de lâmpadas em smart homes"

Copied!
66
0
0

Texto

(1)

UNIVERSIDADE TECNOL ´

OGICA FEDERAL DO PARAN´

A

CURSO DE TECNOLOGIA EM SISTEMAS PARA INTERNET

AMPUS GUARAPUAVA

FELIPE KOSOUSKI

SMART LIGHTING: SOLU ¸

AO PARA CONTROLE DE

AMPADAS EM SMART HOMES

TRABALHO DE CONCLUS˜

AO DE CURSO

GUARAPUAVA

2018

(2)

FELIPE KOSOUSKI

SMART LIGHTING: SOLU ¸

AO PARA CONTROLE DE

AMPADAS EM SMART HOMES

Monografia de Trabalho de Conclus˜ao de Curso de gradua¸c˜ao, apresentado a disciplina de Trabalho de Conclus˜ao de Curso 2 do Curso Superior de Tecnologia em Sistemas para Internet - TSI - da Universidade Federal Tecnol´ogica do Paran´a

-UTFPR - Cˆampus Guarapuava, como requisito parcial para obten¸c˜ao do t´ıtulo de Tecn´ologo em Sistemas para a Internet Orientador: Prof. Me. Hermano Pereira

Universidade Tecnol´ogica Federal do Paran´a

GUARAPUAVA

2018

(3)

Ministério da Educação

Universidade Tecnológica Federal do Paraná Câmpus Guarapuava

Curso Superior de Tecnologia em Sistemas para Internet

ATA DE DEFESA DE MONOGRAFIA DE TRABALHO DE CONCLUSÃO DE CURSO DO CURSO DE TECNOLOGOIA EM SISTEMAS PARA INTERNET

No dia 27 de novembro de 2018, às 13:30 horas, em sessão pública nas dependências da Universidade Tecnológica Federal do Paraná Câmpus Guarapuava, ocorreu a banca de defesa da de Trabalho de Conclusão de Curso intitulada:

“SMART LIGHTING: Solução de Lâmpadas para IOT” do acadêmico Felipe Kosouski sob orientação do professor Prof. Dr. Hermano Pereira do curso de Tecnologia em Sistemas para Internet.

Banca Avaliadora

Membro Nome

Orientador Prof. Dr. Hermano Pereira

Avaliador 1 Prof. Dr. William Alberto Cruz Castaneda

Avaliador 2 Prof. Dr. Luciano Ogiboski

Situação do Trabalho

Situação ( x ) Aprovado

( ) Aprovado com ressalvas ( ) Reprovado

( ) Não compareceu Encaminhamento do trabalho

para biblioteca ( x ) Autoriza o encaminhado para biblioteca( ) Manter sigilo para publicação ou geração de patente

Guarapuava, 27 de novembro de 2018.

(4)

Dedico este trabalho a Deus, a minha fam´ılia e amigos, a minha namorada, ao meu orienta-dor e a todos que me ajudaram e incentivaram de alguma maneira durante o desenvolvimento deste trabalho.

(5)

AGRADECIMENTOS

Primeiramente agrade¸co a Deus, que muitas vezes me deu conhecimento, me iluminou e me fez ter for¸cas durante n˜ao somente o desenvolvimento deste trabalho, mas tamb´em em toda minha vida acadˆemica.

Agrade¸co a minha fam´ılia, que me incentivou, me amparou e me ensinou todos os valores que possuo hoje, e principalmente, me ensinou a nunca desistir quando encontramo-nos frente a frente a um problema.

Agrade¸co tamb´em a minha namorada Gabriella Carioca, que me acompanhou durante todo o desenvolvimento do trabalho e de boa parte da minha vida acadˆemica. Que muitas vezes ouviu minhas reclama¸c˜oes e ofereceu apoio emocional e que sempre me incentivou a dar o melhor de mim em tudo que fa¸co.

Devo um agradecimento especial ao meu orientador Hermano Pereira, por ter me ajudado desde o in´ıcio do trabalho, por sempre estar dispon´ıvel em momentos de d´uvidas e incertezas, por me indicar os caminhos a serem seguidos e confiar no meu potencial e principalmente, n˜ao somente por ter se tornado meu professor orientador, mas tamb´em um grande amigo.

Por fim, agrade¸co a todos os professores que me passaram diversos conhecimentos que serviram como base para que este trabalho pudesse ter sido realizado. Aos amigos e colegas que me acompanharam e participaram de v´arios momentos de estudos e de descontra¸c˜ao. E agrade¸co tamb´em a Universidade Tecnol´ogica Federal do Paran´a, por prover todos os recursos e ensinamentos necess´arios para o meu desenvolvimento pessoal e profissional.

(6)

O ´unico caminho para desvendar os limites do poss´ıvel ´e aventurar-se al´em dele, atrav´es do imposs´ıvel. (CLARKE, C. ARTHUR).

(7)

RESUMO

KOSOUSKI, Felipe. Smart Lighting: Solu¸c˜ao para controle de lˆampadas em Smart Homes. 2018. 52 f. Trabalho de Conclus˜ao de Curso – Cˆampus Guarapuava, Universidade Tecnol´ogica Federal do Paran´a. Guarapuava, 2018.

As pessoas vivem hoje uma ´epoca onde as conex˜oes e a rede fazem cada vez mais parte do cotidiano a ponto de chegarem a estar a todo momento conectados com outras pessoas e dispositivos. O avan¸co da tecnologia tem se expandido para as mais diversas ´areas, sendo uma delas, as casas inteligentes, parte de uma ´area maior ainda chamada Internet das Coisas. Com uma grande variedade de sensores e dispositivos conectados, um usu´ario ou at´e mesmo um sensor pode emitir um sinal para controlar diversas coisas. Uma das ´areas de estudo que prov´em das casas inteligentes ´e a chamada Smart Lighting, ou seja, o controle de luzes e lˆampadas pela rede. Dentre os equipamentos hoje utilizados, a maioria possui um custo elevado devido a m˜ao de obra necess´aria para instala¸c˜ao e s˜ao invi´aveis do ponto de vista f´ısico. Este trabalho apresenta uma solu¸c˜ao para controle de lˆampadas via rede utilizando um microcontrolador Arduino como servidor e um Web Service respons´avel por trabalhar com os dados enviados e recebidos, sendo essencialmente, um sistema de f´acil instala¸c˜ao e configura¸c˜ao. Palavras-chave: Microcontroladores. Internet sem fio. Arduino (Controlador program´avel). Protocolo de aplica¸c˜ao sem fio (Protocolo de rede de computador). Automa¸c˜ao residencial.

(8)

ABSTRACT

KOSOUSKI, Felipe. Smart Lighting: Smart Home Lamp Control Solution. 2018. 52 f. Trabalho de Conclus˜ao de Curso – Cˆampus Guarapuava, Universidade Tecnol´ogica Federal do Paran´a. Guarapuava, 2018.

The people live today in a time where network and connections has increasingly became part of their daily lives, so that they get to be connected all the time, both to other peo-ple and devices. The technology advances have expanded to the most diverse areas, such as smart houses, part of a even larger area called Internet of Things. With a wide variety of interconnected sensors and devices, a user, or even a sensor itself, can send a signal to control several ”things”. One of the study areas that comes from the intelligent house idea is called Smart Lighting, that is, the control of lights and lamps through the network. Among the equipment used nowadays, most of them have a high cost due to labor required for installation and are physically unviable. This work presents a solution to control lamps via network using an Arduino microcontroller as a server and a Web Service responsible for working with the sent and received data, being essentially a system of easy installation and configuration. As pessoas vivem hoje uma ´epoca onde as conex˜oes e a rede fazem cada vez mais parte do cotidiano a ponto de chegarem a estar a todo momento conectados com outras pessoas e dispositivos.

Keywords: Microcontrollers. Wireless Internet. Arduino (Programmable controller). Wireless Aplication Protocol (Computer network protocol). Home automation.

(9)

LISTA DE FIGURAS

Figura 1 – Internet das coisas . . . 4

Figura 2 – Smart Home . . . 6

Figura 3 – Arduino MEGA 2560 . . . 9

Figura 4 – Shield Ethernet W5100 . . . 10

Figura 5 – M´odulo rel´e . . . 11

Figura 6 – Caracter´ısticas do protocolo CoAP . . . 12

Figura 7 – Exemplo de requisi¸c˜ao e resposta CoAP . . . 12

Figura 8 – Cen´ario integrando CoAP e HTTP . . . 13

Figura 9 – Web Server acendendo lˆampadas . . . 17

Figura 10 – Inserindo um dispositivo no Lelylan . . . 18

Figura 11 – Kit Smart Lighting Ikea . . . 19

Figura 12 – Circuito de componentes . . . 24

Figura 13 – Montagem do Shield no Arduino . . . 24

Figura 14 – Circuito f´ısico finalizado . . . 26

Figura 15 – Captura de tela da solu¸c˜ao de Thomsen (2015) antes de acionar a lˆampada 26 Figura 16 – Captura de tela da solu¸c˜ao de Thomsen (2015) ap´os o acionamento da lˆampada . . . 27

Figura 17 – Foto do experimento ap´os acender a lˆampada utilizando a solu¸c˜ao de Thomsen (2015) . . . 27

Figura 18 – Fluxo de funcionamento . . . 29

Figura 19 – Estrutura da implementa¸c˜ao microcoap . . . 32

Figura 20 – Servidor alcan¸cado pelo comando ping. . . 33

Figura 21 – Comando para a execu¸c˜ao de uma requisi¸c˜ao GET para o servidor CoAP . 34 Figura 22 – Captura de mensagem GET CoAP pela ferramenta Wireshark . . . 34

Figura 23 – Comando para execu¸c˜ao de uma requisi¸c˜ao PUT com o valor 1 para o servidor 35 Figura 24 – Captura de mensagem PUT CoAP com o valor 1 pela ferramenta Wireshark 35 Figura 25 – Comando para execu¸c˜ao de uma requisi¸c˜ao PUT com o valor 0 para o servidor 35 Figura 26 – Captura de mensagem PUT CoAP com o valor 0 pela ferramenta Wireshark 36 Figura 27 – Inicializa¸c˜ao do servidor da aplica¸c˜ao . . . 37

Figura 28 – Request para endpoint GET solicitando todas as lˆampadas e resposta em formato JSON . . . 38

Figura 29 – Request para endpoint GET solicitando apenas a lˆampada com id 1 e resposta em formato JSON . . . 38

Figura 30 – Request PUT para endpoint /toggle alterando o status para true e resposta em formato JSON . . . 39

(10)

Figura 31 – Request PUT para endpoint /toggle alterando o status para false e resposta em formato JSON . . . 39 Figura 32 – Request GET enviado ao Web Service e retornando os dados em JSON . . 40 Figura 33 – Captura do Request GET enviado ao Web Service e redirecionado ao IP do

servidor CoAP . . . 41 Figura 34 – Request PUT enviado ao Web Service e retornando os dados em JSON . . 42 Figura 35 – Captura do Request PUT enviado ao Web Service e redirecionado ao IP do

servidor CoAP . . . 42 Figura 36 – Lˆampada acesa atrav´es do protocolo CoAP e Web Service REST . . . 43 Figura 37 – Execu¸c˜ao inicial do Riot OS no Arduino . . . 52

(11)

LISTA DE ABREVIATURAS E SIGLAS

6LoWPAN IPv6 over Low Power Wireless Personal Area Networks API Application Programing Interface

CBOR Concise Binary Object Representation CSS3 Cascading Style Sheets 3

CoAP Constrained Application Protocol CoC Convention Over Configuration CoRE Constrained RESTful Environments DRY Don’t Repeat Yourself

DTLS Datagram Transport Layer Security FAQ Frequently Answered Questions

GND Ground

HTML HyperText Markup Language HTTP HyperText Transfer Protocol

IDE Integrated Development Environment IPv6 Internet Protocol Version 6

IoT Internet of Things

JSON JavaScript Object Notation

M2M Machine To Machine

MQTT Message Queue Telemetry Transport MVC Model View Controller

PHP Hypertext Preprocessor

REST Representational State Transfer RFID Radio Frequency Identification

(12)

UDP User Datagram Protocol UHD Ultra High Definition URI Uniform Resource Identifier USB Universal Serial Bus

(13)

SUM´ARIO 1 – INTRODU ¸C˜AO . . . 1 1.1 ORGANIZA¸C˜AO DO TRABALHO . . . 2 1.2 OBJETIVOS . . . 2 1.2.1 Objetivo Geral . . . 2 1.2.2 Objetivos Espec´ıficos. . . 3 2 – REVIS˜AO DA LITERATURA . . . 4

2.1 INTERNET DAS COISAS . . . 4

2.2 SMART HOME . . . 5

2.2.1 Gest˜ao e eficiˆencia energ´etica . . . 6

2.2.2 Sa´ude . . . 6 2.2.3 Entretenimento . . . 7 2.2.4 Seguran¸ca . . . 7 2.3 SMART LIGHTING . . . 7 3 – FERRAMENTAS . . . 9 3.1 ARDUINO MEGA 2560 . . . 9 3.2 SHIELD ETHERNET W5100 . . . 9 3.3 M ´ODULO REL´E . . . 10 3.4 CoAP . . . 11

3.5 WEB SERVICE REST . . . 13

3.6 RUBY . . . 14

3.7 RUBY ON RAILS . . . 14

4 – TRABALHOS RELACIONADOS . . . 16

4.1 FILIPEFLOP - ACENDENDO LˆAMPADAS PELA INTERNET . . . 16

4.2 LELYLAN - IOT CLOUD PLATFORM . . . 17

4.3 IKEA Tr˚adfri - SMART LAMPS . . . 18

4.4 DIFERENCIAL TECNOL ´OGICO. . . 19

5 – METODOLOGIA . . . 20

5.1 DEFINI¸C˜AO DAS TECNOLOGIAS . . . 20

5.2 ESTUDO DAS TECNOLOGIAS . . . 20

5.3 ELABORA¸C˜AO E MONTAGEM DO CIRCUITO F´ISICO . . . 21

5.4 DESENVOLVIMENTO DO WEB SERVICE . . . 21

5.5 DESENVOLVIMENTO DO SERVIDOR E APLICA¸C˜AO . . . 21

(14)

6 – DESENVOLVIMENTO . . . 23

6.1 HARDWARE - PARTE F´ISICA . . . 23

6.1.1 Arduino . . . 23

6.1.2 Ethernet Shield . . . 24

6.1.3 Rel´e . . . 25

6.1.4 Lˆampada . . . 25

6.2 MONTAGEM DO CIRCUITO . . . 25

6.3 SOFTWARE - PARTE L ´OGICA . . . 28

6.3.1 Servidor CoAP . . . 29

6.3.2 Endpoints CoAP e Arduino . . . 30

6.3.3 Web Service . . . 30

7 – AN´ALISE E DISCUSS˜AO DOS RESULTADOS . . . 32

7.1 CoAP ARDUINO. . . 32

7.2 CoAP WEB SERVICE . . . 36

7.3 INTEGRA¸C˜AO SERVIDOR COAP E WEB SERVICE . . . 40

8 – CONCLUS˜AO . . . 44

8.1 CONSIDERA¸C ˜OES FINAIS . . . 45

8.2 TRABALHOS FUTUROS . . . 45

Referˆencias . . . 46

Apˆ

endices

49

APˆENDICE A–MUDAN ¸CA DE LINGUAGEM DE PROGRAMA¸C˜AO . . . . 50

(15)

1

1 INTRODU ¸C˜AO

A sociedade atual est´a passando por uma grande mudan¸ca tecnol´ogica, tˆem se entrado aos poucos na era da Internet of Things, em tradu¸c˜ao direta, Internet das Coisas. Essa mudan¸ca ser´a uma revolu¸c˜ao no que diz respeito n˜ao somente a como as pessoas interagir˜ao com gadgets e objetos que tenham capacidade de se conectar a Internet, mas tamb´em, como os pr´oprios objetos interagir˜ao entre si. A IoT, far´a com que tais objetos, aliados a diversos sensores, possam ser controlados e acessados remotamente, fazendo com que se tornem inteligentes, com capacidade de comunica¸c˜ao entre si de processar v´arias informa¸c˜oes (MANCINI, 2017).

Com a ideia de objetos inteligentes, pode-se transportar a IoT para diversos ambientes, e uma das ´areas de grande pesquisa diz respeito `as casas inteligentes, ou Smart Homes. V´arios sensores independentes por´em todos interconectados pela rede pessoal. Controle de temperatura, luminosidade, umidade, detec¸c˜ao de movimento, eletrodom´esticos inteligentes, todos compartilhando informa¸c˜oes, todos processando dados e acess´ıveis ao controle dos usu´arios.

Resultando de uma convergˆencia de tecnologias em diversas ´areas como entretenimento, seguran¸ca, gerenciamento de energia, e cuidados com a sa´ude, as Smart Homes podem ajudar a resolver v´arios problemas e desafios atuais, como por exemplo, o consumo eficiente e econˆomico de energia el´etrica (NASCIMENTO,2016), j´a que, os sensores al´em de operarem sob baixo custo de eletricidade, poder˜ao fazer com que a conta de luz fique mais baixa, fazendo com que luzes se apaguem automaticamente e ambientes tenham sua temperatura ajustada automaticamente `as necessidades dos usu´arios, e, juntamente com todos esses equipamentos, dispositivos tamb´em far˜ao a medi¸c˜ao dos gastos para verificar o que est´a consumindo mais, e ordenando os mesmos a usar menos energia (ROBLES; KIM, 2010).

O presente trabalho, oferece uma solu¸c˜ao para controle de lˆampadas via rede, utilizando uma placa microcontroladora, um servidor que utiliza um protocolo de conex˜ao para IoT e um Web Service. Fornecendo ao usu´ario, controle sobre as informa¸c˜oes de estado de uma lˆampada, bem como possibilitando a altera¸c˜ao de seu estado.

(16)

Cap´ıtulo 1. INTRODU¸C ˜AO 2

1.1 ORGANIZA¸C˜AO DO TRABALHO

Este trabalho est´a organizado em sete cap´ıtulos principais, sendo eles, o cap´ıtulo 1, a introdu¸c˜ao, onde al´em do texto de introdu¸c˜ao do trabalho, encontram-se descritos os objetivos propostos, sendo separados em objetivo geral e objetivos espec´ıficos.

No cap´ıtulo 2 encontra-se uma revis˜ao da literatura e fundamenta¸c˜ao te´orica, contendo conceitos e informa¸c˜oes importantes sobre a ´area de estudo em que o trabalho se encontra. Ser´a introduzido o conceito de Internet das Coisas, passando por casas inteligentes e ´areas de aplica¸c˜ao, e finalizando na ´area de foco do trabalho, Smart Lighting.

O cap´ıtulo 3 contem um descritivo das diversas ferramentas que foram utilizadas para se chegar ao objetivo do trabalho, explicando o que ´e cada uma para um melhor entendimento do trabalho em si. E em seguida, no cap´ıtulo 4, s˜ao apresentados 3 trabalhos relacionados, um web server com Arduino para acender lˆampadas pela Internet, uma plataforma e ferramenta para controle de dispositivos IoT, e por fim, um kit de ilumina¸c˜ao inteligente desenvolvido por uma empresa do ramo de m´oveis que j´a se encontra dispon´ıvel no mercado.

No cap´ıtulo 5, ´e apresentada a metologia envolvida no trabalho, passando por diversas se¸c˜oes descrevendo cada etapa que foi realizada no desenvolvimento do trabalho, desde a defini¸c˜ao e estudo das tecnologias, montagem do circuito, desenvolvimento da aplica¸c˜ao e testes.

No cap´ıtulo 6, ´e descrito de maneira mais aprofundada com esquemas e imagens o que cada componente do circuito ´e respons´avel por fazer, qual a fun¸c˜ao de cada tecnologia empregada, e como foi desenvolvido o trabalho.

J´a no cap´ıtulo 7, s˜ao mostrados todos os resultados obtidos de testes realizados com as solu¸c˜oes desenvolvidas. Passando primeiramente pelos testes com o servidor CoAP rodando no Arduino. Ap´os, s˜ao mostrados os resultados envolvendo o Web Service desenvolvido durante o trabalho. E por fim, s˜ao apresentados os resultados dos testes envolvendo a integra¸c˜ao do servidor CoAP e do Web Service, bem como a apresenta¸c˜ao do resultado final obtido.

Por ´ultimo, no capitulo 8, s˜ao feitas as conclus˜oes e as considera¸c˜oes finais acerca do tema e do trabalho.

1.2 OBJETIVOS

Nesta se¸c˜ao, s˜ao apresentados os objetivos do presente trabalho, sendo estes, divididos em objetivo geral, e objetivos espec´ıficos.

1.2.1 Objetivo Geral

O objetivo do trabalho ´e desenvolver e apresentar uma solu¸c˜ao para Smart Lighting atrav´es de um circuito f´ısico e um Web Service que se comuniquem entre si por meio da rede e fa¸cam com que seja poss´ıvel controlar uma lˆampada

(17)

Cap´ıtulo 1. INTRODU¸C ˜AO 3

1.2.2 Objetivos Espec´ıficos

• Estudo e pesquisa de tecnologias na ´area de IoT.

• Implementar o controle da lˆampada fazendo uso do Arduino Mega.

• Desenvolver o Web Service para comunica¸c˜ao com o microcontrolador em linguagem Ruby, utilizando o framework para desenvolvimento web Ruby on Rails.

• Realizar a comunica¸c˜ao do microcontrolador com o Web Service atrav´es do protocolo de rede CoAP.

• Certificar-se de que ´e poss´ıvel acender, apagar e obter o status sobre a lˆampada atrav´es da rede.

(18)

4

2 REVIS˜AO DA LITERATURA

Nesse cap´ıtulo, ser´a abordado, a revis˜ao da literatura, delimitando o escopo, ´area de estudo e aplica¸c˜ao onde o trabalho est´a alocado.

2.1 INTERNET DAS COISAS

O termo Internet das Coisas foi utilizado pela primeira vez em 1999 por Kevin Ashton para descrever um sistema onde objetos no mundo f´ısico poderiam se conectar com a Internet por meio de sensores. Nesse sistema, Ashton ilustrava o poder de conectar dispositivos de identifica¸c˜ao por radio frequˆencia (RFID) na rede para contar e rastrear objetos sem interven¸c˜ao humana. Atualmente, a Internet das Coisas tem se tornado popular na descri¸c˜ao de cen´arios onde a conectividade e o poder computacional se estendem para uma larga variedade de objetos, dispositivos, sensores e itens comuns do dia-a-dia. A figura 1 exemplifica a capacidade da IoT em estar dispon´ıvel a partir de qualquer dispositivo, qualquer contexto, para qualquer pessoa, qualquer servi¸co, em qualquer rede e em qualquer lugar (MULANI; PINGLE, 2016).

Figura 1 – Internet das coisas

Fonte: Adaptado de Mulani e Pingle(2016)

A Internet das Coisas ´e fundamentada no conceito de Web Ub´ıqua, na qual a conecti-vidade e interaticonecti-vidade entre pessoas, informa¸c˜oes, processos e objetos por meio de tecnologias que garantem o acesso `a rede torna-se cada vez mais presente no cotidiano, a ponto de que quase n˜ao sejam percept´ıveis. Haver˜ao diversos dispositivos que incluem sensores

(19)

inteli-Cap´ıtulo 2. REVIS ˜AO DA LITERATURA 5

gentes, equipamentos eletrˆonicos, eletrodom´esticos, autom´oveis, que, a partir de aplica¸c˜oes, se adaptar˜ao autom´atica e dinamicamente `as necessidades dos seus usu´arios (LACERDA; LIMA-MARQUES,2015).

Existem diversas quest˜oes que s˜ao levantadas em rela¸c˜ao a IoT, dentre elas est˜ao inclu´ıdas quest˜oes de seguran¸ca, privacidade, interoperabilidade, legalidade e quest˜oes econˆo-micas. N˜ao seria nem um pouco interessante que pessoas desconhecidas tivessem acesso `a dispositivos e sensores de uso pessoal, pois isso deixaria portas abertas para ataques ao mesmo tempo que tamb´em seria viola¸c˜ao de privacidade, tais quest˜oes exigir˜ao cria¸c˜ao de novas leis ou adapta¸c˜oes de leis existentes. Outro problema est´a relacionado a interoperabilidade e aos padr˜oes de conex˜oes. Como os objetos precisam se comunicar, ´e necess´ario que todos fa¸cam uso dos mesmos protocolos e linguagens, garantindo assim a praticidade na hora de inserir novos dispositivos na rede (MULANI; PINGLE,2016). Do ponto de vista econˆomico, segundo a Gartner, Inc., uma das principais empresas de pesquisa do mundo, haver˜ao cerca de 26 bilh˜oes de dispositivos IoT em 2020, excluindo computadores pessoais, smartphones e tablets, representando um aumento de aproximadamente 30 vezes o n´umero de 0,9 bilh˜oes de 2009. Ainda segundo a Gartner, a IoT em rela¸c˜ao a produtos e presta¸c˜ao de servi¸cos gerar´a uma receita adicional superior a 300 bilh˜oes de d´olares, o que resultar´a em 1,9 trilh˜oes na economia global em valor agregado (GARTNER,2013).

2.2 SMART HOME

Smart Home, que, em tradu¸c˜ao direta significa Casa Inteligente, ´e um conceito que envolve v´arias ´areas de conhecimento da ciˆencia e engenharia. O termo Smart Home ´e comumente utilizado para definir uma residˆencia que integra tecnologia e servi¸cos atrav´es de uma rede com o objetivo de aprimorar a eficiˆencia energ´etica e melhorar a qualidade de vida (MOWAMAD; FATHY; HAFEZ, 2014).

Seguindo a ideia de IoT, onde h´a v´arios objetos conectados que trocam informa¸c˜oes, a figura 2 exemplifica uma Smart Home, onde uma residˆencia pode possuir sistemas avan¸ca-dos para controlar ilumina¸c˜ao, temperatura, interruptores, equipamentos de entretenimento e multim´ıdia, monitoramento e seguran¸ca. O ambiente deve moldar-se aos moradores da casa, podendo ser controlado por comandos de voz, acesso remoto ou computador pessoal, transformando assim, uma simples casa em uma casa inteligente e proporcionando aos seus moradores: conforto, eficiˆencia, independˆencia e seguran¸ca (TULY, 2016).

(20)

Cap´ıtulo 2. REVIS ˜AO DA LITERATURA 6

Figura 2 – Smart Home

Fonte:Energy (2016)

Ainda segundo Tuly (2016), as Smart Homes s˜ao divididas em quatro ´areas nas quais os dispositivos precisam ser capazes de oferecer bons resultados, sendo elas:

• Gest˜ao e Eficiˆencia de Energia • Sa´ude

• Entretenimento • Seguran¸ca

2.2.1 Gest˜ao e eficiˆencia energ´etica

A maior parte do consumo mundial de energia atual ´e proveniente do uso residencial. E com a popula¸c˜ao crescendo rapidamente, a demanda por energia el´etrica cresce junto. Com a entrada da IoT e das Smart Homes na sociedade, a quantidade de energia consumida por residˆencias aumentar´a ainda mais. Tendo isso em mente, um dos objetivos do conceito de Smart Home ´e a busca por maneiras de se obter um sistema de gerenciamento residencial de energia sustent´avel e eficiente, e ainda assim utilizar dos avan¸cos tecnol´ogicos (TULY, 2016). 2.2.2 Sa´ude

Essa ´area de aplica¸c˜ao da Smart Home ´e de grande interesse por parte de pesquisadores, visto que existe um significante aumento da popula¸c˜ao idosa. Acredita-se que o estudo da ´area ser´a ´util para resolu¸c˜ao de v´arias quest˜oes relacionadas a pessoas com idade avan¸cada, como por exemplo, solid˜ao, incapacidade, limita¸c˜oes cognitivas e a sa´ude em geral, sendo

(21)

Cap´ıtulo 2. REVIS ˜AO DA LITERATURA 7

que ser´a facilitada a tarefa de monitoramento (TULY, 2016). V´arios tipos de dispositivos e tecnologias relacionadas a sa´ude inteligente podem conter sensores que verificam o corpo, coletando informa¸c˜oes importantes e as enviando para o m´edico ou para os respons´aveis pelo paciente.

2.2.3 Entretenimento

Segundo Mendes et al. (2015), o consumo de m´ıdias digitais, sejam elas m´usicas, v´ıdeos, imagens, jogos eletrˆonicos, tem crescido cada vez mais dentro de casas com o passar dos anos, e novas formas de entretenimento est˜ao se tornando bastante populares, mudando permanentemente a maneira como as pessoas agem e interagem com elas. E essa ´area tˆem mostrado enorme potencial. Formatos como Ultra High Definition (UHD) necessitam de conex˜oes com latˆencias extremamente baixas e alta capacidade de banda, al´em disso, a grande quantidade de dados ir´a requirir conex˜ao em tempo real de v´arios, possivelmente distribu´ıdos, recursos de processamento de m´ıdia.

2.2.4 Seguran¸ca

As tecnologias de Smart Home contribuem muito no quesito de seguran¸ca para seus habitantes. Segundo Tuly(2016), existem dois tipos de seguran¸ca em que os dispositivos nos ajudar˜ao. Primeiro com rela¸c˜ao aos eventos anormais dentro da casa, onde sensores t´ermicos, l´ıquidos, de movimentos e de proximidade avisam sobre incˆendios, alagamentos, e poss´ıveis acidentes que possam vir a ocorrer. J´a o segundo, ´e um grande avan¸co no que diz respeito a detec¸c˜ao de invas˜oes, roubos e assaltos. ´E importante que os equipamentos e a rede sejam de boa qualidade, pois esse tipo de solu¸c˜ao requer tr´afego de informa¸c˜oes em tempo real e uma capacidade autossuficiente de informar se detec¸c˜oes e altera¸c˜oes no status dos sensores s˜ao reais e n˜ao apenas falsos positivos (MENDES et al., 2015).

2.3 SMART LIGHTING

A demanda por energia el´etrica tˆem crescido drasticamente com a chegada de novos aparatos eletrˆonicos no mercado e isso afeta diretamente no pre¸co que pagamos pelo forneci-mento desse recurso. A IoT busca, como um de seus princ´ıpios, o uso eficiente da energia, e o conceito de Smart Lighting est´a ligado diretamente a isso, sendo a ´area de estudo da IoT voltada a solu¸c˜oes para ilumina¸c˜ao inteligente de ambientes.

Segundo Martirano (2011), o uso de energia el´etrica para a ilumina¸c˜ao deve adotar maneiras ativas e passivas para reduzir o consumo de energia pelo sistema sem afetar sua performance e ainda aumentando o conforto e seguran¸ca dos usu´arios. De acordo com o autor, existem duas estrat´egias para esse fim, eficiˆencia e efic´acia. A eficiˆencia dos sistemas pode ser melhorada com o uso de equipamento de alta performance e pelo posicionamento e design da ilumina¸c˜ao no ambiente, colocando luzes em pontos onde sua capacidade ser´a melhor

(22)

Cap´ıtulo 2. REVIS ˜AO DA LITERATURA 8

aproveitada. J´a a efic´acia, pode ser aperfei¸coada adotando controles autom´aticos de ilumina¸c˜ao baseados nas necessidades tanto dos usu´arios quanto do ambiente em si, apagando luzes quando preciso, ajustando-se de acordo com o n´ıvel de luz natural e controlando a intensidade.

(23)

9

3 FERRAMENTAS

Nesse cap´ıtulo, ser˜ao abordadas as tecnologias e componentes que foram utilizadas durante todo o desenvolvimento desse trabalho.

3.1 ARDUINO MEGA 2560

O Arduino, criado em 2005, ´e uma placa microcontroladora de baixo custo, funcional, e acess´ıvel para pessoas que n˜ao possuem um grande conhecimento de programa¸c˜ao, podendo assim, ser utilizada para estudos e at´e projetos mais complexos. Com a proposta de Open Hardware (Hardware Livre), o Arduino se destaca no mercado j´a que qualquer pessoa interessada na tecnologia pode montar, modificar e personalizar a placa partindo do mesmo hardware b´asico (THOMSEN, 2014).

O Arduino Mega 2560 (Figura 3) ´e uma placa da plataforma Arduino baseada no microcontrolador ATmega2560. Ela possui 54 portas de entrada/sa´ıda digitais, 16 portas anal´ogicas, clock de 16Mhz, conex˜ao USB e conector para alimenta¸c˜ao de energia externa. Com rela¸c˜ao a mem´oria, ele possui 256kb de mem´oria Flash, dos quais 8kb s˜ao utilizados para o bootloader, 8kb de mem´oria SRAM e 4kb de EEPROM (ARDUINO,2017). A principal raz˜ao da escolha do Arduino para esse trabalho, d´a-se por conta de sua caracter´ıstica Open Hardware, pois o mercado disponibiliza f´acil acesso aos m´odulos e sensores.

Figura 3 – Arduino MEGA 2560

3.2 SHIELD ETHERNET W5100

Por ser open hardware, ´e poss´ıvel estender as funcionalidades de uma placa fazendo uso de Shields, placas de hardware que s˜ao encaixadas no Arduino e podem exercer diversas fun¸c˜oes como por exemplo, conex˜ao com a Internet, motores, Wi-Fi, e muitos outros, podendo at´e mesmo empilhar Shields uns sobre outros, j´a que a maioria dispon´ıvel no mercado possui seus pr´oprios conectores (REIS, 2015).

O Shield Ethernet W5100 (Figura4) permite que o Arduino seja conectado a uma rede local ou `a Internet, fazendo com que seja poss´ıvel ao microcontrolador responder a comandos

(24)

Cap´ıtulo 3. FERRAMENTAS 10

remotos, monitorar a placa ou sensores conectados a ela. O Shield ser´a utilizado no trabalho para que seja poss´ıvel configurar um servidor e disponibilizar um endere¸co de IP para a qual a aplica¸c˜ao estar´a executando.

Figura 4 – Shield Ethernet W5100

3.3 M ´ODULO REL´E

M´odulos s˜ao dispositivos que s˜ao conectados nas portas anal´ogicas e/ou digitais do Arduino e permitem ao desenvolvedor estender a capacidade da placa. Por´em, diferentemente dos Shields, que mesmo conectados na placa, ainda disponibilizam a maioria das portas para utiliza¸c˜ao no circuito, os m´odulos precisam fazer uso das portas, tornando as exclusivas para eles.

Existem v´arios m´odulos dispon´ıveis no mercado, como por exemplo, m´odulo Bluetooth, Ethernet, rel´e, entre outros. Para este trabalho, ser´a utilizado o m´odulo rel´e. Um rel´e ´e uma chave mecˆanica que ´e acionada por um meio eletrˆonico, sendo assim, um dispositivo eletromecˆanico. Ele funciona como um interruptor, sendo utilizado para ligar ou desligar dispositivos, permitindo assim o funcionamento de outros aparelhos conectados ao circuito por conta de uma altera¸c˜ao no equipamento causada pela passagem de corrente el´etrica (CARVALHO,2015).

O m´odulo rel´e (Figura 5) ´e um m´odulo que pode ser utilizado no Arduino, possui trˆes pinos para conex˜ao com a placa, e trˆes para sa´ıda (LIMA, 2015).

(25)

Cap´ıtulo 3. FERRAMENTAS 11

Figura 5 – M´odulo rel´e

3.4 CoAP

Quando se fala sobre comunica¸c˜ao entre dois ou mais dispositivos que est˜ao conectados a uma rede, surge a necessidade de um conjunto de regras sobre como essa comunica¸c˜ao ser´a realizada, e esse conjunto ´e chamado de protocolo. Tais regras ir˜ao ditar a maneira com que ser´a feita a troca de mensagens e/ou dados que comp˜oe a rede, levando em considera¸c˜ao as limita¸c˜oes impostas pelo ambiente.

O Constrained Application Protocol (CoAP) foi criado em 2010 por um grupo chamado Constrained RESTful Environments (CoRE), com o objetivo de ser um framework para aplica¸c˜oes que tratam recursos simples em dispositivos conectados em redes limitadas, como por exemplo, aplica¸c˜oes que monitoram sensores, medidores, controlam atuadores e gerenciam dispositivos que comp˜oe a rede. De acordo com a documenta¸c˜ao do protocolo, o CoAP ´e voltado para dispositivos com pequena quantidade de mem´oria RAM e redes restritas onde a taxa de perda de pacotes ´e alta. Foi tamb´em projetado para aplica¸c˜oes M2M, como por exemplo, projetos de Smart Energy e Smart Home, interagindo diretamente com a Web de maneira similar ao HTTP, podendo ser considerado um protocolo RESTful (MARTINS; ZEM, 2014), j´a que faz uso dos principais verbos, GET, PUT, POST e DELETE, e pode-se acessar os recursos fazendo uso de Uniform Resource Identifiers (URIs) no formato coap://.

Do ponto de vista t´ecnico, o CoAP foi desenvolvido para trabalhar na camada de aplica¸c˜ao, cuja qual, normalmente ´e utilizado o protocolo HTTP para prover servi¸cos web. No entanto, o HTTP tem uma complexidade computacional muito alta, alto consumo de energia e baixa taxa de transferˆencia de dados, fazendo com que sua aplica¸c˜ao seja invi´avel em dispositivos com recursos limitados. Sendo assim, a inten¸c˜ao do CoAP, ´e alcan¸car a mesma eficiˆencia que o HTTP tem, por´em, voltado exclusivamente para a IoT (CHEN, 2014). Na figura 6, pode-se ver as principais caracter´ısticas do protocolo CoAP.

(26)

Cap´ıtulo 3. FERRAMENTAS 12

Figura 6 – Caracter´ısticas do protocolo CoAP

Fonte: Adaptado deChen(2014)

Assim como o HTTP, o protocolo CoAP trabalha com a arquitetura cliente/servidor, ou seja, um cliente ir´a enviar uma requisi¸c˜ao ao servidor pedindo para que este fa¸ca alguma coisa. Assim que essa requisi¸c˜ao chega no servidor, ela ´e processada, executada, e logo ap´os a execu¸c˜ao, o servidor envia uma resposta contendo informa¸c˜oes sobre o processamento da requisi¸c˜ao, juntamente com um c´odigo de estado, informando se ocorreu algum erro no caminho ou n˜ao. A figura 7, mostra um exemplo de requisi¸c˜ao e resposta CoAP.

Figura 7 – Exemplo de requisi¸c˜ao e resposta CoAP

Fonte: (TEKLEMARIAM et al.,2016)

Por´em, diferentemente do HTTP, o CoAP consegue trabalhar com envio de mensa-gens ass´ıncronas, utilizando a op¸c˜ao Observe. Tal fun¸c˜ao permite que dispositivos troquem

(27)

Cap´ıtulo 3. FERRAMENTAS 13

informa¸c˜oes sobre os recursos apenas quando h´a alguma altera¸c˜ao, ou seja, os dispositivos podem ficar a maior parte do tempo em um modo de repouso, o que ocasiona um menor consumo tanto de processamento quanto de energia (MAZZER; FRIGIERI; PARREIRA, 2018).

Ainda segundo Mazzer, Frigieri e Parreira(2018), por possuir uma arquitetura baseada em REST, uma outra caracter´ıstica do protocolo CoAP, ´e a integra¸c˜ao com o protocolo HTTP, permitindo assim, a cria¸c˜ao de aplica¸c˜oes robustas, onde clientes web podem acessar servidores CoAP utilizando um proxy por meio de uma URI comum, como por exemplo http://coap-app.com.br/light. Um cen´ario exemplo pode ser visto na figura 8.

Figura 8 – Cen´ario integrando CoAP e HTTP

Fonte: (MILBOURN,2016)

Como este trabalho utilizar´a um dispositivo com recursos limitados, e o foco do trabalho est´a principalmente no estudo, testes e utiliza¸c˜ao das novas tecnologias voltadas para IoT, ser´a utilizada uma implementa¸c˜ao do CoAP para fazer a comunica¸c˜ao e envio de mensagens do web service da aplica¸c˜ao para o servidor.

3.5 WEB SERVICE REST

Web Services s˜ao, de acordo com a W3C Booth et al. (2004), um sistema de software respons´avel por realizar a comunica¸c˜ao M2M atrav´es da rede. E para que um Web Service seja constru´ıdo de acordo com os padr˜oes e funcione perfeitamente, ele precisa seguir alguns princ´ıpios.

(28)

Cap´ıtulo 3. FERRAMENTAS 14

REST (Representational State Transfer ) ´e caracterizado como um paradigma arquite-tural, ou seja, uma s´erie de princ´ıpios arquiteturais para que se possa construir Web Services. Tamb´em comumente chamados de API RESTful, nota-se que, um web service, ou API RESTful, ´e uma API que segue a arquitetura REST. V´arias linguagens de programa¸c˜ao aplicam os padr˜oes REST, como por exemplo, Ruby, PHP, Python, Java, entre outras, pois trabalham, em diversas aplica¸c˜oes, com as requisi¸c˜oes HTTP (GET, POST, DELETE, PUT ), as quais os Web Services implementados fazendo a utiliza¸c˜ao do REST tamb´em fazem uso. (PASQUA, 2015). 3.6 RUBY

Concebida no ano de 1993, pelo japonˆes Yukihiro Matsumoto, conhecido no mundo da programa¸c˜ao como ”Matz”, e tornada p´ublica em 1995, Ruby ´e uma linguagem que vem ganhando bastante espa¸co no mercado. Apesar de ter sido criada em 1993, foi apenas em 2006 que a linguagem atingiu uma grande aceita¸c˜ao (RUBY, 2018).

O Ruby ´e uma linguagem interpretada, multiplataforma e de c´odigo livre, que tem o objetivo de ser simples, direta e limpa para se trabalhar, sendo que a leitura de um c´odigo Ruby, em muitas vezes se assemelha a pr´opria l´ıngua inglesa. Possui diversas aplica¸c˜oes, desde desktop at´e web, por´em, sua popularidade nos ´ultimos foi alavancada em grande parte pelo framework de desenvolvimento web Ruby on Rails. O Ruby tamb´em possui uma ferramenta chamada RubyGems, que, em poucas palavras, ´e um gerenciador de dependˆencias, tornando poss´ıvel a instala¸c˜ao de diversos m´odulos e bibliotecas adicionais, facilitando o desenvolvimento de c´odigo (VAZ, 2016).

3.7 RUBY ON RAILS

Ruby on Rails, ou apenas Rails, como ´e conhecido, ´e um framework para desenvolvi-mento web. Por´em, antes de dar continuidade descrevendo o framework, ´e interessante definir o que exatamente ´e um framework para desenvolvimento web.

Segundo Jaques (2016), um framework para desenvolvimento web, ´e um conjunto de c´odigos e fun¸c˜oes gen´ericas, desenvolvidos em alguma linguagem de programa¸c˜ao, que se relacionam entre si para disponibilizar um conjunto de ferramentas. Tais ferramentas tem como objetivo facilitar o processo de desenvolvimento de um sistema web, resultando em um sistema com maior seguran¸ca, padronizado e de f´acil manutenibilidade. Ou seja, um framework ´e, em poucas palavras, uma ”caixa de ferramentas”, com diversas funcionalidades que s˜ao comuns em v´arias aplica¸c˜oes, sendo tais funcionalidades devidamente implementadas, testadas e prontas para serem utilizadas em softwares.

Rails ´e um framework open source desenvolvido na linguagem Ruby que tem como foco o desenvolvimento web simplificado. Foi criado em 2003 por David Heinemeier Hansson, anunciado oficialmente em 2004, e em 2005 chegou a sua vers˜ao 1.0, mas foi somente em

(29)

Cap´ıtulo 3. FERRAMENTAS 15

2006 que o framework ganhou bastante aten¸c˜ao da comunidade de desenvolvedores, sendo esse um dos principais motivos da populariza¸c˜ao da linguagem Ruby (CAELUM, 2015).

Ainda segundo Caelum (2015), o Rails possui como os dois principais pilares, os conceitos Don’t Repeat Yourself, conhecido como DRY, e o Convention over Configuration, ou CoC. O primeiro conceito incentiva a reutiliza¸c˜ao de c´odigo, conceito vindo tamb´em do paradigma de programa¸c˜ao orientado a objetos. A principal ideia ´e manter cada fun¸c˜ao escrita apenas uma vez dentro do c´odigo e reutiliz´a-la onde for preciso fazendo apenas a chamada de tal fun¸c˜ao, isso torna o c´odigo menos propenso a erros e de f´acil manuten¸c˜ao. J´a o segundo, faz referˆencia a maneira como o Rails trabalha com padr˜oes e nomes. O processo de desenvolvimento torna-se mais ´agil ao seguir as conven¸c˜oes impostas pelo framework, como por exemplo localiza¸c˜ao de arquivos, nomes de classes e m´etodos, evitando que tenhamos que fazer milhares de configura¸c˜oes.

No presente trabalho ser´a utilizada a vers˜ao 2.5 da linguagem Ruby, em conjunto com o framework Ruby on Rails, na vers˜ao 5.2, para o desenvolvimento do Web Service. Os motivos da escolha se d˜ao pela ampla comunidade de desenvolvedores, projetos abertos dispon´ıveis na Internet, o suporte multiplataforma, e principalmente pela disponibilidade da implementa¸c˜ao do protocolo CoAP na linguagem.

(30)

16

4 TRABALHOS RELACIONADOS

Nesse cap´ıtulo, ser˜ao apresentados projetos e trabalhos que se relacionam ao tema, possuem algumas caracter´ısticas, ou se assemelham ao trabalho desenvolvido, bem como uma pequena discuss˜ao analisando e comparando os trabalhos com o presente trabalho.

4.1 FILIPEFLOP - ACENDENDO LˆAMPADAS PELA INTERNET

Nesse trabalho, o autor faz o uso do Arduino e alguns componentes, como o Shield Ethernet, o m´odulo rel´e e lˆampadas para criar um sistema que controla luzes pela Internet. Foi desenvolvido um Web Server utilizando as bibliotecas nativas do Arduino, e o mesmo consegue obter informa¸c˜oes e alterar o status das lˆampadas atrav´es do acionamento dos rel´es. Tal acionamento ´e feito por por um script na linguagem JavaScript, que, ao detectar o evento de clique no bot˜ao definido no HTML, envia uma informa¸c˜ao com o estado da lˆampada para uma div (elemento HTML) que est´a oculta da vis˜ao do usu´ario. Essa informa¸c˜ao ´e ent˜ao capturada pelo Arduino, verificada e por fim enviada ao m´odulo rel´e, permitindo assim, a passagem ou n˜ao da corrente el´etrica para acender ou desligar a lˆampada, como mostrado na figura 9(THOMSEN, 2015).

(31)

Cap´ıtulo 4. TRABALHOS RELACIONADOS 17

Figura 9 – Web Server acendendo lˆampadas

Fonte:Thomsen (2015)

4.2 LELYLAN - IOT CLOUD PLATFORM

O projeto Lelylan ´e uma plataforma em nuvem de microservi¸cos arquiteturais para a IoT voltada ao p´ublico desenvolvedor. Em outras palavras, a ferramenta fornece um painel de controle e uma API para monitorar e controlar dispositivos f´ısicos, com o objetivo de dividir a complexidade da Internet das Coisas em v´arios pequenos e independentes microservi¸cos, podendo ser instalada em qualquer servidor de nuvem p´ublico e com suporte, no momento para as linguagens Curl, Ruby, Node.js e AngularJS. A API tamb´em da suporte para v´arios hardwares encontrados no mercado, como por exemplo o Arduino Yun, Raspberry PI, Eletric Imp, Spark Core, Netduino, Texas Instruments CC3000/CC3200, ou quaisquer outros que ofere¸cam suporte ao protocolo MQTT (LELYLAN, 2017).

Por meio do painel de gerenciamento, o usu´ario pode facilmente ter acesso a op¸c˜oes de adicionar, editar, remover e monitorar quaisquer dispositivos, como por exemplo, sensores de umidade, movimento, alarmes, cˆameras, fechaduras e inclusive lˆampadas inteligentes que sejam suportados pela API, tornando assim menos trabalhosa a conex˜ao de sensores e atuadores na rede. Na figura 10´e mostrado o cadastro de um dispositivo, ap´os esse cadastro, ser´a fornecido um c´odigo identificador e uma senha para realizar a conex˜ao com a rede por meio do protocolo MQTT (LELYLAN, 2017).

(32)

Cap´ıtulo 4. TRABALHOS RELACIONADOS 18

Figura 10 – Inserindo um dispositivo no Lelylan

Fonte: Lelylan(2017)

Ap´os criado o dispositivo no sistema, o usu´ario apenas conecta o dispositivo f´ısico por meio dos dados fornecidos, e assim, ele ficar´a dispon´ıvel para controle a partir do painel de gerenciamento.

4.3 IKEA Tr˚adfri - SMART LAMPS

No mˆes de mar¸co de 2017, a empresa sueca Ikea, maior empresa do mundo no setor de fabrica¸c˜ao e venda de m´oveis, e mundialmente conhecida por seus pre¸cos baixos (segundoJappe (2014)), lan¸cou uma nova linha de produtos de automa¸c˜ao residencial voltada para ilumina¸c˜ao inteligente, chamada Tr˚adfri. A linha consiste de lˆampadas, sensores de presen¸ca, ponto de conex˜ao (gateway ) para v´arias lˆampadas e ajuste de ilumina¸c˜ao por controle remoto, podendo ser encontrada por valores variando entre $11.99 para uma ´unica lˆampada at´e $79.99 para o kit (figura 11) com duas lˆampadas, controle remoto e gateway (IKEA, 2017). (LELYLAN,2017).

Do ponto de vista t´ecnico, o produto ´e bastante atraente dentro dos conceitos da IoT, pois funciona sem necessitar de muita configura¸c˜ao. O kit com lˆampada e controle remoto j´a vem pr´e-configurado, e a aquisi¸c˜ao do gateway ´e somente necess´aria se o usu´ario quiser utilizar o controle pela rede atrav´es de um computador ou do aplicativo para smartphone e definir configura¸c˜oes inteligentes. A comunica¸c˜ao com o gateway ´e feita atrav´es do protocolo CoAP, e entre os dispositivos ´e atrav´es do ZigBee, um protocolo de comunica¸c˜ao com baixo consumo energ´etico projetado para redes locais e de curta distˆancia baseado no padr˜ao IEEE802.15.4 (DENG et al.,2016), isso significa que n˜ao ´e necess´ario que as lˆampadas na rede sejam somente da mesma marca, ou seja, o usu´ario pode comprar e conectar facilmente lˆampadas de outras marcas, como por exemplo a Philips Hue e outros (SCHOUTSEN, 2017).

Uma das grandes vantagens do produto ´e tamb´em a compatibilidade com os sistemas de gerenciamento inteligentes como por exemplo o Apple Homekit, Google Home, e tamb´em a

(33)

Cap´ıtulo 4. TRABALHOS RELACIONADOS 19

Figura 11 – Kit Smart Lighting Ikea

Fonte: IKEA(2017)

assistente virtual Amazon Alexa. E ainda segundo a se¸c˜ao de FAQ (perguntas mais comuns) do site da empresa, eles est˜ao trabalhando em uma API livre para desenvolvedores que queiram projetar seus pr´oprios ambientes de ilumina¸c˜ao inteligente baseado na linha Tr˚adfri. Mas apesar de todas as vantagens do produto, uma grande desvantagem, devido ao fato da limita¸c˜ao da rede provida pelo ZigBee, ´e que o sistema funcionar´a apenas na rede local de onde for instalado, inviabilizando o controle remoto das lˆampadas (SCHOUTSEN,2017).

4.4 DIFERENCIAL TECNOL ´OGICO

O primeiro trabalho utiliza as bibliotecas nativas do Arduino a fim de cumprir o objetivo, que ´e acender as lˆampadas via rede utilizando IP. A constru¸c˜ao do projeto ´e simples e serve como base para a montagem do circuito f´ısico do presente trabalho. Uma r´apida busca na internet e nos deparamos com v´arios projetos semelhantes utilizando o Ethernet Shield. J´a o segundo trabalho, consegue alcan¸car o mesmo objetivo mas de uma maneira mais complexa e fazendo o uso de um protocolo de rede para IoT, o MQTT, oferecendo um painel de controle onde ´e poss´ıvel interagir com os dispositivos. Um diferencial do segundo projeto ´e que a API fornecida oferece suporte a diversos hardwares e linguagens de programa¸c˜ao de alto n´ıvel. E por fim, o terceiro projeto ´e um produto que j´a est´a no mercado desde o primeiro semestre do ano de 2017, sendo em suma, bastante parecido com este trabalho, fazendo inclusive uso do mesmo protocolo de rede para a comunica¸c˜ao das lˆampadas e gateway, o CoAP, por´em, com o principal diferencial de utilizar ZigBee para funcionamento apenas na rede local.

Apesar de o objetivo final de todos os trabalhos serem o mesmo, acender uma lˆampada via rede, o principal diferencial dos trˆes trabalhos apresentados, para com o presente trabalho, est´a na utiliza¸c˜ao do protocolo CoAP em conjunto com a plataforma Arduino, sendo que, tal protocolo que n˜ao ´e encontrado nas bibliotecas nativas da placa.

(34)

20

5 METODOLOGIA

Neste cap´ıtulo, s˜ao apresentadas e descritas as etapas que foram realizadas, na tentativa de cumprir com os objetivos inicialmente propostos. Sendo assim, o presente cap´ıtulo est´a organizado da seguinte maneira:

• Defini¸c˜ao das tecnologias;

• Estudo de cada uma das tecnologias selecionadas; • Elabora¸c˜ao e montagem do circuito f´ısico;

• Desenvolvimento do Web Service;

• Desenvolvimento do servidor e aplica¸c˜ao; • Realiza¸c˜ao de testes gerais;

5.1 DEFINI¸C˜AO DAS TECNOLOGIAS

Dando in´ıcio ao trabalho, em um primeiro momento foram definidas as tecnologias a serem utilizadas. ´E importante ressaltar que o intuito do presente trabalho, ´e de estudar as tecnologias propostas, obter conhecimento suficiente para ser capaz de estruturar um projeto fazendo o uso das mesmas, e sempre levando em considera¸c˜ao as limita¸c˜oes impostas pelas tecnologias definidas. Tendo isso em mente, como mencionado em se¸c˜oes anteriores, o presente trabalho utilizar´a as seguintes tecnologias:

• Linguagem Ruby e framework Ruby on Rails • Arduino Mega 2560

• Shield Ethernet • M´odulo Rel´e • Protocolo CoAP

• Cliente CoAP para testes

A escolha de tais tecnologias foi feita com base em pesquisas e leituras, concluindo que estas seriam as que melhor atenderiam as necessidades do projeto. Foram tamb´em levados em conta na escolha, crit´erios como, a comunidade ativa relacionada, facilidade de acesso, efic´acia e importˆancia dentro do contexto do trabalho.

5.2 ESTUDO DAS TECNOLOGIAS

Esta etapa foi constitu´ıda por diversas pesquisas na Internet, em livros, documenta¸c˜oes, manuais, entre outros, referentes a todas as tecnologias que foram utilizadas no trabalho, at´e que fosse formada uma base de conhecimento necess´aria para dar in´ıcio ao desenvolvimento propriamente dito. Por´em, vale lembrar que o estudo da literatura dispon´ıvel se estendeu durante toda a fase de desenvolvimento.

(35)

Cap´ıtulo 5. METODOLOGIA 21

5.3 ELABORA¸C˜AO E MONTAGEM DO CIRCUITO F´ISICO

Ap´os a defini¸c˜ao e estudos iniciais das tecnologias, o pr´oximo passo foi montar o circuito f´ısico utilizado no trabalho, para em seguida, dar prosseguimento `a fase de codifica¸c˜ao. O circuito ´e composto por uma placa microcontroladora Arduino Mega 2560, um shield Ethernet, um m´odulo rel´e, cabos de conex˜ao e uma lˆampada. Ap´os a montagem do circuito, foram realizados testes, a fim de certificar-se de que todas as conex˜oes estavam corretas.

5.4 DESENVOLVIMENTO DO WEB SERVICE

Nesta etapa, utilizando uma IDE ou editor de texto, foi constru´ıdo o web service utilizando a linguagem Ruby, juntamente com o framework Ruby on Rails. O Web Service ´e respons´avel por receber as requisi¸c˜oes vindas do cliente e enviar requisi¸c˜oes ao servidor CoAP no Arduino, tais requisi¸c˜oes podem ser, GET, para retribuir as informa¸c˜oes e estado da lˆampada, e PUT, com o objetivo de alterar o estado da lˆampada, ou seja, acender ou apagar. Assim que o servidor CoAP responder corretamente a requisi¸c˜ao que foi enviada, o Web Service se encarrega de retornar as informa¸c˜oes em formato JSON, sendo que, tais informa¸c˜oes poderiam ser utilizadas para construir um painel de controle para um usu´ario final.

Ao utilizar a linguagem Ruby em conjunto com o framework para desenvolvimento web Ruby on Rails, pode-se utilizar uma Gem (um tipo de biblioteca bastante utilizada no mundo Ruby e Rails), com uma implementa¸c˜ao de um servidor e cliente CoAP, eliminando assim a necessidade da utiliza¸c˜ao de um proxy na estrutura do trabalho, como mencionado no apˆendice A. Tal biblioteca chama-se ”David”, foi desenvolvida pelo cientista da computa¸c˜ao Henning Mueller, e encontra-se dispon´ıvel publicamente no reposit´orio do GitHub do desenvolvedor (MUELLER, 2018).

5.5 DESENVOLVIMENTO DO SERVIDOR E APLICA¸C˜AO

Ap´os a montagem do circuito e todas as conex˜oes f´ısicas necess´arias, utilizou-se uma implementa¸c˜ao do CoAP chamada Microcoap, desenvolvida na linguagem C e dispon´ıvel no reposit´orio https://github.com/1248/microcoap do GitHub, para colocar o servidor CoAP na rede. Foram tamb´em desenvolvidos os endpoints GET e PUT necess´arios para responder as requisi¸c˜oes da aplica¸c˜ao e que s˜ao respons´aveis por retribuir informa¸c˜oes e acender/apagar a lˆampada, fazendo assim dessa etapa, de grande importˆancia para o trabalho como um todo. 5.6 REALIZA¸C˜AO DE TESTES

Durante a fase de desenvolvimento e codifica¸c˜ao do trabalho, foram feitos testes em cada componente e suas respectivas funcionalidades, com o objetivo de identificar quaisquer erros que pudessem prejudicar o sistema ou serem fator limitante para o sucesso do trabalho. O objetivo dessa etapa era o de garantir o funcionamento de cada parte de acordo com os

(36)

Cap´ıtulo 5. METODOLOGIA 22

objetivos anteriormente propostos, verificando a estabilidade do servi¸co e consistˆencia dos dados enviados e recebidos atrav´es do servidor, efetuando corre¸c˜oes sempre que necess´ario.

Para os testes com o servidor, utilizou-se um cliente CoAP com o objetivo de fazer as requisi¸c˜oes GET e PUT. Para isso, foi feito o uso do coap-cli, uma interface de linha de comando para CoAP, desenvolvida em node.js (COLLINA,2016).

Utilizou-se tamb´em, para os testes, a aplica¸c˜ao Wireshark, que tem como objetivo analisar o tr´afego de rede e mostrar dados sobre todas as requisi¸c˜oes e respostas dos protocolos utilizados (WIRESHARK, 2018). Nesse caso, foi analisada a rede em que os dispositivos se encontravam, em busca das informa¸c˜oes sobre as mensagens CoAP transferidos durante os testes do trabalho.

(37)

23

6 DESENVOLVIMENTO

Nesse cap´ıtulo, s˜ao descritas mais aprofundadamente as etapas do desenvolvimento, o que cada parte da estrutura do trabalho ´e respons´avel por fazer, as caracter´ısticas de cada etapa e como funciona a conex˜ao entre as diversas partes do sistema como um todo.

Tendo as tecnologias e objetivos bem definidos, deu-se in´ıcio `a prototipagem do sistema em geral, procurando entender todos os pontos de comunica¸c˜ao e quais eram os principais desafios. Pode-se, de maneira simpl´oria, separar o sistema em duas partes maiores, sendo elas o hardware, e o software, as quais, para melhor entendimento, a partir desse ponto, ser˜ao chamadas respectivamente de parte f´ısica, e parte l´ogica. Ambas ser˜ao organizadas como subse¸c˜oes do desenvolvimento. E abrindo o escopo, ser˜ao separados tamb´em o desenvolvimento da parte f´ısica e l´ogica em sub-subse¸c˜oes mais espec´ıficas dentro de cada uma.

6.1 HARDWARE - PARTE F´ISICA

A parte f´ısica do sistema foi constru´ıda a partir dos componentes definidos anterior-mente, que s˜ao os seguintes:

• Arduino Mega 2560 • Shield Ethernet • M´odulo Rel´e • Lˆampada comum

Para se ter um melhor entendimento de como os componentes se comportam e como deveriam ser conectados entre si, antes de prosseguir com a montagem do circuito de maneira f´ısica, foi desenvolvido atrav´es da ferramenta Fritzing1, um prot´otipo do circuito, representado

a seguir na figura 12, que ajudou a entender melhor a parte f´ısica do trabalho.

Analisando a figura, pode-se dividir as fun¸c˜oes de cada um dos componentes. 6.1.1 Arduino

A placa microcontroladora Arduino ´e respons´avel gerenciar toda a aplica¸c˜ao, integrando todos os componentes, trocando informa¸c˜oes com o Web Service e disparando sinais para o m´odulo rel´e com o objetivo de acender ou apagar a lˆampada. O servidor CoAP foi compilado e transferido para a execu¸c˜ao no Arduino. Em outras palavras, a placa ´e o c´erebro da aplica¸c˜ao, j´a que todo o servidor e l´ogica da aplica¸c˜ao ´e executado por ela.

1Ferramenta gr´atis e de c´odigo aberto com o intuito de tornar a ´area da eletrˆonica acess´ıvel para qualquer

pessoa que tenha interesse, oferecendo um software e um f´orum para a comunidade ativa, permitindo aos usu´arios documentar e compartilhar seus projetos, bem como criar e produzir circuitos e placas profissionalmente (FRITZING,2017).

(38)

Cap´ıtulo 6. DESENVOLVIMENTO 24

Figura 12 – Circuito de componentes

Fonte: Autoria pr´opria

6.1.2 Ethernet Shield

Como o Arduino Mega 2560 n˜ao possui nativamente nenhum tipo componente que permita a comunica¸c˜ao com a Internet, foi utilizado o shield ethernet para estender a funcionalidade da placa e permitir que ele se conecte `a rede. No que diz respeito a conex˜ao das portas, o shield foi constru´ıdo com o intuito de ser facilmente integrado `a placa, sendo que ´e apenas necess´ario posicion´a-lo de forma com que os pinos centrais se encaixem corretamente e a porta de conex˜ao do RJ45 fique exatamente em cima da porta USB do Arduino, como pode ser visto na figura 13.

Figura 13 – Montagem do Shield no Arduino

(39)

Cap´ıtulo 6. DESENVOLVIMENTO 25

Pode-se dizer que o shield ´e um dos componentes mais importantes do trabalho, pois sem ele n˜ao seria poss´ıvel fazer com que o servidor CoAP, que ´e executado pelo Arduino, recebesse um endere¸co de IP, impedindo assim que requisi¸c˜oes enviadas pelo Web Service chegassem at´e o servidor pela rede.

6.1.3 Rel´e

O m´odulo rel´e foi conectado como no esquema mostrado na figura 12, um cabo sai da porta 5v do Arduino para a porta 5v do rel´e, permitindo que ele tenha energia suficiente para ser acionado. Outro cabo sai da porta GND (ground) do Arduino e vai at´e a porta GND do rel´e, o objetivo dessa conex˜ao ´e evitar que se tenha interferˆencias na corrente el´etrica do trabalho. E a ´ultima porta, sendo a porta l´ogica, parte de alguma das portas dispon´ıveis no Arduino, no caso deste trabalho, a porta n´umero nove, para a ´unica que sobrou do rel´e.

Na sa´ıda do rel´e, cabos isolados s˜ao conectados na lˆampada e na rede el´etrica. O rel´e atua como um interruptor no circuito, pois ´e ele quem recebe o sinal para abrir ou fechar, deixando com que a corrente el´etrica passe ou n˜ao para acender a lˆampada.

6.1.4 Lˆampada

Por ´ultimo e no fim do circuito, encontra-se uma pequena lˆampada comum, conectada `a sa´ıda do rel´e por meio de cabos isolados para evitar choques, e tamb´em `a rede el´etrica, para ter energia suficiente para acender completamente. A lˆampada deve acender ou apagar conforme a a¸c˜ao do rel´e.

6.2 MONTAGEM DO CIRCUITO

Assim que todos os componentes foram adquiridos, dando in´ıcio ao projeto, o primeiro passo dado foi construir o circuito f´ısico de acordo com o esquema mostrado anteriormente na figura 12. Atentando-se a todos os detalhes do esquema, pode-se ver o circuito constru´ıdo na figura 14

Para ter-se a garantia de que o circuito est´a completamente funcional, foi utilizada a solu¸c˜ao disponibilizada por Thomsen (2015). Com algumas pequenas altera¸c˜oes no c´odigo a fim de mapear o rel´e para a porta que est´a conectada no circuito constru´ıdo, conseguiu-se reproduzir o resultado esperado e ter uma garantia de que o circuito encontrava-se com todas as conex˜oes feitas de maneira correta. O resultado pode ser visto abaixo na sequˆencia de figuras 15,16 e17.

(40)

Cap´ıtulo 6. DESENVOLVIMENTO 26

Figura 14 – Circuito f´ısico finalizado

Fonte: Autoria pr´opria

Figura 15 – Captura de tela da solu¸c˜ao de Thomsen (2015) antes de acionar a lˆampada

(41)

Cap´ıtulo 6. DESENVOLVIMENTO 27

Figura 16 – Captura de tela da solu¸c˜ao de Thomsen (2015) ap´os o acionamento da lˆampada

Fonte: Autoria pr´opria

Figura 17 – Foto do experimento ap´os acender a lˆampada utilizando a solu¸c˜ao de Thomsen (2015)

(42)

Cap´ıtulo 6. DESENVOLVIMENTO 28

Ap´os certificar-se de que o circuito funcionava corretamente, o pr´oximo passo na constru¸c˜ao da solu¸c˜ao era codificar os endpoints CoAP e carreg´a-los juntamente com o servidor para serem executados no Arduino. E por fim desenvolver o Web Service, que conter´a os recursos e se comunicar´a com o servidor CoAP atrav´es de requisi¸c˜oes. Assim, passa-se para o desenvolvimento do software, parte l´ogica da aplica¸c˜ao.

6.3 SOFTWARE - PARTE L ´OGICA

A parte l´ogica do sistema ´e onde se encontram os c´odigos e instru¸c˜oes que realizam a comunica¸c˜ao com o hardware e fazem o sistema funcionar, sendo respons´avel por trabalhar com todas as informa¸c˜oes enviadas e recebidas. Tal parte foi constru´ıda utilizando as tecnologias definidas anteriormente, que s˜ao as seguintes:

• Protocolo CoAP • Linguagem C • Linguagem Ruby

• Framework Ruby On Rails

Novamente para ter-se um melhor entendimento onde as tecnologias seriam aplicadas, como se comportariam e interagiriam entre si, foi constru´ıdo um esquema com n´umeros e setas que mostram o fluxo de requisi¸c˜oes e respostas entre os componentes do sistema. Tal fluxo ´e apresentado a seguir na figura 18.

(43)

Cap´ıtulo 6. DESENVOLVIMENTO 29

Figura 18 – Fluxo de funcionamento

Fonte: Autoria pr´opria

Analisando a figura, ´e apresentado abaixo uma descri¸c˜ao de cada ponto do fluxo e logo ap´os, uma separa¸c˜ao de cada uma das tecnologias, explicando suas fun¸c˜oes dentro do sistema.

1. O cliente CoAP faz uma requisi¸c˜ao ao Web Service para recuperar o estado da lˆampada (GET ), ou para alterar o estado da lˆampada, acendendo ou apagando (PUT ).

2. A requisi¸c˜ao chega ao Web Service, e este envia a mesma requisi¸c˜ao ao servidor da aplica¸c˜ao.

3. O servidor CoAP da aplica¸c˜ao processa a requisi¸c˜ao e a envia para o servidor CoAP, este que est´a sendo executado pelo Arduino Mega2560.

4. O servidor CoAP recebe a requisi¸c˜ao que chega ao endpoint, processa, e dispara a a¸c˜ao para o Arduino executar.

5. O Arduino executa a a¸c˜ao definida no endpoint, acendendo ou apagando a lˆampada. 6. A informa¸c˜ao sobre a resposta da a¸c˜ao ´e devolvida ao Arduino, e este a transfere para o

servidor CoAP.

7. O servidor CoAP devolve a resposta sobre a a¸c˜ao executada ao servidor da aplica¸c˜ao. 8. O servidor da aplica¸c˜ao captura a resposta e manda a informa¸c˜ao para o Web Service. 9. O Web Service, assim que recebe a resposta do servidor, a transforma em JSON e envia

para o cliente que realizou a requisi¸c˜ao inicialmente. 6.3.1 Servidor CoAP

O sistema faz a utiliza¸c˜ao de uma das implementa¸c˜oes do protocolo CoAP conhecida como Microcoap, que se comparada `a implementa¸c˜ao original, fornece apenas as fun¸c˜oes mais b´asicas do protocolo para fim de testes. Tal implementa¸c˜ao interage diretamente com o shield ethernet utilizado no circuito f´ısico, fazendo-o se conectar a rede e fornecendo o endere¸co, cujo qual o web service utiliza para enviar a requisi¸c˜ao. O servidor ´e respons´avel por receber e

(44)

Cap´ıtulo 6. DESENVOLVIMENTO 30

enviar os dados atrav´es de requisi¸c˜oes GET e PUT, sendo a requisi¸c˜ao GET para recuperar os dados sobre a lˆampada com o fim de exibir se ela est´a acesa ou n˜ao, e a requisi¸c˜ao PUT para enviar dados com o objetivo de acender ou desligar a lˆampada.

6.3.2 Endpoints CoAP e Arduino

A aplica¸c˜ao executada pelo Arduino foi constru´ıda seguindo os exemplos colocados pelo c´odigo do servidor CoAP, utilizando a linguagem C, linguagem de programa¸c˜ao estruturada e de uso geral, que pode ser escrita a partir de qualquer editor de texto, por´em, ´e prefer´ıvel que o editor seja voltado `a programa¸c˜ao, garantindo assim que o c´odigo seja bem escrito.

Utilizando as defini¸c˜oes do CoAP, o c´odigo da aplica¸c˜ao foi escrito e colocado na defini¸c˜ao dos endpoints que o servidor utiliza para definir o que ´e executado, sendo que, assim que uma requisi¸c˜ao do tipo GET chega ao servidor, ele deve redirecion´a-la para o endpoint GET do c´odigo, tal qual ´e respons´avel por retornar a resposta informando se a requisi¸c˜ao foi corretamente processada, bem como o que foi solicitado, nesse caso, a informa¸c˜ao sobre a lˆampada. E se em algum momento o servidor receber uma requisi¸c˜ao do tipo PUT, a mesma precisa ser redirecionada ao endpoint correspondente, cujo qual contem o algoritmo que ´e respons´avel por enviar um sinal ao rel´e do circuito.

O algoritmo primeiramente faz o mapeamento do rel´e `a sua respectiva porta conectada no Arduino, para em seguida prosseguir com as instru¸c˜oes. Ap´os mapeada a porta no c´odigo, para o caso da requisi¸c˜ao GET, o pr´oximo passo do algoritmo ´e fazer com que a aplica¸c˜ao busque o estado atual do rel´e. E para requisi¸c˜oes PUT, o algoritmo deve enviar um sinal digital (seja 0 ou 1), para a porta definida anteriormente, fazendo com que o rel´e seja ativado ou desativado.

O c´odigo da aplica¸c˜ao encontra-se dispon´ıvel publicamente no Github do autor, no reposit´orio nomeado arduino-microcoap-light.

6.3.3 Web Service

O Web Service ´e constitu´ıdo de uma API REST desenvolvida utilizando Ruby On Rails. O processo de desenvolvimento parte do mesmo que uma aplica¸c˜ao tradicional em Rails, foi necess´ario criar a aplica¸c˜ao por linha de comando. Ap´os a execu¸c˜ao do comando foi preciso definir um banco de dados e configurar a conex˜ao. Feita a configura¸c˜ao do banco de dados, o pr´oximo passo era criar o model (modelo), que nesse caso optou-se por ser chamado de Lamp, fazendo referencia `a lˆampada. Foi preciso tamb´em criar um controller (controlador) para lˆampada, seguindo o padr˜ao MVC. Dentro do controlador, encontram-se os endpoints do Web Service, sendo os principais, GET e PUT, que se comunicam com o servidor CoAP do Arduino. Ap´os isso, foi preciso definir as rotas no arquivo routes.rb. As rotas s˜ao respons´aveis por identificar e direcionar uma requisi¸c˜ao do cliente para a a¸c˜ao correta no controlador.

Ap´os a requisi¸c˜ao ser enviada e processada pelo servidor CoAP no Arduino, o Web Service deve receber uma resposta informando se o processamento ocorreu corretamente, e

(45)

Cap´ıtulo 6. DESENVOLVIMENTO 31

ao receber tal informa¸c˜ao, deve retornar ao cliente uma mensagem do tipo JSON, contendo informa¸c˜oes como por exemplo, o identificador da lˆampada, e seu status.

Apesar de estar sendo utilizado o padr˜ao MVC internamente no Web Service, como a aplica¸c˜ao ´e no formato de API, n˜ao existe a necessidade de uma camada de vis˜ao, ou seja, a interface de usu´ario. Vale ressaltar que, como o Web Service retorna informa¸c˜oes em JSON, essas informa¸c˜oes poderiam futuramente ser utilizadas para compor uma tela para o usu´ario final, fazendo uso de tecnologias de desenvolvimento front end.

Assim como o c´odigo do servidor e seus endpoints, o c´odigo do Web Service encontra-se tamb´em dispon´ıvel publicamente no Github do autor, no reposit´orio chamado smart-light-coap-api.

(46)

32

7 AN´ALISE E DISCUSS˜AO DOS RESULTADOS

Nesse cap´ıtulo, ser˜ao apresentados todos os resultados obtidos juntamente com suas an´alises. Ap´os a apresenta¸c˜ao dos mesmos, ser˜ao expostos tamb´em os problemas e dificuldades encontrados durante o desenvolvimento da aplica¸c˜ao, bem como poss´ıveis solu¸c˜oes.

Os resultados ser˜ao organizados em trˆes se¸c˜oes, a primeira delas abordar´a uma solu¸c˜ao baseada no pr´oprio firmware do Arduino, na segunda ser˜ao apresentados os testes realizados utilizando o Web Service baseado em CoAP previamente desenvolvido, e na terceira, a solu¸c˜ao completa utilizando o Web Service para realizar a comunica¸c˜ao com o servidor CoAP inicializado no Arduino.

7.1 CoAP ARDUINO

Ao prosseguir com o desenvolvimento da solu¸c˜ao, viu-se necess´ario certificar-se de que o protocolo CoAP realmente podia ser executado no Arduino, eliminando completamente qualquer d´uvida de que o hardware poderia ser fator limitante no desenvolvimento.

Para isso, ap´os algumas buscas, foi encontrada uma implementa¸c˜ao reduzida do protocolo CoAP chamada microcoap. Tal implementa¸c˜ao encontra-se dispon´ıvel no reposit´orio https://github.com/1248/microcoap do Github. A implementa¸c˜ao ´e escrita em linguagem C e pode ser compilada e carregada facilmente para o firmware do Arduino. Na figura 19 pode-se ver a estrutura da solu¸c˜ao microcoap.

Figura 19 – Estrutura da implementa¸c˜ao microcoap

Fonte: Autoria pr´opria

O principal arquivo de c´odigo a ser trabalho ´e o endpoints.c. Como mencionado anteriormente, tal arquivo ´e respons´avel por definir quais ser˜ao as respostas e o que o servidor

(47)

Cap´ıtulo 7. AN ´ALISE E DISCUSS ˜AO DOS RESULTADOS 33

deve executar ao receber uma requisi¸c˜ao.

O primeiro passo foi mapear a porta em que se encontra o rel´e no circuito anteriormente constru´ıdo e definir um estado inicial para o rel´e como 0, ou seja, n˜ao acionado. Ap´os, era necess´ario definir a l´ogica na fun¸c˜ao handle put light(), que trata as requisi¸c˜oes vindas pelo m´etodo PUT. Para isso, desenvolveu-se uma l´ogica simples com condicionais if/else apenas para verificar em qual estado o rel´e se encontrava, caso estivesse com o estado 0, ou seja, n˜ao acionado, e fosse enviado o sinal 1 pela requisi¸c˜ao PUT, o estado era alterado para acionado (1) e um sinal era disparado ao Arduino, utilizando a fun¸c˜ao digitalWrite(), passando por parˆametros a porta em qual o rel´e encontra-se e a constante LOW, mapeada para acender a lˆampada, e fazendo o contrario caso o rel´e se encontrasse no estado acionado e fosse enviado o sinal 0 pela requisi¸c˜ao PUT. Feito as devidas altera¸c˜oes, o c´odigo foi compilado e carregado no Arduino atrav´es da IDE para que testes pudessem ser realizados.

O primeiro dos testes foi verificar se o endere¸co de IP gerado pela implementa¸c˜ao era acess´ıvel. Para isso, era necess´ario enviar um ping ao endere¸co, que nesse caso era 192.168.0.23. Ap´os enviar o sinal, consegue-se verificar que o servidor ´e alcan¸c´avel, resultado que pode ser verificado na figura 20.

Figura 20 – Servidor alcan¸cado pelo comando ping

Fonte: Autoria pr´opria

Ap´os verificado que o servidor poderia ser alcan¸cado, o pr´oximo passo era testar os endpoints definidos no servidor CoAP. Para isso foi utilizado um cliente CoAP de linha de comando, juntamente com a ferramenta Wireshark, para capturar as mensagens que trafegavam na rede, a fim de verificar se as requisi¸c˜oes e respostas estavam chegando aos endere¸cos corretos.

O primeiro endpoint a ser testado foi o endpoint GET, com o intuito de retribuir informa¸c˜oes sobre o estado do rel´e. O teste deu-se por enviar uma requisi¸c˜ao GET ao servidor CoAP e verificar se tal requisi¸c˜ao era capturada pelo Wireshark. Abaixo, na figura 21 , pode-se ver o comando para a realiza¸c˜ao da requisi¸c˜ao, nota-se a semelhan¸ca com uma URI do protocolo HTTP.

(48)

Cap´ıtulo 7. AN ´ALISE E DISCUSS ˜AO DOS RESULTADOS 34

Figura 21 – Comando para a execu¸c˜ao de uma requisi¸c˜ao GET para o servidor CoAP

Fonte: Autoria pr´opria

Ap´os a execu¸c˜ao do comando, abaixo, na figura 22, pode-se notar que o Wireshark conseguiu capturar as mensagens CoAP, tanto a requisi¸c˜ao indo do IP 192.168.0.13, que no momento representava o notebook que enviou a requisi¸c˜ao, para o IP 192.168.0.23, que representa o servidor CoAP, quanto a resposta, indo servidor CoAP para o notebook. Pode-se notar tamb´em que juntamente com a resposta, o servidor incluiu o c´odigo 2.05, que representa o retorno do conte´udo.

Figura 22 – Captura de mensagem GET CoAP pela ferramenta Wireshark

Fonte: Autoria pr´opria

Por fim, era necess´ario testar se o servidor conseguia tratar de maneira esperada, as requisi¸c˜oes do tipo PUT. E para isso, foram feitos testes similares ao do comando GET, por´em, alterando para PUT e passando o estado do rel´e para ser alterado. Como inicialmente o rel´e estava desativado, foi enviado para o servidor uma requisi¸c˜ao PUT para acionar o rel´e, ou seja, um sinal 1, cuja execu¸c˜ao e resultado podem ser vistos abaixo, nas figuras 23e 24

(49)

Cap´ıtulo 7. AN ´ALISE E DISCUSS ˜AO DOS RESULTADOS 35

Figura 23 – Comando para execu¸c˜ao de uma requisi¸c˜ao PUT com o valor 1 para o servidor

Fonte: Autoria pr´opria

Figura 24 – Captura de mensagem PUT CoAP com o valor 1 pela ferramenta Wireshark

Fonte: Autoria pr´opria

disparar o sinal para o rel´e, e por fim, atingindo o objetivo final, ligando a lˆampada. Pode-se notar tamb´em, que o servidor retornou juntamente o c´odigo 2.04, que significa que um recurso foi alterado.

Como ´ultimo teste com a requisi¸c˜ao PUT, era necess´ario desativar o rel´e, enviando um sinal com o valor 0, alterando assim o estado da lˆampada para desligado. O comando e pacote capturado pela ferramenta Wireshark, podem ser vistos nas figuras 25e 26

Figura 25 – Comando para execu¸c˜ao de uma requisi¸c˜ao PUT com o valor 0 para o servidor

Referências

Documentos relacionados

o Oxford Practice Grammar with answers – Intermediate Autor: John Eastwood – Editora Oxford ISBN 978-0-19-4579803 (gramática para complementação de estudo (MATERIAL OPCIONAL)

• Não há inflação de alimentos, há inflação, causada por choques cambiais, auxílio emergencial, problemas fiscais e má gestão de estoques públicos;. • O Brasil precisa

II - os docentes efetivos, com regime de trabalho de 20 (vinte) horas semanais, terão sua carga horária alocada, preferencialmente, para ministrar aulas, sendo o mínimo de 8 (oito)

Ciência e Tecnologia da Prefeitura Municipal de João Pessoa, no prazo de validade de um ano.. 10° O cadastro de reserva terá validade de um ano a contar da data

Para o Planeta Orgânico (2010), o crescimento da agricultura orgânica no Brasil e na América Latina dependerá, entre outros fatores, de uma legislação eficiente

[r]

O presente trabalho foi realizado em uma sub-bacia do rio Itapemirim, à montante da estação fluviométrica de Ibitirama, no estado do Espírito Santo, tendo como objetivos a

Os profissionais da medicina do trabalho que preenchem a ficha de aptidão do trabalhador, ao assinalarem se o trabalhador se encontra apto, apto condicionalmente