sistema de gestão de uma frota de veículos baseado em gps · android, um servidor que contem uma...

74
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

Upload: vandiep

Post on 10-Nov-2018

214 views

Category:

Documents


0 download

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

I

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.

III

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

V

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

VII

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.

44

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].