sistema de gestão de uma frota de veículos baseado em gps · android, um servidor que contem uma...
TRANSCRIPT
Sistema de gestão de uma frota de veículos baseado em
GPS
João André Correia Telo de Oliveira
Dissertação para obtenção do Grau de Mestre em
Engenharia Electrotécnica e de Computadores
Orientadores: Prof. José Eduardo Charters Ribeiro da Cunha Sanguino Prof. António José Castelo Branco Rodrigues
Júri
Presidente: Prof. Fernando Duarte Nunes
Orientador: Prof. José Eduardo Charters Ribeiro da Cunha Sanguino
Vogal: Prof. Francisco Alberto Sena da Silva
Outubro de 2014
II
Agradecimentos
Os meus agradecimentos vão para a minha família que sempre me ajudou e incentivou a conseguir
alcançar este objetivo, para todos os meus colegas e amigos que fizeram parte da minha vida ao
longo deste curso e ainda para o professor José Sanguino por se ter disponibilizado a orientar esta
tese de mestrado.
IV
Resumo
Esta dissertação teve como base o desenvolvimento de um sistema capaz de monitorizar a posição
de smartphones através do sistema GPS.
O sistema criado assenta principalmente em três itens estruturantes: uma aplicação para o sistema
Android, um servidor que contem uma base de dados e um website que permite consultar as
informações presentes na base de dados criada.
A aplicação Android funciona como cliente do sistema que envia informações para o servidor acerca
dos dados geográficos e cinemática do smartphone, que consequentemente atualiza a base de dados
com as informações recebidas.
Finalmente temos o website onde é possível observar um mapa que mostra a posição dos
smartphones em tempo real, visualizar o histórico de trajetos efetuados pelos mesmos e obter
gráficos acerca da sua velocidade.
No final deste trabalho foram realizados alguns testes ao sistema a fim de verificar o seu
comportamento perante diferentes situações.
Palavras-chave: GPS, Comunicações móveis, Google Maps API, Android
VI
Abstract
This dissertation was based on the development a system that monitors the position of smartphones
through the GPS system.
The system created is based on three main structural items: an application to the Android system, a
server that contains a database and a website that allows you to query the information in the database
created.
The Android application runs as a system that sends information to the server about geographical data
and kinematics of the smartphone. With these information, the server update the database contents.
Finally we have the website where you can see a map showing the location of smartphones in real
time, view the history about the routes made by them and show us a graphs about your speed.
At the end of this work we make some performed tests in order to verify their behavior in different
situations.
Keywords: GPS, Mobile Communications, Google Maps API, Android
VIII
Índice
1. Introdução ....................................................................................................................................... 1
1.1. Motivação ................................................................................................................................ 1
1.2. Objetivo ................................................................................................................................... 1
1.3. Estrutura da dissertação .......................................................................................................... 2
2. Tecnologias ...................................................................................................................................... 3
2.1. Introdução ............................................................................................................................... 3
2.2. Sistema de Posicionamento Global ......................................................................................... 3
2.2.1. Segmento espacial ........................................................................................................... 4
2.2.2. Segmento de controlo ..................................................................................................... 6
2.2.3. Segmento do utilizador ................................................................................................... 7
2.2.4. Cálculo da posição ........................................................................................................... 8
2.2.5. A-GPS ............................................................................................................................. 11
2.2.6. NMEA ............................................................................................................................. 12
2.3. Sistemas de comunicações móveis ....................................................................................... 14
2.3.1. GSM ............................................................................................................................... 14
2.3.1.1. Arquitetura ................................................................................................................ 14
2.3.2. GPRS .............................................................................................................................. 15
2.3.3. UMTS ............................................................................................................................. 16
2.4. TCP/IP .................................................................................................................................... 16
2.5. Smartphone com sistema Android ........................................................................................ 18
2.6. Linguagem C# ........................................................................................................................ 19
2.7. Linguagem SQL ...................................................................................................................... 19
2.8. Google Maps API ................................................................................................................... 21
2.9. Conclusões ............................................................................................................................. 22
3. Sistema desenvolvido .................................................................................................................... 23
3.1. Introdução ............................................................................................................................. 23
3.2. Arquitetura do sistema .......................................................................................................... 24
3.3. Tipos de utilizadores do sistema ........................................................................................... 25
3.4. Aplicação Cliente ................................................................................................................... 26
3.5. Servidor ................................................................................................................................. 29
3.5.1. Cálculo do Checksum ..................................................................................................... 31
3.5.2. Análise das frases NMEA ............................................................................................... 31
3.5.3. Base de dados ................................................................................................................ 34
IX
3.6. Protocolo Cliente-Servidor .................................................................................................... 35
3.7. Website .................................................................................................................................. 37
3.7.1. Página de Login .............................................................................................................. 37
3.7.2. Tempo real..................................................................................................................... 38
3.7.3. Trajeto realizado ............................................................................................................ 40
3.7.4. Gráfico de velocidade .................................................................................................... 41
3.7.5. Administração................................................................................................................ 42
3.8. Conclusão .............................................................................................................................. 42
4. Testes realizados ........................................................................................................................... 45
4.1. Introdução ............................................................................................................................. 45
4.2. Teste à frequência de atualização da posição ....................................................................... 46
4.2.1. Introdução ..................................................................................................................... 46
4.2.2. Intervalo de 10 Segundos .............................................................................................. 47
4.2.3. Intervalo de 5 Segundos ................................................................................................ 47
4.2.4. Intervalo de 3 Segundos ................................................................................................ 48
4.2.5. Conclusões ..................................................................................................................... 49
4.3. Teste à precisão do sistema .................................................................................................. 50
4.3.1. Introdução ..................................................................................................................... 50
4.3.2. Resultados do teste ....................................................................................................... 51
4.3.3. Conclusões ..................................................................................................................... 52
4.4. Teste à utilização do sistema por múltiplos utilizadores ...................................................... 53
4.4.1. Introdução ..................................................................................................................... 53
4.4.2. Resultados do teste ....................................................................................................... 53
4.4.3. Conclusões ..................................................................................................................... 54
4.5. Estimativa do tempo de atraso em tempo real..................................................................... 54
4.5.1. Introdução ..................................................................................................................... 54
4.5.2. Cálculos .......................................................................................................................... 54
4.5.3. Conclusão ...................................................................................................................... 55
4.6. Conclusões aos testes realizados .......................................................................................... 56
5. Considerações finais e trabalho futuro ......................................................................................... 57
Referências ............................................................................................................................................ 59
X
Índice de figuras
Figura 1 - Representação dos três segmentos que constituem o sistema GPS .................................... 4
Figura 2 - Satélite do sistema GPS [2] .................................................................................................... 5
Figura 3 - Representação da posição dos "slots" na configuração de 27 Satélites base [2] .................. 5
Figura 4 - Distribuição das várias estações que constituem o segmento de controlo [2] ....................... 6
Figura 5 - Exemplo de antena terreste para comunicação com os satélites GPS [2]............................. 7
Figura 6 - Exemplo com apenas um satélite ........................................................................................... 8
Figura 7 - Exemplo com dois satélites .................................................................................................... 9
Figura 8 - Exemplo com três satélites ..................................................................................................... 9
Figura 9 - Representação do sistema A-GPS ....................................................................................... 11
Figura 10 - Exemplo de uma frase NMEA do tipo RMC [4] .................................................................. 13
Figura 11 - Exemplo de uma frase NMEA do tipo GGA [4] ................................................................... 13
Figura 12 - Arquitetura do sistema GSM ............................................................................................... 15
Figura 13 - Arquitetura do sistema GPRS ............................................................................................. 16
Figura 14 - Camadas do protocolo TCP/IP ........................................................................................... 17
Figura 15 - Interface do programa Eclipse com o plugin ADT .............................................................. 18
Figura 16 - Interface do Visual Studio Express 2012 ............................................................................ 19
Figura 17 - Exemplo de consulta SQL (1) ............................................................................................. 20
Figura 18 - Exemplo de consulta SQL (2) ............................................................................................. 20
Figura 19 - Mapa criado pela Google Maps API ................................................................................... 21
Figura 20 - Log da comunicação realizado pela Google Maps API ...................................................... 22
Figura 21 - Arquitetura do sistema ........................................................................................................ 24
Figura 22 – Exemplo da hierarquia de utilizadores do sistema ............................................................ 25
Figura 23 - Ícones para identificação dos utilizadores no mapa ........................................................... 26
Figura 24 - Interface da aplicação Android ........................................................................................... 27
Figura 25 - Requisição da classe LocationManager ............................................................................. 27
Figura 26 - Método OnNmeaReceived .................................................................................................. 28
Figura 27 - Fluxograma da aplicação cliente (Android) ........................................................................ 28
Figura 28 - Inicialização da tabela de dispersão ................................................................................... 29
Figura 29 - Interface do servidor ........................................................................................................... 29
Figura 30 - Fluxograma da aplicação servidor ...................................................................................... 30
Figura 31 - Calculo e verificação do checksum das frases NMEA ....................................................... 31
Figura 32 - Função GetLatitude ............................................................................................................ 32
Figura 33 - Função GetLongitude ......................................................................................................... 32
Figura 34 - Função Dms2Deg ............................................................................................................... 33
Figura 35 - Função GetAltitude ............................................................................................................. 33
Figura 36 - Função GetVelocidade ....................................................................................................... 33
XI
Figura 37 - Função GetTrackAngle ....................................................................................................... 34
Figura 38 - Função GetDateTime .......................................................................................................... 34
Figura 39 - Diagrama temporal do protocolo de comunicação cliente-servidor .................................... 36
Figura 40 – Aspeto da página de Login do website .............................................................................. 37
Figura 41 - Query utilizada para login no website ................................................................................. 38
Figura 42 – Exemplo de ficheiro XML com informações acerca dos utilizadores ................................. 38
Figura 43 - Aspeto da página "Tempo Real" do Website ...................................................................... 39
Figura 44 - Janela com detalhes acerca de um utilizador ..................................................................... 39
Figura 45 - Aspeto da página "Trajeto Realizado" do Website ............................................................. 40
Figura 46 - Excerto do ficheiro XML utilizado na criação de um mapa com o trajeto realizado ........... 41
Figura 47 - Aspeto da página "Gráfico de Velocidade" do Website ...................................................... 41
Figura 48 - Aspeto da página "Admin" do Website ............................................................................... 42
Figura 49 - Motorola Moto G utilizado nos testes ................................................................................. 45
Figura 50 - Caminho percorrido no teste à frequência de atualização da posição ............................... 46
Figura 51 - Resultado do teste com um intervalo de 10 segundos ....................................................... 47
Figura 52 - Resultado do teste com um intervalo de 5 segundos ......................................................... 48
Figura 53 - Resultado do teste com um intervalo de 3 segundos ......................................................... 49
Figura 54 - Posição do smartphone para o teste de precisão .............................................................. 50
Figura 55 - Posições obtidas no teste de precisão ............................................................................... 51
Figura 56 – Comparação das posições obtidas no teste de precisão .................................................. 52
Figura 57 - Resultado do teste à utilização do sistema por múltiplos utilizadores................................ 53
Figura 58 - Diagrama temporal do atraso em tempo real ..................................................................... 55
XII
Lista de abreviações
A-GPS - Assisted Global Positioning System
ADT - Android Development Tools
API - Application Programming Interface
BSC - Base Station Controller
BTS - Base Transceiver Station
DMZ - DeMilitarized Zone
DNS - Domain Name System
FTP - File Transfer Protocol
GGA - Global Positioning System Fix Data
GGSN - Gateway GPRS Support Node
GPRS - General Packet Radio Service
GPS – Global Positioning System
GSM – Global System for Mobile
HTML - HyperText Markup Language
IP - Internet Protocol
NMEA – Nationtal Marine Electronics Association
PHP - Personal Home Page
RMC - The Recommended Minimum
SGBD - Sistema de Gerenciamento de Banco de Dados
SGSN - Serving GPRS Support Node
SIM – Subscriber Identity Module
XIII
SMTP - Simple Mail Transfer Protocol
SQL - Structured Query Language
TCP - Transmission Control Protocol
TTFF – Time To First Fix
TOA – Time Of Arrival
UDP - User Datagram Protocol
UMTS - Universal Mobile Telecommunication System
XML - eXtensible Markup Language
1
1.Introdução
1.1. Motivação
O sistema de posicionamento global (GPS) tornou-se nos últimos anos, um forte aliado na vida de
inúmeras pessoas no mundo inteiro. Atualmente este sistema está presente nos mais diversos
sistemas existentes, desde o mais moderno avião até ao mais simples smartphone.
Sendo o sistema GPS um sistema de acesso livre, mas ao mesmo tempo de grande utilidade, torna-
se interessante desenvolver aplicações que utilizem e tirem máximo partido dos dados facultados
pelo mesmo.
Com a evolução, nos dias de hoje é também possível ter acesso gratuito a mapas digitais do mundo
inteiro que permitem a conceção de aplicações cada vez mais evoluídas e interessantes, de forma a
potencializar os dados fornecidos.
Assim sendo existiu a vontade de aliar as potencialidades do sistema GPS, com a motivação de
utilizar os dados disponibilizados para que estes sejam úteis no dia-a-dia criando um sistema que
junte estas duas premissas.
1.2. Objetivo
Esta dissertação teve como objetivo inicial criar um sistema de controlo de uma frota através de
smartphones.
Aproveitando o facto de hoje em dia estes dispositivos móveis serem cada vez mais populares em
todo o mundo, e a grande maioria deles estarem equipados com recetores GPS, foi idealizado como
principal objetivo um sistema low-cost.
Este sistema foi desenhado, no seu início, especialmente para quem não tem, por vários motivos,
interesse em investir num sistema mais complexo para o controlo da sua frota.
Para além disto, foi definido também como objetivo, que a solução utilizada para monitorizar e gerir
os utilizadores do sistema fosse totalmente realizada através de um website.
Esta opção web aparece para que não exista a limitação, que alguns sistemas de controlo de frota
impõem, que passa pela necessidade do uso de um computador com um software específico
instalado.
2
1.3. Estrutura da dissertação
Esta dissertação encontra-se dividida em cinco capítulos. Em primeiro lugar temos o capítulo
introdutório, onde são apresentadas as motivações que levaram à elaboração deste trabalho e os
objetivos propostos.
No segundo capítulo, são descritas as diversas tecnologias utilizadas na elaboração do trabalho,
desde do sistema de posicionamento global GPS, até às linguagens utilizadas no desenvolvimento
das diversas aplicações.
Segue-se o terceiro capítulo onde é explicado o funcionamento de todo o sistema desenvolvido.
Aplicação cliente, servidor e website são explicados com algum detalhe.
No quarto capítulo, descrevem-se os testes realizados ao sistema e são apresentados e comentados
os resultados obtidos nos mesmos.
Para finalizar, no quinto e último capitulo, é feito um balanço geral. Aqui são apresentadas as
conclusões bem como o trabalho futuro a ser realizado.
3
2.Tecnologias
2.1. Introdução
Neste capítulo são descritas as tecnologias utilizadas para o funcionamento do sistema e para o seu
desenvolvimento, tecnologias essas que são determinantes para o bom funcionamento do mesmo.
Em primeiro lugar é descrito o funcionamento da tecnologia GPS. Em seguida são descritas as
tecnologias que permitem a comunicação entre os diversos dispositivos do sistema.
Por fim, faz-se referência ao tipo de dispositivo que desempenha o papel de cliente no sistema e é
feita também uma breve abordagem às linguagens mais importantes utilizadas no desenvolvimento
do mesmo.
2.2. Sistema de Posicionamento Global
O sistema GPS (Global Positioning System) é um sistema de navegação por satélite que foi
desenvolvido pelo Departamento de Defesa dos Estados Unidos da América, ao longo de vários
anos, tendo ficado totalmente operacional em 1995.
Foi inicialmente concebido apenas para uso militar mas, mais tarde, viria a ser disponibilizado
também para utilização civil. O sistema GPS é hoje em dia amplamente utilizado em aplicações de
mapeamento, localização, navegação, entre outras e estima-se que em 2020 alcance os 3 biliões de
utilizadores.
As principais características a salientar deste sistema são: o facto de possuir uma cobertura global
contínua, ser um sistema de coordenadas único, ser imune a condições atmosféricas adversas, estar
suportado no espaço, entre outras [1].
Os três segmentos que compõem o sistema são:
O segmento espacial, que é composto pelo conjunto de satélites que se encontram em órbita.
O segmento de controlo que é composto por uma estação base que recolhe dados de diversas
estações espalhadas pela superfície terrestre, monitorizando assim todos os satélites presentes no
espaço, sendo que este segmento avalia a integridade dos sinais emitidos pelos satélites e é também
responsável por manter a configuração orbital dos mesmos.
Finalmente, o segmento do utilizador é composto pelos terminais que recebem o sinal emitido pelos
satélites.
4
Na Figura 1, estão ilustrados estes três segmentos. Depois disso, é feita uma descrição de cada um
dos segmentos com mais detalhe.
Figura 1 - Representação dos três segmentos que constituem o sistema GPS
2.2.1. Segmento espacial
Este segmento é composto por uma constelação de satélites responsáveis pela emissão de sinais
rádio para os recetores algures no planeta terrestre.
Nos últimos anos, a constelação tem contado em média com 31 satélites no ar, o que permite garantir
o compromisso a que os Estados Unidos se propuseram que é o de ter uma disponibilidade de pelo
menos 24 satélites base operacionais em 95% do tempo.
Estes satélites base foram posicionados numa das 6 órbitas que se encontram a aproximadamente
22,200 km da superfície da terra e com uma inclinação de 55º relativamente ao plano do equador.
Cada órbita possuía 4 “slots” que eram ocupados pelos satélites chamados de base. Esta
organização permitia garantir que em qualquer ponto do planeta Terra se conseguisse ver pelo
menos 4 satélites [2].
5
Figura 2 - Satélite do sistema GPS [2]
Em Junho de 2011 houve uma reconfiguração da constelação de satélites, tendo a Força Aérea
Americana levado a cabo uma expansão e uma reorganização da constelação base. Esta passou a
contar com 27 satélites, o que melhorou consideravelmente a cobertura do sistema GPS em diversas
partes do globo terrestre [2].
Figura 3 - Representação da posição dos "slots" na configuração de 27 Satélites base [2]
6
2.2.2. Segmento de controlo
O segmento de controlo é constituído por uma rede de estações que controlam os satélites do
sistema GPS. Estas estações analisam os sinais transmitidos pelos satélites e enviam informação
para os mesmos. Este segmento é constituído por:
Uma estação de controlo principal (Master Control Station);
Uma estação de controlo alternativo (Alternate Master Control Station);
12 Antenas de comando e controlo (Ground Antenna e AFSCN Remote Tracking Station);
16 Estações de monitorização (Air Force Monitor Station e NGA Monitor Station).
Na Figura 4, podemos observar a distribuição destas estações na superfície terrestre [2].
Figura 4 - Distribuição das várias estações que constituem o segmento de controlo [2]
A estação de controlo principal situa-se no Colorado. Nesta estação é realizado o controlo de toda a
constelação de satélites e nela são geradas e enviadas mensagens de navegação para garantir o
bom funcionamento e precisão destes.
A estação recebe informação das estações de monitorização e calcula a localização exata de cada
satélite no espaço, em seguida, essa informação é utilizada para enviar dados para os satélites do
sistema GPS. É possível, em caso de anomalia nalgum dos satélites, reposicioná-los por forma a
manter a constelação com uma distribuição ótima.
7
As estações de monitorização encontram-se distribuídas como foi mostrado na Figura 4, estas
servem para recolher informações transmitidas pelos satélites e canalizá-las para a estação de
controlo principal. Os recetores GPS presentes nestas estações são bastante sofisticados e são
operados pela estação de controlo principal.
Existem ainda as antenas de comando e controlo que são utilizadas para comunicar com os satélites.
Quatro destas antenas encontram-se junto a estações de monitorização, as outras pertencem à Rede
de Controlo de Satélites da Força Aérea Americana (AFSCN) [2].
Figura 5 - Exemplo de antena terreste para comunicação com os satélites GPS [2]
2.2.3. Segmento do utilizador
O segmento do utilizador diz respeito aos recetores de sinais GPS. Estes recetores funcionam como
uma unidade de processamento que descodifica e processa os sinais recebidos de cada satélite do
segmento espacial, permitindo assim calcular a sua posição exata.
Os tipos de recetores existentes atualmente, vão desde um simples smartphone até a recetores
integrados em sistemas de navegação de, por exemplo, um avião. Algumas destas unidades são
ainda capazes de trocar informação com outros recetores, ou servidores, conseguindo assim
melhorar significativamente a estimativa da posição real.
Em telecomunicações, o sistema GPS é também utilizado em sistemas síncronos1. Quando existe a
necessidade de garantir sincronismo entre sistemas que estão a funcionar em diferentes locais do
planeta, é utilizado o relógio GPS como base de tempo.
1Sistemas síncronos é o termo utilizado para identificar sistemas que operam com a mesma frequência e com
uma diferença de fase constante [15].
8
2.2.4. Cálculo da posição
O conceito de tempo de chegada (TOA – Time of arrival) é um conceito muito importante no cálculo
da posição de um recetor do sistema GPS. O tempo de chegada corresponde ao intervalo de tempo
que um sinal emitido (desde uma posição conhecida) demora a alcançar o seu recetor.
Ao multiplicar o tempo de chegada, pela velocidade de propagação do sinal (velocidade da luz), é
possível calcular a distância entre recetor e satélite.
Medindo o tempo de chegada do sinal de vários emissores, em locais conhecidos, o recetor
consegue calcular a sua posição.
Para uma melhor explicação de como se processa o cálculo da posição, comecemos por supor que
determinado recetor capta o sinal apenas de um satélite e que os relógios do recetor e do satélite se
encontram totalmente síncronos [1].
Figura 6 - Exemplo com apenas um satélite
A equação que nos dá as posições possíveis de localização do recetor é a seguinte:
(𝑥 − 𝑥1)2 + (𝑦 − 𝑦1)
2 + (𝑧 − 𝑧1)2 = 𝑟1
2
A solução desta equação é a própria esfera representada na Figura 6.
Onde: 𝑥1, 𝑦1 , 𝑧1 Representam a posição do satélite e 𝑥, 𝑦, 𝑧 representam a posição do recetor. 𝑟1
Corresponde à distância entre o satélite e a superfície da esfera [1].
9
Supondo agora que o recetor capta sinais de dois satélites.
Figura 7 - Exemplo com dois satélites
O sistema de equações que nos traduz este caso é o seguinte:
{(𝑥 − 𝑥1)
2 + (𝑦 − 𝑦1)2 + (𝑧 − 𝑧1)
2 = 𝑟12
(𝑥 − 𝑥2)2 + (𝑦 − 𝑦2)
2 + (𝑧 − 𝑧2)2 = 𝑟2
2
A solução deste sistema representa o perímetro do plano de intersecção das duas esferas.
Agora com: 𝑥2, 𝑦2, 𝑧2 a representar a posição do segundo satélite e 𝑥, 𝑦, 𝑧 a representar a posição do
recetor. 𝑟2 Corresponde à distância entre o segundo satélite e a superfície da esfera [1].
Passando agora a contar com três satélites.
Figura 8 - Exemplo com três satélites
10
O sistema de equações que nos traduz este caso é:
{
(𝑥 − 𝑥1)2 + (𝑦 − 𝑦1)
2 + (𝑧 − 𝑧1)2 = 𝑟1
2
(𝑥 − 𝑥2)2 + (𝑦 − 𝑦2)
2 + (𝑧 − 𝑧2)2 = 𝑟2
2
(𝑥 − 𝑥3)2 + (𝑦 − 𝑦3)
2 + (𝑧 − 𝑧3)2 = 𝑟3
2
E a solução deste sistema são os dois pontos representados na Figura 8.
Neste caso ainda existem duas posições possíveis de localização do recetor. Acrescentando um
quarto satélite, ou seja, uma quarta esfera ficamos com o sistema de 4 equações seguinte:
{
(𝑥 − 𝑥1)
2 + (𝑦 − 𝑦1)2 + (𝑧 − 𝑧1)
2 = 𝑟12
(𝑥 − 𝑥2)2 + (𝑦 − 𝑦2)
2 + (𝑧 − 𝑧2)2 = 𝑟2
2
(𝑥 − 𝑥3)2 + (𝑦 − 𝑦3)
2 + (𝑧 − 𝑧3)2 = 𝑟3
2
(𝑥 − 𝑥4)2 + (𝑦 − 𝑦4)
2 + (𝑧 − 𝑧4)2 = 𝑟4
2
A solução deste sistema dá-nos as coordenadas x,y,z do recetor [1].
No início desta explicação foi referido que se iria supor que os relógios do recetor e do satélite se
encontram totalmente síncronos, mas isso na realidade não acontece. O relógio do recetor não está
síncrono com o relógio dos satélites. Assim, em vez que estarmos a medir distâncias quando
multiplicamos o tempo de chegada pela velocidade da luz, estamos a medir pseudo-distâncias.
O desvio do relógio do recetor vai ser representado por ∆𝑡.
Assim, enquanto a distância é:
𝑟 = 𝑐 ∗ ∆𝑇
Onde ∆𝑇 corresponde ao tempo de chegada.
A pseudo-distância vale:
𝜌 = 𝑟 + 𝑐 ∗ ∆𝑡
Ou seja:
Pseudo-distância = verdadeira distância + distância associada ao desvio entre relógios.
Assim ficamos com:
{
√(𝑥 − 𝑥1)
2 + (𝑦 − 𝑦1)2 + (𝑧 − 𝑧1)
2 = 𝜌1 − 𝑐 ∆𝑡
√(𝑥 − 𝑥2)2 + (𝑦 − 𝑦2)
2 + (𝑧 − 𝑧2)2 = 𝜌2 − 𝑐 ∆𝑡
√(𝑥 − 𝑥3)2 + (𝑦 − 𝑦3)
2 + (𝑧 − 𝑧3)2 = 𝜌3 − 𝑐 ∆𝑡
√(𝑥 − 𝑥4)2 + (𝑦 − 𝑦4)
2 + (𝑧 − 𝑧4)2 = 𝜌4 − 𝑐 ∆𝑡
Com (𝜌𝑖 − 𝑐 ∆𝑡) a ser a distância ao satélite i.
11
Fica-se assim com as incógnitas que representam a posição do recetor (x,y,z) e com o desvio do
relógio do recetor (∆𝑡).
O desvio do relógio do recetor é assim estimado juntamente com a posição do receptor [1].
2.2.5. A-GPS
O sistema de GPS assistido (A-GPS - Assisted GPS) permite melhorar o desempenho do sistema
GPS padrão em dispositivos que estejam conectados a um canal de comunicação alternativo, como é
o caso da rede móvel nos Smartphones.
Este sistema consegue reduzir o tempo de inicialização do sistema GPS (TTFF – Time To First Fix),
uma vez que a informação acerca da localização dos satélites é obtida via rede móvel, em vez de ser
obtida através da comunicação com os satélites GPS [3].
Figura 9 - Representação do sistema A-GPS
12
2.2.6. NMEA
A associação NMEA (Nacional Marine Electronics Association) desenvolveu uma norma com vista a
favorecer a comunicação entre dispositivos eletrónicos nomeadamente dispositivos de navegação.
Entre os dispositivos que seguem a norma NMEA encontram-se Anemómetros, sistemas de
pilotagem automática ou recetores GPS. No caso das aplicações informáticas voltadas para a
navegação em tempo real, normalmente existe um processamento das mensagens NMEA que são
enviadas por recetores GPS.
A norma NMEA indica que a informação deve ser enviada em mensagens independentes, cada uma
com informação específica, e que são denominadas por “frases”, [4], [5].
As especificações que a norma impõe são:
O símbolo “$” indica o início da frase;
Os dois caracteres seguintes indicam a proveniência da mensagem. “GP” no caso do GPS e
são seguidos de mais três que indicam o tipo de mensagem;
As frases contêm vários campos, de tamanho variável, que são delimitados por vírgulas;
Todas as frases possuem no máximo 80 caracteres;
O primeiro caracter do último campo tem que ser “*” e este campo destina-se ao controlo de
erros;
A frase termina com os caracteres que significam “carriage return” “line feed”, ou seja, <CR>
<LF> [6].
Em relação aos três caracteres que indicam o tipo de mensagem, destacam-se os seguintes:
GGA (Global Positioning System Fix Data) – Frase que contem informação sobre a latitude,
longitude, altitude, hora, número de satélites, entre outras informações [4];
RMC (The Recommended Minimum) – Frase que contem informação acerca da hora, latitude,
longitude, velocidade, entre outras [4];
Escolheu-se destacar estes dois tipos de mensagens porque foram aqueles que foram utilizados
neste trabalho.
Em seguida são exibidas dois exemplos de frases NMEA.
13
Figura 10 - Exemplo de uma frase NMEA do tipo RMC [4]
Em que [4]:
123519 – Hora (12:35:19 UTC)
A - Status (A = Ativado ou V = Desativado (Void))
4807.038,N - Latitude (48º 07.038' N)
01131.000,E - Longitude (11º31.000' E)
022.4 – Velocidade (nós)
084.4 – Track Angle (graus)
230394 – Data (23 de Março de 1994)
003.1,W – Variação Magnética
*6A – Checksum (Controlo de erros)
Figura 11 - Exemplo de uma frase NMEA do tipo GGA [4]
Em que [4]:
123519 - Hora (12:35:19 UTC)
4807.038,N - Latitude (48º 07.038' N)
01131.000,E - Longitude (11º31.000' E)
1 – Qualidade do sinal
08 – Número de satélites
0.9 - Horizontal dilution of position
545.4,M – Altitude acima do nível do mar (metros)
46.9,M – Altura do Geoide acima do elipsoide WGS84
*47 – Checksum (Controlo de erros)
14
2.3. Sistemas de comunicações móveis
2.3.1. GSM
O sistema GSM (Global System for Mobile Communications) foi desenvolvido na Europa e teve como
objetivo principal a resolução de problemas de fragmentação existente nas redes celulares existentes
até então.
A grande diferença entre este sistema e os que o antecederam é o facto dos seus canais de
sinalização e voz serem digitais, o que veio facilitar o envio de SMS, a utilização dos serviços de FAX,
Voice-mail e serviços de dados [7].
2.3.1.1. Arquitetura
A arquitetura da rede GSM é constituída por três elementos essenciais: A estação móvel, estação
base e o núcleo da rede.
A estação móvel corresponde aos terminais móveis, e são estes os elementos terminais da rede.
Cada um destes terminais é identificado com um cartão SIM.
A estação base, que é responsável pela comunicação entre os terminais móveis e o núcleo de rede,
contém dois elementos: a BTS (Base Transceiver Station), responsável pela emissão e receção de
sinais via rádio, e a BSC (Base Station Controller) que é responsável pelo controlo do rede e pelo
processamento de sinais. Uma BSC controla uma ou mais BTSs.
O núcleo da rede realiza a comutação de circuitos entre utilizadores e para além disso inclui diversas
bases de dados que armazenam dados vitais para o bom funcionamento da rede, [5], [8].
15
Figura 12 - Arquitetura do sistema GSM
2.3.2. GPRS
O crescimento do número de utilizadores de telefones móveis, bem como do número de utilizadores
da internet, levou a que se trabalhasse com o objetivo de combinar estas duas tendências.
O GPRS (General Packet Radio Service) é um serviço que fez com que isso fosse possível, uma vez
que, permite a transmissão de dados através da rede GSM. O GPRS utiliza o conceito de
transmissão de pacotes, ao invés das redes GSM que utilizam o conceito de comutação de circuitos,
permitindo assim a transferência de pacotes de dados entre as estações de base GSM e outras redes
que utilizam o protocolo IP, com é o caso da Internet.
Em termos de arquitetura de rede, as modificações traduzem-se apenas ao nível do núcleo de rede,
uma vez que ao nível das estações base não se registam alterações como é possível observar na
Figura 13.
São introduzidos dois elementos que são o SGSN (Serving GPRS Support Node) e o GGSN
(Gateway GPRS Support Node).
16
O primeiro é o componente principal da rede GPRS que é responsável pelo encaminhamento de
pacotes e conversão entre o protocolo IP e o protocolo utilizado entre este e o móvel.
O segundo funciona como um interface entre a rede GPRS e as redes externas. Este dispositivo
permite que as outras redes vejam a rede GPRS como uma sub-rede e, chegando a este um pacote
vindo de uma outra rede, ele verifica se o endereço de destino está ativo e envia-o para o SGSN
respetivo [7].
Figura 13 - Arquitetura do sistema GPRS
2.3.3. UMTS
A tecnologia UMTS é um sistema de comunicação móvel conhecido como sendo de 3ª Geração (3G).
No caso de Portugal, este tipo de rede está praticamente presente em todo o país e com ele é
possível alcançar velocidades na casa dos 43,2 Mbps [9].
2.4. TCP/IP
O TCP/IP (Transmission Control Protocol / Internet Protocol) é um padrão que inclui um conjunto de
protocolos de comunicação
Este protocolo pode ser visto como um conjunto de camadas por onde passam os pacotes de dados
para que a comunicação flua corretamente. Ao longo destas camadas são levadas a cabo várias
tarefas desde o interface com o hardware de rede até à entrega dos pacotes à aplicação em
execução.
17
A característica principal que distingue este protocolo é o facto de ser possível haver transmissão de
dados entre máquinas com diferentes arquiteturas, como por exemplo, entre um computador e um
Smartphone [10].
As camadas do protocolo TCP/IP estão representadas na Figura 14.
Figura 14 - Camadas do protocolo TCP/IP
A camada superior do modelo TCP/IP é a camada de Aplicação (Application Layer). Esta
camada é responsável pela interação entre as aplicações e o protocolo de transporte.
Na camada de transporte (Transport Layer), são utilizados dois tipos de protocolos. Um deles
orientado à ligação (TCP) e outro não orientado à ligação (UDP). É nesta camada que são
organizados os pacotes de dados a transmitir.
A camada de Rede ou Internet (Internet Layer) é responsável pelo encaminhamento, ou seja,
ela tem como função principal direcionar os dados para aos respetivos endereços. Esta
camada trabalha diretamente com os endereços de IP de origem e destino e tem também a
tarefa de evitar o congestionamento da rede.
Por fim, a camada física (Network Access Layer), trabalha diretamente com a placa de rede e
segue um padrão conforme o meio em que está a operar [10].
18
2.5. Smartphone com sistema Android
Os smartphones, tal como o próprio nome indica, são conhecidos como os telefones inteligentes.
Estes dispositivos possuem um sistema operativo de raiz que permite a instalação de uma infinidade
de aplicações que lhes confere funcionalidades avançadas que os tornam cada vez mais
indispensáveis no nosso dia-a-dia.
No caso deste trabalho, os smartphones utilizados funcionam com o sistema operativo Android. Este
sistema foi desenvolvido pela Google e é uma plataforma de código aberto, baseado em Linux, que
permite aos utilizadores desenvolver aplicações livremente.
As aplicações para esta plataforma são desenvolvidas com o auxílio da linguagem Java e para isso é
utilizado um programa chamado Eclipse juntamente com o plugin ADT (Android Development Tools)
desenvolvido pela Google para este efeito.
Figura 15 - Interface do programa Eclipse com o plugin ADT
19
2.6. Linguagem C#
C# é uma linguagem orientada a objetos desenvolvida pela Microsoft tendo por base a linguagem
C++.
Esta linguagem foi a escolhida para desenvolver o servidor deste sistema, uma vez que é uma
linguagem simples mas ao mesmo tempo robusta.
O software utilizado no desenvolvimento da aplicação servidor foi o “Microsoft Visual Studio Express
2012”. Este software permite, para além do desenvolvimento do código-fonte da aplicação, criar a
interface da mesma para o utilizador.
Figura 16 - Interface do Visual Studio Express 2012
2.7. Linguagem SQL
SQL (Structured Query Language) é uma linguagem de programação desenvolvida com a finalidade
de interagir com bases de dados relacionais.
Esta linguagem foi criada pela IBM para ser uma interface com o SGBD (Sistema Gerenciador de
Banco de Dados). É uma linguagem considerada declarativa, isto significa que o programador indica
apenas o objetivo pretendido e não o caminho para chegar até ele. Essa tarefa é depois levada a
cabo pelo SGBD. Uma instrução passada ao SGBD é conhecida como “query”.
20
No caso deste trabalho, o SGBD utilizado foi o MySQL. Ele é, atualmente um dos SGBD mais
populares no mundo inteiro e tem como características principais a portabilidade, a compatibilidade, o
desempenho, a estabilidade e ainda o facto de ser um software livre.
Finalmente, são mostrados dois exemplos de consultas realizadas a uma tabela. É mostrada a tabela
inicial, a query utilizada e o resultado da consulta [11].
Tabela “utilizadores”
id user grupo user_level
1 carro1 Vendedores 1
2 carro2 Distribuidores 0
Query SELECT * FROM utilizadores
Tabela Resultante
id user grupo user_level
1 carro1 Vendedores 1
2 carro2 Distribuidores 0
Figura 17 - Exemplo de consulta SQL (1)
Tabela “utilizadores”
id user grupo user_level
1 carro1 Vendedores 1
2 carro2 Distribuidores 0
3 carro3 Vendedores 0
Query SELECT * FROM utilizadores WHERE user_level = 0
Tabela Resultante
id user grupo user_level
2 carro2 Distribuidores 0
3 carro3 Vendedores 0
Figura 18 - Exemplo de consulta SQL (2)
21
2.8. Google Maps API
Uma API (Application Programming Interface) é um conjunto de instruções que podem ser utilizadas
em software desenvolvido por qualquer utilizador. Ao utilizar uma API, o utilizador abstrai-se dos
detalhes de implementação de certas funcionalidades e utiliza apenas o resultado final destas.
Em websites, por exemplo, uma API funciona num sistema de requisição e resposta utilizando o
protocolo HTTP. Para ilustrar como se processa este funcionamento, é mostrada em seguida uma
página pertencente ao website desenvolvido nesta dissertação. Nela existe um mapa contruido com o
auxílio desta API.
Figura 19 - Mapa criado pela Google Maps API
É apresentado agora, na Figura 20, um log que mostra a lista de pedidos efectuados pela API para a
criação do mapa anterior, bem como as respostas a estes.
22
Figura 20 - Log da comunicação realizado pela Google Maps API
Neste trabalho foi utilizada a Google Maps API para construir os mapas que estão embutidos no
Website. Esta API é um serviço gratuito e permite não só representar mapas, como também obter
rotas entre pontos ou mesmo desenhar formas para representar áreas nos mapas.
2.9. Conclusões
Após a leitura deste capítulo, é esperado que o leitor tenha adquirido conhecimentos acerca daquelas
que foram as tecnologias mais importantes utilizadas no desenvolvimento deste trabalho bem como
todas aquelas que servem de suporte ao funcionamento do sistema desenvolvido.
Ao longo do capítulo existiu a preocupação de enquadrar as tecnologias utilizadas com o trabalho
desenvolvido para que assim o leitor não perdesse o foco em relação ao tema deste trabalho durante
a sua leitura.
GET http://maps.googleapis.com/maps/api/js [HTTP/1.1 200 OK 57ms]
GET http://maps.gstatic.com/maps-api-v3/api/js/18/5/intl/pt_pt/main.js [HTTP/1.1 304 Not Modified 14ms]
GET http://maps.gstatic.com/mapfiles/openhand_8_8.cur [HTTP/1.1 304 Not Modified 48ms]
GET http://maps.gstatic.com/mapfiles/transparent.png [HTTP/1.1 304 Not Modified 55ms]
GET http://mt1.googleapis.com/vt [HTTP/1.1 200 OK 76ms]
GET http://mt1.googleapis.com/vt [HTTP/1.1 200 OK 66ms]
GET http://maps.googleapis.com/maps/api/ViewportInfoService.GetViewportInfo [HTTP/1.1 200 OK 90ms]
GET http://mt1.googleapis.com/vt [HTTP/1.1 200 OK 109ms]
GET http://mt0.googleapis.com/vt [HTTP/1.1 200 OK 84ms]
GET http://mt0.googleapis.com/vt [HTTP/1.1 200 OK 85ms]
GET http://maps.gstatic.com/mapfiles/api-3/images/google_white2.png [HTTP/1.1 304 Not Modified 48ms]
GET http://maps.gstatic.com/mapfiles/api-3/images/mapcnt3.png [HTTP/1.1 304 Not Modified 52ms]
GET http://maps.gstatic.com/mapfiles/mv/imgs8.png [HTTP/1.1 304 Not Modified 91ms]
GET http://maps.gstatic.com/mapfiles/api-3/images/cb_scout2.png [HTTP/1.1 304 Not Modified 60ms]
GET http://mt1.googleapis.com/vt [HTTP/1.1 200 OK 26ms]
GET http://mt0.googleapis.com/vt [HTTP/1.1 200 OK 88ms]
GET http://maps.googleapis.com/maps/api/js/AuthenticationService.Authenticate [HTTP/1.1 200 OK 55ms]
GET http://maps.googleapis.com/maps/gen_204 [HTTP/1.1 204 No Content 44ms]
23
3.Sistema desenvolvido
3.1. Introdução
Neste capítulo será descrito todo o sistema que foi desenvolvido para a elaboração desta dissertação.
Este trabalho baseia-se fundamentalmente na criação de um sistema que permite, através de vários
tipos de utilizador, controlar simultaneamente a posição dos mesmos por meio de smartphones.
Inicialmente é dada a conhecer, de um modo geral, toda a arquitetura do sistema. Depois, é explicada
a forma encontrada para distinguir os vários tipos de utilizadores que farão parte deste.
A aplicação cliente do sistema também merece destaque neste capítulo, com uma explicação
pormenorizada acerca do seu desenvolvimento bem como da sua forma de funcionamento.
Tendo em conta que é um dos elementos mais importantes do sistema, o servidor principal é aquele
que ocupa a maior parte do capítulo. É explicado o seu funcionamento, com alguns exemplos das
funções mais importantes, e é também explicada a forma como a base de dados, que nele está
contida, foi desenvolvida. O protocolo utilizado na comunicação entre o servidor e a aplicação cliente
é também explicado aqui.
Para finalizar o capítulo, é feita uma apresentação do website criado.
Neste website são mostradas as funcionalidades implementadas, bem como alguns detalhes acerca
do ser desenvolvimento.
24
3.2. Arquitetura do sistema
A arquitetura deste sistema é constituída essencialmente por três itens. Um ou mais smartphones, um
servidor e um ou mais computadores.
Os smartphones obtêm as informações acerca da posição, velocidade, etc. através do sistema GPS e
enviam-nas para o servidor utilizando a rede GSM.
O servidor recebe as informações e encarrega-se de preencher a base de dados nele existente.
Por fim, os computadores acedem ao website, que se encontra alojado no servidor, recolhendo a
informação contida na base de dados do servidor. Esta informação é utilizada para representar a
posição dos smartphones em tempo real, ou apresentar o histórico de cada cliente.
Figura 21 - Arquitetura do sistema
Rede
Móvel
Rede
Internet Base de
dados
Servidor
25
3.3. Tipos de utilizadores do sistema
Para diferenciar os vários utilizadores deste sistema foram utilizadas três variáveis.
Para conseguir explicar de forma mais clara cada uma destas variáveis vai ser utilizado o exemplo de
uma empresa que utiliza este sistema para o controlo dos seus funcionários. A essa empresa deu-se
o nome de “Empresa X”.
A primeira das variáveis que identifica os utilizadores do sistema é um código que é comum a todos
os elementos da empresa. Por exemplo “EmpresaX”.
Como existe a possibilidade de criar grupos, os utilizadores são também identificados por uma
variável que identifica o grupo a que pertencem. Por exemplo, o grupo dos vendedores, o grupo dos
distribuidores ou o grupo dos comerciais.
A terceira e última variável é um inteiro que indica o nível de cada utilizador.
Um utilizador com nível 100 é considerado administrador. Este utilizador tem o poder de registar
novos utilizadores no sistema e pode ainda monitorizar todos eles.
Os utilizadores nível 1 podem monitorizar todos os elementos do seu grupo, isto possibilita, por
exemplo na Empresa X, ter administradores diferentes em cada grupo existente.
Por fim, os utilizadores com o nível 0 não têm acesso a qualquer opção quer de administração quer
de monitorização.
Para melhor compreender esta hierarquia representa-se em seguida o exemplo da “Empresa X” que
foi relatado atrás. Junto de cada elemento desta hierarquia encontram-se as três variáveis que o
identificam no sistema.
Figura 22 – Exemplo da hierarquia de utilizadores do sistema
EmpresaX
Administrador
Nível 100
EmpresaX
Vendedores
Nível 1
EmpresaX
Vendedores
Nível 0
EmpresaX
Vendedores
Nível 0
EmpresaX
Vendedores
Nível 0
EmpresaX
Distribuidores
Nível 1
EmpresaX
Distribuidores
Nível 0
EmpresaX
Comerciais
Nível 1
EmpresaX
Comerciais
Nível 0
EmpresaX
Comerciais
Nível 0
26
Para finalizar esta secção, é importante referir ainda que existe a possibilidade de representar cada
utilizador com um ícone diferente no mapa, isto é, foram criados diferentes tipos de ícones (Figura
23).
Cada um destes ícones dá ao administrador a possibilidade de escolher (na visualização do mapa em
tempo real) a identificação dos diferentes tipos de utilizadores.
Figura 23 - Ícones para identificação dos utilizadores no mapa
3.4. Aplicação Cliente
A aplicação cliente deste sistema foi desenvolvida para ser executada no sistema Android.
Ela tem como funções principais a autenticação do dispositivo móvel no sistema e, numa segunda
instância, o envio para o servidor principal das frases NMEA recolhidas pelo recetor GPS integrado.
Cada uma destas frases é enviada no formato string e transporta diversas informações acerca do
posicionamento do aparelho.
A conexão entre a aplicação cliente e o servidor é feita através de um socket que pode ser visto como
o elo de ligação entre os processos de ambos. Este socket é associado ao protocolo TCP/IP por este
ser um protocolo confiável orientado à ligação.
O interface da aplicação criado para o utilizador é apresentado na Figura 24.
27
Figura 24 - Interface da aplicação Android
Depois de serem introduzidos os dados do utilizador, a aplicação envia-os para o servidor e fica a
aguardar uma resposta deste.
Quando a autenticação não é realizada com sucesso, a aplicação informa o utilizador disso mesmo
através da mensagem “Dados de login incorretos! Tente novamente”.
Em caso de sucesso na autenticação, a aplicação apresenta a informação “Login efetuado com
sucesso” e começa imediatamente a recolher informações do recetor GPS e a enviá-las para o
servidor.
O sistema Android possui uma classe que gere a localização do dispositivo. Essa classe chama-se
LocationManager e é uma classe que não é instanciada pelo utilizador é mas sim requisitada a sua
instância pelo sistema. No caso da aplicação desenvolvida é possível observar em seguida o excerto
do código onde é efetuada essa requisição.
Figura 25 - Requisição da classe LocationManager
28
Depois disto, e para que seja possível obter atualizações periódicas acerca da localização do
dispositivo é necessário registar um listener que recebe as atualizações e as passa para a aplicação.
No excerto anterior é ainda possível observar, na última linha, a chamada do método
requestLocationUpdates onde são indicados o mínimo intervalo de tempo entre duas atualizações
(3000 milissegundos neste caso) e a distância mínima entre atualizações (500 metros neste caso). É
ainda indicado o Location Provider (GPS_PROVIDER) que é a fonte onde o dispositivo vai buscar as
informações de localização, neste caso essa fonte é o recetor GPS que o mesmo tem incorporado.
Por fim vai ser apresentada ainda a forma como foi implemento o método onNmeaReceived. Este
método é chamado quando uma frase NMEA é recebida. Quando isto acontece, a aplicação verifica
se a frase é do tipo $GPRMC ou $GPGGA e envia-a para o servidor através do socket criado
anteriormente.
Figura 26 - Método OnNmeaReceived
O envio de frases NMEA para o servidor é interrompido apenas quando a aplicação é encerrada pelo
utilizador.
O fluxograma do funcionamento desta aplicação está representado na Figura 27.
Figura 27 - Fluxograma da aplicação cliente (Android)
29
3.5. Servidor
O servidor criado foi desenvolvido em C# e funciona em modo multithreading uma vez que possui
uma thread com a função de se manter sempre à escuta de novos clientes e outras que vão sendo
lançadas à medida que novos clientes se conectam ao servidor. Estas threads que são lançadas
tratam de toda a comunicação entre servidor e clientes.
As conexões de cada cliente são guardadas numa tabela de dispersão (Hash Table), o que facilita a
busca quando necessário. O tamanho desta tabela de dispersão define o número máximo de
conexões de clientes que este servidor suporta. Na Figura 28 podemos observar como foi definida a
tabela de dispersão e o número máximo de clientes aceite por este servidor.
Figura 28 - Inicialização da tabela de dispersão
Quando executado, o programa servidor exibe uma interface para o utilizador, semelhante aquela que
é apresentada na Figura 29.
Figura 29 - Interface do servidor
30
Para que seja iniciado, é necessário que o utilizador indique ao servidor qual vai ser o porto onde este
se vai manter à escuta. Caso não seja indicado nenhum porto, o servidor inicia a escuta no porto
2222.
A escolha deste porto não tem qualquer explicação em especial, sendo necessário apenas salientar
que, na escolha do porto, tem que se ter em conta que os portos de 0 a 1023 são portos reservados
para processos do sistema, não sendo conveniente colocar o servidor à escuta em qualquer um
deles.
Depois de definido o porto, o servidor é iniciado e o seu funcionamento é representado pelo
fluxograma apresentado na Figura 30.
Figura 30 - Fluxograma da aplicação servidor
31
Para terminar a explicação do funcionamento da aplicação servidor, falta explicar mais
detalhadamente a forma como é feito o cálculo do checksum da frase NMEA, a análise do seu
conteúdo para extrair a informação necessária e a constituição da base de dados existente no
servidor.
3.5.1. Cálculo do Checksum
O último campo das frases NMEA representa o checksum de cada uma delas. Este código permite
verificar a validade das mesmas e é sempre representado na forma hexadecimal.
A aplicação servidor, como é mostrado na figura Figura 31, calcula o valor do checksum de cada
frase e compara-o em seguida com aquele que vem contido na mesma frase.
Para efetuar este calculo basta aplicar um OU exclusivo em todos os carateres da frase que se
encontrem entre “$” e “*”.
Figura 31 - Calculo e verificação do checksum das frases NMEA
3.5.2. Análise das frases NMEA
Todas as frases NMEA que chegam ao servidor são analisadas com o objetivo de se retirar a
informação pretendida. Conhecido o formato típico de cada tipo de frase, torna-se simples este
processo de coleta da informação.
32
Ficou definido na aplicação cliente que apenas as frases do tipo GPGGA e GPRMC seriam enviadas
para o servidor pois a informação nelas incluída é suficiente para esta aplicação. O servidor utiliza as
frases GPGGA para recolher a altitude e as GPRMC para recolher a latitude, longitude, data e hora,
velocidade e track angle.
Para obter a valor da latitude e longitude inseridos nas frases NMEA, o servidor utiliza as funções
GetLatitude e GetLongitude que podem ser observadas em seguida. O algoritmo é simples e o código
das funções encontra-se comentado a verde.
Figura 32 - Função GetLatitude
Figura 33 - Função GetLongitude
Nestas duas funções é de salientar que existe uma conversão do valor da latitude e longitude da
notação graus, minutos, segundos para graus em valor decimal. Essa conversão é realizada pela
função Dms2Deg que é mostrada e comentada na Figura 34.
33
Figura 34 - Função Dms2Deg
O único valor que é retirado das frases GPGGA é o valor da altitude. Este valor é obtido em metros
não sendo assim necessário qualquer tipo de conversão.
Figura 35 - Função GetAltitude
Para obter o valor da velocidade é utilizada a função GetVelocidade. Na frase NMEA o valor da
velocidade é dado em nós, sendo posteriormente necessário convertê-lo em km/h. Essa conversão é
realizada tendo em conta que 1 nó = 1,852 km/h.
Figura 36 - Função GetVelocidade
O valor do Track Angle é também recolhido das frases NMEA e guardado na base de dados. Este
valor corresponde ao ângulo existente entre a direção da rota seguida e o norte magnético.
34
Figura 37 - Função GetTrackAngle
A recolha da data e hora de cada frase NMEA é realizada diretamente das frases GPRMC e é
guardada na base de dados com o formato DateTime.
Figura 38 - Função GetDateTime
3.5.3. Base de dados
Tal como já foi referido anteriormente, a base de dados escolhida para este trabalho foi uma base de
dados MySQL. Para se criar esta base de dados foi instalado o WAMPSERVER que é um pacote de
software gratuito que inclui, para além de uma base de dados MySQL, uma aplicação web chamada
phpMyAdmin que é útil para a administração da mesma.
A estrutura da base de dados escolhida para este trabalho foi a que se encontra representada na
Tabela 1 - Estrutura da base de dados utilizada.
Como se pode observar, são utilizadas duas tabelas diferentes. Uma delas guarda as variáveis que
identificam cada utilizador, enquanto a outra, armazena a informação recolhida acerca de cada um
deles.
35
Na primeira tabela (“utilizadores”), todos os utilizadores possuem um id exclusivo que é atribuído
aquando do seu registo na base de dados, sendo esta variável considerada como uma chave
primária desta tabela.
Na segunda tabela (dados_utilizadores), a variável id_user está diretamente relacionada com a
variável id da primeira e identifica a que utilizador pertence os dados que nela estão guardados.
Se na primeira os valores da variável id eram exclusivos e surgiam no máximo uma vez na tabela, na
segunda, a variável id_user é uma chave estrageira, uma vez que, surge tantas vezes na tabela
quantas as posições que são guardadas de cada utilizador.
Esta forma de contruir as tabelas da base de dados foi pensada com o objetivo de minimizar o tempo
de pesquisa dos dados nestas tabelas.
utilizadores dados_utilizadores
id
id_user
user latitude
password longitude
grupo altitude
cod_empresa velocidade
user_level track_angle
icone datahora
Tabela 1 - Estrutura da base de dados utilizada
3.6. Protocolo Cliente-Servidor
O protocolo criado para a comunicação entre cliente e servidor é bastante simples.
Como estamos perante uma arquitetura cliente-servidor temos um servidor sempre à escuta de novas
ligações e é sempre o cliente que toma a iniciativa de iniciar as comunicações entre os dois.
Para iniciar essa comunicação, o cliente envia a string “SYN” (SYNchronize) para o servidor e espera
que este responda com a string “SYN-ACK” (SYNchronize-ACKnowledment) que confirma que a
ligação foi iniciada.
36
Depois disto, o cliente envia para o servidor uma string que contém o user name e a password do
utilizador de acordo com o formato seguinte: “#@#USERNAME#PASSWORD#\r\n”.
É de salientar que os caracteres “\r\n” são caracteres ASCII de controlo que indicam o final das
strings e significam “carriage return” (\r) e “line feed” (\n).
O servidor ao identificar a string, que transporta os dados do utilizador, responde com a string
“#@#OK#\r\n” em caso de sucesso ou “#@#NOK#\r\n” em caso de insucesso. Assim, o cliente é
informado se a sua tentativa de login no sistema obteve sucesso ou não.
Quando se dá o caso de sucesso no login, o cliente inicia o envio das strings NMEA periodicamente
para o servidor.
Para terminar a explicação do protocolo utilizado, é apresentado na Figura 39 um diagrama temporal
que representa a troca de mensagens entre cliente e servidor ao longo do tempo numa típica
comunicação realizada por este sistema.
Figura 39 - Diagrama temporal do protocolo de comunicação cliente-servidor
Cliente Servidor
NMEA
:
37
3.7. Website
No desenvolvimento do website foram utilizadas, para além da linguagem HTML, as linguagens PHP
e JavaScript. Foi ainda utilizada a Google maps API.
As funcionalidades que se entendeu serem necessárias implementar num sistema deste tipo foram: a
possibilidade de visionamento das posições dos utilizadores em tempo real, a consulta de um
histórico do trajeto realizado por cada utilizador num determinado dia e a possibilidade de observar
um gráfico da velocidade dos utilizadores ao longo de cada dia.
3.7.1. Página de Login
A página de login do website é mostrada na Figura 40. Nesta página, apenas são aceites logins de
utilizadores nível 100 ou nível 1, e destes, apenas os de nível 100 têm a possibilidade de aceder às
opções de administração. Os utilizadores nível 100 têm a possibilidade de aceder aos dados de todos
os elementos da sua rede, enquanto os utilizadores nível 1 apenas têm a possibilidade de aceder aos
dados dos utilizadores inseridos no seu grupo.
Figura 40 – Aspeto da página de Login do website
38
O sistema de login desta página está suportado num script PHP. Sempre que são introduzidos dados
de login, o script realiza uma consulta à base de dados para verificar se o utilizador consta da mesma
e se é um utilizador nível 100 ou nível 1.
Esta consulta à base de dados é realizada utilizando a query mostrada na Figura 41.
Figura 41 - Query utilizada para login no website
3.7.2. Tempo real
Na página “Tempo real” é possível observar a posição dos utilizadores num mapa em tempo real. Os
utilizadores surgem no mapa representados com o ícone que foi definido pelo utilizador no momento
do seu registo no sistema.
No exemplo apresentado na Figura 43 é possível observar também a existência de um menu à
esquerda que permite selecionar os grupos de utilizadores que se pretende que estejam
representados no mapa em cada instante.
Esta página utiliza um script PHP que realiza consultas periódicas, à base de dados do servidor e
recolhe as informações acerca do posicionamento dos utilizadores.
Depois de recolhidas as informações pretendidas, o script cria um ficheiro no formato XML que
contém essas informações. Neste ficheiro, cada linha corresponde a um utilizador que vai ser
representado no mapa. Exemplo disso é o ficheiro apresentado na Figura 42.
Figura 42 – Exemplo de ficheiro XML com informações acerca dos utilizadores
A necessidade de criar este ficheiro XML está relacionada com o fato da Google Maps API ter sido
desenvolvida para receber dados através deste tipo de ficheiro. Uma vez criado o ficheiro XML, este é
passado à Google Maps API, que constrói o mapa com as posições dos utilizadores presentes no
ficheiro.
39
A Figura 43 mostra o mapa com as posições que foram geradas no ficheiro da Figura 42.
Figura 43 - Aspeto da página "Tempo Real" do Website
Para finalizar a apresentação da página “Tempo Real” é de salientar ainda que ao clicar no icone de
cada utilizador, surge uma janela onde estão contidas informações acerca da velocidade a que o
utilizador circulava nesta posição, bem como a data e hora a que se encontrava na mesma.
Figura 44 - Janela com detalhes acerca de um utilizador
40
3.7.3. Trajeto realizado
A página do website onde é possível observar o trajeto realizado pelos utilizadores do sistema, num
determinado dia, é apresentada nesta secção. Na Figura 45 é possível observar uma linha a
vermelho que representa o caminho percorrido pelo utilizador e os pontos representam as várias
posições que foram recolhidas pelo sistema.
Esta página é gerada de forma semelhante à anterior (Tempo Real). Ou seja, é igualmente utilizado
um script PHP que realiza uma consulta à base de dados, mas desta vez, em vez do script recolher a
informação acerca da última posição de cada utilizador, ele recolhe a informação acerca de todas as
posições recolhidas de um certo utilizador, em determinado dia.
Após ser feita essa recolha, é criado igualmente um ficheiro XML com os dados recolhidos (Figura
46) e passada essa informação à Google Maps API.
Existe uma diferença em relação ao caso da página anterior que é o fato de, neste caso, a API traçar
uma linha que une todos os pontos recolhidos por forma a construir o caminho que o utilizador
percorreu.
Figura 45 - Aspeto da página "Trajeto Realizado" do Website
Um excerto do ficheiro XML que levou à construção do caminho a vermelho contido no exemplo
anterior é apresentado na Figura 46. Cada linha desse ficheiro XML corresponde a um ponto
daqueles que aparece no mapa da Figura 45. Quando um utilizador seleciona algum dos pontos a
41
vermelho obtém a informação acerca dessa posição tal como acontecia no caso da página “Tempo
Real”. A janela obtida é semelhante aquela que é apresentada na Figura 44.
Figura 46 - Excerto do ficheiro XML utilizado na criação de um mapa com o trajeto realizado
3.7.4. Gráfico de velocidade
Outra das hipóteses de representação da informação existente na base de dados, no que se refere à
consulta de posições recolhidas anteriormente, é a possibilidade de observar um gráfico da
velocidade do utilizador ao longo de um determinado dia.
O gráfico presente nesta página é criado recorrendo à Google Charts API. Esta API permite criar
gráficos de forma dinâmica e é muito útil na construção de websites.
É de salientar, que os dados utilizados pela API para a construção deste gráfico são recolhidos de um
ficheiro XML criado pelo mesmo script PHP utilizado no caso anterior para representar o trajeto. Os
pontos extraídos da base de dados são os mesmos que no caso anterior, mas agora, a informação
que interessa retirar do ficheiro gerado é apenas a velocidade e a data e hora.
Figura 47 - Aspeto da página "Gráfico de Velocidade" do Website
42
3.7.5. Administração
A página de administração do sistema é apenas acessível aos utilizadores que têm privilégios de
administrador, ou seja, utilizadores com nível 100. Nela o administrador pode adicionar ou remover
utilizadores da sua rede.
Para além do username, da password e do grupo a que pertence, aqui também é definido o ícone
que vai representar cada utilizador no mapa em tempo-real e se este é ou não administrador do seu
grupo.
Na Figura 48 é apresentado um exemplo de uma página de administração onde é possível também
observar uma lista dos utilizadores que mostra os utilizadores que foram registados por este
administrador.
Figura 48 - Aspeto da página "Admin" do Website
3.8. Conclusão
Após a leitura deste capítulo, é esperado que o leitor tenha conseguido entender a forma de como se
procedeu para o desenvolvimento do trabalho que deu origem à elaboração desta dissertação de
mestrado.
Decidiu-se por uma explicação detalhada do funcionamento do servidor uma vez que este elemento
do sistema assume uma grande importância.
43
É ele que serve de elo de ligação entre os clientes e a base de dados, assumindo assim um papel
preponderante no bom funcionamento de todo o sistema.
No que toca à parte do website, ao invés de ser feita uma explicação mais exaustiva acerca dos
detalhes de programação que envolveram o seu desenvolvimento, privilegiou-se a explicação do
modo como operam todas as funcionalidades implementadas.
45
4.Testes realizados
4.1. Introdução
Com o objetivo de testar o desempenho do sistema desenvolvido foram realizados alguns testes ao
mesmo.
No presente capítulo, serão explicados todos os testes que foram efetuados, bem como os resultados
obtidos em cada um deles.
O dispositivo utilizado na realização dos testes foi o smartphone Motorola Moto G representado na
Figura 49. Este smartphone está equipado com um recetor GPS integrado da marca Qualcomm.
Nestes testes o smartphone encontrava-se ligado à rede móvel, ao passo que o servidor, estava
ligado a um router como anfitrião DMZ que é uma função que permite expor um endereço local para a
internet. Se não fosse assim, o smartphone não conseguiria encontrar o servidor.
Figura 49 - Motorola Moto G utilizado nos testes
Para além de explicar os testes que foram realizados, no final de cada uma das secções são
comentados os resultados obtidos em cada um deles.
46
4.2. Teste à frequência de atualização da posição
4.2.1. Introdução
O primeiro teste realizado teve o propósito de verificar qual o comportamento do sistema perante
diferentes intervalos de tempo no envio de informação da aplicação cliente para o servidor.
O teste foi realizado com o smartphone a bordo de uma viatura e consistiu em percorrer três vezes o
mesmo caminho mas com frequências de actualização diferentes. O caminho que foi percorrido está
representado na Figura 50.
Para começar foi definido um intervalo de 10 segundos entre actualizações. Depois, esse intervalo foi
diminuido para 5 e finalmente para 3 segundos.
Figura 50 - Caminho percorrido no teste à frequência de atualização da posição
47
4.2.2. Intervalo de 10 Segundos
No caso do intervalo de 10 segundos, é possível observar, na Figura 51, que os resultados ficaram
um pouco comprometidos quando se apresentaram mudanças de direção no caminho realizado.
Observa-se que com este intervalo de tempo, o sistema não tem tempo de registar posições
suficientes que permitam uma boa aproximação à morfologia real do caminho.
Este facto não é mais evidente uma vez que a viatura circulou a uma velocidade moderada que em
média não ultrapassou os 50 km/h. Quanto maior fosse essa velocidade, nomeadamente nas
mudanças de direção, maior era o desfasamento entre o trajeto representado e o caminho realmente
percorrido.
Com isto, é possível afirmar que um intervalo maior ou igual a 10 segundos não satisfaz o requisito
de se conseguir ter no histórico do sistema uma boa aproximação ao caminho realizado por cada
utilizador em determinado dia.
Figura 51 - Resultado do teste com um intervalo de 10 segundos
4.2.3. Intervalo de 5 Segundos
Depois de se alterar o intervalo de atualização da posição para 5 segundos, foi percorrido novamente
o caminho traçado na Figura 50.
48
Através da observação da Figura 52 podemos afirmar que os resultados alcançados, utilizando um
intervalo de 5 segundos, foram melhores face aos apresentados no caso da Figura 51 onde o
intervalo era de 10 segundos.
O caminho traçado está realmente mais aproximado daquele que foi o caminho percorrido. Para além
disso, para efeitos de histórico, o sistema adquiriu aproximadamente o dobro da informação acerca
do caminho percorrido em relação ao caso anterior, uma vez que agora foram adquiridos cerca de 27
pontos em vez dos cerca de 15 que foram obtidos no caso anterior.
Figura 52 - Resultado do teste com um intervalo de 5 segundos
4.2.4. Intervalo de 3 Segundos
Finalmente neste ultimo teste, o intervalo de atualização da posição foi alterado para 3 segundos.
Neste caso foi onde se obteve uma melhor aproximação ao caminho realizado. Podemos constatar
isso mesmo observando a Figura 53.
Para se ter uma melhor perceção da diferença existente entre os testes realizados, com um intervalo
de 3 segundos foram armazenadas na base de dados cerca de 50 posições, ao passo que no caso
dos 10 segundos foram adquiridas cerca de 15 posições.
49
Figura 53 - Resultado do teste com um intervalo de 3 segundos
4.2.5. Conclusões
Após a realização deste teste chegamos à conclusão que quanto menor for o intervalo de tempo de
atualização da posição melhor é a estimativa do caminho percorrido pelo smartphone.
Assim, apesar de o intervalo de 3 segundos ser aquele que nos dá uma melhor perspetiva acerca do
caminho realizado pelo utilizador, é também aquele que mais vai sobrecarregar a base de dados.
Não foram testados valores mais baixos para o intervalo entre atualizações, uma vez que, com um
intervalo de 3 segundos já é possível obter, visualmente, uma boa aproximação ao caminho que foi
realizado.
50
4.3. Teste à precisão do sistema
4.3.1. Introdução
Outro dos parâmetros que foi testado foi a precisão deste sistema. O teste levado a cabo consistiu
em posicionar o smartphone numa localização fixa, com as coordenadas conhecidas, e registar as
posições que este reportou durante 2 minutos com um intervalo de actualização da posição igual a 5
segundos. Com o auxilio do Google Earth, adquiriu-se as coordenadas da posição onde foi colocado
o smartphone para depois poder comparar essa posição com as posições que este ia reportar para o
servidor.
Na Figura 54, está representada a posição onde foi colocado o smartphone, juntamente com as
coordenadas no formato graus, minutos e segundos.
Para uma melhor comparação com os dados apresentados é facultada também a posição em graus
decimais.
38º44’12.5”N, 9º08’18.9”W = Latitude: 38.73679º, Longitude: -9.13857º
Figura 54 - Posição do smartphone para o teste de precisão
51
4.3.2. Resultados do teste
As posições adquirídas ao longo deste teste estão representadas na Figura 55. Algumas posições
não estão mostradas no mapa apresentado, uma vez que, estas ficaram sobrepostas umas às outras.
Ainda assim, é possível obter uma ideia das posições que foram enviadas pela aplicação cliente para
o servidor.
Figura 55 - Posições obtidas no teste de precisão
Como foi referido em cima, as coordenadas em graus decimais do ponto onde foi colocado o recetor
são 38.73679º de latitude e -9.13857º de longitude. Com o auxílio da
Tabela 2 podemos comparar estas coordenadas com aquelas que foram enviadas pelo smartphone
durante os 2 minutos em que a aplicação esteve em funcionamento.
As conclusões acerca destes resultados são apresentadas na secção seguinte.
52
Hora Latitude Longitude Distância (m) Hora Latitude Longitude Distância (m)
14:33:03 38.73681 -9.13854 3.42 14:34:03 38.73680 -9.13854 2.82
14:33:08 38.73680 -9.13854 2.82 14:34:08 38.73680 -9.13854 2.82
14:33:13 38.73680 -9.13854 2.82 14:34:13 38.73680 -9.13854 2.82
14:33:18 38.73680 -9.13854 2.82 14:34:18 38.73680 -9.13854 2.82
14:33:23 38.73681 -9.13854 3.42 14:34:23 38.73680 -9.13854 2.82
14:33:29 38.73681 -9.13854 3.42 14:34:29 38.73680 -9.13854 2.82
14:33:34 38.73681 -9.13854 3.42 14:34:34 38.73680 -9.13855 2.06
14:33:38 38.73681 -9.13854 3.42 14:34:39 38.73680 -9.13854 2.82
14:33:43 38.73681 -9.13854 3.42 14:34:44 38.73680 -9.13854 2.82
14:33:48 38.73681 -9.13854 3.42 14:34:49 38.73680 -9.13854 2.82
14:33:53 38.73681 -9.13854 3.42 14:34:53 38.73680 -9.13855 2.06
14:33:58 38.73681 -9.13854 3.42 14:34:58 38.73680 -9.13855 2.06
Tabela 2 - Resultados obtidos no teste de precisão
4.3.3. Conclusões
Como é possível perceber, quer pelas tabelas obtidas, quer pela localização das posições obtidas no
mapa, os resultados alcançados foram bastante satisfatórios para uma aplicação deste tipo.
Na tabela podemos observar que a variação em termos do valor em graus da latitude e longitude foi
bastante pequena, o que se traduziu em pequenos desvios de cerca de 2 a 3 metros na posição
adquirida face à posição real.
Figura 56 – Comparação das posições obtidas no teste de precisão
53
4.4. Teste à utilização do sistema por múltiplos utilizadores
4.4.1. Introdução
Sendo este um sistema desenvolvido com o intuito de ser utilizado por vários utilizadores em
simultâneo, um teste que é interessante fazer ao sistema passa por efetuar a conexão de vários
clientes, ao mesmo tempo, com o servidor.
Pretende-se com este teste, verificar a capacidade do servidor em gerir múltiplas ligações cliente-
servidor.
Para a realização do teste, foi criada uma aplicação para se ligar ao servidor via TCP e simular a
ligação de 10 utilizadores. Depois de ligados, estes utilizadores enviaram frases NMEA para o
servidor contendo coordenadas que correspondem a posições em redor do campus da Alameda do
Instituto Superior Técnico.
4.4.2. Resultados do teste
Como resultado deste teste é apresentada uma imagem que mostra o mapa em tempo real contendo
os ícones que representam os 10 utilizadores que foram simulados.
Figura 57 - Resultado do teste à utilização do sistema por múltiplos utilizadores
54
4.4.3. Conclusões
Após a realização deste teste, é possível afirmar que o sistema está preparado para lidar com o
acesso de múltiplos clientes. À medida que se foram lançando os utilizadores o servidor respondeu
de forma correta e acabou por superar este teste da melhor forma.
O ideal para a realização deste teste seria ter conseguido reunir 10 equipamentos com a aplicação
instalada e colocá-los em movimento vendo depois a sua dinâmica no mapa, mas, uma vez que a
quantidade de meios utilizados para o teste é limitada, a solução encontrada para a realização do
teste cumpriu os requisitos do mesmo.
4.5. Estimativa do tempo de atraso em tempo real
4.5.1. Introdução
Apesar de se afirmar que este sistema permite monitorizar a posição de smartphones em tempo real,
é necessário ter em conta que o sistema possui algum atraso entre o momento que o smartphone se
encontra numa certa posição e o momento em que este surge representado no mapa.
É necessário salientar que existe um intervalo de tempo de refrescamento no mapa. Ou seja, um
intervalo de tempo entre consultas à base de dados por parte do website.
Para além disso existe ainda o intervalo de tempo entre a atualizações da posição por parte da
aplicação cliente.
4.5.2. Cálculos
Para efeitos de cálculo foi considerado que a ligação entre cliente e servidor demora cerca de 1
segundo.
O diagrama temporal apresentado na Figura 58 apresenta o pior caso do atraso que existe entre a
atualização da posição e o seu visionamento no mapa. No ciclo da aplicação, os traços que se
encontram a tracejado representam o momento em que a informação chegou ao servidor, já depois
de ter sofrido o atraso de 1 segundo.
Foi definido um intervalo de tempo de refrescamento do mapa de 2,5 segundos enquanto que o
intervalo de tempo entre a atualização da posição, por parte da aplicação, foi de 5 segundos.
55
Figura 58 - Diagrama temporal do atraso em tempo real
4.5.3. Conclusão
Observando o diagrama apresentado é possível concluir que, para os ciclos definidos, o pior caso
que pode ocorrer ao nível do atraso é de 3,5 segundos. Isto ocorre quando a informação acerca de
uma nova posição chega ao servidor ao mesmo tempo que o website realiza o refrescamento do
mapa, assim, esta atualização da posição só vai ser mostrada no próximo refrescamento do mapa
que acontece 2,5 segundos depois.
O ideal para o tempo do ciclo de refrescamento do mapa seria um valor muito pequeno que nos dava
a atualização do mapa quase no instante em que a posição é descarregada na base de dados. Ainda
assim, isto consome muitos recursos uma vez que a base de dados é partilhada pelos vários
utilizadores do sistema e em cada refrescamento do mapa é realizada uma consulta.
Ciclo Aplicação
(Pior Caso)
Ciclo Mapa
0 1 2 3 4 5 6 7 8 9 10 11 12 13 s
|________________| |________________| 3,5s 3,5s
56
4.6. Conclusões aos testes realizados
Após a conclusão dos testes realizados, é possível afirmar que no geral os resultados obtidos foram
satisfatórios. É necessário ter em conta que estes resultados destes testes, ao nível da precisão,
estão dependentes da qualidade do recetor integrado nos smartphones utilizados.
No primeiro teste, para além de perceber qual o intervalo que melhor se adapta ao funcionamento
deste sistema, foi também possível verificar que o mesmo reagiu da melhor forma quando foi
encerrada a aplicação e reiniciada em seguida com o login de um utilizador diferente.
Em relação ao segundo teste, foi possível verificar que o erro registado entre a posição onde se
encontrava o smartphone e a posição que este reportou para o servidor é bastante aceitável para um
sistema deste tipo, tendo sempre em conta aquilo que foi referido atrás, ou seja, é muito provável que
se obtenham precisões diferentes consoante se utilizem smartphones de outros modelos que não
foram utilizados nestes testes.
57
5.Considerações finais e trabalho futuro
No final desta dissertação é possível afirmar que os objetivos propostos no início foram alcançados
com sucesso.
Um sistema que pode ser utilizado no controlo de uma frota foi desenvolvido e testado para verificar
que se encontra totalmente a funcionar.
Ao longo do desenvolvimento deste sistema, verificou-se que ele poderia tornar-se numa ferramenta
muito mais abrangente e que a sua utilização poderia ir para além de apenas um sistema de controlo
de uma frota.
Como ele permite monitorizar a localização em tempo real de um smartphone, este sistema pode até
ser utilizado, por exemplo, por pais que queiram controlar a localização dos seus filhos em tempo
real.
Como a tecnologia base do sistema desenvolvido é o sistema GPS, as limitações inerentes ao
sistema GPS são também transportadas para o sistema desenvolvido nesta dissertação. Por
exemplo, a hipótese de utilizar este sistema num ambiente indoor é considerada nula uma vez que o
sistema GPS não o permite.
Para além disso, temos que ter em conta também que a utilização do sistema desenvolvido está
dependente da cobertura da rede móvel. Esta e o sistema GPS são as duas tecnologias mais
importantes para a total eficácia do sistema desenvolvido.
Apesar do sistema se encontrar totalmente funcional existem certos itens que poderão ser
melhorados ou mais desenvolvidos. Se existisse a possibilidade de avançar para a comercialização
deste sistema, era necessário levar a cabo alguns melhoramentos ao sistema, melhoramentos esses
que ficam remetidos para trabalho futuro.
No caso do servidor, podem ser acrescentadas opções para a gestão do mesmo, como por exemplo,
a hipótese de visualização dos utilizadores conectados em cada momento, ou mesmo a possibilidade
de realizar alterações à base de dados através do interface da aplicação servidor.
A gestão da base de dados é também importante que seja tida em conta no melhoramento do
trabalho no futuro, uma vez que com o passar do tempo esta vai ficar muito sobrecarregada existindo
assim a necessidade de eliminar alguns dados que pela sua antiguidade sejam considerados
dispensáveis.
Neste caso, para não perder a totalidade dos registos de cada utilizador poderia ser implementada
uma solução que eliminasse algumas posições e assim, passado algum tempo, em vez de o histórico
dos utilizadores contar com registos de 5 em 5 segundos passar a contar com registos de 10 em 10
segundos.
58
Em relação ao website desenvolvido, no trabalho futuro podem ser implementadas novas
funcionalidades que sejam uteis na administração dos utilizadores deste sistema. Uma dessas
funcionalidades é a criação de barreiras geográficas que serve para controlar se os utilizadores
abandonam uma certa zona geográfica.
Por fim, é pertinente indicar ainda como trabalho futuro a hipótese de implementar uma função na
aplicação Android que consista em variar o intervalo de atualização da posição conforme, por
exemplo, a velocidade com que o utilizador se desloca.
59
Referências
[1] J. Sanguino, “Material de apoio à disciplina de Sistemas de Navegação do Mestrado em
Engenharia Aeroespacial do Instituto Superior Técnico,” 2 º Sem 2012/2013.
[2] United States Government, “Official U.S. Government information about the Global Positioning
System (GPS),” [Online]. Available: http://www.gps.gov. [Acedido em Agosto e Setembro 2014].
[3] F. S. T. V. Diggelen, A-GPS: Assisted GPS, GNSS, and SBAS, Artech House, 2009.
[4] “NMEA Data,” [Online]. Available: http://www.gpsinformation.org/dale/nmea.htm. [Acedido em
2014].
[5] J. H. G. d. Costa, Dissertação de Mestrado com o título: "Monitorização Electrónica em
ambientes 3D", Lisboa: Instituto Superior Técnico, 2012.
[6] “NMEA 0183,” [Online]. Available: http://pt.wikipedia.org/wiki/NMEA_0183. [Acedido em
Setembro 2014].
[7] P. D. O. Branquinho, Trabalho de Pós Graduação em Redes Computadores com o título:
"Redes GSM e GPRS", Universidade Estadual de Campinas Unicamp.
[8] Breno Perim Pimenta, “Simulação de Alternativas de Alocação de Recursos Rádio no Sistema
GSM/GPRS,” [Online]. Available: http://www.teleco.com.br/tutoriais/tutorialgprsaloc/. [Acedido
em Agosto 2014].
[9] V. Portugal, “Cobertura dados móveis,” [Online]. Available:
http://www.vodafone.pt/main/ajuda/cobertura/. [Acedido em Setembro 2014].
[10] B. T. F. J. Marita Maestrelli, “Segurança na Web,” CAP/UFRJ, 2000.
[11] Wikipedia, “SQL,” [Online]. Available: http://pt.wikipedia.org/wiki/SQL. [Acedido em Setembro
2014].
[12] C. J. H. Elliott D. Kaplan, Understanding GPS Principles and Applications, ARTECH HOUSE,
INC., 2006.
[13] H.-J. V. a. J. E. S. Christian Bettstetter, “GSM Phase 2+ General Packet Radio Service GPRS:
Architecture, Protocols and Air Interface,” 1999.
[14] L. B. X. Guenda, “Dissertação de Mestrado: Controlo de Sistemas M2M e interface com Google
Earth,” Universidade de Aveiro, 2009.
60
[15] J. Pires, “Acetatos da cadeira de Redes de Telecomunicações do Instituto Superior Técnico,” 1 º
Sem 2012/2013.
[16] Wikipedia, “Global Positioning System,” Wikipédia, [Online]. Available:
http://en.wikipedia.org/wiki/Global_Positioning_System. [Acedido em Julho, Agosto e Setembro
2014].
[17] NAVSTAR User Equipment Introduction, Public Release Version, “Navigation Center,” 1996.
[Online]. Available: http://www.navcen.uscg.gov. [Acedido em Setembro 2014].