APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um...

48
1 APLICATIVO PARA ESTACIONAMENTO Dhiego José da Silva Projeto de Graduação apresentado ao Curso de Engenharia Eletrônica e de Computação da Escola Politécnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Engenheiro. Orientador: Carlos José Ribas D'Ávila Rio de Janeiro Setembro de 2018

Transcript of APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um...

Page 1: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

1

APLICATIVO PARA ESTACIONAMENTO

Dhiego José da Silva

Projeto de Graduação apresentado ao Curso de

Engenharia Eletrônica e de Computação da Escola

Politécnica, Universidade Federal do Rio de

Janeiro, como parte dos requisitos necessários à

obtenção do título de Engenheiro.

Orientador: Carlos José Ribas D'Ávila

Rio de Janeiro

Setembro de 2018

Page 2: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

2

Page 3: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

3

Page 4: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

4

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO

Escola Politécnica – Departamento de Eletrônica e de Computação

Centro de Tecnologia, bloco H, sala H-217, Cidade Universitária

Rio de Janeiro – RJ CEP 21949-900

Este exemplar é de propriedade da Universidade Federal do Rio de Janeiro, que

poderá incluí-lo em base de dados, armazenar em computador, microfilmar ou adotar

qualquer forma de arquivamento.

É permitida a menção, reprodução parcial ou integral e a transmissão entre

bibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja

ou venha a ser fixado, para pesquisa acadêmica, comentários e citações, desde que sem

finalidade comercial e que seja feita a referência bibliográfica completa.

Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es).

Page 5: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

5

DEDICATÓRIA

Dedico este momento a todos os amigos que me deram força para continuar

mesmo com as dificuldades que aconteceram ao longo do trabalho e, em especial, a

Raphael Menezes de Macedo, Sergio Tadeu de Souza Sampaio e Thiago Salustiano

Jesus Santos.

Dedico também à minha mãe, Genova Amancio da Silva, que sempre esteve

junto comigo, e ao meu irmão, Adriano José da Silva, por sempre acreditarem em mim e

me apoiarem.

Page 6: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

6

AGRADECIMENTO

Agradeço ao meu pai, Joaquim José da Silva, que apesar de não estar aqui

comigo neste momento, sempre foi uma inspiração para que eu conseguisse vencer todos

os momentos difíceis pelos quais passei ao longo desses anos na faculdade e para que eu

não desistisse nunca desse sonho, que é concluir o curso de Engenharia. Este trabalho é

apenas o ponto final de um longa caminhada, que foi o curso de Engenharia Eletrônica e

de Computação.

Page 7: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

7

RESUMO

Este trabalho apresenta uma solução integrada de software e hardware para

auxiliar motoristas na escolha de um estacionamento para onde levar um veículo. O

número crescente de carros em circulação, associado à deficiência de transportes

públicos de qualidade, torna esse problema cada vez mais grave nas grandes metrópoles.

O suporte é realizado por meio de um aplicativo em que se encontram os

estacionamentos cadastrados e as informações de vagas disponíveis em cada um deles,

orientando o motorista quanto à escolha do local mais adequado.

Page 8: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

8

SIGLAS

UFRJ – Universidade Federal do Rio de Janeiro

PWM – Pulse Width Modulation (Modulação de Largura de Pulso)

CT – Centro de Tecnologia

HTTP – Hypertext Transfer Protocol (Protocolo de Transferência de Hipertexto)

HTML – Hypertext Markup Language (Linguagem de Marcação de Texto)

JSON – JavaScript Object Notation (Notação de Objetos JavaScript)

IoT – Internet of Things (Internet das Coisas)

Page 9: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

9

Sumário

1 Introdução 13

1.1 – Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.2 – Delimitação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.3 – Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.4 – Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.5 – Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.6 – Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2 Capítulo 2 — Arduino 16

2.1 – Arduino . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.1 – IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.1.2 – Arduino Mega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.2 – Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.2.1 – Sensor Ultrassônico .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.2.2 – ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.3 – Estacionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.3.1 – Arduino + Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.3.2 – Código do ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3 Capítulo 3 — Android

31

3.1 – Android Códigos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.2 – Android Layouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Page 10: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

10

4 Capítulo 4 — PHP 40

4.1 – Código PHP . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

5 Capítulo 5 — Resultados

42

6 Capítulo 6 — Conclusões

44

Referências Bibliográficas

45

Apêndice A — Modos de Operação do ESP8266 46

Apêndice B — Site Thingspeak.com 47

Apêndice C — Banco de Dados Online 000webhost.com 48

Apêndice D — Arduino Mega com ESP8266 embutido 49

Page 11: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

11

Lista de Figuras

1 – Diagrama do Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2 – Arduino UNO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3 – Funcionamento Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4 – IDE Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5 – Arduino Mega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

6 – Sensor Ultrassônico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

7 – Sensor Ultrassônico em funcionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

8 – ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

9 – ESP8266 e funcionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

10 – Parâmetros para cada estacionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

11 – Portas Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

12 – Definição de variáveis de controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

13 – Inicializando Circuito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

14 – Função para verificar se há veículo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

15 – Controle de veículos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

16 – Atualização de dados Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

17 – Função loop Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

18 – Inclusão de Bibliotecas Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

19 – Constantes e variáveis Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

20 – Inicializando ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

21 – Função auxiliar ESP8266 Verificacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

22 – Função auxiliar ESP8266 AtualizarBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

23 – Função principal ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

24 – Android e funcionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Page 12: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

12

25 – onCreate MainActivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

26 – BackgroundTask onPreExecute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

27 – BackgroundTask doInBackground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

28 – BackgoundTask onProgressUpdate e onPostExecute . . . . . . . . . . . . . . . . . . 33

29 – MainActivity parseJSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

30 – DisplayListView parte 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

31 – DisplayListView parte 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

32 – ContactAdapter parte 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

33 – ContactAdapter parte 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

34 – Classe Contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

35 – Página inicial do aplicativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

36 – Row_layout.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

37 – Content_layout.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

38 – Display_listview_layout.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

39 – Row_layout.xml código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

40 – Código init.php . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

41 – Código update.php . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

42 – Código get_json_data.php . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

43 – Velocidade do aplicativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

44 – Gráficos de desempenho do aplicativo Galaxy S9+ . . . . . . . . . . . . . . . . . . 41

45 – Gráficos de desempenho do aplicativo LG K3 . . . . . . . . . . . . . . . . . . . . . . . 43

46 – Telas do aplicativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

47 – Arduino Mega com ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

48 – Chaves seletoras do Arduino Mega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

49 – Tabela chave seletora Arduino Mega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Page 13: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

13

Capítulo 1

Introdução

1.1 – Tema

O projeto foi desenvolvido em duas partes: na primeira, utilizou-se o

microcontrolador Arduino para atualizar o banco de dados do estacionamento e, na

segunda, utilizou-se a tecnologia Android para realizar a comunicação entre o usuário

do aplicativo e os estacionamentos cadastrados.

A ideia do projeto é diminuir o tempo gasto na busca de vagas, possibilitando ao

usuário procurar um estacionamento, remotamente, por meio do aplicativo, antes

mesmo de sair de casa.

1.2 – Delimitação

O objeto do estudo é a criação de um banco de dados, em nuvem, que será

atualizado, automaticamente, pelos microcontroladores Arduino instalados nos

estacionamentos. Um aplicativo Android acessará essas informações no banco de dados

e as apresentará ao usuário.

1.3 – Justificativa

A quantidade de carros nas ruas e a disponibilidade reduzida de vagas faz com

que, frequentemente, os motoristas percam muito tempo circulando à procura de um

local para estacionar.

A utilização de um aplicativo que informe antecipadamente a situação de oferta

de vagas para estacionamento é um facilitador importante na rotina diária dos motoristas.

Page 14: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

14

1.4 – Objetivos

O objetivo do trabalho é o desenvolvimento de uma plataforma de hardware e

software, que integra os microcontroladores Arduino instalados nos estacionamentos, o

aplicativo de celular acessado pelo usuário e o banco de dados, em nuvem, na Web.

1.5 – Metodologia

Este trabalho terá como foco: a) a comunicação entre sistemas Android e o

banco de dados online e b) a comunicação entre o Arduino e o banco de dados.

O sistema Android entrará em contato com o banco de dados, que informará a

quantidade de vagas nos estacionamentos cadastrados no momento da consulta. O

sistema Arduino atualizará esses dados.

1.6 – Descrição do projeto

A Figura 1, a seguir, mostra o diagrama do projeto. O sistema proposto possui

duas entradas de dados: a) a primeira, via microcontrolador Arduino, é obtida quando

um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

via dispositivo Android, é obtida por meio do aplicativo desenvolvido. As duas entradas

são processadas por um código PHP que fará a atualização ou aquisição dos dados no

banco, conforme o caso.

Figura 1- Diagrama do Projeto

Page 15: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

15

Na estrutura em que será apresentado o trabalho, o Capítulo 2 trata do hardware

com o microcontrolador Arduino, do sensor de ultrassom e da comunicação Wi-Fi.

O Capítulo 3 descreve como são realizadas as trocas de mensagens e a

comunicação com o sistema Android.

A codificação em PHP é apresentada no Capítulo 4.

Os resultados do projeto são apresentados no Capítulo 5 e as conclusões, no

Capítulo 6.

Page 16: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

16

Capítulo 2

Arduino

2.1 – Arduino

O Arduino é uma plataforma formada por dois componentes. São eles: a placa –

o hardware utilizado para construir os projetos – e a IDE Arduino – o software em que

são escritos os códigos que indicam sua funcionalidade. Sua maior vantagem sobre as

demais plataformas de desenvolvimento é a facilidade de uso, pois pessoas que não são

da área técnica podem aprender o básico e criar seus próprios projetos num intervalo de

tempo relativamente curto.

Figura 2- Arduino UNO

O Arduino tem entradas e saídas de sinal digital, analógico, PWM e do tipo

serial. As suas portas trabalham sob uma tensão de até 5V, enquanto sua alimentação

pode ser de até 12VDC.

Outra vantagem do Arduino são os vários módulos que podem ser adicionados à

placa principal e podem conter sensores ou adicionar funções ao hardware.

Neste projeto, o Arduino foi utilizado para receber as informações adquiridas

pelo sensor ultrassônico, verificar se elas estão dentro de um padrão requerido para

Page 17: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

17

classificar o objeto como um veículo e informar ao módulo Wi-Fi as alterações na

quantidade de vagas do estacionamento.

Figura 3 - Funcionamento Arduino

2.1.1 – IDE

A IDE é o ambiente de desenvolvimento do Arduino. Neste ambiente realiza-se

a programação do código que será gravado no microcontrolador. A linguagem de

programação utilizada para isto é a C++.

Figura 4 - IDE Arduino

Page 18: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

18

A programação do Arduino possui dois blocos principais: a Setup() e a Loop().

Ambas funções são do tipo void, ou seja, não há a necessidade de fazer um retorno de

valor ao final do código.

A função Setup() é chamada no começo programa. Tem como objetivo fazer a

inicialização das variáveis e definir os modos a partir dos quais os pinos trabalharão.

Esta função só é chamada uma vez ao longo do programa.

A função Loop() roda indefinidamente no código do Arduino. Nela, realiza-se a

programação da placa, permitindo que o programa funcione dinamicamente. Esta

função controla ativamente os eventos do Arduino.

2.1.2 – Arduino Mega

O Arduino Mega é um tipo de Arduino desenvolvido para projetos mais

complexos, que exigem mais espaço de memória ou mais portas para conexão. Sua

memória flash é de 256KB enquanto a do Arduino Uno é de 32KB. Contém 56 portas

digitais, 16 portas analógicas, além de 3 pares de portas do tipo serial.

Figura 5 - Arduino Mega

2.2 – Sensores

Os sensores do Arduino são módulos desenvolvidos com a finalidade de facilitar

os projetos de circuitos automatizados.

Page 19: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

19

2.2.1 – Sensor Ultrassônico

O Sensor Ultrassônico é um dispositivo que utiliza um pulso de alta frequência

para medir a distância entre a fonte e um ponto determinado, semelhante a um sonar.

Enquanto o sonar é utilizado principalmente debaixo d’água, o sensor ultrassônico pode

ser utilizado no ambiente terrestre, tendo o ar como meio de transmissão.

Este sensor consiste de uma unidade de transceptor único, capaz de emitir e

detectar o som – cria um pulso sonoro que está além da faixa auditiva do ouvido

humano. Quando este pulso encontra um objeto sólido, ocorre uma reflexão e o sensor

faz a detecção do sinal através de um temporizador. Determina, assim, a distância entre

o objeto e o sensor.

Figura 6 - Sensor Ultrassônico

Os objetos refletem as ondas sonoras de diferentes maneiras. Alguns materiais,

como por exemplo o metal, refletem o som de forma muito satisfatória, enquanto outros

materiais macios, como tecidos de pelúcia, absorvem as ondas sonoras. A precisão do

sensor pode ser influenciada pelo tipo de objeto a ser detectado. Como no projeto o

objetivo é capturar a que distância um carro – objeto metálico – estará do sensor, sua

precisão acaba por ser muito boa.

No projeto, foi utilizado um sensor ultrassônico na entrada e outro na saída do

estacionamento para fazer a captura da imagem dos veículos. Foram escolhidas as

distâncias mínima e máxima de localização do veículo em relação ao sensor, para que

ele seja contabilizado. Posicionando-se nesta faixa, o veículo deve permanecer em seu

alcance por cinco segundos para que seja validado como um automóvel, em vez de um

objeto estranho qualquer.

Page 20: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

20

Figura 7 - Sensor Ultrassônico em funcionamento

O sensor ultrassônico pode apresentar pequenas variações em suas medições,

podendo não reconhecer o veículo. Para que isso não ocorra, foi estipulado um desvio

padrão do valor capturado anteriormente pelo sensor para que a contagem de cinco

segundos não seja zerada toda vez em que uma pequena variação ocorra.

2.2.2 – ESP8266

O ESP8266 é um microcontrolador da Espressif System. Lançado em 2014, tem

a capacidade de fazer uma comunicação via Wi-Fi por meio de um conjunto de

comandos.

O surgimento deste módulo foi uma revolução, já que, inicialmente, havia sido

criado para tablets e celulares. No entanto, com o desenvolvimento do firmware para

Arduino pela empresa Espressif System, ele virou uma febre entre os amantes de

eletrônica.

Existem várias maneiras de se programar o ESP8266. Caso seja utilizado como

ponte serial, o mais indicado é o comando AT, muito semelhante aos comandos de

modem. Outra maneira de programar o módulo é utilizar a linguagem Lua Script que

vem no firmware. Entretanto, ela é pouco utilizada, porque geralmente este módulo está

acoplado ao microcontrolador Arduino, programado na linguagem C. A terceira forma

de programar um ESP é utilizar MicroPython mas, assim como o Lua Script, ele é

pouco utilizado.

Page 21: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

21

Figura 8 - ESP8266

Entre as vantagens de utilizar o ESP8266 estão a portabilidade da linguagem do

Arduino para o ESP e a grande quantidade de bibliotecas disponíveis para a sua

programação.

No projeto, o ESP8266 tem a função de receber os dados coletados pelo Arduino

e utilizá-los para atualização do banco de dados através de um código PHP, que está na

Internet.

Figura 9 - ESP8266 e funcionamento

2.3 – Estacionamento

Nesta parte, explica-se como o Arduino foi utilizado para automatizar os

estacionamentos, como funciona o código que faz a verificação da entrada ou saída de

um veículo e como o microcontrolador se conecta ao banco de dados on-line para sua

atualização.

2.3.1 – Arduino + Sensores

Para a aquisição dos dados faz-se necessário definir alguns parâmetros. Estes

parâmetros são configurados para cada estacionamento, atendendo as especificidades de

cada ambiente.

Page 22: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

22

Figura 10 - Parâmetros de cada estacionamento

Os parâmetros DISTANCIAMAXIMA e DISTANCIAMINIMA representam a

que distância, em centímetros, que o carro deve estar dos sensores, para que a

informação de entrada ou saída do veículo seja registrada.

O DESVIOPADRAO é a distância, em centímetros, em que o carro pode se

movimentar após a primeira tomada de dados ter sido feita.

O TEMPOMINIMO é o tempo mínimo, em segundos, que um veículo leva para

entrar no estacionamento. Neste exemplo, foi adotado o tempo de cinco segundos.

Por fim, o MAXIMOVAGAS representa a quantidade máxima de vagas que há

no estacionamento.

Após a definição dos parâmetros, definem-se as portas do Arduino a serem

utilizadas pelos sensores ultrassônicos.

Figura 11 - Portas Sensores

Depois de determinar as portas que serão utilizadas pelos sensores, definem-se

algumas variáveis globais para controle e aquisição de dados dos sensores.

Page 23: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

23

Figura 12 - Definição de variáveis de controle

As variáveis distancia1 e distancia2 são as que calcularão a que distância o

veículo está do sensor ultrassônico, enquanto vagas, distancia11, distancia21, controle1

e controle2 são utilizadas para o controle do sistema.

Com todas as variáveis já definidas, o programa é inicializado por meio da

função Setup().

Figura 13 - Inicializando o circuito

Foram definidos na função Setup() quais os pinos do microcontrolador serão de

entrada ou de saída de dados e também quais portas terão o valor Vcc ou Gnd.

As portas seriais foram inicializadas para que haja comunicação entre

dispositivos fora do Hardware do Arduino. A Serial3 faz a comunicação com o módulo

Page 24: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

24

Wi-Fi e a porta Serial é utilizada para depuração de dados, caso seja necessário. Ao

final, criou-se um delay de dez segundos para aguardar a conexão do ESP8266 com o

Wi-Fi.

Três funções auxiliares foram implementadas no programa. São elas: a) a função

Sensores(), que faz a aquisição de dados do sensor ultrassônico e a atualização das

variáveis de distância do sensor; b) a VerificarDistancias(), que faz a checagem da

constante DESVIOPADRAO; e c) a função AtualizarWiFi(), que faz a passagem de

dados do Arduino para o ESP8266.

Figura 14 - Função para verificar se há um veículo

Na função ilustrada pela Figura 14, verifica-se o sensor ultrassônico para checar

se há um veículo entrando ou saindo do estacionamento.

Os valores colocados em trigPin1 e trigPin2 fazem a inicialização do sensor

ultrassônico. Os valores de duracao1 e duracao2 são adquiridos pelos pinos “echo” do

sensor. Após adquiri-los, é feita a conversão para centímetros e, então, são armazenados

em distancia1 e distancia2.

Page 25: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

25

Figura 15 - Controle de veículos

O código da Figura 15 faz o controle de um dos sensores e é repetido para

controlar o segundo sensor.

Depois de medida a que distância o veículo se encontra do sensor, passa-se para

a variável distancia11 o valor contido em distancia1, com o objetivo de limpar o lixo

que poderia estar contido nela. Isto feito, a variável controle1 faz a contagem dos cinco

segundos.

Para que esta variável continue a aumentar seu valor, representando assim que

um veículo está prestes a entrar no estacionamento, é necessário que o automóvel fique

dentro de uma faixa delimitada por DISTANCIAMINIMA e DISTANCIAMAXIMA.

Caso ele não se encontre nesta faixa, isso indica que poderia não ser um carro querendo

entrar. Poderia ser, por exemplo, uma pessoa que passou na frente do sensor. Sendo

assim, a variável controle1 é reinicializada com o valor igual a 0.

Na função AtualizarWi-Fi(), foram criadas mais duas variáveis de controle,

controle11 e controle21. Elas verificam se o veículo passou ou não da cancela. No caso

do automóvel não ter passado, o contador de tempo fica constante para que não haja o

registro de um novo carro apto a entrar no estacionamento.

Caso a quantidade de vagas do estacionamento zere, ou seja, o estacionamento

fique lotado, o Arduino enviará para o ESP8266, por meio da porta Serial3, a

quantidade de vagas igual a 0. Isso permite que o banco de dados fique sempre

atualizado com o horário mais próximo do atual.

Page 26: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

26

Figura 16 - Atualização de dados Wi-Fi

Sempre que a informação contendo a quantidade de vagas for enviada ao

ESP8266, realiza-se o reset das variáveis de controle.

Tanto a função VerificarDistancias() quanto a AtualizarWi-Fi() são repetidas

para todos sensores ultrassônicos instalados no estacionamento.

A função Loop() no Arduino faz a chamada das funções auxiliares e deixa um

delay de um segundo para voltar a fazer a aquisição de dados.

Figura 17 - Função loop Arduino

Page 27: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

27

2.3.2 – Código do ESP8266

O módulo ESP8266 faz a atualização do banco de dados ao receber, via

comunicação serial, os dados coletados pelo Arduino. Para a programação deste módulo

foram utilizadas duas bibliotecas que fazem conexão com o Wi-Fi.

Figura 18 - Inclusão Bibliotecas Wi-Fi

Neste exemplo, usaremos um estacionamento fictício com o nome de

“Estacionamento CT”. Para tornar possível a comunicação do estacionamento com o

banco de dados, foi necessária a criação de um host no site “thingspeak.com” (Apêndice

B): nesse servidor, há um link para o script PHP que faz a atualização do banco de

dados.

Figura 19 - Constantes e Variáveis Wi-Fi

As constantes ssid e password são nome e senha da rede Wi-Fi que deseja fazer

a conexão.

Vagas e vagas1 são variáveis para a depuração dos valores recebidos da conexão

com o Arduino; a vagasmaximo é a quantidade máxima de vagas que o estacionamento

suporta e a variável cliente, que é do tipo WiFiclient, faz a comunicação entre o

ESP8266 e o banco de dados on-line.

Na função Setup(), inicializa-se a porta serial que fará a comunicação com o

Arduino, seleciona-se o modo de operação do ESP8266 (Apêndice A) e faz-se a

tentativa de conexão do módulo com a rede Wi-Fi. Caso a conexão seja bem-sucedida,

Page 28: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

28

cria-se um delay de cinco segundos para que o Arduino possa adquirir os dados pelo

sensor e, em caso de falha na conexão, o módulo fica em loop tentando se conectar à

rede.

Figura 20 - Inicializando o ESP8266

Duas funções auxiliares foram utilizadas, Verificacao() e AtualizarBD(). A

função Verificacao() checa se a informação recebida pelo ESP8266, por meio da porta

Serial, é compatível com os dados esperados ou se foi recebido lixo. Caso seja lixo,

atribui-se o último valor válido a vagas.

Figura 21 - Função auxiliar ESP8266 Verificacao

A função AtualizarBD() atualiza o banco de dados on-line. Para isso, conecta-se

ao servidor do thingspeak.com pela porta 80 e, caso a conexão seja bem-sucedida, o

estacionamento a ser atualizado é informado com a nova quantidade de vagas

disponíveis neste estabelecimento. Caso não seja possível fazer a conexão, o código

aguarda dez segundos e tenta novamente.

Page 29: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

29

Figura 22 - Função auxiliar ESP8266 AtualizarBD

A função principal do ESP8266 verifica se há informação na porta Serial para

chamar a função Verificacao() e, em seguida, a função AtualizarBD().

Figura 23 - Função principal ESP8266

Page 30: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

30

Capítulo 3

Android

3.1 – Android Códigos

O Android foi o sistema operacional escolhido para o desenvolvimento inicial do

projeto, considerando que é o mais utilizado no mundo. Sua linguagem de programação

é o Java.

No projeto, o Android tem a função de tomar os dados contidos no banco on-line,

por meio de um código PHP que está na Internet, e exibi-los ao usuário do aplicativo,

como ilustrado na Figura 24 a seguir.

Figura 24 - Android e funcionamento

O programa foi dividido em quatro classes: MainActivity, DisplayListView,

ContactAdapter e Contacts. A principal é a MainActivity, encarregada de baixar os

dados contidos no banco; a DisplayListView faz a apresentação dos dados para usuários

do aplicativo; a ContactAdapter transforma os dados coletados no tipo TextView e a

Contacts armazena os dados que foram baixados do banco.

A MainActivity foi colocada como uma extensão da classe AppCompatActivity,

porque o programa fará a utilização de uma ActionBar – uma funcionalidade do

Android que chama uma ação.

Page 31: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

31

Figura 25- onCreate MainActivity

A função onCreate(), no código ilustrado pela Figura 25, chama o layout

activity_main e apresenta-o ao usuário. É neste layout que está contida a tela inicial do

aplicativo.

No projeto, foi utilizada a classe BackgroundTask, que faz com que tarefas

possam ser trabalhadas em plano de fundo, sem atrapalhar a experiência do usuário que

está navegando pelo aplicativo. Neste caso, ela se conectará ao banco de dados e baixará

as informações contidas nele.

Figura 26 - BackgroundTask onPreExecute

Na função onPreExecute, informa-se como será feito o acesso ao banco de dados:

por meio do código PHP que está localizado em uma página html.

Em doInBackgroung, realiza-se a captação dos dados que estão no banco. Para

isso, é aberta uma conexão HTTP e cria-se um buffer que passará as informações da

página para a string JSON_STRING.

Page 32: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

32

Figura 27 - BackgroundTask doInBackground

Em onPostExecute, o valor adquirido em doInBackground é recebido e realiza-

se o retorno deste valor por meio da variável json_string.

Figura 28 - BackgoundTask onProgressUpdate e onPostExecute

A função parseJSON é chamada quando o botão “VAGAS DISPONIVEIS” é

pressionado na tela inicial do aplicativo. Esta função tem como objetivo executar a

classe BackgroundTask e passar o conteúdo baixado do banco de dados para a classe

DisplayListView.

Figura 29 - MainActivity parseJSON

Page 33: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

33

A classe DisplayListView tem como papel principal receber os dados da

MainActivity e exibi-los ao usuário. Para apresentá-los no formato de lista encadeada,

criou-se a classe ContactAdapter, que fará a organização dos dados em uma linha.

Figura 30 - DisplayListView parte 1

Figura 31 - DisplayListView parte 2

Ao receber as informações extraídas do banco de dados, o programa as separa

em linhas, cada uma contendo a data, o nome do estacionamento e a quantidade de

vagas. Essas linhas são enviadas para o ContactAdapter.

Page 34: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

34

A classe ContactAdapter transforma os dados recebidos de DisplayListView do

tipo string para o tipo TextView, que é como os dados são apresentados na tela do

celular.

Figura 32 - ContactAdapter parte 1

Figura 33 - ContactAdapter parte 2

A classe Contacts guarda as informações baixadas do banco de dados de forma

segura e simples para que não haja perda de dados. Nela estão os “getters” e “setters”

para o armazenamento dos dados.

Page 35: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

35

Figura 34 - Classe Contacts

3.2 – Android Layouts

Os layouts são as telas que aparecerão para o usuário. Neste aplicativo, há quatro

layouts: content_main.xml, onde se encontra o botão de busca de estacionamentos;

display_listview_layout.xml, que faz a apresentação dos dados em forma de lista;

activity_main.xml, que tem como objetivo informar o contato do criador do aplicativo;

e row_layout.xml, que diz como está montada cada linha da lista.

O aplicativo possui duas telas que são apresentadas ao usuário: a) tela contendo

o botão de busca de estacionamentos e o botão para o contato do desenvolvedor. b) tela

informando o último horário em que o estacionamento foi atualizado, os

estacionamentos cadastrados e a quantidade de vagas. Ambas as telas estão

representadas nas figuras, a seguir.

Page 36: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

36

Figura 35 - Página inicial do aplicativo Figura 306 - Row_layout.xml

O código para fazer o botão “VAGAS DISPONIVEIS” encontra-se na Figura 37.

Este código indica a posição na qual o botão deve ficar na tela do dispositivo e informa

que a função parseJSON deve ser chamada quando o botão for acionado.

Figura 37 - Content_layout.xml

Os layouts apresentados nas Figuras 38 e 39, informam como aparecerá para o

usuário a lista e cada uma de suas linhas, respectivamente.

Page 37: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

37

Figura 38 - Display_listview_layout.xml

Figura 39 - Row_layout.xml código

Page 38: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

38

Capítulo 4

PHP

4.1 – Código PHP

PHP foi a linguagem escolhida para criar um código simples que pudesse

estabelecer uma conexão com o banco de dados on-line. Para isso, foram feitos três

scripts diferentes: um para se conectar, um para fazer a atualização e outro para fazer

download dos dados contidos no banco de dados.

O PHP abaixo encontra-se no site 000webhost.com e faz a conexão com o banco

de dados. Para que haja a conexão, é necessário informar os dados do dono do banco.

Como tanto o banco quanto o código estão no mesmo servidor, o host para acesso é o

localhost.

Figura 40 - Código init.php

Depois que os dados do usuário são informados, o código tenta fazer a conexão

através da função mysqli_connect. Ela recebe como argumentos o servidor, o usuário, a

senha e o banco de dados, informando ao usuário se foi possível ou não se conectar ao

banco de dados e o porquê.

Para fazer a atualização do banco de dados é necessário que a função anterior de

conexão tenha acontecido com sucesso. Os valores a serem atualizados estão nas

Page 39: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

39

variáveis $estacionamento e $vagas. Foi utilizado o método POST para fazer a

passagem de dados para o banco. Assim como na função anterior, informa-se ao usuário

se foi possível ou não se conectar ao banco de dados e o porquê.

Figura 41 - Código update.php

Por fim, temos a função que envia os dados na forma de JSON para o usuário.

Esta não requer função específica destinada à conexão com o banco de dados porque

não será necessário mostrar ao usuário se foi possível se conectar – função exclusiva do

dispositivo Android.

Figura 312 - Código get_json_data.php

Após fazer a conexão, os dados são armazenados numa matriz que é codificada

como JSON pela função json_encode para, então, ser enviada por meio da função echo.

Page 40: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

40

Capítulo 5

Resultados

O site Firebase.google.com foi utilizado para a análise de desempenho do código

Android. O site também oferece diferentes testes, incluindo verificações de

funcionalidade. No caso deste trabalho, testou-se a eficiência do tempo de inicialização

e a quantidade de processamento, memória e internet utilizados pelo aplicativo. Os

resultados estão apresentados nas duas Figuras abaixo.

Figura 43 - Velocidade do aplicativo

Figura 44 - Gráficos de desempenho do aplicativo Galaxy S9+

Pode-se ver pelo gráfico que o consumo de memória do aplicativo é muito baixo,

chegando a 60MB ao longo de aproximadamente 0.04s, assim como o consumo de

internet, com um pico de 2.3KB/s num intervalo menor que 0.02s. Ou seja, o aplicativo

Page 41: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

41

pode ser instalado em qualquer celular com sistema operacional Android e acesso à

Internet.

Os testes anteriormente mencionados foram feitos em um celular de modelo

Galaxy S9+. A seguir, apresentamos testes realizados no modelo LG K3. Os gráficos

abaixo mostram que, no caso deste dispositivo, o consumo de processamento e memória

foram maiores, ainda que continuem muito baixos.

Figura 325 - Gráficos de desempenho do aplicativo LG K3

As telas do aplicativo com o código finalizado estão ilustradas na Figura abaixo.

Figura 46 - Telas do aplicativo

Page 42: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

42

Capítulo 6

Conclusões

Ao longo do projeto houve algumas dificuldades na definição de um método

para a construção de sua parte física, a partir da qual se realizaria a contagem de carros

no estacionamento. Primeiramente, cogitou-se a utilização de um sensor de

infravermelho, que faria a verificação da existência ou não de um carro em cada vaga.

No entanto, muitos sensores teriam de ser empregados para tal finalidade.

Optou-se, assim, pela utilização de dois sensores, um na entrada e outro na saída,

cada qual com seu receptor. Para tornar simples e barata a instalação de ambos os

sensores no estacionamento, utilizou-se o sensor ultrassônico, que faz tanto a emissão

quanto a recepção do sinal, no mesmo módulo.

Há um problema em fazer o projeto utilizando apenas dois sensores, um de

entrada e outro de saída. Sempre existe a possibilidade de, por má intenção ou descuido,

o sensor ser enganado, fazendo parecer que há a captura da imagem de um carro

presente. Um aprimoramento disso seria a utilização de quatro sensores, dois para

entrada e dois para saída, o que minimizaria este tipo de ocorrência.

Foram encontradas, ainda, no projeto, dificuldades para fazer a comunicação

entre os módulos do ESP8266 e o Arduino, porque o hardware que contém o ESP8266,

embutido no Arduino e desenvolvido recentemente, dispõe de pouca documentação.

Configurar o módulo ESP8266 para enviar informações para o banco de dados

foi um dos desafios superados no projeto, já que a maioria das aplicações documentadas

deste dispositivo são para sua utilização como servidor.

O escopo do trabalho foi dirigido para usuários com o sistema operacional

Android, porém há possibilidade de expansão do aplicativo para outros sistemas

operacionais como IOS e Windows no futuro.

Page 43: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

43

Referências bibliográficas

[1] Sunny Kumar Aditya & Vikash Kumar Karn, Android SQLite Essentials. Packt

Publishing Ltd, 2014.

[2] IVAN GROKHOTKOV, “Esp8266WiFi library” https://arduino-

esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html, 2017, (Acesso em 12

Agosto 2018)

[3] FERNANDO K TECNOLOGIA, “Arduino Mega com WiFi Embutido ESP8266”,

https://www.fernandok.com/2017/11/arduino-mega-com-wifi-embutido-

esp8266.html, 2017, (Acesso em 10 Agosto 2018)

[4] PRABEESH R. K., “Android JSON Parsing – Read Data from MySQL Database

Using JSON”, https://www.youtube.com/watch?v=uFbwW4ERUN0, 2015,

(Acesso em 05 Junho de 2018)

[5] FLAVIO ALEXANDRE, “O método POST”, http://www.devfuria.com.br/php/o-

metodo-post/, 2012, (Acesso em 7 Junho 18)

[6] PRABEESH R. K., “Android JSON Parsing – Perform parsing & display result in a

ListView”, https://www.youtube.com/watch?v=KSX4zIhiZlM, 2015, (Acesso em

05 Junho de 2018)

Page 44: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

44

Apêndice A

Modos de Operação do ESP8266

O módulo ESP8266 tem quatro modos de operação – o WIFI_AP, WIFI_STA,

WIFI_AP_STA e WIFI_OFF – cada um deles com uma funcionalidade que será

explicada logo abaixo.

WIFI_AP – Este modo de operação faz referência ao AP (Acess Point), um

termo utilizado na área de redes. No caso do ESP8266, o modo AP é chamado também

de “soft-AP”, porque ele é uma etapa intermediária antes de conectar o ESP8266 ao Wi-

Fi. Isso acontece quando o SSID e a senha da rede não são previamente conhecidos.

Neste caso, o ESP inicializa como soft-AP para ser possível a conexão à Internet,

utilizando-se um laptop ou celular, de modo a prover as credenciais de uma rede Wi-Fi.

WIFI_STA – A sigla STA significa Station. Neste modo de operação, o

dispositivo atuará como uma estação de Wi-Fi, ou seja, o ESP8266 conectar-se-á a um

Acess Point para assim conseguir uma conexão à Internet.

O modo WIFI_AP_STA é a junção dos dois modos de operação do ESP8266.

Ele funciona tanto como um dispositivo de Acess Point, com acesso a ele para fazer a

modificação dos dados, assim como uma Station, fazendo acesso a redes diretamente.

O modo WIFI_OFF foi feito para diminuir o consumo de energia do ESP8266.

Para ativar este modo é recomendado o uso da função WiFi.forceSleepBegin(10). Deste

modo, o rádio do Wi-Fi é desabilitado e para poder reabilitá-lo é utilizada a função

WiFi.forceSleepWake().

Page 45: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

45

Apêndice B

Site Thingspeak.com

ThingSpeak é uma plataforma analítica de serviços para IoT que permite

visualizar e analisar informações na nuvem, facilitando a visualização instantânea dos

dados enviados pelos dispositivos. Este site geralmente é utilizado para prototipagem e

teste de conceito sobre sistemas de IoT que venham a requerer análise.

No ThingSpeak, é possível a criação de canais onde os dados de sistemas de IoT

podem ser armazenados. Este site contém diversas aplicações analíticas e ativas.

As aplicações analíticas são “Matlab Analysis” que analisa e transforma os

dados; “Matlab Visualizations” que faz a visualização dos dados e gráficos gerados por

Matlab e “Plugins” que permite o usuário criar arquivos HTML, JavaScript ou CSS

personalizados que podem ser usados para processar ou mostrar dados.

As aplicações ativas são “TimeControl”, onde é possível deixar ações agendadas;

“React”, que faz ações condicionais nos dados contidos nos canais; “TalkBack” faz o

alinhamento de comandos numa pilha e o “ThingHTTP”, que é o utilizado no projeto.

Ele faz a criação de POSTs e GETs personalizados para outros webservices.

Page 46: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

46

Apêndice C

Banco de Dados Online 000webhost.com

O 000webhost.com é um site grátis que permite ao usuário criar um website,

gerenciar bancos de dados, e-mails e arquivos.

No projeto, foram utilizados o gerenciador de banco de dados para criar o banco

onde ficam armazenadas as informações sobre os estacionamentos e o gerenciador de

arquivos, onde estão os códigos PHP desenvolvidos.

Page 47: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

47

Apêndice D

Arduino Mega com ESP8266 embutido

Este é o dispositivo que foi utilizado para fazer o projeto: um Arduino Mega

embutido com ESP8266. Por se tratar de uma única placa contendo ambos os

Hardwares, torna-se mais simples, diminuindo a quantidade de fios do circuito.

Figura 47 - Arduino Mega com ESP8266

Esta placa é muito útil, porque nela você pode fazer tanto a utilização dos

módulos separadamente, como em conjunto. Para que isso seja possível, a placa tem

uma chave seletora contendo: a) sete switches que fazem a modificação dos modos de

operação do dispositivo; b) uma chave para modificar a porta serial do Arduino, que

estará em contato com o ESP8266, e c) um botão para quando for ser feito upload de

código para um dos módulos. A Figura abaixo mostra onde estão localizadas essas

chaves.

Figura 48 - Chaves seletoras do Arduino Mega

Page 48: APLICATIVO PARA ESTACIONAMENTOmonografias.poli.ufrj.br/monografias/monopoli10030013.pdf · um automóvel passa pelo sensor ultrassônico, ao entrar no estacionamento; b) a segunda,

48

As posições da chave seletora para escolha do modo de operação do circuito são

apresentadas na Figura 49, abaixo.

Figura 49 - Tabela chave seletora Arduino Mega