Park My Ride: Um sistema inteligente para - iMobilis

Transcrição

Park My Ride: Um sistema inteligente para - iMobilis
Universidade Federal de Ouro Preto
Departamento de Computação e Sistemas de
Informação
Colegiado de Engenharia de Computação
Park My Ride: Um sistema inteligente para
monitoramento e gerenciamento de vagas em
estacionamentos públicos e privados
Leandro Gomes da Silva
Trabalho de Conclusão
de Curso
ORIENTAÇÃO:
Prof. Vicente J. Peixoto Amorim
Julho, 2015
João Monlevade/MG
Leandro Gomes da Silva
Park My Ride: Um sistema inteligente para
monitoramento e gerenciamento de vagas em
estacionamentos públicos e privados
Orientador: Prof. Vicente J. Peixoto Amorim
Monografia apresentada ao curso de Engenharia de
Computação do Departamento de Computação e Sistemas de Informação da Universidade Federal de Ouro
Preto como requisito parcial para obtenção do grau
de Bacharel em Engenharia de Computação
Universidade Federal de Ouro Preto
João Monlevade
Julho de 2015
Leandro Gomes da Silva
Park My Ride: Um sistema inteligente para monitoramento e gerenciamento
de vagas em estacionamentos públicos e privados/ Leandro Gomes da Silva. – João
Monlevade, 07 de julho de 201580 p. : il. (algumas color.) ; 30 cm.
Orientador: Prof. Vicente J. Peixoto Amorim
Monografia (graduação) – Universidade Federal de Ouro Preto, 07 de julho de
2015.
1. Internet of Things. 2. Embarcados. 3. Smart Parking. 4. WSN. I. Vicente
J. Peixoto Amorim. II. Universidade Federal de Ouro Preto. III. Instituto de
Ciências Exatas e Aplicadas. IV. Park My Ride: Um sistema inteligente para
monitoramento e gerenciamento de vagas em estacionamentos públicos e privados
CDU 02:141:005.7
FOLHA DE APROVAÇÃO DA BANCA EXAMINADORA
Park My Ride: Um sistema inteligente para
monitoramento e gerenciamento de vagas em
estacionamentos públicos e privados
Leandro Gomes da Silva
Monografia apresentada ao curso de Engenharia de Computação do
Departamento de Computação e Sistemas de Informação da Universidade Federal de Ouro Preto como requisito parcial para obtenção do
grau de Bacharel em Engenharia de Computação aprovada pela Banca
Examinadora abaixo assinada:
Prof. Vicente J. Peixoto Amorim
Mestre em Ciência da Computação
Orientador
DECSI - UFOP
João Monlevade, 07 de julho de 2015
A Deus, que me deu forças para continuar, que ouviu minhas orações.
Agradecimentos
Agradeço a Deus pelas portas abertas e fechadas, por me mostrar o melhor caminho
até aqui, pelas orações ouvidas e pelas respostas transmitidas. Agradeço também aos meus
pais, José Geraldo e Márcia, e a minha irmã, Gisele, pelos incentivos e pela paciência nos
meus momentos de tensão.
Obrigado também ao meu orientador, Prof. Vicente J. Peixoto Amorim, e ao meu
Coorientador Prof. Filipe Nunes Ribeiro, pelas sugestões e orientações dadas para alcançar
meus objetivos acadêmicos, pelos materiais fornecidos para a execução deste projeto e por
todo suporte. Agradeço também ao Prof. Igor Muzetti pela ajuda na gerência do projeto.
Não posso deixar de agradecer também aos meus amigos e colegas de todos os dias
do laboratório iMobilis pela amizade e suporte no projeto. Aos meus irmãos da República
Diretoria, meu muito obrigado pelas conversas diárias, pelos churrascos, pelas risadas e
principalmente pela amizade.
Aos professores que de alguma forma me ajudaram a chegar aqui, meu muito
obrigado. O conhecimento repassado por vocês foi fundamental para meu crescimento
profissional e pessoal. Agradeço também ao Prof. Tiago Lima e a pesquisadora Raquel
Martins Lana pelas primeiras orientações em iniciação científica, vocês foram fundamentais
para minha base acadêmica.
"O esforço só é expresso em recompensa, quando uma pessoa se recusa a desistir"
Napoleon Hill
Resumo
Encontrar vagas de estacionamento tem sido cada vez mais difícil em grandes centros
comerciais e pouco investimento tem sido feito em tecnologias visando mitigar esse problema
em comparação com os investimentos em amplas rodovias e avenidas. Estudos já mostram
que existe uma relação entre intensidade de tráfego e a busca por estacionamento. Este
trabalho apresenta então o Park My Ride, um sistema inteligente para monitoramento e
gerenciamento de vagas em estacionamentos públicos e privados. Através de um algoritmo
de detecção veicular baseado em variações de campo magnético o Park My Ride monitora
o estado de uma vaga de estacionamento (vazia ou ocupada) e exibe as informações aos
usuários através de uma interface web intuitiva. Com esse sistema implementado em larga
escala espera-se que os usuários consigam identificar rapidamente locais para estacionar
antes e durante seu deslocamento reduzindo assim congestionamentos, poluição e gastos
com combustíveis. Também é esperado que estacionamentos privados possam otimizar
recursos e maximizar lucros através dos dados gerados pelo sistema Park My Ride.
Palavras-chaves: Internet of Things. Embarcados. Smart Parking. WSN.
Abstract
Find parking spots have become difficult by the years in large commercial zones and
few investments has been made on technologies to mitigate such problem in comparison
with what is spent in freeways and large avenues. Studies already shows relation between
traffic intensity and search for a parking spot. This work presents “Park My Ride”, an
intelligent system to monitor and manage both public and private parking places. Through
a vehicular detection algorithm based on magnetic field variation, “Park My Ride” can
monitor parking spaces status (empty or occupied) and display this information to the
user by an intuitive web interface. With this system implemented in large scale it is
expected that users can quickly identify empty parking spots nearby before and during
his displacement reducing then congestion, pollution and fuel costs. It is also expected
that parking managers optimize resources and increases profit using data created by the
system “Park My Ride”.
Key-words: Internet of Things. Embedded. Smart Parking. WSN.
Lista de ilustrações
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
1 –
2 –
3 –
4 –
5 –
6 –
7 –
8 –
9 –
10 –
11 –
12 –
13 –
14 –
15 –
16 –
17 –
18 –
Aplicabilidade de sistemas embarcados . . . . . . .
Arquitetura geral de uma rede de sensores sem fio .
Otimizações em WSN . . . . . . . . . . . . . . . .
Aplicações para IoT e seus domínios . . . . . . . .
Arduino Uno Rev.3 . . . . . . . . . . . . . . . . . .
CuHead WiFi V1 . . . . . . . . . . . . . . . . . . .
HMC5883L . . . . . . . . . . . . . . . . . . . . . .
ESP8266 . . . . . . . . . . . . . . . . . . . . . . . .
Antena Ubiquiti NanoStation locoM2 . . . . . . . .
Arduino IDE . . . . . . . . . . . . . . . . . . . . .
Arquitetura da primeira etapa do projeto . . . . . .
Arquitetura invertida da segunda etapa do projeto
Arquitetura final do projeto . . . . . . . . . . . . .
Fluxo de execução do nó sensor . . . . . . . . . . .
Página web de interação com usuário . . . . . . . .
Fluxograma do algoritmo de detecção . . . . . . . .
Fluxograma do algoritmo de detecção . . . . . . . .
Sinal de referência para o algoritmo . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29
31
32
33
41
42
42
43
43
44
50
50
51
52
53
56
57
57
Lista de tabelas
Tabela 1 – Camadas da arquitetura IoT proposta por (MA, 2011) . . . . . . . . . 32
Tabela 2 – Camadas do servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Tabela 3 – Diferentes colorações de marcadores e seus significados . . . . . . . . . 53
Lista de abreviaturas e siglas
CI
Circuito Integrado
GPIO
Entrada/Saída de Propósito Geral
IDE
Ambiente Integrado de Desenvolvimento
IoT
Internet das Coisas
RF
Rádio Frequência
PGI
Parking Guidance Information System
PtMP
Ponto-a-Multiponto
SGBD
Sistema Gerenciador de Banco de Dados
WSN
Wireless Sensor Network
Lista de símbolos
Sumário
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
I
REFERENCIAIS TEÓRICOS
27
1
REVISÃO BIBLIOGRÁFICA . . . . . . . . . . . . . . . . . . . . . . 29
1.1
Sistemas embarcados . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.2
Rede de sensores sem fio . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.3
Internet das Coisas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2
PESQUISAS RELACIONADAS . . . . . . . . . . . . . . . . . . . . . 35
II
PREPARAÇÃO DA PESQUISA
3
MOTIVAÇÃO E OBJETIVOS . . . . . . . . . . . . . . . . . . . . . 39
3.1
Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2
Objetivos
4
MATERIAIS E MÉTODOS . . . . . . . . . . . . . . . . . . . . . . . 41
4.1
Hardwares utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.1.1
Arduino Uno Rev.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.1.2
CuHead WiFi V1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.1.3
HMC5883l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.1.4
ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.1.5
Antena Ubiquiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.1.6
Máquina servidora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2
Softwares utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.1
Arduino IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.2
ESPTool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.3
Linguagens de programação . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.4
Banco de dados MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3
Metodologia de desenvolvimento . . . . . . . . . . . . . . . . . . . . . 46
III
RESULTADOS
5
ARQUITETURA DO SISTEMA . . . . . . . . . . . . . . . . . . . . 49
37
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
47
5.1
5.1.1
5.1.2
5.2
Visão geral . . . . . .
Protótipo 1 . . . . . . .
Protótip 2 . . . . . . . .
A arquitetura a fundo
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
49
49
50
51
6
6.1
6.2
6.3
IMPLEMENTAÇÃO . .
Requisitos . . . . . . . .
Banco de dados . . . . .
Algoritmo de detecção .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
55
55
55
55
7
TRABALHOS FUTUROS . . . . . . . . . . . . . . . . . . . . . . . . 59
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
APÊNDICES
67
APÊNDICE A – REQUISITOS DO SISTEMA . . . . . . . . . . . . 69
ANEXOS
ANEXO A – ESTÓRIAS DE USUÁRIO
75
. . . . . . . . . . . . . . . 77
25
Introdução
É cada vez mais comum em grandes centros perceber investimentos em amplas vias
de escoamento de tráfego e pouco, ou quase nenhum, em tecnologias que visam otimizar
a infraestrutura existente. Estudos mostram que existe uma relação entre intensidade
de tráfego e busca por estacionamento (MERRIMAN, 1998). Sistemas dos chamados
estacionamentos inteligentes (Smart Parking) vêm para auxiliar os usuários na busca por
estas vagas ao fornecerem informações em tempo real como: melhor caminho até a vaga,
trânsito em determinada região, quantidades de vagas livres em estacionamentos pagos
e gratuitos e até a possibilidade de reserva de vagas e pagamento antes mesmo de sair
de casa. Estudos em Smart Parking são possíveis graças aos avanços nas pesquisas em
embarcados e redes de sensores sem fio (Wireless Sensor Networks - WSN).
Hoje, aplicações baseadas em microprocessadores são bem complexas e de tamanho
muito reduzido. Podem chegar a possuir diversos sistemas embarcados interagindo entre sí.
Mas, a algumas décadas atrás tais sistemas eram muito simples. Como exemplo é possível
referenciar o “sistema embarcado” de navegação da nave Apollo era baseado em chaves,
lâmpadas e displays de 7 segmentos (JIMÉNEZ; PALOMERA; COUVERTIER, 2013).
Os avanços nos estudos em microprocessadores trouxe a necessidade de comunicação entre dispositivos. Já é conhecido que boa parte do consumo energético vem da
transmissão/recepção de dados. Portanto, pesquisas na área de WSN propõem melhorias
em consumo energético e desempenho dos dispositivos desta rede (HUI; CULLER, 2010)
(POPOVICI; MAGNO; MARINKOVIC, 2013).
Uma possível aplicação dos sistemas embarcados é a minimização de um problema
dos grandes centros: o trânsito. Como já mencionado, a busca por uma vaga de estacionamento pode ser longa e isso acaba agravando os engarrafamentos e a lentidão no
trânsito de centros comerciais. A proposta deste trabalho é justamente minimizar este
problema através do sensoriamento de vagas de estacionamentos públicos e privados. Com
isso, os usuários deste serviço poderão saber o atual estado de uma determinada região
com relação a ocupação dos locais de estacionamento.
O uso de microprocessadores e WSN é de fundamental importância para a evolução
do sistema aqui proposto. Os protótipos foram desenvolvidos baseando-se na plataforma
Arduino(ARDUINO, 2015b) e a detecção dos automóveis é feita através de um sensor de
campo magnético (EMARTEE, 2015). As informações sobre o estado da vaga são enviadas
através de uma rede sem fio a um servidor, que faz o processamento das informações
compilando-as em um banco de dados para disponibilização aos usuários através de uma
interface web.
26
Introdução
O sistema proposto neste trabalho é apresentado nos próximos capítulos como se
segue: a parte I, que abrange os capítulos 1 e 2 trazem a contextualização dos principais
assuntos aqui tratados e o estado da arte. A parte II apresenta a motivação do trabalho e
seus objetivos no capítulo 3, enquanto que o capítulo 4 apresenta os principais materiais e
metodologias utilizadas. A terceira e última parte abrange vários capítulos (do 5 ao 7) que
apresentam a arquitetura do sistema e uma visão geral do algoritmo de detecção e testes.
Parte I
Referenciais teóricos
29
1 Revisão bibliográfica
Este trabalhou abordou diferentes áreas e tecnologias da computação, por isso
faz-se necessário apresentá-las nesta seção como forma de introduzir o leitor aos assuntos.
1.1 Sistemas embarcados
Os sistemas embarcados começaram a aparecer na década de 1960 (JIMÉNEZ;
PALOMERA; COUVERTIER, 2013). Naquela época, o primeiro sistema embarcado
produzido em larga escala, o Autonetics D-17, não utilizava circuitos integrados (CIs) e isso
o tornou muito caro. Com a adoção da produção dos CIs em larga escala os preços caíram
drasticamente passando dos US$3000 a meros US$3 a unidade. Porém, a popularização
destes sistemas chegou apenas na década de 1990, quando, a partir da formação do
consórcio PC/104, ficou estabelecido um padrão para microprocessadores Intel baseados
em uma placa mãe. Essa padronização possibilitou a produção de computadores muito
potentes. Hoje, sistemas embarcados possuem grande aplicabilidade no cotidiano (Figura 1)
sendo utilizados em videogames, eletrodomésticos, smartphones, carros e sistemas de voo.
Figura 1 – Aplicabilidade de sistemas embarcados (SADA, 2010)
A literatura fornece diversas definições para este tipo de sistema (PARAB, 2008),
onde cada uma se adapta melhor em uma dada situação. Oshana e Kraeling (2013) utilizam
em seu livro a definição de que um sistema embarcado é um sistema computacional
especializado que, através do conjunto de hardware e software, executa funções específicas.
No desenvolvimento de um sistema embarcado, algumas características do sistema
como restrições de energia e memória, baixa intervenção humana, confiabilidade e segurança
devem ser trabalhadas com atenção por serem críticas. Grande parte dos sistemas interagem
diretamente com o meio e requerem respostas rápidas. Para se obter essa agilidade, o
processamento é executado on the fly, ou seja, dinamicamente de acordo com a entrada
vinda de algum tipo de sensor.
30
Capítulo 1. Revisão bibliográfica
O livro Introduction to Embedded Systems: Using Microcontrollers and the MSP430
(JIMÉNEZ; PALOMERA; COUVERTIER, 2013) traz uma seção introdutória sobre energia
em dispositivos embarcados onde descreve que a energia pode interferir em diversas coisas
além da duração da bateria. Por ser uma das partes mais críticas do sistema, muitas
otimizações devem ser realizadas em software e hardware para se atingir uma eficiência
aceitável. Deve-se obedecer as normas quanto a separação mínima dos componentes
eletrônicos estabelecidas pelo fabricante a fim de reduzir a geração de calor e inclusive
protegê-los contra possíveis danos causados pela elevação da temperatura. Um software
embarcado que realiza operações excessivas também pode (e vai) consumir mais energia
do que o necessário, reduzindo assim a duração da bateria.
Assim como em softwares desenvolvidos para rodar em desktops e smartphones, os
sistemas embarcados também possuem suas respectivas arquiteturas. Oshana e Kraeling
(2013) chamam de “arquitetura super loop” a arquitetura mais simples de um software
embarcado. Ela roda em um loop infinito. Diferente dos softwares comuns, que executam
uma tarefa e encerram aquela parte do código, esta arquitetura é muito útil para completar
tarefas chave em um dado tempo e na ordem correta.
1.2 Rede de sensores sem fio
Johnson et al. (2009) define, em seu artigo, que uma rede de sensores sem fio
(WSN - Wireless Sensor Network) é uma rede de dispositivos autônomos distribuídos
espacialmente que fazem uso de sensores para monitorar condições físicas ou ambientais
(temperatura, som, vibração, pressão, movimento ou poluentes) em diferentes locais. Ele
ainda afirma que os nós dessa rede usualmente possuem três atividades principais, sendo
elas: data-logging (salva um dado a cada determinado intervalo de tempo), processamento
de dados e gateway para a rede adhoc formada por todos os sensores.
É um pouco difícil definir a topologia de uma rede de sensores sem fio, pois ela
deve se reorganizar automaticamente sempre que necessário. Para entender essa questão, é
necessário considerar que os recursos disponíveis a essa rede são muito limitados, então
o roteamento do tráfego de dados precisa escolher o melhor caminho, da origem até o
destino, evitando congestionamento de dados e sobrecarga de processamento nos nós.
Para exemplificar esta dificuldade relacionada a definição da topologia, o seguinte
cenário apresenta um sistema WSN onde deseja-se monitorar o deslocamento da areia
do deserto do Saara. Inicialmente, um avião sobrevoa determinada área liberando vários
nós sensores, capazes de detectar seu próprio movimento e sua posição geográfica, de
forma aleatória. Com o passar do tempo, o vento vai carregando cada elemento da rede
distanciando alguns e aproximando outros. Dessa forma, não é possível manter a topologia
inicial e os sensores precisam reorganizar a comunicação automaticamente, sem qualquer
1.3. Internet das Coisas
31
intervenção humana.
A arquitetura de uma rede de sensores sem fio é vista na Figura 2. A comunicação
entre os sensores é feita através de algum protocolo responsável por criar um túnel no
roteador de borda a fim de realizar a conversão de protocolos e comunicação com o
ambiente externo (HUI; CULLER, 2010).
Figura 2 – Arquitetura geral de uma rede de sensores sem fio (HUI; CULLER, 2010)
Em uma WSN, os transmissores de Rádio Frequência (RF) são a principal unidade
consumidora de energia (POPOVICI; MAGNO; MARINKOVIC, 2013). Esse consumo
ocorre principalmente durante a transmissão de dados. Neste trabalho, é essencial que
os nós sensores consigam se manter por um longo período de tempo (meses ou até anos)
com a mesma bateria. Hui e Culler (2010) fala de três diferentes técnicas utilizadas para
minimizar o consumo energético através da otimização da comunicação, são elas:
• Sampled Listening: uma sequência de wake-up é enviada e o receptor detecta a
tentativa de envio de transmissão - a detecção é realizada em intervalos de tempo.
• Scheduling: o transmissor “aprende” os intervalos de escuta do receptor e envia uma
sequência de wake-up menor do que no método sampled listening.
• Streaming: são transmitidos múltiplas janelas (frames) de dados durante um único
período de amostragem.
1.3 Internet das Coisas
O conceito de Internet das Coisas (IoT - Internet of Things) é definido na literatura
como sendo um rede de objetos conectados a internet, onde esses objetos são integrados
32
Capítulo 1. Revisão bibliográfica
Figura 3 – Otimizações em WSN (HUI; CULLER, 2010)
com o propósito de oferecer serviços inteligentes (MA, 2011) (CARRETERO; GARCÍA,
2013) (XIA et al., 2012).
(GILL, 2013) escreve que a IoT vai mudar nossa qualidade de vida assim como
aconteceu com a Internet, que mudou de diversas formas a segurança, economia de energia,
negócios, entre outros. É apenas uma questão de tempo até que os objetos domésticos
comecem a perceber o ambiente gerando dados para algum serviço inteligente.
(MA, 2011) divide a arquitetura de um sistema IoT em quatro camadas (Tabela 1):
• Camada de detecção: é a camada mais baixa, responsável por realizar a “leitura” do
ambiente e obter os dados.
• Camada de troca de dados: simplesmente trata a transmissão das informações.
• Camada de integração da informação: ocorre a recombinação, limpeza e fusão dos
dados integrando-os em conhecimento útil.
• Camada de serviços de aplicação: é a camada mais alta, responsável por prover o
serviço aos diversos usuários.
Tabela 1 – Camadas da arquitetura IoT proposta por (MA, 2011)
Serviços de aplicação
Integração da informação
Troca de dados
Detecção
As aplicações para IoT são inúmeras, mas (GUBBI et al., 2013) as classifica
em quatro domínios: (i) Pessoal e Casa; (ii) Empresarial; (iii) Utilidades; e (iv) Mobile.
A figura 4 ilustra as aplicações dentro de seus domínios. Por exemplo no domínio (i),
1.3. Internet das Coisas
33
representado por um indivíduo ou home na figura, normalmente as informações são
coletadas e utilizadas apenas pelo dono da rede podendo controlar eletrodomésticos e
medidores de sinais vitais. O domínio (ii), representado na figura por community, pode
tratar de questões como mobilidade urbana e poluição, por exemplo. O domínio (iii),
representado na figura por national, é voltado a otimização de serviços como o Smart Grid
e redes de monitoramento da qualidade da água. Um exemplo de fácil compreensão para o
domínio (iv), representado na figura por transport, é o de controle de logística, onde uma
grande WSN é necessária para monitorar veículos de cargas em grandes áreas.
Figura 4 – Aplicações para IoT e seus domínios (GUBBI et al., 2013)
O conceito de IoT tem se tornado cada vez mais popular através de iniciativas
de empresas como IBM(IBM, 2015), Cisco(CISCO, 2015), Intel(INTEL, 2015) e Microsoft(MICROSOFT, 2015) que têm realizado, grandes investimentos nesta área. Mesmo com
essa popularização, ainda existe muito trabalho a ser realizado. Segurança, computação
em nuvem e análise de dados são apenas alguns dos fatores que merecem mais estudos
(GUBBI et al., 2013). Pesquisas nas áreas de embarcados e WSN também precisam ser
desenvolvidas pois são parte fundamentais de um conjunto de áreas e tecnologias para a
IoT.
35
2 Pesquisas relacionadas
O conceito Smart Parking tem sido amplamente estudado nas áreas da computação.
(SHAHEEN; RODIER; EAKEN, 2005) o classifica em cinco categorias:
1. Sistemas de orientação de estacionamento (PGI - Parking Guidance Information
System): Este tipo de sistema procura ofecerer uma orientação ao motorista para
que a busca por uma vaga não demande um grande tempo. Sistemas de Smart
Parking projetados nesta categoria conseguem localizar uma ou um grupo de vagas, direcionando o usuário a fim de reduzir o tempo de busca por um local de
estacionamento.
2. Sistemas baseados em trânsito: Os principais objetivos desta categoria de sistema
Smart Parking são: fornecer informações em tempo real sobre as vagas, reduzir gastos
dos usuários com combustível e otimizar o uso dos estacionamentos. Esses objetivos
são, muitas vezes, alcançados ao se combinar esta categoria com PGIS para prover
informações mais relevantes como trânsito na região e localização precisa da vaga.
Com esses dados, o sistema é capaz de indicar a melhor rota até o destino.
3. Sistemas inteligentes de pagamento: Fornecem meios mais rápidos, seguros e econômicos aos estacionamentos de realizar cobrança e verificação das vagas. Utilizam
tecnologias comuns como smartphones, cartões de contato e de média distância.
4. E-parking: Esta categoria cria um ambiente virtual para o usuário, onde o mesmo
pode visualizar a disponibilidade dos estacionamentos, reservar uma vaga e inclusive
efetuar o pagamento antes mesmo de sair de casa.
5. Estacionamentos automatizados: Engloba a automatização de valets com robôs de
transporte que, através de movimentos horizontais e verticais, conseguem levar o
veículo a uma vaga disponível sem intervenção humana. Estes robôs ainda otimizam
o estacionamento ao eliminar zonas de manobra e fazendo o empilhamento dos
automóveis.
Este conceito depende ainda de tecnologias que realizem a detecção de automóveis.
(IDRIS et al., 2009b) faz uma revisão destas tecnologias e suas aplicações de acordo com
as categorias de (SHAHEEN; RODIER; EAKEN, 2005).
Com base nisso, (IDRIS et al., 2009a) desenvolveu um sistema de Smart Parking
abrangendo a categoria PGI onde, através de sensores ultrassônicos, identifica vagas livres.
Em um estacionamento fechado indica ainda a vaga livre mais próxima e o caminho mais
36
Capítulo 2. Pesquisas relacionadas
curto até ela. Outros estudos foram realizados neste sentido, (NARMADA; RAO, 2012)
utilizou sensores ultrassônicos para contabilizar as vagas disponíveis em cada andar de um
estacionamento. O estudo realizado por (SRIKANTH et al., 2009) fornece aos usuários em
tempo real a rota da entrada até a vaga escolhida.
A detecção de automóveis não é realizada apenas através de sensores ultrassônicos
(YOO et al., 2008)(MARSHALL, 1978). O uso de magnetômetros têm-se mostrado mais
eficaz e preciso por conseguir criar uma assinatura magnética para diferentes modelos de
automóveis (SIFUENTES; CASAS; PALLAS-ARENY, 2011). Estudos em Smart Parking
utilizando magnetômetros na detecção de automóveis conseguem, ainda, uma projeção de
5 anos na duração da bateria dos nós sensores (ZHANG et al., 2013)(YOO et al., 2008).
Parte II
Preparação da pesquisa
39
3 Motivação e objetivos
3.1 Motivação
Atualmente, encontrar uma vaga de estacionamento em centros urbanos é um
grande problema devido a aglomeração humana e, consequentemente, a quantidade de
automóveis em circulação. Tal problema é cada vez mais agravado devido a incentivos fiscais
para a compra de carros – principalmente os de passeio. É comum que em dias de semana
não se encontre vagas de estacionamento em regiões executivas das principais cidades
brasileiras como: São Paulo, Rio de Janeiro, Belo Horizonte, etc. Ainda, tal cenário pode
se repetir mesmo em feriados e finais de semana quando a demanda por estacionamentos
cresce em regiões e/ou cidades turísticas.
Analisando apenas veículos leves, sejam eles comerciais ou de passeio, apenas em
março de 2015 foram emplacados 225.981 carros enquanto que o acumulado do ano ficou
em 648.677 veículos leves emplacados (FENABRAVE, 2015).
Mesmo em grandes centros onde existem bolsões de estacionamento não há uma
sinalização clara e eficaz dos locais onde se encontram as vagas fisicamente disponíveis.
Aliado ao pensamento acima, nota-se ainda uma lacuna na implementação de sistemas
(automatizados ou não) para o auxílio dos usuários na busca por vagas disponíveis. Um
motorista pode chegar a gastar vários minutos no esforço de encontrar um local para
estacionar seu automóvel.
Complementando os cenários acima, que ocorrem principalmente em ambientes
e logradouros públicos, existe ainda o mesmo problema - possivelmente em escala um
pouco menor - no campo privado. É comum que motoristas transitem por um longo tempo
entre os vários andares de estacionamentos de shopping centers em busca de um local para
estacionar. Além da perda de tempo, há ainda o custo de combustível ao se dirigir durante
esse tempo adicional – algumas vezes maior que o tempo no qual se fica estacionado.
Os cenários acima caracterizam a necessidade do usuário. Ainda, outro ponto que
contribui para uma larga utilização do sistema, é a grande quantidade e abrangência de
dispositivos móveis – smartphones e tablets – sendo utilizados atualmente no país. Até
2013 eram 271,1 milhões de aparelhos no Brasil (ANATEL, 2013).
O uso de tais dispositivos para monitorar à distância a situação das vagas de
estacionamento pode facilitar a etapa de busca além de reduzir o esforço necessário para
se conseguir uma vaga disponível.
Dessa forma, facilitar a vida do motorista ao permiti-lo saber de antemão a
40
Capítulo 3. Motivação e objetivos
localização das vagas livres de estacionamento tornará esse serviço indispensável. Ou seja,
fazer um bom uso ou otimização no uso das vagas é primordial para aumentar a qualidade
e eficiência dos estacionamentos como um todo, sejam eles públicos ou privados.
É possível afirmar ainda que no Brasil atualmente não existe um sistema dessa
natureza sendo utilizado em larga escala. Uma solução encontrada hoje são pequenas luzes
(verdes/vermelhas) que internas ao estacionamento (de shopping centers, por exemplo)
caracterizam, respectivamente, os locais das vagas de estacionamento livres ou ocupadas.
Ademais, tal modelo não permite que os usuários tenham tal noção antes de entrarem
fisicamente com seus automóveis nos estacionamentos.
3.2 Objetivos
O principal objetivo desta pesquisa foi o desenvolvimento de uma arquitetura e
um ambiente funcional que permitisse o sensoriamento de vagas de estacionamento em
tempo-real. Em termos funcionais, o sistema permite em alto nível que:
1. Vagas de estacionamento disponíveis sejam monitoradas quanto a sua disponibilidade
(ocupada ou livre);
2. O estado de uma vaga seja notificado a um servidor remoto na web;
3. Informações a respeito das vagas (públicas ou privadas) possam ser acessadas pelos
usuários finais através de uma interface web.
Para se atingir estes requisitos funcionais, alguns objetivos específicos foram cumpridos:
1. Elaboração de protótipos de nós sensores com a finalidade de monitorar a entrada e
saída de veículos da vaga de estacionamento;
2. Desenvolvimento de um algoritmo de detecção de veículos automotores; e
3. Construção de uma arquitetura cliente-servidor para suportar a entrada e exibição
dos dados.
41
4 Materiais e métodos
Para o desenvolvimento deste trabalho, diversos recursos tanto de hardware quanto
de software foram utilizados. Este capítulo é destinado a apresentar estes recursos assim
como exibir a abordagem adotada no desenvolvimento da pesquisa e obtenção dos resultados
finais.
4.1 Hardwares utilizados
4.1.1 Arduino Uno Rev.3
O Arduino Uno Rev.3 (Figura 5) é uma plataforma em hardware open-source de
desenvolvimento baseado em um microcontrolador. Pode ser utilizado para realizar uma
grande variedade de tarefas, desde a leitura de sensores até o controle de saídas físicas
como lâmpadas e motores (ARDUINO, 2015b).
Figura 5 – Arduino Uno Rev.3 (ARDUINO, 2015a)
Dada a sua grande popularidade na montagem de protótipos, existem diversos
shields (módulos complementares de hardware) que podem ser acoplados ao Arduino
visando ampliar suas funcionalidades.
O Arduino Uno Rev.3 possui configurações que o torna bem versátil. Ele pode ser
alimentado através da porta USB ou ainda através de baterias. Possui 14 entradas/saídas
digitais e 6 analógicas, um ressonador cerâmico de 16MHz e memória flash de 32KB
(ARDUINO, 2015a).
42
Capítulo 4. Materiais e métodos
4.1.2 CuHead WiFi V1
CuHead (LINKSPRITE, 2015) é um shield (Figura 6) para Arduino que provê acesso
a rede WiFi através de um módulo transmissor de baixo consumo que está embarcado na
placa. É compatível com o padrão IEEE 802.11b de 2.4GHz, muito comum em roteadores
sem fio residenciais. As aplicações para este shield são muitas, podendo desde transformar
o Arduino em um servidor web até realizar comunicação por socket TCP/UDP.
Figura 6 – CuHead WiFi V1
4.1.3 HMC5883l
Sensores são amplamente utilizados em conjunto com o Arduino. O HMC5883l
(Figura 7) é um sensor de campo magnético (magnetômetro) de três eixos para campos
magnéticos baixos, ideal para a leitura do campo magnético da terra. Possui uma taxa
máxima de saída de 160MHz, interface I 2 C e ainda uma precisão de 1o a 2o no compasso
(HONEYWELL, 2013).
Figura 7 – HMC5883L (EMARTEE, 2015)
Este sensor faz a leitura do campo magnético e envia as informações ao microcontrolador através da interface I 2 C. Por sua vez, o microcontrolador processa estas leituras
4.1. Hardwares utilizados
43
e, através de um algoritmo, identifica as anomalias no campo magnético causadas pelo
deslocamento de um automóvel.
4.1.4 ESP8266
O ESP8266 (Figura 8) é uma solução completa para infraestrutura WiFi de baixo
consumo energético e baixo custo (aproximadamente US$5). Possui um microprocessador
de 32bits de baixíssimo consumo que permite a execução de códigos assim como o Arduino.
Além disso, possui duas portas de entrada e saída de propósito geral (GPIO - General
Purpose Input/Output) que podem ser conectadas a sensores (NURDSPACE, 2013).
Figura 8 – ESP8266 (NURDSPACE, 2013)
4.1.5 Antena Ubiquiti
A recepção dos dados enviados pelos nós sensores é intermediada pela antena
Ubiquiti NanoStation locoM2 (Figura 9) (NETWORKS, 2015). Com uma frequência de
2.4GHz, throughput de 150Mbps e alcance de aproximadamente 5km, é uma antena bem
versátil. Ideal para aplicações ponto-a-multiponto (PtMP - Point-to-MultiPoint).
Figura 9 – Antena Ubiquiti NanoStation locoM2 (NETWORKS, 2015)
44
Capítulo 4. Materiais e métodos
4.1.6 Máquina servidora
Os ambientes de teste e produção foram configurados em uma máquina servidora
HP Compaq Elite 8300 SFF com um processador Intel(R) Core(TM) i5-3570 de 3.40GHz e
8GB de memória RAM DDR3 rodando o Ubuntu Server 12.04LTS de 64bits. A arquitetura
do servidor é definida no capítulo 5, seção 5.2.
4.2 Softwares utilizados
4.2.1 Arduino IDE
Arduino IDE é o ambiente de programação para o Arduino. Consiste de um editor
de texto, área de log e uma barra de ferramentas. A IDE fornece maior suporte aos
desenvolvedores ao facilitar a compilação e upload do código fonte ao microcontrolador.
Ela também faz a gerência das bibliotecas utilizadas, por exemplo, pelo HMC5883l e pelo
CuHead que fazem parte deste trabalho.
Figura 10 – Arduino IDE
Esta é uma IDE open-source podendo ter o código-fonte baixado e alterado conforme
as necessidades do desenvolvedor.
4.2. Softwares utilizados
45
4.2.2 ESPTool
É uma ferramenta escrita em Python para auxiliar na comunicação com o ESP8266.
Funciona de forma similar ao Arduino IDE quanto ao apoio ao desenvolvedor no upload do
código-fonte ao microcontrolador. É executado através de linha de comando, onde dado a
porta de conexão do ESP8266, faz o envio do código-fonte compilado ao microprocessador
do dispositivo (AHLBERG, 2014).
4.2.3 Linguagens de programação
O uso de hardwares para controlar dispositivos e realizar leitura de sensores está
diretamente relacionado a programação. Este trabalho fez uso de algumas linguagens
específicas que foram escolhidas levando em consideração a aplicabilidade na área, o
conhecimento por parte do autor e a facilidade de escrita.
Na comunicação e operação dos hardwares utilizando o Arduino, foi utilizada
a linguagem própria baseada em C/C++ assim como algumas de suas bibliotecas. O
ESP8266 também foi programado através do Arduino IDE, o que proporcinou uma maior
adaptabilidade ao código por não ter sido necessário realizar muitas alterações.
A arquitetura do servidor foi dividida em três camadas (Tabela 2), onde na mais
baixa consta a comunicação com o gateway implementada em Python, a camada do meio
trata o banco de dados e a mais alta faz a comunicação com o nó sensor e com o cliente.
Essa última foi escrita em PHP.
Por último, entram as linguagens utilizadas no cliente da aplicação (Figura 15) que
é aquele “visto” (ou “percebido”) pelo usuário final. O Javascript foi amplamente utilizado
juntamente com a API do Google Maps (GOOGLE, 2015) para exibir as informações do
banco de dados.
4.2.4 Banco de dados MySQL
O MySQL é o sistema gerenciador de banco de dados (SGBD) open-source mais
popular do mercado (MYSQL, 2015). Ele faz uso da linguagem SQL como interface, possui
compatibilidade com as linguagens de programação mais utilizadas e suporta diversas
funcionalidades.
Neste trabalho, o banco de dados MySQL armazena capacidade do estacionamento,
localização e estado atual das vagas (livre ou ocupado). Além disso, faz um registro de
toda a atividade do sistema que pode ser consultado para otimizar preços e vagas.
46
Capítulo 4. Materiais e métodos
4.3 Metodologia de desenvolvimento
Este trabalho foi desenvolvido dentro do laboratório de pesquisa em computação
móvel iMobilis (IMOBILIS, 2015) em João Monlevade. O laboratório segue a metodologia
de gerenciamento ágil de projetos BOPE (PEREIRA; Senna Carneiro; PEREIRA, 2013)
voltado para laboratórios de pesquisa em universidades brasileiras. O BOPE prevê a
elaboração de alguns artefatos na etapa de planejamento, os quais são apresentados no
capítulo de resultados, Apêndice A e Anexo A.
O desenvolvimento dos protótipos e do algoritmo de detecção veicular partiu de
um caso base (detecção de um automóvel em um estacionamento vazio) para casos mais
complexos (detecção de um automóvel em um estacionamento cheio).
Parte III
Resultados
49
5 Arquitetura do sistema
Este capítulo apresenta a arquitetura desenvolvida para o sistema. As próximas
seções tratam o protótipo 1 separadamente dos protótipos 2 e 3 pois esse possui uma
lógica invertida dos demais.
Definir a arquitetura do sistema é importante para maior clareza do funcionamento
do mesmo. É com essa arquitetura que todo o sistema é construído e testado. Pensando
nisso, este trabalho foi dividido em três etapas principais, sendo elas:
• Primeira etapa: Desenvolvimento de uma versão incial do algoritmo;
• Segunda etapa: Definição da arquitetura inicial do sistema, e;
• Terceira etapa: Aprimoramento da arquitetura e do algoritmo de deteção.
5.1 Visão geral
5.1.1 Protótipo 1
Inicialmente não havia a necessidade de se definir uma arquitetura, pois o protótipo
1 era utilizado inicialmente para coleta de dados do sensor para posterior análise na
máquina de desenvolvimento.
Esse primeiro protótipo consiste de um shield CuHead WiFi V1 acoplado a um
Arduino Uno Rev.3 e de um sensor de campo magnético HMC5883l. Na etapa inicial do
projeto, o protótipo foi colocado em uma vaga de estacionamento onde, ligado através
de um cabo USB a um notebook, transferia as informações que seriam utilizadas no
desenvolvimento do algoritmo de detecção (Figura 11).
Em uma etapa seguinte, passou-se a utilizar o protótipo conectado a bateria,
eliminando assim ruídos no sensor gerados pela variação no campo magnético causada
pela movimentação do cabo USB. Nesta segunda etapa, a arquitetura do sistema foi
definida, porém, devido a uma limitação da biblioteca do shield CuHead WiFi V1, a lógica
cliente-servidor precisou ser invertida, pois o shield não conseguia conectar ao servidor
e enviar dados. A solução encontrada foi transformar o sensor em um servidor, onde os
dados eram enviados como um broadcast permitindo a “máquina servidora” capturar estas
informações do sensor através do gateway (antena Ubiquiti) (Figura 12).
50
Capítulo 5. Arquitetura do sistema
Figura 11 – Arquitetura da primeira etapa do projeto
Figura 12 – Arquitetura invertida da segunda etapa do projeto
5.1.2 Protótip 2
O protótipo 2 foi desenvolvido na terceira etapa do projeto. Com ele foi possível
obter uma maior flexibilidade quanto a arquitetura do sistema, permitindo a melhoria da
mesma.
O protótipo 2 pode ser considerado como uma melhoria do protótipo 1. A diferença
entre eles está no dispositivo responsável pela transmissão dos dados via rede sem fio.
O ESP8266 foi utilizado em detrimento do shield CuHead para realizar a comunicação.
Com uma documentação melhor elaborada e mais completa, foi possível implementar
corretamente a arquitetura pensada inicialmente e, assim, fazer a correta distribuição das
informações.
Sendo assim, a arquitetura do sistema nesta etapa final do projeto fica definida
como mostrado na Figura 13.
5.2. A arquitetura a fundo
51
Figura 13 – Arquitetura final do projeto
No protótipo 1, devido a algumas limitações como o longo período para se conectar
ao gateway (aproximadamente 30s), não foi possível realizar otimizações na conexão para
reduzir o consumo energético. O protótipos 2 já fornece essa flexibilidade e, portanto, foi
possível implementar uma pequena otimização que já é o suficiente para conseguir uma
economia significativa no consumo energético. A otimização realizada no código faz com
que o protótipo conecte ao gateway apenas quando se fizer necessário transmitir alguma
informação. De acordo com o Datasheet do ESP8266 (NURDSPACE, 2013), seu consumo
energético enquanto conectado em uma rede sem fio é de 135 mA a 215 mA, enquanto que
em stand by, o consumo é de 0.9 mA.
5.2 A arquitetura a fundo
Examinando mais a fundo a arquitetura apresentada, é possível compreender o
funcionamento exato de todo o sistema, assim como suas limitações atuais.
A começar pelos nós sensores, que possuem um fluxo de trabalho bem simples
(Figura 14). Coletam dados, processam e transmitem o resultado ao gateway.
A função do gateway é de apenas repassar ao servidor os dados recebidos dos
sensores. Ele estabelece a conexão com o nó sensor e direciona o fluxo de dados ao servidor.
O servidor possui um grau de complexidade um pouco mais alto, visto que está
52
Capítulo 5. Arquitetura do sistema
Figura 14 – Fluxo de execução do nó sensor
dividido em três camadas (Tabela 2).
Tabela 2 – Camadas do servidor
3 - Camada de aplicação
2 - Camada de banco de dados
1 - Camada de troca de dados
A camada 1, troca de dados, é a mais baixa. Através de um código implementado
em Python, é responsável pelo recebimento dos dados direcionados pelo gateway. Após os
dados serem recebidos e tratados, são enviados a camada 2, banco de dados, para serem
armazenadas no SGBD MySQL e ficarem a disposição dos usuários do sistema através
da camada 3, aplicação. A camada de aplicação consta de um servidor web que exibe as
informações solicitadas pelo usuário (Figura 15) de forma simplificada.
A Figura 15 mostra um mapa da região próxima ao campus do Instituto de Ciências
Exatas e Aplicadas da Universidade Federal de Ouro Preto em João Monlevade, onde o
marcador verde simboliza um estacionamento mapeado dentro do campus. Os marcadores
possuem diferentes colorações para facilitar a rápida visualização da disponibilidade de
vagas (Tabela 3). Ao clicar em um marcador, um “balão” de informações é aberto com
detalhes sobre o estacionamento em questão como a porcentagem de vagas livres e o total
de vagas no estacionamento.
Esta terceira camada possui um lado backend e outro frontend. O primeiro se
comunica diretamente com a camada de banco de dados, esta foi implementada utilizandose a linguagem PHP. O segundo interage diretamente com o usuário e foi implementado
utilizando a biblioteca do Google Maps utilizando a linguagem javascript.
5.2. A arquitetura a fundo
53
Figura 15 – Página web de interação com usuário.
Tabela 3 – Diferentes colorações de marcadores e seus significados
Pelo menos 50% de vagas livres
Entre 20% e 50% de vagas livres
No máximo 20% de vagas livres
Todas as vagas ocupadas
55
6 Implementação
Neste capítulo são apresentadas todas as informações pertinentes para a continuidade do trabalho. Manter estes documentos em dia é de suma importância para a
elabaroação de futuras melhorias, já que as principais informações estão reunidas aqui.
6.1 Requisitos
O fluxo de trabalho do BOPE(PEREIRA; Senna Carneiro; PEREIRA, 2013)
determina que alguns artefatos de documentação precisam ser gerados. Dentre esses
documentos, as estórias de usuário e os requisitos do sistema são fundamentais para
entender as limitações e funcionalidades do mesmo.
Sendo assim, foram elaborados diversos requisitos funcionais e não funcionais
(Apêndice A) onde, a partir dos mesmos, diversas estórias puderam ser criadas (Anexo A)
facilitando a definição das tarefas e atividades a serem concluídas durante o desenvolvimento
deste projeto.
6.2 Banco de dados
Parte de grande importância ao projeto, o banco de dados é responsável por
armazenar e organizar todos os dados relevantes aos usuários e administradores do sistema.
O banco de dados foi desenvolvido através do SGBD MySQL(MYSQL, 2015). O
diagrama apresentado na Figura 16 mostra como o sistema está organizado. A tabela
parking_spaces armazena informações sobre as vagas de estacionamento como localização,
estado atual, orientação da vaga (horizontal, paralela ou 45 graus) e a antena utilizada
como gateway representada pela tabela antennas. Também é feita uma associação (tabela
pLot_has_pSpace) “um para muitos” onde um estacionamento (parking_lots) possui várias
vagas para se estacionar (parking_spaces).
A tabela status_log é responsável por armazenar toda atividade das vagas cadastradas no sistema. Esse registro é feito, automaticamente, sempre que o estado de uma
vaga é alterado.
6.3 Algoritmo de detecção
Pode-se dizer que o “coração” do projeto é o algoritmo de detecção apresentado no
fluxograma da Figura 17. Este algoritmo é responsável por, através das leituras do sensor,
56
Capítulo 6. Implementação
Figura 16 – Fluxograma do algoritmo de detecção
compilar, analisar e calcular o resultado do sinal obtido.
A execução do algoritmo começa ao definir o início das três iterações do teste de
verificação de presença de um automóvel. As três iterações são necessárias para eliminar
possíveis interferências externas como um automóvel passando nas proximidades do sensor.
Seguindo o fluxo de execução, é realizada a coleta de dados (algumas amostras) do
sensor de campo magnético HMC5883l nos três eixos X, Y e Z, obtendo-se algo similar
a Figura 18a quando todas as amostras forem reunidas após a saída da vaga pelo carro.
Realizada a coleta, os dados precisam passar por um processo de eliminação de ruído e
suavização para só então ser calculado a amplitude que será “estudada” pelo resto do
algoritmo. Ao final de todo o processo, o sinal tratado ficará como na Figura 18b.
Durante cada uma das três iterações de teste realizadas, o algoritmo verifica se a
amplitude do sinal de entrada é crescente através de uma janela amostral de tamanho três.
Cada amostra do teste é uma média de outras 15 amostras coletadas para a iteração. Ao
final das três rodadas de teste, se em todas as verificações o sinal for crescente e atingir
um nível acima do valor do limite previamente definido, então o retorno do algoritmo será
de vaga ocupada. Caso contrário, se os valores forem menores que o limite, o retorno do
algoritmo será de vaga livre.
O valor limite sofre variação de acordo com o tipo de ambiente em que o sistema
está sendo instalado (estacionamento fechado, via de grande movimento, etc), devendo ser
estudado antes da instalação dos sensores.
6.3. Algoritmo de detecção
57
Figura 17 – Fluxograma do algoritmo de detecção
(a) Leitura nos eixos X, Y e Z
(b) Amplitude do sinal
Figura 18 – Sinal de referência para o algoritmo
59
7 Trabalhos futuros
Este estudo envolve diversas áreas da computação como redes de sensores sem fio
e desenvolvimento de hardware embarcado. Durante o desenvolvimento do projeto não
houve tempo hábil para se trabalhar amplamente em todas essas áreas.
Aplicando este sistema em larga escala, seria necessário considerar as questões
energéticas do projeto. É inviável utilizar os protótipos atuais sem realizar otimizações
em hardware e software para se atingir uma vida útil de pelo menos 2 anos de bateria. A
redução da quantidade de componentes de hardware utilizados consequentemente reduziria
o desperdício de energia gerado pelo grande número de componetes em uso. Outro ponto a
ser adotado para economizar energia seria a utilização de recursos de software para alterar
o clock do microcontrolador em alguns momentos onde não se faz necessário tanto poder
de processamento assim como aumentar o intervalo de coleta de dados pelo sensor quando
a variação no campo magnético é mínima.
O custo de se utilizar hardware proprietário não está somente na parte financeira.
Além de ser mais caro, também pode acabar consumindo mais energia por utilizar componentes não necessários ao projeto. Então, o desenvolvimento de um dispositivo próprio
poderá ajudar tanto no consumo energético quanto na redução de custos.
Apesar da arquitetura da rede já estar definida, um ponto que ainda traz preocupações é a segurança dos dados que estão sendo transmitidos. Nenhuma informação de
usuário é transmitida ou armazenada em servidor, mas o sistema atualmente está passível
de interferências caso um usuário mal intencionado se conecte ao gateway. Isolar a rede e
criptografar as informações são apenas algumas das soluções disponíveis.
61
Conclusão
Com a facilidade em financiar um automóvel, as ruas têm ganhado cada vez mais
veículos. Nos centros comerciais das grandes cidades - e até das pequenas - é cada vez
mais comum o motorista se deparar com engarrafamentos e com a falta de vagas para
estacionar. Muito tem sido feito em ampliação de vias de acesso, mas pouco é investido
em tecnologias que viabilizem a redução do tráfego nesses centros.
Estudos já indicam que existe uma relação entre o aumento do trânsito e a busca por
lugares para estacionar. Então, a proposta deste trabalho foi apresentar uma arquitetura
de um sistema que permita ao motorista visualizar o atual estado dos estacionamentos
públicos ou privados antes mesmo de sair de casa.
Ao final da elaboração deste trabalho, artefatos de software, hardware e documentação foram criados. Um algoritmo adaptativo, que consegue identificar a presença de
automóveis ignorando interferências de temperatura e proximidade de outros materiais
ferrosos foi desenvolvido, assim como uma interface web para o acompanhamento das
vagas. Protótipos de hardware também foram criados a fim de validar o sistema e sua
arquitetura.
O sistema como um todo - software e hardware - apresenta grande potencial de
mercado, uma vez que ainda não existe tal sistema implantado em larga escala e existe
uma demanda dos usuários por tecnologias que auxiliem na busca por vagas. Espera-se
então que, com esta arquitetura e alguns estudos a serem realizados posteriormente, o
tempo de busca por uma vaga de estacionamento possa ser reduzido consideravelmente
uma vez que o sistema permite aos usuários a visualização das vagas antes de chegar ao
destino.
63
Referências
AHLBERG, F. esptool. 2014. Disponível em: <https://github.com/themadinventor/
esptool>. Acesso em: 29 abr 2015. Citado na página 45.
ANATEL. Relatório Anual 2013. 2013. Disponível em: <http://www.anatel.gov.br/
Portal/verificaDocumentos/documento.asp?numeroPublicacao=312603&pub=original&
filtro=1&documentoPath=312603.pdf>. Acesso em: 15 abr 2015. Citado na página 39.
ARDUINO. Arduino - ArduinoBoardUno. 2015. Disponível em: <http://www.arduino.cc/
en/Main/arduinoBoardUno>. Acesso em: 29 abr 2015. Citado na página 41.
ARDUINO. Arduino - Introduction. 2015. Disponível em: <http://www.arduino.cc/en/
Guide/Introduction>. Acesso em: 23 Abr 2015. Citado 2 vezes nas páginas 25 e 41.
CARRETERO, J.; GARCÍA, J. D. The internet of things: connecting the world. Personal
and Ubiquitous Computing, v. 18, p. 445–447, 2013. ISSN 1617-4909. Disponível em:
<http://link.springer.com/10.1007/s00779-013-0665-z>. Citado na página 32.
CISCO. Internet of Things (IoT). 2015. Disponível em: <http://www.cisco.com/web/
solutions/trends/iot/overview.html>. Acesso em: 26 mai 2015. Citado na página 33.
EMARTEE. HMC5883L 3-Axis Digital Compass Module. 2015. Disponível em:
<http://www.emartee.com/product/42254/HMC5883L%203%20Axis%20Digital%
20Compass%20Module>. Acesso em: 29 abr 2015. Citado 2 vezes nas páginas 25 e 42.
FENABRAVE. FENABRAVE Emplacamentos. 2015. Disponível em: <http:
//www3.fenabrave.org.br:8082/plus/modulos/listas/index.php?tac=indices-e-numeros&
idtipo=1&layout=indices-e-numeros>. Acesso em: 15 abr 2015. Citado na página 39.
GILL, K. S. The internet of things! then what? Ai & Society, v. 28, p. 367–371, 2013.
ISSN 0951-5666. Disponível em: <http://link.springer.com/10.1007/s00146-013-0520-9>.
Citado na página 32.
GOOGLE. API do Google Maps - Google Developers. 2015. Disponível em:
<https://developers.google.com/maps/?hl=pt-br>. Acesso em: 29 abr 2015. Citado na
página 45.
GUBBI, J. et al. Internet of things (iot): A vision, architectural elements, and future
directions. Future Generation Computer Systems, Elsevier B.V., v. 29, n. 7, p. 1645–1660,
2013. ISSN 0167739X. Disponível em: <http://dx.doi.org/10.1016/j.future.2013.01.010>.
Citado 2 vezes nas páginas 32 e 33.
HONEYWELL. Datasheet - HMC5883L 3-Axis Digital Compass IC. 2013.
Disponível em: <http://www51.honeywell.com/aero/common/documents/
myaerospacecatalog-documents/Defense_Brochures-documents/HMC5883L_
3-Axis_Digital_Compass_IC.pdf>. Acesso em: 29 abr 2015. Citado na página 42.
HUI, J. W.; CULLER, D. E. Ipv6 in low-power wireless networks. Proceedings of the IEEE,
v. 98, n. 11, p. 1865–1878, 2010. ISSN 0018-9219. Citado 3 vezes nas páginas 25, 31 e 32.
64
Referências
IBM. IBM Internet of Things Foundation (IoT Foundation). 2015. Disponível em:
<https://internetofthings.ibmcloud.com/>. Acesso em: 26 mais 2015. Citado na página
33.
IDRIS, M. et al. Parking Guidance System Utilizing Wireless Sensor Network and
Ultrasonic Sensor. Information Technology Journal, v. 8, n. 2, p. 138–146, fev. 2009. ISSN
18125638. Disponível em: <http://www.scialert.net/abstract/?doi=itj.2009.138.146>.
Citado na página 35.
IDRIS, M. Y. I. et al. Car park system: A review of smart parking system and its
technology. Information Technology Journal, v. 8, n. 2, p. 101–113, fev. 2009. ISSN
18125638. Disponível em: <http://www.scialert.net/abstract/?doi=itj.2009.101.113>.
Citado na página 35.
IMOBILIS. Laboratório iMobilis. 2015. Disponível em: <http://www.decom.ufop.br/
imobilis/>. Acesso em: 14 mai 2015. Citado na página 46.
INTEL. A Internet das coisas começa com Intel Inside. 2015. Disponível em:
<http://www.intel.com.br/content/www/br/pt/internet-of-things/overview.html>.
Acesso em: 26 mais 2015. Citado na página 33.
JIMÉNEZ, M.; PALOMERA, R.; COUVERTIER, I. Introduction to Embedded Systems:
Using Microcontrollers and the MSP430. Springer New York, 2013. (SpringerLink :
Bücher). ISBN 9781461431435. Disponível em: <https://books.google.com.br/books?id=
kcHBAAAAQBAJ>. Citado 3 vezes nas páginas 25, 29 e 30.
JOHNSON, M. et al. A comparative review of wireless sensor network mote technologies.
In: Proceedings of IEEE Sensors. [S.l.: s.n.], 2009. p. 1439–1442. ISBN 9781424445486.
ISSN 1930-0395. Citado na página 30.
LINKSPRITE. LinkSprite: Home of pcDuino, developer’s new choice. 2015. Disponível
em: <http://www.linksprite.com/>. Acesso em: 7 mai 2015. Citado na página 42.
MA, H. D. Internet of things: Objectives and scientific challenges. Journal of Computer
Science and Technology, v. 26, p. 919–924, 2011. ISSN 10009000. Citado 2 vezes nas
páginas 17 e 32.
MARSHALL, S. Vehicle detection using a magnetic field sensor. IEEE Transactions on
Vehicular Technology, v. 27, n. 2, p. 65–68, maio 1978. ISSN 0018-9545. Disponível em:
<http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=1622466>. Citado na
página 36.
MERRIMAN, D. How many parking spaces does it take to create one additional transit
passenger? Regional Science and Urban Economics, v. 28, n. 5, p. 565–584, 1998. ISSN
01660462. Citado na página 25.
MICROSOFT. Internet of Things | Microsoft. 2015. Disponível em: <http:
//www.microsoft.com/en-us/server-cloud/internet-of-things.aspx>. Acesso em: 26 mai
2015. Citado na página 33.
MYSQL. MySQL::MySQL Editions. 2015. Disponível em: <https://www.mysql.com/
products/>. Acesso em: 23 abr 2015. Citado 2 vezes nas páginas 45 e 55.
Referências
65
NARMADA, A.; RAO, P. S. WSN and IP based parking management system. In: 2012
Sixth International Conference on Sensing Technology (ICST). IEEE, 2012. p. 434–438.
ISBN 978-1-4673-2248-5. Disponível em: <http://ieeexplore.ieee.org/lpdocs/epic03/
wrapper.htm?arnumber=6461716>. Citado na página 36.
NETWORKS, U. Ubiquiti Networks - Wireless networking products for broadband and
enterprise. 2015. Disponível em: <https://www.ubnt.com/>. Acesso em: 7 mai 2015.
Citado na página 43.
NURDSPACE. ESP8266 - NURDspace. 2013. Disponível em: <https://nurdspace.nl/
ESP8266>. Acesso em: 23 Abr 2015. Citado 2 vezes nas páginas 43 e 51.
OSHANA, R.; KRAELING, M. Software Engineering for Embedded Systems: Methods,
Practical Techniques, and Applications. Elsevier Science, 2013. ISBN 9780124159419.
Disponível em: <https://books.google.com.br/books?id=qNrl7xV2nxkC>. Citado 2
vezes nas páginas 29 e 30.
PARAB, J. Practical Aspects of Embedded System Design using Microcontrollers. Springer,
2008. ISBN 9781402083938. Disponível em: <https://books.google.com.br/books?id=
mk9FCZHB5jwC>. Citado na página 29.
PEREIRA, I. M.; Senna Carneiro, T. G. de; PEREIRA, R. R. Developing Innovative
Software in Brazilian Public Universities: Tailoring Agile Processes to the Reality of
Research and Development Laboratories. In: Proceeding for the 4th Annual International
Conference on Software Engineering & Applications (SEA 2013). [s.n.], 2013. p. 115–124.
Disponível em: <https://www.dropbox.com/s/80vs1o8efabst1k/SEA2013\_Paper9.pdf>.
Citado 2 vezes nas páginas 46 e 55.
POPOVICI, E.; MAGNO, M.; MARINKOVIC, S. Power management techniques
for wireless sensor networks: A review. 5th IEEE International Workshop on
Advances in Sensors and Interfaces IWASI, p. 194–198, 2013. Disponível em:
<http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=6576090>. Citado 2
vezes nas páginas 25 e 31.
SADA. Some basics about Embedded Systems. 2010. Disponível em: <http:
//www.wittysparks.com/some-basics-about-embedded-systems>. Acesso em: 12 mar 2015.
Citado na página 29.
SHAHEEN, S.; RODIER, C.; EAKEN, A. Smart Parking Management Field Test: A Bay
Area Rapid Transit (BART) District Parking Demonstration. [S.l.], 2005. Disponível em:
<http://escholarship.org/uc/item/6d58554x>. Citado na página 35.
SIFUENTES, E.; CASAS, O.; PALLAS-ARENY, R. Wireless Magnetic Sensor
Node for Vehicle Detection With Optical Wake-Up. IEEE Sensors Journal,
v. 11, n. 8, p. 1669–1676, ago. 2011. ISSN 1530-437X. Disponível em: <http:
//ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5680571>. Citado na
página 36.
SRIKANTH, S. et al. Design and Implementation of a Prototype Smart PARKing (SPARK)
System Using Wireless Sensor Networks. In: 2009 International Conference on Advanced
Information Networking and Applications Workshops. IEEE, 2009. p. 401–406. ISBN 9781-4244-3999-7. Disponível em: <http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?
66
Referências
arnumber=5136681http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=5136681>.
Citado na página 36.
XIA, F. et al. Internet of things. International Journal of Communication Systems, v. 25,
p. 1101–1102, 2012. ISSN 10745351. Citado na página 32.
YOO, S. E. et al. PGS: Parking guidance system based on wireless sensor network.
In: 3rd International Symposium on Wireless Pervasive Computing, ISWPC 2008,
Proceedings. IEEE, 2008. p. 218–222. ISBN 9781424416530. ISSN 1550445X. Disponível
em: <http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=4556200>.
Citado na página 36.
ZHANG, Z. et al. A street parking system using wireless sensor networks. International
Journal of Distributed Sensor Networks, v. 2013, n. c, p. 1–10, 2013. ISSN 15501329.
Disponível em: <http://www.hindawi.com/journals/ijdsn/2013/107975/>. Citado na
página 36.
Apêndices
69
APÊNDICE A – Requisitos do sistema
Objetivo do documento
Este documento visa descrever as informações referentes às funções que o sistema abaixo identificado deve executar bem como às restrições sobre as quais o sistema deve operar.
Termos e definições
São adotados os seguintes termos e definições:
Tipo de requisito
•
Funcional: são aqueles que expressam funções ou serviços que o sistema deve ser capaz de
executar sem levar em consideração restrições. Os requisitos funcionais especificam o
comportamento de entrada e saída de dados no sistema e suas relações;
•
•
Descrevem explicitamente as funcionalidades e serviços do sistema.
Não­funcional: os requisitos não funcionais são aqueles relacionados ao uso da aplicação em
termos de performance, usabilidade, confiabilidade, segurança, disponibilidade,
manutenibilidade e tecnologias envolvidas.
•
Definem propriedades e restrições do sistema quanto a:
•
•
•
•
•
•
•
Desempenho;
Usabilidade/Navegabilidade;
Confiabilidade;
Segurança;
Disponibilidade;
Manutenibilidade; e
Tecnologias envolvidas.
Prioridade de requisito
•
Essencial: os requisitos essenciais são aqueles imprescindíveis, sem os quais o sistema não entra
em funcionamento e, portanto, devem ser implementados impreterivelmente; •
Importante: os requisitos importantes são aqueles que sem os quais o sistema entra em
funcionamento, mas não de forma satisfatória. Os requisitos considerados importantes, devem
ser implementados, mas se não forem o sistema poderá funcionar mesmo assim;
•
Desejável: os requisitos desejáveis são aqueles que não comprometem as necessidades básicas
do sistema. Caso não haja tempo hábil para implementação, esses requisitos podem ser
deixados para versões posteriores.
Lista de requisitos não funcionais – Interface web
Título
Descrição
ACID (Atomicidade, O sistema deve utilizar sempre que aplicável o Consistência, Isolamento conceito de ACID nas transações.
e Durabilidade)
Atomicidade: todas as suas operações executadas em caso de sucesso ou nenhum resultado refletido sobre a base de dados em caso de falha. Ou seja, após o término de uma transação (commit ou abort).
Tipo
Prioridade
Não
funcional
Essencial
Consistência: respeitar as regras de integridade dos dados (como unicidade de chaves, restrições de integridade lógica, etc...).
Isolamento: evitar que transações paralelas interfiram umas nas outras.
Durabilidade: As transações em caso de sucesso (commit) devem persistir no banco de dados mesmo em presença de falhas.
Reaproveitamento de código
O sistema deve, sempre que possível, fazer o reaproveitamento de códigos preferencialmente
Não funcional
Importante
Aparência
Deve fazer uso das tecnologias CSS e Javascript
Não funcional
Essencial
Ambiente de operação
O sistema deve rodar em ambiente web sob o web Não server apache e em linguagem de programação php funcional
Essencial
Performance de exibição O sistema deve exibir informações apenas da região Não das informações
do mapa mostrada em tela.
funcional
Importante
Tempo de exibição das informações
Essencial
O sistema deve ser capaz de carregar as Não informações em até 3 segundos para conexões com funcional
largura de banda maiores que 5Mbps e 5 segundos para conexões com largura de banda entre 1Mbps e 5Mbps, não podendo ultrapassar esse tempo.
Lista de requisitos funcionais – Interface web
Título
Descrição
Tipo
Prioridade
Exibição de estacionamentos
O sistema deve ser capaz de exibir os estacionamentos no mapa
Funcional
Essencial
Exibição de vagas em estacionamentos
O sistema deve ser capaz de exibir a quantidade Funcional
de vagas disponíveis em um estacionamento
Essencial
Cadastro de usuário
O sistema deve permitir que um usuário se cadastre fornecendo, pelo menos, os seguintes dados:
• Nome;
• Email;
• Senha.
O sistema deve permitir, também, o cadastro através de redes sociais
Funcional
Desejável
Autenticação do Usuário
O acesso ao sistema deverá ser controlado via login e senha ou redes sociais.
Funcional
Desejável
Recuperação de senhas
Deverá ser permitido ao usuário recuperar sua senha desde que confirmada sua identidade. Essa recuperação de senha deve ocorrer por meio de token enviado ao e­mail cadastrado.
Funcional
Desejável
Logout do sistema
O sistema deverá permitir ao usuário poder sair Funcional
(logout) a qualquer momento.
Desejável
Lista de requisitos não funcionais – Dispositivo
Título
Descrição
Tipo
Prioridade
Identificação de mudança de estado de uma vaga
O dispositivo deve ser capaz de identificar Não Funcional Essencial
quando um carro entra e sai de uma vaga de
estacionamento em, no máximo, 10 segundos
Otimização de tráfego de dados
O dispositivo deve enviar ao servidor apenas o status da vaga, além dos dados necessários para identificação do dispositivo.
Não Funcional Importante
Consumo de bateria
O dispositivo deve ser capaz de se manter com a mesma bateria por pelo menos 6 meses
Não funcional Importante
Segurança da informação
O dispositivo deve ser capaz de realizar transmissões de dados de forma segura
Não funcional Importante
Proteção contra agentes O dispositivo deve ser capaz de funcionar externos
durante alterações do clima (chuva, vento, descargas elétricas, sol, …) e deve ter proteção contra impactos e vandalismo
Não funcional Importante
Anexos
77
ANEXO A – Estórias de usuário
Mostrar Mapa  O sistema deve exibir informações apenas da região do
mapa mostrada em tela.
Estória de usuário:
COMO usuário
EU GOSTARIA de visualizar a região do mapa mostrada em tela
PARA CONSEGUIR visualizar as informações
Critérios de aceitação
Cenário principal:
DADO que o usuário abra uma área do mapa
QUANDO o sistema exibir a região do mapa mostrada em tela
ENTÃO as informações daquela região serão mostradas
Mostrar Estacionamento  O sistema deve ser capaz de exibir os
estacionamentos no mapa
Estória de usuário:
COMO usuário
EU GOSTARIA de visualizar o mapa
PARA CONSEGUIR visualizar os estacionamentos no mapa
Critérios de aceitação
Cenário principal:
DADO que o usuário acesse a interface web
QUANDO o acesso for realizado
ENTÃO o mapa exibe os estacionamentos
Exibir Vagas  O sistema deve ser capaz de exibir a quantidade de vagas
disponíveis em um estacionamento
Estória de usuário:
COMO usuário
EU GOSTARIA de visualizar detalhes um estacionamento
PARA CONSEGUIR saber a quantidade de vagas disponíveis em um
estacionamento
Critérios de aceitação
Cenário principal:
DADO que o usuário clique em um marcador no mapa
QUANDO o marcador for acionado
ENTÃO o sistema exibe a quantidade de vagas disponíveis naquele
estacionamento
Cadastrar Usuário  O sistema deve permitir que um usuário se cadastre
fornecendo, pelo menos, os seguintes dados: • Nome; • E-mail; • Senha
Estória de usuário:
COMO usuário
EU GOSTARIA de fornecer Nome, E-mail e senha
PARA CONSEGUIR me cadastrar
Critérios de aceitação
Cenário principal:
DADO que usuário queira se cadastrar
QUANDO ele fornecer nome, e-mail e senha
ENTÃO o usuário será cadastrado
Cenário alternativo 1:
DADO que o usuário insira um e-mail já existente
QUANDO sistema identificar dois e-mails iguais
ENTÃO (i) o sistema informa que o e-mail já existe; (ii) o sistema não
realizada o cadastro
Cenário alternativo 2:
DADO que o usuário insira um e-mail incorreto
QUANDO o sistema identificar um e-mail sem arroba
ENTÃO (i) o sistema informa que o e-mail está incorreto; (ii) o sistema não
realizada o cadastro
Autenticar Usuário  O acesso ao sistema deverá ser controlado via
login e senha ou redes sociais.
Estória de usuário:
COMO usuário
EU GOSTARIA de realizar o login
PARA CONSEGUIR acessar o sistema
Critérios de aceitação
Cenário principal:
DADO que o usuário realize o login
QUANDO o login for realizado
ENTÃO o usuário acessa o sistema
Cenário alternativo 1:
DADO que o usuário insira uma senha incorreta
QUANDO sistema identificar o erro
ENTÃO (i) o sistema informa que o acesso não foi permitido; (ii) o sistema
não realizada o acesso
Cenário alternativo 2:
DADO que o usuário insira um e-mail incorreto
QUANDO sistema identificar o erro
ENTÃO (i) o sistema informa que o acesso não foi permitido; (ii) o sistema
não realizada o acesso
Recuperar Senha  Deverá ser permitido ao usuário recuperar sua senha
desde que confirmada sua identidade. Essa recuperação de senha deve
ocorrer por meio de token enviado ao e-mail cadastrado.
Estória de usuário:
COMO usuário
EU GOSTARIA de confirmar minha identidade através de um token recebido
no e-mail cadastrado
PARA CONSEGUIR recuperar minha senha
Critérios de aceitação
Cenário principal:
DADO que o usuário esqueceu a senha
QUANDO solicitar a recuperação de senha
ENTÃO o sistema envia ao e-mail cadastrado um token para recuperação
Logout  O sistema deverá permitir ao usuário poder sair (logout) a
qualquer momento.
Estória de usuário:
COMO usuário
EU GOSTARIA de realizar o logout
PARA CONSEGUIR sair do sistema
Critérios de aceitação
Cenário principal:
DADO que o usuário acesse o logout
QUANDO o logout for acionado
ENTÃO o usuário sai do sistema

Documentos relacionados