Sei sulla pagina 1di 54

INTERNET DAS COISAS UTILIZANDO RASPBERRY PI 3 E AMAZON WEB

SERVICES.

Eduardo Felipe Gonzalez

Monografia apresentada ao corpo docente do


Curso de Especializao em Engenharia
Mecatrnica da Universidade Catlica de
Petrpolis, como parte dos requisitos necessrios
obteno do grau de Especialista em Engenharia
Mecatrnica.

Orientador: William Vairo dos Santos


Coorientadora: Flavia Christina Gomes dos Santos

Rio de Janeiro
Julho 2017

I
INTERNET DAS COISAS UTILIZANDO RASPBERRY PI 3 E AMAZON WEB
SERVICES.

Eduardo Felipe Gonzalez

MONOGRAFIA SUBMETIDA AO CORPO DOCENTE DO CURSO DE ESPECIALIZAO


EM ENGENHARIA MECATRNICA DA UNIVERSIDADE CATLICA DE PETRPOLIS,
COMO PARTE DOS REQUISITOS NECESSRIOS PARA A OBTENO DO GRAU DE
ESPECIALISTA EM ENGENHARIA MECATRNICA.

Aprovada por:

________________________________________________

Prof. William Vairo dos Santos, M. Sc.

________________________________________________

Profa Flavia Christina Gomes dos Santos, M. Sc.

RIO DE JANEIRO, RJ BRASIL

JULHO DE 2017

II
Gonzalez, Eduardo Felipe

Internet das Coisas utilizando Raspberry Pi 3 e Amazon


Web Services / Eduardo Felipe Gonzalez Rio de Janeiro:
UCP, 2017.

54 p.: il.; 29,7 cm.

Orientador: William Vairo dos Santos

Coorientadora: Flavia Christina Gomes dos Santos

Monografia (Especializao) UCP/ Curso de


Especializao em Engenharia Mecatrnica, 2017.

Referencias Bibliogrficas: p. 46.

1. Robtica. 2. Automao Industrial. I. Santos, William


Vairo dos. II. Universidade Catlica de Petrpolis, Curso de
Especializao em Engenharia Mecatrnica. III. Titulo.

III
Resumo da Monografia apresentada UCP como parte dos requisitos necessrios para a
obteno do grau de Especialista.

INTERNET DAS COISAS UTILIZANDO RASPBERRY PI 3 E AMAZON WEB


SERVICES.

Eduardo Felipe Gonzalez

Julho/2017

Orientador: William Vairo dos Santos

Coorientadora: Flavia Christina Gomes dos Santos

Programa: Curso de Especializao em Engenharia Mecatrnica

RESUMO

O termo Internet das coisas (do ingls Internet of Things ou IoT) refere-se a uma
revoluo tecnolgica que pode ser a prxima evoluo da internet e est cada vez mais
presente em nosso cotidiano. Entender esse conceito e o impacto que ele pode causar no
mundo em que vivemos, de extrema importncia para estarmos preparados para as
novas oportunidades que surgiro, dessa forma, o objetivo desse estudo proporcionar o
entendimento sobre IoT, atravs de uma aplicao simples e de fcil implementao
utilizando um sensor de vibrao SW-420 conectado a plataforma Raspberry Pi 3
utilizando o sistema operacional Raspbian (Linux), se comunicando pela porta ethernet
com a Amazon Web Services (AWS), plataforma de servios em nuvem segura,
oferecida pela Amazon, que ser responsvel por receber e armazenar todas as vibraes
identificadas pelo sensor em um banco de dados disponibilizado pela prpria empresa,
assim, os dados podem ser exibidos atravs de um grfico em uma pgina web esttica
que poder ser acessada por qualquer pessoa de qualquer lugar.

Palavras-Chave: Internet das Coisas, Raspberry Pi, Amazon Web Services.

IV
Abstract of Monograph presented to UCP as a partial fulfillment of the requirements for
the degree of Specialist

INTERNET OF THINGS USING RAPSBERRY PI 3 AND AMAZON WEB SERVICES.

Eduardo Felipe Gonzalez

July/2017

Advisor: William Vairo dos Santos

Co Advisor: Flavia Christina Gomes dos Santos

Department: Specialization in Mechatronics Engineering

ABSTRACT

The acronym IoT Internet of Things refers to a technological revolution that can be the
next evolution of the internet and is increasingly present in our daily lives. Understanding
this concept and the impact it can cause in the world we live is extremely important to be
prepared for new opportunities that will come up, so the object of this study is to provide
an understanding of IoT through a simple and easy application using a SW-420 vibration
sensor connected to the Raspberry Pi 3 platform running the Raspbian (Linux)
operational system, communicating via Ethernet port with Amazon Web Services
(AWS), a secure cloud services platform offered by Amazon, which will be responsible
for receiving and storing all the vibrations identified by the sensor in a database made
available by the own company, so the data can be displayed through a graphic on a static
web page that can be accessed by anyone from anywhere.

Keywords: Interne of Things, Raspberry Pi, Amazon Web Service.

V
INTERNET DAS COISAS UTILIZANDO RASPBERRY PI 3 E AMAZON WEB
SERVICES

Eduardo Felipe Gonzalez

Monografia apresentada ao corpo docente do


Curso de Especializao em Engenharia
Mecatrnica da Universidade Catlica de
Petrpolis, como parte dos requisitos necessrios
obteno do grau de Especialista em Engenharia
Mecatrnica.

Orientador: William Vairo dos Santos


Coorientadora: Flavia Christina Gomes dos Santos

Rio de Janeiro
Julho 2017

VI
NDICE DE FIGURAS

Figura 1 - Impacto econmico global gerado pela IoT ..................................................... 12


Figura 2 - Busca pela sigla "IoT" registrada pelo Google Trends nos ltimos 5 anos ..... 13
Figura 3 - Busca pela sigla "IoT" registrada por regio no Google Trends ...................... 14
Figura 4 - Fatores que permitira o aparecimento da IoT ................................................... 17
Figura 5 - Arquitetura IoT ................................................................................................. 18
Figura 6 - Cadeia Tecnolgica da IoT ............................................................................... 19
Figura 7 - Raspberry Pi 3 comparado com um carto de crdito ...................................... 20
Figura 8 - Componentes do Raspberry Pi 3 Model B ....................................................... 21
Figura 9 - Conectando um dispositivo ao AWS IoT ......................................................... 23
Figura 10 - Conexo segura com dispositivos ................................................................... 24
Figura 11 - Processamento dos dados utilizando AWs IoT............................................... 24
Figura 12 - Armazenamento do estado mais recente de um dispositivo ........................... 25
Figura 13 - Sensor de Vibrao SW-420 ........................................................................... 27
Figura 14 - Viso Geral do Sistema baseado em IoT ........................................................ 28
Figura 15 - identificao das portas GPIO do Raspberry Pi 3........................................... 29
Figura 16 - Interligao Raspberry Pi x sensor SW-420 ................................................... 30
Figura 17 - Funcionamento do Sensor SW-420 ................................................................ 31
Figura 18 - Painel AWS IoT .............................................................................................. 32
Figura 19 - Definindo a plataforma e o tipo de SDK ........................................................ 32
Figura 20 - Criando um nome para o seu device. .............................................................. 33
Figura 21 - Download do Kit ............................................................................................. 33
Figura 22 - Diretrio criado para armazenar o kit ............................................................. 34
Figura 23 - Configurando e testando o objeto criado ........................................................ 34
Figura 24 - Verificando a comunicao do Raspbery Pi com a AWS IoT ........................ 35
Figura 25 - DynamoDB ..................................................................................................... 36
Figura 26 - Configurao da Tabela no DynamoDB ......................................................... 36
Figura 27 - Amazon Resource Name ................................................................................ 37
Figura 28 - Criando uma Regra na AWS IoT .................................................................... 38
Figura 29 - Configurando uma Regra ................................................................................ 38
Figura 30 - Condigurando a ao executada pela regra..................................................... 39
Figura 31 - Configurao da Ao .................................................................................... 40

VII
Figura 32 - Dados armazenados na tabela criada no DynamoDB ..................................... 40
Figura 33 - Amazon S3...................................................................................................... 42
Figura 34 - Pgina web esttica ......................................................................................... 42
Figura 35 - Fazendo os arquivos se tornarem pblicos ..................................................... 43
Figura 36 - Pgina Web exibindo os resultados registrados pelo sensor SW-420 ............ 44

VIII
NDICE DE ABREVIATURAS E SIGLAS

A/V Audio / Video


AWS Amazon Web Services
DVI Digital Visual Interface
GPIO General Purpose Input/Output
HDMI High-Definition Multimedia
IOT Internet of Things
IPsec Protocolo de Segurana para redes IP
IPV4 Internet Protocol Version 4
IPV6 Internet Protocol Version 6
LAN Local Area Network
LCD Liquid Crystal Display
LED Light Emitting Diode
LTE Long Term Evolution
LTE Long Term Evolution
MAC Media Access Control
MAC Media Access Control
MB Mega Byte
MP Mega Pixel
MQTT Message Queue Telemetry Transport
ms milisegundos
NoSQL Banco de dados no relacionais
OLED Organic Light Emitting Diode
RAM Random Access Memory
RFID Radio Frequency Identification Development
SBC Single Board Computer
SBC Single Board Computer
SD Secure Digital
USB Universal Serial Bus
UTP Unshilded Twisted Par
VPN Virtual Private Network

IX
SUMRIO

1 INTRODUO ........................................................................................................ 11

1.1 OBJETIVO ......................................................................................................... 13


1.2 MOTIVAO .................................................................................................... 13
1.3 ESTRUTURA DO TRABALHO ........................................................................ 14

2 METODOLOGIA E FUNDAMENTAO TERICA ...................................... 15

2.1 PESQUISA BIBLIOGRAFICA .......................................................................... 15


2.2 FUNDAMENTAO TERICA ...................................................................... 15
2.2.1 INTERNET DAS COISAS ............................................................................. 15
2.2.1.1 FATORES QUE PERMITIRAM O APARECIMENTO DA IOT .......... 16
2.2.1.2 ESTRUTURA DA TECNOLOGIA IOT ................................................. 18
2.2.2 RASPBERRY PI ............................................................................................. 19
2.2.3 AMAZON WEB SERVICE (AWS IOT)........................................................ 23
2.2.4 DYNAMODB ................................................................................................. 25
2.2.5 AMAZON S3 .................................................................................................. 26
2.2.6 PROTOCOLO MQTT..................................................................................... 26
2.2.7 SENSOR DE VIBRAO (SW-420) ............................................................ 27

3 DESENVOLVIMENTO .......................................................................................... 28

3.1 HARDWARE ..................................................................................................... 29


3.2 CONFIGURAR O AWS IOT .............................................................................. 31
3.3 CONFIGURANDO O BANCO DE DADOS DYNAMODB ............................. 36
3.4 HOSPEDAGEM EM NUVEM COM AMAZON S3.......................................... 41

4 RESULTADOS OBTIDOS ..................................................................................... 44

5 CONCLUSO .......................................................................................................... 45

6 BIBLIOGRAFIA ...................................................................................................... 46

7 ANEXO ..................................................................................................................... 47

8 APNDICE ............................................................................................................... 48

X
1 INTRODUO

O conceito IoT (Internet of Things) foi inicialmente cunhado por um membro da


comunidade Radio Frequency Identification Development (RFID) em 1999, mas tornou-
se mais relevante e importante recentemente devido ao crescimento de dispositivos
mveis, das comunicaes, da computao em nuvem e da anlise de dados. Desde ento,
muitos aproveitaram o termo "Internet das Coisas" para se referirem idia geral das
coisas, especialmente objetos do cotidiano, que so legveis, reconhecveis,
localizveis, endereveis e/ou controlveis atravs da Internet, independentemente dos
meios de comunicao (quer seja atravs de RFID, LAN sem fio ou de outros meios). Os
objetos do cotidiano incluem no s os dispositivos eletrnicos ou produtos de maior
desenvolvimento tecnolgico, tais como veculos e equipamentos, mas tambm outras
coisas que ns normalmente no pensamos, como alimentos e roupas. Exemplos de
"coisas" incluem:

Pessoas
Animais e Ecossistema Natural
Localizao (de objetos)
Informaes de tempo (de objetos)
Estado (de objetos)

Estas "coisas" do mundo real devem integrar-se perfeitamente no mundo virtual,


permitindo a qualquer hora em qualquer lugar, conectividade. A constante evoluo da
tecnologia permite progressivamente a miniaturizao dos dispositivos e a maior
capacidade de processamento, ou mais funcionalidades dentro do mesmo espao. Um dos
exemplos mais claros destes avanos tecnolgicos a fabricao de circuitos integrados
ou chips cada vez menores, dessa forma o tamanho e custo dos componentes eletrnicos,
que so necessrios para a deteco, rastreamento e controle, foi se reduzindo e vai
continuar a se reduzir de acordo com a Lei de Moore que diz que o poder dos
computadores (entenda computadores como a informtica em geral, no apenas os
computadores domsticos) dobraria a cada 18 meses. Essa miniaturizao permitiu que
sensores pudessem ser instalados em mais objetos, possibilitando a extrao de
informaes teis para serem analisadas e processadas.
11
Em 2010, o nmero de objetos e dispositivos fsicos cotidianos ligados Internet era
cerca de 1 bilho. A Cisco prev que esse nmero chegar a mais de 50 bilhes em 2020,
acompanhando o nmero crescente de dispositivos inteligentes por pessoa. Se
compararmos isso populao mundial, ento teremos, at 2020, mais de seis
dispositivos conectados por pessoa. Alm disso, o impacto econmico global, que a IoT
ter, ser mais do que US$ 14 trilhes (Fig. 1).

Figura 1 - Impacto econmico global gerado pela IoT

Fonte: Cisco IBSG, abril de 2011

Baseado no grande impacto econmico global que a Internet das Coisas ir causar
e nos benefcios que ir trazer como: facilitar o acesso as informaes, possibilidade de
economia de energia, permitir o acompanhamento dos aspectos de sade entre outros, foi
desenvolvido este trabalho, com a finalidade de explorar mais o tema, atravs de uma
abordagem prtica, com a utilizao do Raspberry Pi 3 e do Amazon Web Services, de
modo que fosse possvel passar por todos os pontos necessrios para se construir um
sistema utilizando o conceito da IoT.

12
1.1 OBJETIVO

O objetivo principal deste trabalho foi a construo de um sistema fundamentado


em Internet das Coisas, baseado na comunicao entre Raspberry Pi 3 e o servio de
nuvem da Amazon possibilitando a visualizao das informaes enviadas por um sensor
de vibrao em tempo real atravs de uma pgina web, de forma a entender e absorver
melhor o conceito da IoT.

Os objetivos especficos foram estudar e aprender sobre os componentes e


linguagens de programao empregados na realizao do projeto, como Python e HTML;
familiariza-se com a plataforma Raspberry Pi 3 definido qual o melhor sistema
operacional a ser empregado e aplicar os conhecimentos obtidos ao longo do curso
propondo solues prticas e de rpida implementao para o monitoramento de objetos.

1.2 MOTIVAO

A motivao desse trabalho deve-se ao fato do tema Internet das Coisas ter sido
bastante abordado nas aulas de Automao e por ser um assunto que a mdia vem falando
muito ao longo dos anos, apenas para ilustrar, ao procurar pela palavra IoT no Google
Trends, percebe-se que ao longo dos ltimos cinco anos a busca por esse tipo de
conhecimento aumentou muito e o Brasil figura entre os 30 pases que mais se interessam
por este contedo, aparecendo na vigsima posio.

Figura 2 - Busca pela sigla "IoT" registrada pelo Google Trends nos ltimos 5 anos

Fonte: Google Trends, julho 2017

13
Figura 3 - Busca pela sigla "IoT" registrada por regio no Google Trends

Fonte: Google Trends, julho 2017

1.3 ESTRUTURA DO TRABALHO

A monografia est estruturada em cinco captulos. Nos dois primeiros captulos


sero apresentadas a introduo, a metodologia utilizada, juntamente com a
fundamentao terica, onde alguns conceitos sobre IoT, Raspberry Pi 3, sensores e
Amazon Web Services sero abordados permitindo o entendimento do que ser abordado
no terceiro captulo, que tratar do desenvolvimento da aplicao que mostrar as
informaes registradas por um sensor de vibrao online e em tempo real. No quarto
captulo sero apresentados os resultados obtidos, com a apresentao de um grfico dos
dados do sensor de vibrao. O ltimo captulo ter a concluso do trabalho apresentado,
relatando a experincia de como foi trabalhar com a plataforma da Amazon junto com o
Raspberry Pi 3 e do tempo de desenvolvimento que uma soluo usando IoT utilizando
essas ferramentas pode levar.

14
2 METODOLOGIA E FUNDAMENTAO TERICA

A pesquisa a ser realizada neste trabalho pode ser classificada como bibliogrfica,
pois baseada em livros e alguns ebooks que tratam do tema, e em experimentos
realizados por outros pesquisadores divulgados na internet.

2.1 PESQUISA BIBLIOGRAFICA

So apresentadas algumas definies e aplicaes sobre Internet das Coisas,


sensores (responsveis por enviar informaes do objeto que se deseja avaliar),
plataforma de prototipagem Raspberry Pi 3 (onde as entradas e sadas dos sensores so
controladas atravs das portas GPIO General Purpose Input/Ouput) e protocolos de
comunicao utilizados para enviar as informaes para o web service

2.2 FUNDAMENTAO TERICA

Abaixo sero apresentados os principais elementos utilizados para o


desenvolvimento desse trabalho, com seus conceitos bsicos, permitindo o melhor
entendimento do resultado do projeto.

2.2.1 INTERNET DAS COISAS

Segundo David Etter, autor do Livro IOT (Internet of Things) Programming: A


Simple and Fast Way of Learning IOT Internet das Coisas Apenas uma rede
composta de dispositivos fsicos incorporados em software, sensores e eletrnicos,
permitindo que os dispositivos troquem dados entre si. Com IoT, torna-se fcil integrar
sistemas baseados em computador com os sistemas do mundo fsico. Esta tecnologia foi
alimentada por tecnologias lderes, como Big Data (grandes quantidades de dados, em
alta velocidade, gerados por um ou mias fontes) e Hadoop (paradigma de programao
introduzido pelo Google para processar grandes quantidades de dados), e isso esperado
para ser a prxima grande coisa para afetar nossas vidas de vrias maneiras.

15
Embora IoT seja uma nova tecnologia, acredita-se que isso trar uma grande
mudana na histria da computao. Sensores incorporados em automveis, implantes
para monitoramento do corao, transponders de biochip e sistemas de termostato
inteligente so exemplos disso. possvel que tais dispositivos sejam feitos sob medida
para atender s necessidades do negcio. A expectativa que os dispositivos IoT estejam
em condies de se comunicar com os humanos, assim como acontece com os
dispositivos do mundo real. Os dispositivos IoT tambm devem ter sensores, e estes so
esperados para capturar dados, como taxa de pulso, temperatura do corpo e eles devem
transmitir esses dados. Os dispositivos devem ser capazes de tomar decises e exercer a
computao de controle. Acredita-se que os controladores sero usados com o propsito
de mudar os dispositivos. Os dispositivos devem ter tambm a capacidade de armazenar
dados.

2.2.1.1 FATORES QUE PERMITIRAM O APARECIMENTO DA IOT

Segundo o autor Nano Correia, o aparecimento da Internet das Coisas s foi


possvel graas aos sete fatores listados abaixo:

Miniaturizao de Dispositivos: Permite que se desenvolvam dispositivos


cada vez mais compactos e com alta capacidade de processamento
Radio Frequency Identification (RFID): Futuramente, a RFID ter o
potencial de fornecer dados que iro alimentar sistemas de informao em
tempo real com itens de dados especficos, e ser flexvel o suficiente para
ser colocada em espaos e locais muito pequenos.
Internet Protocol Version 6 (IPV6): Protocolo de Internet para
endereamento que vai ser usado para substituir o IPv4. Com o IPv6,
existiro cerca de 3,4 1038 (340 trilhes) de endereos IPv6 exclusivos,
permitindo que a Internet continue a crescer e a inovar.
Largura de Banda e Baixa Latncia: Permite que as aplicaes de IoT
possam consultar ou receber atualizaes mais rapidamente, de sensores ou
outros dispositivos. As redes LTE (Long Term Evolution) tm latncias
cerca de 50-75 ms, o que vai permitir abrirem-se novos tipos de
possibilidades de programao para programadores de aplicativos.

16
Dispositivos de Baixo Consumo: Os dispositivos de baixo consumo vo
funcionar por mais tempo, e alguns dispositivos, como os solares, sero
mesmo auto-suficientes.
suficientes.
Computao em Nuvem: A IoT conecta bilhes de dispositivos e sensores,
criando aplicativos novos e inovadores. A fim de suportar estas novas
aplicaes, uma plataforma segura, gil e adaptvel, essencial. A
computao em nuvem uma das plata
plataformas que permitem
ermitem apoiar a IoT,
IoT
atravs do seu armazenamento distribudo, poder de processamento e
capacidade de ampliao.
Melhor Segurana e Privacidade: vo permitir que o canal de comunicao
seja de confiana. Dados crticos de negcio podem ser passados por
criptografia
iptografia ou por cdigo de autenticao MAC (Media
Media Access Control),
Control
protegendo a confidencialidade e autenticidade dos dados de transaes. Os
protocolos de segurana da Internet das Coisas ainda esto em evoluo.
Com o IPv6, o suporte IPsec (Protocolo dee Segurana para redes IP) estar
integrado na arquitetura do protocolo e portanto as conexes podero ser
protegidas ao se comunicar com outros dispositivos IPv6
IPv6.

Figura 4 - Fatores que permitira o aparecimento da IoT

Fonte: (CORREA, 2015) ebook

17
2.2.1.2 ESTRUTURA DA TECNOLOGIA IOT

A arquitetura IoT consiste em um diferente conjunto de tecnologias. Ela serve


para ilustrar como diferentes tecnologias se relacionam entre si e para comunicar a
escalabilidade, modularidade e configurao das implantaes IoT em diferentes
cenrios. A funcionalidade de cada uma das camadas descrita na figura abaixo (Fig. 5):

Figura 5 - Arquitetura IoT

Fonte: (CORREA, 2015) ebook

As principais tecnologias da maioria das solues IoT incluem sensores,


conectividade, armazenamento em nuvem e processamento, anlise e machine learning
(aprendizado de mquina - mtodo de anlise de dados que automatiza o
desenvolvimento de modelos analticos). Cada uma dessas tecnologias est fazendo
avanos rpidos em capacidade, custo, adequao operacional, padronizao e facilidade
de desenvolvimento e implantao. Por exemplo, a Amazon Web Services (AWS)
reduziu o custo de um tipo de armazenamento em nuvem em quarenta e sete por cento em
2016.. Desenvolver capacidades de aprendizagem de mquinas, embora ainda complexas,
est vendo ferramentas e plataformas de desenvolvimento chegarem ao mercado,
permitindo que uma maior variedade de desenvolvedores de tecnologia acessem esses
recursos.

18
As arquiteturas para grandes implantaes do IoT continuam a evoluir rapidamente.
H sempre tradeoffs entre velocidade, durabilidade, custos e manuteno operacional
para uma vasta gama de itens com sensores. Estamos familiarizados com os recursos de
processamento e armazenamento em nuvem, mas trazer dados de volta nuvem para
processar pode no ter os requisitos de velocidade necessrios. s vezes, estes so
processados no prprio dispositivo, mas s vezes os dados e os eventos precisam ser
coordenados entre os itens. Ento, um novo nvel chamado "nevoeiro" est sendo
desenvolvido como uma camada de tecnologia entre "coisas" e a nuvem. O que voc
pode contar que o custo, a capacidade e a adequao operacional continuaro em um
ciclo de melhoria acentuado em todas as reas da cadeia de tecnologia IoT. Embora a
construo e a integrao da tecnologia sempre sejam difceis, o modelo de negcio e a
mudana de negcios so onde o valor real e os desafios sempre aumentaro (Fig. 6).

Figura 6 - Cadeia Tecnolgica da IoT

Fonte: (ROSSMAN, 2016) ebook

2.2.2 RASPBERRY PI

O Raspberry Pi uma placa de computador (em ingls utiliza-se o termo Single


Board Computer SBC), desenvolvida por uma empresa do Reino Unido, a Raspebrry Pi
Foundation, que foi criada inicialmente para o ensino bsico de computao em escolas e
pases em desenvolvimento. Existe o modelo A que tem um hardware um pouco mais
simples e conta com 256 MB de memria RAM, uma porta USB e uma Ethernet e o
modelo B que conta com equipamento de maior capacidade, so 512 MB de RAM e duas
portas USB. Possui entradas para vdeo, udio, USB, cartes SD, ethernet e HDMI, alm
do seu prprio sistema operacional, baseado em Linux e mais recentemente a Microsoft
anunciou uma verso do Windows para Raspberry Pi, como estratgia de sua plataforma
de IoT.
19
Com o Raspberry Pi voc pode criar programas de computador, usando
linguagens como Python, Java, C, C++, que executem tarefas da mesma forma que seria
feito em um computador tradicional. Python alis, tem se tornado uma das principais
linguagens de programao para desenvolvimento no Raspberry Pi.

A verso trs do Raspberry Pi considerada um computador de baixo custo por


muitos, essa verso teve um upgrade considervel se comparado com as anteriores, o
processador foi atualizado para um quad-core de 1,2 GHz, mas agora baseado no Cortex-
A53, uma verso atualizada do Cortex-A7 com mais desempenho, mais eficincia por
clock e suporte a instrues de 64 bits, usando o conjunto de instrues ARMv8. Na
prtica, isso significa um aumento terico de 50% no desempenho final, considerando
que os sistemas sejam compilados para suportar esse novo conjunto de instrues, possui
suporte a redes sem fio sem necessitar de adaptadores. H Wi-Fi nos padres B, G e N
(802.11n) e Bluetooth 4.1 LE (Low Energy), o que desafoga as portas USB para quem
precisa desse tipo de conexo, alm de ser muito mais conveniente. Isso significa que
possvel ter uma experincia desktop completa sem utilizar nenhuma das portas USB,
somente com dois cabos: HDMI e cabo de fora, j que agora possvel se conectar a
uma rede sem fios sem adaptadores e usar um kit de teclado e mouse Bluetooth.

Do tamanho de um carto de crdito e com uma comunidade de apoio enorme,


para ajudar a construir aplicaes, o Raspberry Pi pode correr processos em multitarefa
pode executar vrios programas em segundo plano. Por exemplo, voc pode ter um
Raspberry Pi como servidor de impresso e servidor VPN (Virtual Private Network), ao
mesmo tempo (Fig. 7).

Figura 7 - Raspberry Pi 3 comparado com um carto de crdito

Fonte: (CORREA, 2015) ebook


20
A ilustrao abaixo (Fig. 8) enumera os principais componente do Raspberry Pi 3
model B e na sequencia explica a funcionalidade de cada parte.

Figura 8 - Componentes do Raspberry Pi 3 Model B

Fonte: blog.fazedores.com
Disponvel em <http://blog.fazedores.com/introducao-ao-raspberry-pi-b/>, Acesso em
junho/2017

1. Processador: Processador com arquitetura de 32 bits, 700Mhz de velocidade (e


ainda possvel fazer Overclock) e 512 MB de memria Ram. O processador o
BCM 2835, o mesmo usado no Iphone 3g e Kindle 2. Pode-se dizer que um
processador bem pontente, se levarmos em conta o tamanho da estrutura.
2. Porta HDMI (High-Definition Multimedia): Este um conector para sada de
audio e video digital. Possui 14 tipos de resolues desde 640350 19201200.
Para fazer a conexo com essa porta necessrio ter uma televiso ou monitor
com entrada HDMI. Porem existe outras formas de conexes, como DVI (Digital
Visual Interface), por exemplo. Para fazer isso basta ter um adaptador externo em
mos.
3. Entrada para Cmera: Esta porta serve para conectar o poderoso modulo de
cmera da Raspberry Pi, que possui 5 MP e consegue capturar vdeos e fotos em
at 1080P.
4. Pino A/V: Aqui temos um conector Jack de 3,5 mm, cuja funo transmitir
sinais de udio e vdeo.

21
5. Porta Ethernet: Esta a porta de conexo com a rede via cabo. Para conectar,
basta ter um cabo do tipo UTP com conector RJ45. Como quase todas as pessoas
hoje possuem rede de conexo sem fio em casa, ento fica difcil ter um cabo
desses de fcil acesso para ser conectado a placa. Para resolver este problema,
s colocar um adaptador Wi-Fi USB externo.
6. Portas USB: Esta verso da Raspberry est equipada com 4 entradas USB. Essas
entradas servem para conectar mouses, teclados, adaptadores externos WI-Fi, pen
drive, entre outros. Vale lembrar que essas portas no so recomendadas para
carregar baterias de celulares. Se precisar usar algum perifrico que exija mais
energia da porta, coloque um HUB USB com alimentao externa.
7. GPIO: Esse modelo que estamos usando est equipado com 40 pinos GPIO, cuja
funo enviar e receber sinais digitais. Eles podem fazer leituras de botes e
interruptores ou enviar sinais digitais para acionar atuadores (Ex. Rels, LEDs,
Motores). Deve-se tomar cuidado para que essas portas no entrem em curto, pois
no existe um dispositivo de proteo, e isso poder danificar a placa, recomenda-
se o uso de jumpers para facilitar a utilizao dessas portas.
8. Status LED (Light Emitting Diode): Essas so as luzes que indicam o
funcionamento da placa. Esse modelo est composto com dois LEDs, um com a
cor vermelha e outro com a cor verde. O primeiro chamado de Power, cuja
funo indicar se a placa est recebendo alimentao acima de 3,3v. O segundo
conhecido como Act, e sua funo mostrar quando o carto de memria est
sendo acessado.
9. Entrada SD (Secure Digital) Card: possvel notar que, o Raspberry no possui
um disco rgido para armazenamento de dados. No entanto, utiliza-se no lugar
desse dispositivo, uma entrada para carto micro SD, o qual ter a funo de
guardar todos os dados que vao ser instalado no dispositivo. Recomenda-se o uso
de um micro SD classe 10, para tornar o a leitura mais rpida.
10. Entrada Display: Essa tem a funo de se conectar com pequenas telas de LCD
(Liquid Crystal Display) ou OLED (Organic Light Emitting Diode). A conexo
feita atravs de um flat cable de 15 pinos.
11. Porta de Alimentao: Essa porta possui um conector micro USB, e serve apenas
para alimentar a Raspberry. Ela necessita de uma fonte de alimentao com 5V de
tenso e no mnimo 2A de corrente, o ideal que ela fornea at 3A.

22
2.2.3 AMAZON WEB SERVICE (AWS IOT)

De acordo com a prpria pgina web da Amazon o AWS IoT uma plataforma de
nuvem gerenciada que permite que dispositivos interajam facilmente e com segurana
com aplicativos de nuvem e outros dispositivos. O AWS IoT pode comportar bilhes de
dispositivos e trilhes de mensagens, e pode processar e rotear essas mensagens para
endpoints da AWS e para outros dispositivos confiavelmente e com segurana. Com o
AWS IoT, as suas aplicaes podem acompanhar todos os seus dispositivos, como
tambm comunicar-se com eles, o tempo inteiro, mesmo quando eles no estiverem
conectados.

O AWS IoT facilita o uso de servios da Amazon Web Service, como AWS
Lambda, Amazon S3, Amazon DynamoDB, para criar aplicativos da IoT que, alm de
intervir sobre, renem, processam e analisam os dados gerados pelos dispositivos
conectados, sem que seja necessrio gerenciar nenhuma infraestrutura.

O AWS IoT permite conectar facilmente dispositivos nuvem e a outros


dispositivos. O AWS IoT compatvel com HTTP, WebSockets e MQTT, protocolos
leves de comunicao especificamente criados para sustentar conexes intermitentes,
minimizar a rea de ocupao do cdigo nos dispositivos e reduzir os requisitos de
largura de banda de rede. O AWS IoT tambm compatvel com outros protocolos
personalizados e padro do setor, e os dispositivos podem comunicar-se entre si, mesmo
se eles estiverem usando protocolos diferentes (Fig. 9).

Figura 9 - Conectando um dispositivo ao AWS IoT

Fonte: aws.amazon.com/pt/iot-platform/
Disponvel em <https://aws.amazon.com/pt/iot-platform/>. Acesso em junho/2017

23
O AWS IoT disponibiliza autenticao e criptografia completa em todos os pontos
de conexo, de modo que os dados nunca sejam trocados entre os dispositivos e o AWS
IoT sem uma identidade comprovada. Alm disso, voc pode proteger o acesso a
dispositivos e aplicaes ao aplicar polticas com permisses granulares (Fig. 10).

Figura 10 - Conexo segura com dispositivos

Fonte: aws.amazon.com/pt/iot-platform/
Disponvel em <https://aws.amazon.com/pt/iot-platform/>. Acesso em junho/2017

Com o AWS IoT, possvel filtrar, transformar e intervir sobre os dados


imediatamente, com base nas regras empresariais que voc definir. Voc pode atualizar
suas regras para implementar novos recursos de dispositivos e aplicaes a qualquer
momento (Fig. 11).

Figura 11 - Processamento dos dados utilizando AWs IoT

Fonte: aws.amazon.com/pt/iot-platform/
Disponvel em <https://aws.amazon.com/pt/iot-platform/>. Acesso em junho/2017
24
O AWS IoT armazena o estado mais recente de um dispositivo de modo que ele
possa ser lido ou definido a qualquer momento, fazendo com que o dispositivo seja
exibido para as suas aplicaes como se ele estivesse on-line o tempo inteiro. Isso
significa que a sua aplicao pode ler o estado de um dispositivo mesmo quando ele
estiver desconectado, e tambm permite que voc defina o estado de um dispositivo e o
implemente quando o dispositivo se reconectar (Fig. 12).

Figura 12 - Armazenamento do estado mais recente de um dispositivo

Fonte: aws.amazon.com/pt/iot-platform/
Disponvel em <https://aws.amazon.com/pt/iot-platform/>. Acesso em junho/2017

2.2.4 DYNAMODB

O DynamoDB permite o armazenamento e a consulta fcil aos dados de


dispositivos, possibilitando o foco na criao de novas solues incrveis do AWS IoT.
um servio de banco de dados NoSQL (refere-se a banco de dados no relacionais) rpido
e flexvel para todas as aplicaes que precisam de latncia constante abaixo de 10
milissegundos em qualquer escala. O servio um banco de dados em nuvem totalmente
gerenciado e compatvel com os modelos de armazenamento de documentos e de
chave-valor. O modelo de dados flexvel, o desempenho confivel e a escalabilidade
automtica da capacidade de throughput fazem desse servio a opo ideal para
aplicaes mveis, web e de jogos, tecnologia de anncios e IoT, entre muitas outras
aplicaes.

25
2.2.5 AMAZON S3

O Amazon Simple Storage Service (Amazon S3) torna simples e prtico coletar,
armazenar e analisar dados, independentemente do formato. E tudo isso pode ser feito em
uma escala enorme. O S3 um armazenamento de objetos criado para armazenar e
recuperar qualquer quantidade de dados de qualquer local: sites e aplicativos mveis,
aplicativos corporativos, alm de dados de sensores ou dispositivos de IoT. Ele foi
concebido para disponibilizar uma alta durabilidade e tem vrios clientes que,
individualmente, armazenam bilhes de objetos e exabytes de dados. possvel us-lo
para armazenamento e distribuio de mdia, atuando como o "data lake" da anlise de
big data, como um destino de backup e como o nvel de armazenamento de aplicativos de
computao sem servidor. O produto ideal para a captura de dados, por exemplo, fotos
e vdeos feitos com dispositivos mveis, backups de dispositivos mveis e outros
dispositivos, backups de mquina, arquivos de log gerados por mquinas, streams de
sensores de IoT e imagens de alta resoluo, como tambm para disponibiliz-los para
aprendizado de mquina para outros Servios da AWS e aplicativos de terceiros para
anlise, tendncias, visualizao e outros tipos de processamento.

2.2.6 PROTOCOLO MQTT

O MQTT (Message Queue Telemetry Transport) um leve e eficiente protocolo


voltado para IoT. Possui header extremamente compacto e exige pouqussimos recursos
de hardware, processamento e baixssima banda para funcionar. Como calcado no TCP
(Transmission Control Protcol), possui tambm portanto garantia de entrega das
mensagens (algo essencial em IoT).

Alm disso, utilizando-se de um servidor (broker) na nuvem, a comunicao


torna-se a nvel global. Ou seja, possvel interagir via MQTT com a Raspberry Pi 3 de
qualquer lugar do planeta que possua acesso Internet.

Outro ponto interessante que este protocolo possui implementaes nos mais
diversos sistemas operacionais, permitindo assim que dispositivos totalmente diferentes
"conversem" pela Internet.

26
2.2.7 SENSOR DE VIBRAO (SW-420)

No estudo da automao em sistemas industriais, comerciais, automobil


automobilsticos,
domsticos e etc, preciso determinar as condies (ou variveis) do sistema.
necessrio obter os valores das variveis fsicas do ambiente a ser monitorado e este o
trabalho dos sensores.

Sensores servem para informar um circuito eletrnico a respeito de um evento que


ocorra externamente, sobre o qual ele deve atuar, ou a partir do qual ele deva comandar
coman
uma determinada ao.

Muitas aplicaes podem ser criadas para medir o nvel de vibrao, mas detectar
vibraes com preciso um trabalho difcil
difcil. O sensor SW-420 permite detect-las
detect com
pouco esforo, ele foi feito para detectar oscilao,, sendo que quando a intensidade de
vibrao est abaixo do valor ajustado, a sada do sensor fica em estado alto, e quando a
intensidade de vibrao ultrapassa a faixa, a sada fica em estado baixo.

O sensor de vibrao SW
SW-420 (Fig. 13) vem com placa de fuga que inclui o
comparador LM 393 e o potencimetro ajustvel para a seleo de limiar de sensibilidade
e o LED de indicao de sinal. A sada digital pode ser conectada diretamente a um
u
microcontrolador como Arduino ou at mesmo as por
portas
tas GPIO do Raspberry.

Figura 13 - Sensor de Vibrao SW-420

Fonte: www.theorycircuit.com

Disponvel em <http://www.theorycircuit.com/sw
http://www.theorycircuit.com/sw-420-vibration-sensor
sensor-arduino-
interface/>. Acesso em junho/2017

27
3 DESENVOLVIMENTO

O desenvolvimento do Sistema baseado em Internet das Coisas foi divido em


cinco etapas: preparao do Hardware (Raspberry Pi), escolhendo o sistema operacional
mais adequado para a aplicao, estabelecer a conexo do sensor SW-420 com o
Raspberry Pi, configurar o servio AWS IoT, criar as regras para enviar as informaes
para o DynamoDB e por fim, a criao de uma pgina web para exibir os dados em
tempo real.

O intuito tornar as informaes do sensor de vibrao disponveis na internet


podendo ser acessadas de qualquer lugar e por qualquer pessoa. Para uma melhor
compreenso, a figura abaixo (Fig. 14) mostra uma viso geral do sistema desenvolvido.

Figura 14 - Viso Geral do Sistema baseado em IoT

Fonte: GONZALEZ, Rio de Janeiro. Junho/2017

28
3.1 HARDWARE

Para a montagem do hardware foi utilizado o Raspb


Raspberry
erry Pi 3, um led, um resistor ,
Protoboar, um sensor de vibrao SW
SW-420,
420, mas antes de executar qualquer conexo
importante escolher o sistema operacional que ser
ser utilizado, para a aplicao proposta
nesse trabalho, o sistema Raspbian foi escolhido pelo fato de apresentar mias
funcionalidades se comparado como Windows IoT, depois de escolhido, o sistema
operacional foi armazenado em um micro SD classe 10 de 16G, para que pudesse ser
processado pelo Raspberry Pi.

A conexo do Raspberry Pi com os demais componentes fsicos do sistema, se da


atravs das portas GPIO,, mostradas na figura abaixo (Fig. 15), cada pino pode ser
identificado atravs da numerao em cinza que basicamente mostra a posio do pino na
placa, ou pelo Broadcom SOC Number que o nmero localizado ao lado do texto GPIO.

Figura 15 - identificao das portas GPIO do Raspberry Pi 3

Fonte: raspberrypi.stackexchange.com
Disponvel em <https://raspberrypi.stackexchange.com/questions/47088/help
https://raspberrypi.stackexchange.com/questions/47088/help
https://raspberrypi.stackexchange.com/questions/47088/help-to-build-
mini-pci-e-add-on
on-card-for-raspberry-pi-2> Acessado em junho/2017.
junho/2017

29
A conexo entre os componentes feita atravs de jumpers e dever seguir o
esquema abaixo, mostrado na (Fig. 16)

Figura 16 - Interligao Raspberry Pi x sensor SW-420

Fonte: fritzing, junho/2017

Aps todos os componentes estarem conectados, um programa utilizando a


linguagem Python foi desenvolvido utilizando o ambiente de desenvolvimento integrado
para Python, disponvel no Raspbian, chamado Python 3 (IDLE). O programa pode ser
encontrado no ANEXO A deste documento.

O programa em Python capaz de contabilizar quantas vezes a sada digital do


sensor ficou em nvel alto, dessa forma, quanto maior a vibrao, maior tambm ser a
quantidade de vezes que a sada digital atingiu nvel alto e a cada vez que esse nvel
atingido o LED acender, indicando que ocorreu uma vibrao. A figura (Fig. 17) mostra
o funcionamento do hardware integrado ao sensor.

30
Figura 17 - Funcionamento do Sensor SW-420

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

3.2 CONFIGURAR O AWS IOT

necessrio configura uma coisa na Amazons IoT para imitar o Raspberry Pi.
O objeto configurado na Amazon atua como um repositrio de nuvem para infomaes
que desejar armazenar no dispositivo IoT. A Amazon usa um conceito de "shadow" para
a "coisa" que pode armazenar os dados. Dessa forma, mesmo que o objeto fsico esteja
desligado ou off-line, ainda possvel enviar pacotes MQTT de dados e os dados sero
armazenados na cpia 'shadow' da 'coisa' na nuvem at que o dispositivo volte em linha,
momento em que a Amazon pode copiar os dados 'shadow' de volta para o dispositivo
fsico.

Configurar a "coisa" na nuvem pode ser um pouco complicado. Principalmente


devido segurana. Como o dispositivo fsico estar funcionando sem superviso e muito
anonimamente, a autenticao realizada usando certificados de segurana, ento para
iniciar a configurao do AWS IoT, clique em 'Servios' na barra de ferramentas
superior, depois escolha 'AWS IoT' em 'Internet das coisas'.

31
No menu esquerda, clique em 'Connect', depois 'Configuring a device', essa a
forma mais rpida para criar uma coisa pois a prpria interface te guiar durante todo
os processo.

Figura 18 - Painel AWS IoT

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

Selecione o Sistema Operacional e o SDK que sero utilizados, como mostra a


figura abaixo.

Figura 19 - Definindo a plataforma e o tipo de SDK

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

32
De um nome para o device, preenchendo o campo Name (Fig. 19).

Figura 20 - Criando um nome para o seu device.

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

Na prxima tela, faa o download do SDK, clicando no boto Linux/OS, nessa


etapa os certificados j viram juntos com esse arquivo, em seguida clique em Next step

Figura 21 - Download do Kit

Fonte: GONZALEZ, Rio de Janeiro, junho/2017


33
Crie uma pasta no Raspberry Pi para descompactar o kit de conexo, neste
trabalho foi criado um diretrio chamado AWSensor, onde o arquivo foi
descompactado.

Figura 22 - Diretrio criado para armazenar o kit

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

Abra o console do Raspberry Pi e execute os comandos que so mostrados abaixo,


ao final dessa etapa, ser possvel visualizar a comunicao efetiva entre o Raspberry Pi e
a AWS IoT.

Figura 23 - Configurando e testando o objeto criado

Fonte: GONZALEZ, Rio de Janeiro, junho/2017


34
A ltima etapa do processo executa o arquivo start.sh, ao final da execuo a
pasta aws-iot-device-sdk-python ser criada, vale ressaltar que o arquivo start.sh chama
um arquivo de exemplo que vem no SDK (basicPubSub.py), esse arquivo uma maneira
de como pode ser feito um subscribe na plataforma AWS IoT.

Para facilitar a implementao da soluo, o cdigo feito para o sensores foi


agregado ao arquivo basicPubSub.py resultando no Codgo do Apendice A, dessa forma
possvel enviar as informaes registradas pelo sensor atravs do protocolo MQTT na
plataforma da Amazon, para visualizar esses dados, v em Test e escreva # no campo
Subscription topic, isso significa que todas as mensagens enviadas sero exibidas, feito
isso, clique no boto Subscribe to topic.

Figura 24 - Verificando a comunicao do Raspbery Pi com a AWS IoT

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

35
3.3 CONFIGURANDO O BANCO DE DADOS DYNAMODB

Para criar um banco de dados DynamoDB, na plataforma Amazon Web Services


clique em services e em seguida selecione o DynamoDB.

Figura 25 - DynamoDB

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

Clique em Create Table e d o nome que desejar no campo Partition Key d o


nome de id e o tipo defina como string, marque a opo Add sort key, d o nome de
timestamp ao novo campo que aparecer e defina o tipo como number, isso muito
importante e uma vez que a tabela criada no possvel alterar essas propriedades
depois, no fim a configurao deve estar parecida com a figura (Fig. 26):

Figura 26 - Configurao da Tabela no DynamoDB

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

36
Aps a criao da tabela importante copiar as informaes localizadas no ARN
(Amazon Resource Name), pois ser importante para criar uma poltica de segurana para
ler os dados desta tabela para mostrar no grfico do site.

Figura 27 - Amazon Resource Name

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

Volte para o Painel de controle do Amazon IoT novamente para o prximo passo
('Services' e 'AWS IoT' no menu superior do console). Agora uma regra ser criada no
IoT, que ajudar todos os dados a entrar em um determinado tpico para o DynamoDB
para armazenar em um arquivo de dados. Quando dados so transmitidos para uma
coisa IoT usando o MQTT, geralmente os dados so publicados para um tpico'. O
tpico pode ser qualquer coisa que quiser. Amazon IoT tem alguns nomes de tpicos
reservados que fazem certas funes, mas permitido postar pacotes MQTT para
qualquer nome de tpico que feito no local. Os dispositivos tambm podem ouvir um
tpico especfico para os dados que retornam da Amazon, etc. O MQTT realmente uma
maneira agradvel, poderosa e simples de interagir com dispositivos e servidores IoT.

37
No painel do IoT, clique em 'Rules' no lado esquerdo, depois clique no boto
'Create'.

Figura 28 - Criando uma Regra na AWS IoT

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

D um nome para a regra, escolha a verso 2016-03-23 que o mais recente,


abaixo disso, em 'Atributo', digite '*' para selecionar todos os campos enviados. No 'Filtro
de tpicos', digite #, para ouvir todos os tpicos enviados e deixe o campo condition
vazio.

Figura 29 - Configurando uma Regra

Fonte: GONZALEZ, Rio de Janeiro, junho/2017


38
Clique no boto Add Action e escolha a opo Insert a message into a
DynamoDB table.

Figura 30 - Condigurando a ao executada pela regra

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

Clique no boto Configure Action escolha a tabela DynamoDB que foi criada a
partir do menu suspenso 'Table Name. A Hash Key' deve ser 'id', do tipo 'STRING' e no
'Hash Key Value', digite '$ {topic ()}'. Isso significa que o nome ser armazenando o no
tpico como a chave principal. A 'Range Key' deve ser 'timestamp' com um tipo de
'NUMBER'. O 'Range Key Value' deve ser '$ {timestamp ()}'. Isso colocar o contedo
do timestamp no pacote neste campo, por ltimo, no 'Write message data to this column',
entre com 'payload'. Este o nome da coluna de dados que contm o objeto com o pacote
de dados JSON (JavaScript Object Notation) enviado do dispositivo. Por motivos de
segurana, temos de configurar uma funo IAM (Identity and Access Management) que
nos permitir adicionar dados tabela DynamoDB, isso bastante fcil de fazer basta
clicar no boto Create a new role'.

39
Figura 31 - Configurao da Ao

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

Feitas as configuraes necessrias, j ser possvel visualizar os dados armazenados


no DynamoDB , para isso basta acessar a tabela criada e selecionar a aba items.

Figura 32 - Dados armazenados na tabela criada no DynamoDB

Dados Recebidos

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

40
3.4 HOSPEDAGEM EM NUVEM COM AMAZON S3

Uma simples pagina web foi configurada para ler as ltimas 24 horas de dados da
tabela criada no DynamoDB e exibi-los em um grfico de linha Chart.js agradvel que
nos mostra o grfico das vibraes registradas em relao ao tempo. O prprio site um
simples Bootstrap / jQuery, com um nico arquivo HTML (HyperText Markup
Language) e um nico arquivo refresh.js com o script para criar os grficos que podem
ser vistos no Apndice B e Apendice C respectivamente.

Como a soluo da Amazon foi usada em grande a parte do projeto, para hospedar o
site foi utilizado o Amazon S3, porm antes de publicar a pgina, foi necessrio
configurar um usurio Amazon IAM' descartvel com privilgios somente de leitura na
tabela de dados DynamoDB. Esta no a "melhor prtica", mas como a aplicao no
crtica, o impacto no relevante.

Para configurar um IAM descartvel, acesse o menu 'Services' no console AWS e


escolha 'IAM' em 'Security, Identity e Compliance', crie um usurio dando as permisses
necessrias e ao final do processo copie as credenciais desse usurio, essa informao
ser til para evitar a necessidade de logar na pgina antes de acessar os dados, como foi
feito no cdigo refresh.js (Apndice C), utilizado essas credencias o log ser feito
automaticamente.

Com o cdigo HTML pronto e o javascript que l as informaes do DynomoDB


prontos, podemos acessar o Amazon S3 e criar o que chamado de bucket, uma espcie
objeto que ir agrupar os arquivos, o nome dado ao bucket acaba virando parte do
endereo onde a pgina ficar hospedada. Para criar um bucket clique em "Services" no
seu AWS Console, depois escolha 'S3' em 'storage'.

41
Figura 33 - Amazon S3

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

Com o cdigo HTML pronto e o javascript que l as informaes do DynomoDB


prontos, podemos acessar o Amazon S3 e criar o que chamado de bucket, uma espcie
objeto que ir agrupar os arquivos, o nome dado ao bucket acaba virando parte do
endereo onde a pgina ficar hospedada. Para criar um bucket clique em "Services" no
seu AWS Console, depois escolha 'S3' em 'storage'.

Clique no boto Create a bucket e siga os passos at ter o bucket criado, feito isso,
selecione o bucket criado, clique em Properties e habilite a opo Static Website
Hosting e defina os campos como mostra a figura (Fig. 34) dessa forma a Amazon
mostrar o endereo onde a sua pgina web ficar hospedada, esse projeto ficou
hospedado no endereo http://webiot.s3-website-us-west-2.amazonaws.com/

Figura 34 - Pgina web esttica


Fonte: GONZALEZ, Rio de Janeiro, junho/2017

42
Na tela de Overview do bucket criado, adicione o arquivo HTML e javascript e
depois os torne pblico para que possam ser exibidos no endereo http://webiot.s3-
website-us-west-2.amazonaws.com/

Figura 35 - Fazendo os arquivos se tornarem pblicos

Fonte: GONZALEZ, Rio de Janeiro, junho/2017

43
4 RESULTADOS OBTIDOS

Foi desenvolvido um dispositivo que permite o monitoramento da vibrao de


qualquer superfcie onde o mesmo esteja instalado, as informaes das ltimas vinte e
quatro horas podem ser vistas em um grfico que mostrar no campo Pico o maior valor
encontrado nesse intervalo, possvel ver tambm o valor de cada pico e quando o
mesmo ocorreu apenas posicionando o ponteiro do mouse sobre o grfico.

As informaes podem ser acessadas por celular ou por computador, porm quando
aberto pelo navegador Safari, o grfico no foi mostrado de maneira correta, para os
demais, o grfico foi exibido corretamente. O tempo de atualizao da pagina de trs
segundos, dessa forma, aps o sensor registrar uma vibrao, essa informao ser
mostrada no grfico aps trs segundos.

Figura 36 - Pgina Web exibindo os resultados registrados pelo sensor SW-420

Fonte: GONZALEZ, Rio de Janeiro, junho/2017


44
5 CONCLUSO

A experincia de utilizar o Amazon Web Services junto com o Raspberry Pi 3 foi


enriquecedora para entender o funcionamento da Internet da Coisas, a plataforma da
Amazon ofereceu todos os recurso necessrio para uma implementao completa de um
sistema IoT, reduzindo o custo de desenvolvimento e de armazenamento, a princpio o
contato com a AWS pode parecer um pouco complicado, mas com a ajuda dos manuais
da Amazon e alguns procedimentos encontrados na internet ficou simples de implementar
a soluo.

O tempo de desenvolvimento da soluo foi razoavelmente rpido e esse foi mais um


ponto positivo de utilizar os servios da Amazon, com essa plataforma pode ser fazer um
prottipo em pouco tempo e verificar se a aplicao realmente funciona, antes de
construir o produto final.

Levando-se em considerao a construo do dispositivo e os testes realizados,


pode-se atestar que os objetivos, gerais e especficos, foram atendidos, porm algumas
melhorias podem ser implementadas em trabalhos futuros, como o uso de um sensor mais
preciso, a criao de alarmes caso o sensor atinja um valor limite e a criao de
notificaes por email ou SMS (Short Message Service).

45
6 BIBLIOGRAFIA

SABARATNAM, D. Building an IoT dashboard using the Onion Omega and


Amazon AWS. 2016. Disponvel em : < https://hackernoon.com/building-an-iot-
dashboard-using-the-onion-omega-and-amazon-aws-a3520f850c9>. Acesso em: 10 junho
2017.

AWS STARTUPS, Building Dynamic Dashboards Using Lambda and DynamoDB


Streams: Part 1. 2016. Disponvel em: < https://medium.com/aws-activate-startup-
blog/building-dynamic-dashboards-using-lambda-and-dynamodb-streams-part-1-
217e2318ae17> . Acesso em 10 junho 2017

THEORY CIRCUIT, SW-420 Vibration Sensor Arduino Interface. Disponvel em:


<http://www.theorycircuit.com/sw-420-vibration-sensor-arduino-interface/>. Acesso em:
16 junho 2017

CIPOLI, P. Saiba tudo sobre o Raspberry Pi 3 e o que ele representa para o


mercado. 2016. Disponvel em: <https://canaltech.com.br/hardware/saiba-tudo-sobre-o-
raspberry-pi-3-59065/> . Acesso em 17 junho 2017

DIAS, Renata Rampim de Freitas. Internet das Coisas sem mistrios: uma nova
inteligncia para os negcios So Paulo, SP: Netpress Books, 2016.

CORREA, Nuno. Internet das Coisas com SAP e HANA: Construa seu Caso de Uso
IoC com Raspberry Pi, Arduino Uno, HANA XSJS e SAPUI5. So Paulo, SP: UI5
Community Network, 2015

ROSSMAN, John. The Amazon Way on IoT: 10 Principles for Every Leader from
the World's Leading Internet of Things Strategies. Clyde Hill Publishing, 2016.

ETTER, David. IOT (Internet of Things) Programming: A Simple and Fast Way of
Learning IOT. 2016.

46
7 ANEXO

ANEXO A - SW-420 sensor.py

import RPi.GPIO as GPIO


import time
import math as m

class Sw40(object):
"""docstring for Senal"""
def __init__(self, pin , led):
self.led = led
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(self.led,GPIO.OUT)
self.pin = pin
GPIO.setup(self.pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

GPIO.add_event_detect(self.pin, GPIO.RISING,
callback=self.callback, bouncetime=1)
self.count = 0

def callback(self , pin):


self.count += 1

def LedOn(self):
GPIO.output(self.led , 1)

def LedOff(self):
GPIO.output(self.led , 0)

def main():
sensor = Sw40(21,6)
try:
while True:

time.sleep(1)
print(sensor.count)
if sensor.count >=1:
sensor.LedOn()
else:
sensor.LedOff()
sensor.count = 0

except KeyboardInterrupt:
GPIO.cleanup()

if __name__ == '__main__':
main()

47
8 APNDICE

APNDICE A basicPubSub.py (envia as informaes do sensor para AWS IoT)


'''
/*
* Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights
Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is
distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
either
* express or implied. See the License for the specific language
governing
* permissions and limitations under the License.
*/
'''

from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient


import sys
import logging
import time
import datetime
import argparse
import RPi.GPIO as GPIO
import math as m

#Class to SW-420 sensor


class Sw40(object):
"""docstring for Senal"""
def __init__(self, pin , led):
self.led = led
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(self.led,GPIO.OUT)
self.pin = pin
GPIO.setup(self.pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

GPIO.add_event_detect(self.pin, GPIO.RISING,
callback=self.callback, bouncetime=1)
self.count = 0

def callback(self , pin):


self.count += 1

def LedOn(self):
GPIO.output(self.led , 1)

def LedOff(self):
GPIO.output(self.led , 0)

48
# Custom MQTT message callback
def customCallback(client, userdata, message):
print("Received a new message aqui: ")
print(message.payload)
print("from topic: ")
print(message.topic)
print("--------------\n\n")

# Read in command-line parameters


parser = argparse.ArgumentParser()
parser.add_argument("-e", "--endpoint", action="store", required=True,
dest="host", help="Your AWS IoT custom endpoint")
parser.add_argument("-r", "--rootCA", action="store", required=True,
dest="rootCAPath", help="Root CA file path")
parser.add_argument("-c", "--cert", action="store",
dest="certificatePath", help="Certificate file path")
parser.add_argument("-k", "--key", action="store",
dest="privateKeyPath", help="Private key file path")
parser.add_argument("-w", "--websocket", action="store_true",
dest="useWebsocket", default=False,
help="Use MQTT over WebSocket")
parser.add_argument("-id", "--clientId", action="store",
dest="clientId", default="basicPubSub", help="Targeted client id")
parser.add_argument("-t", "--topic", action="store", dest="topic",
default="sdk/test/Python", help="Targeted topic")

args = parser.parse_args()
host = args.host
rootCAPath = args.rootCAPath
certificatePath = args.certificatePath
privateKeyPath = args.privateKeyPath
useWebsocket = args.useWebsocket
clientId = args.clientId
topic = args.topic

if args.useWebsocket and args.certificatePath and args.privateKeyPath:


parser.error("X.509 cert authentication and WebSocket are mutual
exclusive. Please pick one.")
exit(2)

if not args.useWebsocket and (not args.certificatePath or not


args.privateKeyPath):
parser.error("Missing credentials for authentication.")
exit(2)

# Configure logging
logger = logging.getLogger("AWSIoTPythonSDK.core")
logger.setLevel(logging.DEBUG)
streamHandler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s -
%(message)s')
streamHandler.setFormatter(formatter)
logger.addHandler(streamHandler)

# Init AWSIoTMQTTClient
myAWSIoTMQTTClient = None
if useWebsocket:
myAWSIoTMQTTClient = AWSIoTMQTTClient(clientId, useWebsocket=True)
myAWSIoTMQTTClient.configureEndpoint(host, 443)
myAWSIoTMQTTClient.configureCredentials(rootCAPath)
49
else:
myAWSIoTMQTTClient = AWSIoTMQTTClient(clientId)
myAWSIoTMQTTClient.configureEndpoint(host, 8883)
myAWSIoTMQTTClient.configureCredentials(rootCAPath, privateKeyPath,
certificatePath)

# AWSIoTMQTTClient connection configuration


myAWSIoTMQTTClient.configureAutoReconnectBackoffTime(1, 32, 20)
myAWSIoTMQTTClient.configureOfflinePublishQueueing(-1) # Infinite
offline Publish queueing
myAWSIoTMQTTClient.configureDrainingFrequency(2) # Draining: 2 Hz
myAWSIoTMQTTClient.configureConnectDisconnectTimeout(10) # 10 sec
myAWSIoTMQTTClient.configureMQTTOperationTimeout(5) # 5 sec

# Connect and subscribe to AWS IoT


myAWSIoTMQTTClient.connect()
myAWSIoTMQTTClient.subscribe(topic, 1, customCallback)
time.sleep(1)

#myAWSIoTMQTTClient.publish(topic, "SensorData" + status , 1)


#myAWSIoTMQTTClient.disconnect()
topic = "myrpi/UCP"
sensor_sn = 'dev_r00000001'
loopCount = 0

# Publish to the same topic in a loop forever


sensor = Sw40(21,6)
try:
while True:

time.sleep(1)
loopCount += 1
timestamp = datetime.datetime.now()
print(' Vibration: {} Loop #
{:d}'.format(sensor.count,loopCount))
print(' Time: {} \n'.format(timestamp))
msg = '"datetime": "{}", "vibration": "{}", "device":
"{}"'.format(timestamp, sensor.count, sensor_sn)
msg = '{'+msg+'}'
myAWSIoTMQTTClient.publish(topic, msg , 1)
if sensor.count >=1:
sensor.LedOn()
else:
sensor.LedOff()
sensor.count = 0

except KeyboardInterrupt:
myAWSIoTMQTTClient.disconnect()
GPIO.cleanup()

50
APNDICE B Inde.html (Pgina web)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">

<title>Projeto Final</title>

<!-- Bootstrap core CSS -->


<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.
css">

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and
media queries -->
<!--[if lt IE 9]>
<script
src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script
src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->

</head>

<body>

<div class="container">
<br />
<div class="jumbotron text-center">
<h1>Projeto Final UCP</h1>
<p class="lead">Sensor de vibrao SW-420 usando IoT</p>
</div>

<div class="row">

<canvas id="temperaturegraph" class="inner cover" width="500"


height="320"></canvas>

<br />
<div class="panel panel-default">
<div class="panel-body">
<div class="row">
<div class="col-sm-1 text-right">
<span class="label label-danger">Pico</span>&nbsp;
</div>
<div class="col-sm-9">
<span id="t-high" class="text-muted">(n/a)</span>
</div>
</div>
</div>
</div>
</div>

51
<div class="col-md-6">

<br />
</div>

<footer class="footer">
<pclass="text-right">Copyright &copy; Supported by Devan Sabaratnam -
Blaze Business Software Pty Ltd</pclass>
</footer>

</div> <!-- /container -->

<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<script src="https://sdk.amazonaws.com/js/aws-sdk-
2.1.40.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"
></script>
<script src="refresh.js"></script>
</body>
</html>

52
APNDICE C refresh.js

AWS.config.region = 'us-west-2';
AWS.config.credentials = new AWS.Credentials('AKIAJCACZUVTSVD5G5NA',
'CrJKYNDeU4XaOgsQQyeqHXKVzZzG7oXWonm5DoZQ');

var dynamodb = new AWS.DynamoDB();


var datumVal = new Date() - 86400000;
var params = {
TableName: 'datacapture',
KeyConditionExpression: '#id = :iottopic and #ts >= :datum',
ExpressionAttributeNames: {
"#id": "id",
"#ts": "timestamp"
},
ExpressionAttributeValues: {
":iottopic": { "S" : "myrpi/UCP"},
":datum": { "N" : datumVal.toString()}
}
};

/* Create the context for applying the chart to the HTML canvas */
var tctx = $("#temperaturegraph").get(0).getContext("2d");

/* Set the options for our chart */


var options = {
responsive: true,
showLines: true,
scales: {
xAxes: [{
display: false
}],
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
};

/* Set the inital data */


var tinit = {
labels: [],
datasets: [
{
label: "Medida do sensor SW-420",
backgroundColor: 'rgba(204,229,255,0.5)',
borderColor: 'rgba(153,204,255,1.5)',
data: []
}
]
};

var vibrationgraph = new Chart.Line(tctx, {data: tinit, options:


options});

$(function() {
getData();

53
$.ajaxSetup({ cache: false });
setInterval(getData, 5000);
});

/* Makes a scan of the DynamoDB table to set a data object for the chart
*/
function getData() {
dynamodb.query(params, function(err, data) {
if (err) {
console.log(err);
return null;
} else {

// placeholders for the data arrays


var vibrationValues = [];
var labelValues = [];

// placeholders for the data read


var vibrationRead = 0.0;
var timeRead = "";

// placeholders for the high/low markers


var vibrationHigh = -999.0;
var vibrationLow = 999.0;
var vibrationHighTime = "";
var vibrationLowTime = "";

for (var i in data['Items']) {


// read the values from the dynamodb JSON packet
vibrationRead =
parseFloat(data['Items'][i]['payload']['M']['vibration']['S']);
timeRead = new Date(data['Items'][i]['payload']['M']['datetime']['S']);

// check the read values for high/low watermarks


if (vibrationRead < vibrationLow) {
vibrationLow = vibrationRead;
vibrationLowTime = timeRead;
}
if (vibrationRead > vibrationHigh) {
vibrationHigh = vibrationRead;
vibrationHighTime = timeRead;
}

// append the read data to the data arrays


vibrationValues.push(vibrationRead);
labelValues.push(timeRead);
}

// set the chart object data and label arrays


vibrationgraph.data.labels = labelValues;
vibrationgraph.data.datasets[0].data = vibrationValues;

// redraw the graph canvas


vibrationgraph.update();

// update the high/low watermark sections


$('#t-high').text(vibrationHigh + ' - > ' + vibrationHighTime);

}
});
}
54

Potrebbero piacerti anche