locbus - ufpro lpc1768 pode operar até uma freqüência de 100 mhz. o processador arm cortex-m3...

79
UNIVERSIDADE FEDERAL DO PARANÁ Setor de Tecnologia – Engenharia Elétrica LocBus Sistema de Rastreamento de Transportes Coletivos CURITIBA – 2011

Upload: others

Post on 27-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

UNIVERSIDADE FEDERAL DO PARANÁSetor de Tecnologia – Engenharia Elétrica

LocBus

Sistema de Rastreamento de Transportes Coletivos

CURITIBA – 2011

Page 2: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Marcelo Baggio

LocBus

Sistema de Rastreamento de Transportes Coletivos

Monografia apresentada à disciplina TE105 (Trabalho de Conclusão de Curso) realizado pelo aluno Marcelo Baggio, portador do GRR20062548, para aprovação na matéria e requisito parcial para obtenção do título de engenheiro eletricista.

Orientador: Prof. Dr. Márlio J do C. Bonfim.

CURITIBA – 2011

Page 3: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Marcelo Baggio

LocBus

Sistema de Rastreamento de Transportes Coletivos

Monografia apresentada à disciplina TE105 (Trabalho de Conclusão de Curso) realizado pelo aluno Marcelo Baggio, portador do GRR20062548, para aprovação na matéria e requisito parcial para obtenção do título de engenheiro eletricista.

Orientador: Prof. Dr. Márlio J do C. Bonfim.

COMISSÃO EXAMINADORA

_______________________________ Prof. Dr. Márlio J. Do C. Bonfim

_______________________________ Prof. Dr. Alessandro Zimmer

_______________________________ Profª. Dra. Giselle Ferrari

Curitiba, 01 Julho de 2011

Page 4: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

AGRADECIMENTOS

À minha família, em especial meu irmão Gustavo Baggio, que me ajudou e auxiliou na área de banco de dados e no Sistema Geográfico.

Ao meu colega de trabalho Rodolfo Bandeira, que emprestou o servidor onde este sistema está hospedado e auxiliou em diversos momentos.

Ao professor Orientador Márlio Bonfim pela ajuda prestada no desenvolvimento deste projeto.

Aos professores da UFPR por todo o conhecimento passado ao longo destes anos que permaneci na instituição.

Page 5: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

RESUMO

A monografia visa exibir um novo sistema para melhorar a qualidade do transporte

público na cidade. Mostrar os passos realizados, bem como testes e resultados, para o projeto

de um rastreador, e uma aplicação web capaz de mostrar rotas, paradas e uma estimativa de

horário. Serão apresentados custos, peças, e toda a teoria envolvida para a construção do

protótipo final.

Palavras-chaves: Rastreamento, transporte, estimativa, GIS, aplicativo, ônibus.

Page 6: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

ABSTRACT

This monograph shows a new system to improve the quality of public transport in the

city. Shows the steps taken, tests and results, for the project of a tracker and a web

application capable of displaying routes, bus stops and an estimated time. Will be presented

costs, parts, and all the theory involved to build the final prototype.

Key words: Tracking, transport, estimate, GIS, application, bus.

Page 7: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

LISTA DE FIGURAS

Figura 1: Sistema de rastreamento…........................................................................................ 5

Figura 2: Esquemático ligação Serial....................................................................................... 6

Figura 3: LPC1768 Diagrama de Blocos Simplificado …....................................................... 8

Figura 4: Mbed e pinagem …................................................................................................... 9

Figura 5: Rede GPRS …......................................................................................................... 10

Figura 6: Protótipo do rastreador …........................................................................................ 15

Figura 7: Esquemático do Circuito …..................................................................................... 16

Figura 8: Circuito do regulador chaveado LM2576 …........................................................... 17

Figura 9: Placa de circuito impresso, visão Superior …......................................................... 18

Figura 10: Placa de circuito impresso, visão Inferior …......................................................... 19

Figura 11: Visão Geral do firmware …................................................................................... 21

Figura 12: Fluxograma do programa ….................................................................................. 22

Figura 13.a: Comandos enviados pelo Rastreador ….............................................................. 24

Figura 13.b: Comandos enviados pelo Rastreador – continuação …...................................... 25

Figura 14: Fluxograma do Servidor ….................................................................................... 35

Figura 15: Sistema rastreando um veículo em uma rota de ônibus ….................................... 39

Figura 16: Distância entre dois pontos geográficos …........................................................... 42

Figura 17: Distância entre dois pontos no círculo unitário …................................................. 43

Figura 18: Esfera unitária para demonstração da fórmula de Haversine …............................ 44

Figura 19: Trapézio isósceles retirado da esfera unitária ….................................................... 45

Figura 20: Triângulo para determinar o ângulo AÔB …......................................................... 46

Figura 21: Distância medida pelo sistema LocBus …............................................................. 48

Figura 22: Distância medida pelo Google Maps …................................................................ 49

Figura 23: Rastreador montado parcialmente ….................................................................... 57

Page 8: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 24: Rastreador dentro do case …................................................................................. 57

Figura 25: Teste da função de rastreamento do sistema …..................................................... 59

Figura 26: Previsão de horário …............................................................................................ 60

Figura 27: Tempos medidos e tempo estimado ….................................................................. 62

Page 9: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

LISTA DE ACRÔNIMOS

• ADC – Analogic-Digital Converter

• API – Aplication Programming Interface

• CAN – Controller Area Network

• CSS – Cascading Style Sheets

• DAC – Digital-Analogic Converter

• DNS – Domain Name System

• ETSI – European Telecommunications Standards Institute

• GIS – Geographic Information System

• GPIO – General Purpose Input/Output

• GPRS – General Packet Radio Service

• GPS – Global Positioning System

• GSM – Global System for Mobile Communications

• HTML - HyperText Markup Language

• IP – Internet Protocol

• LAN – Local Area Network

• MAC – Media Access Control

• NMEA – National Marine Electronics Association

• PHP - Hypertext Preprocessor

• PPP – Point to Point Protocol

• PWM – Pulse-Width Modulation

Page 10: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

• RAM – Random Access Memory

• ROM – Read Only Memory

• RTC – Real Time Clock

• SQL – Structured Query Language

• TCP – Transmission Control protocol

• UART – Universal Asynchronous Receiver/Transmitter

• UDP – User Datagram Protocol

• USB – Universal Serial Bus

Page 11: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

SUMÁRIO

Introdução …............................................................................................................................. 4

2. LocBus ….............................................................................................................................. 6

2.1 Hardware ….................................................................................................................... 6

2.1.1 Microcontrolador …............................................................................................... 7

2.1.2 Mbed ….................................................................................................................. 8

2.1.3 Modem …............................................................................................................... 9

2.1.4 GPS …................................................................................................................... 11

2.1.4.1 Características Técnicas …................................................................. 12

2.1.4.2 Protocolo NMEA 0183 …................................................................... 13

2.1.5 Protótipo …............................................................................................................14

2.1.6 Placa …................................................................................................................. 15

2.2 Firmware ….................................................................................................................. 20

2.2.1 A Máquina de Estados …...................................................................................... 22

2.3 Servidor ….................................................................................................................... 26

2.3.1 API Google Maps …............................................................................................. 27

2.3.2 MySQL …............................................................................................................. 29

2.3.2.1 Comunicando com o MySQL ….......................................................... 30

2.3.2.2 Construindo Queries …........................................................................ 30

2.3.3 PHP …................................................................................................................... 31

2.3.3.1 PHPMyAdimin …................................................................................. 31

2.3.4 Sistema de Informação Geográfico (GIS) …......................................................... 31

2.3.5 GeoCode reverso e os DynamapID's …................................................................ 33

2.3.6 Estrutura do Servidor …....................................................................................... 34

1

Page 12: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

2.3.6.1 Index.php ….......................................................................................... 35

2.3.6.2 Jquery.js …............................................................................................ 35

2.3.6.3 Map.js …............................................................................................... 36

2.3.6 GetRota.php …........................................................................................ 36

2.3.6.5 GetBus.php …...................................................................................... 36

2.3.6.6 GetPontos.php …................................................................................. 37

2.3.6.7 GetSpeed.php …................................................................................... 37

2.3.6.8 GetRotaID.php …................................................................................. 37

2.3.6.9 MySQL …............................................................................................ 37

2.3.6.10 Coord.php …...................................................................................... 38

2.3.6.11 Classes.php ….................................................................................... 38

2.3.7 Previsão de Horário ….......................................................................................... 39

2.3.7.1 Cálculo da distância ….......................................................................... 40

2.3.7.2 Aquisição da velocidade média …......................................................... 49

2.3.7.3 Cálculo do tempo estimado …............................................................... 50

2.3.7.4 Variáveis periódicas ….......................................................................... 50

2.4 Custos do Projeto …..................................................................................................... 52

2.4.1 Custos do rastreador …......................................................................................... 52

2.4.2 Google Maps Premier …...................................................................................... 53

2.4.3 Frota de ônibus e custo inicial ….......................................................................... 53

2.4.4 Cálculo e custo de uso de banda mensal do chip GPRS ….................................. 54

2.4.5 Custo de Manutenção …....................................................................................... 54

2.5 Testes e Resultados Finais …....................................................................................... 56

2.5.1 Rastreador …........................................................................................................ 56

2

Page 13: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

2.5.2 Função de rastreamento ….................................................................................... 58

2.5.3 Previsão de Horário …......................................................................................... 59

3. Conclusão …........................................................................................................................ 63

Referência Bibliográfica …...................................................................................................... 66

Anexo I …............................................................................................................................... .68

3

Page 14: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

1. INTRODUÇÃO

O projeto consiste no desenvolvimento de um sistema de rastreamento de transporte

coletivos, cujo principal objetivo é proporcionar aos usuários uma maneira simples de

verificar onde se localizam os ônibus de uma determinada linha, itinerários, rotas de linhas de

ônibus, previsão de chegada e outras funcionalidades.

Cerca de 2.300.000 (duas milhões e trezentas mil) pessoas usam o serviço de

transporte público em Curitiba e Região Metropolitana diariamente nas 353 linhas de ônibus

que percorrem cerca de 500.000km por dia [16]. Logo, um aplicativo que proporcione uma

melhor qualidade do serviço de transporte pode ser amplamente usada por milhares de

curitibanos que dependem do ônibus.

O acesso às informações poderá ser feito através de qualquer dispositivo com conexão

à internet, sendo que o foco principal é o uso de celulares, devido à grande disseminação de

smartphones no mercado.

O funcionamento ocorre da seguinte forma: um rastreador instalado em um veículo

requisita as coordenadas através de um módulo GPS. Estas coordenadas são enviadas a um

servidor através de uma conexão GPRS e armazenadas em banco de dados (MySQL). O

aplicativo responsável por mostrar as informações então requisita os dados do banco e os

exibem em uma página na internet desenvolvida em PHP e Javascript com a API do

GoogleMaps, onde o usuário possa acessar e visualizar o conteúdo.

A figura abaixo ilustra de forma simplificada o sistema de rastreamento.

4

Page 15: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 1 – Sistema de Rastreamento

Também é o foco dessa dissertação apresentar a teoria envolvida em cada parte do

projeto, bem como testes realizados e os resultados obtidos. Para os resultados, espera-se que

o sistema seja capaz de desenvolver a função de rastreamento e que a previsão de horário

esteja dentro do limite de erros de segundos, para o caso de um percurso normal, sem

acidentes ou anormalidades que aumentem ou diminuam muito a expectativa de tempo.

5

Page 16: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

2. LOCBUS

2.1 HARDWARE

O hardware consiste na parte física do dispositivo, formada por um microcontrolador

que gerencia o rastreador e envia comandos para um modem GPRS/GPS. Este, por sua vez, é

responsável por coletar as coordenadas GPS e as enviar do dispositivo para o servidor.

A comunicação entre os dois módulos (microcontrolador e modem) é estabelecida

serialmente por dois sinais: Tx (transmite os dados) e Rx (recebe os dados). Onde o sinal Tx

de um módulo é ligado no pino Rx do outro e vice-versa, e um sinal de terra é comum à todos.

Com estes três fios é possível estabelecer a comunicação entre o microcontrolador e o modem

GPRS. As figuras abaixo mostram como é feita a ligação serial entre a placa do

microcontrolador e a placa do modem GPRS.

Figura 2 – Esquemático da ligação serial entre os dois módulos

Importante salientar que foram usados transistores para fazer a transição do sinal de

um módulo para o outro. O Modem é alimentado por 5V enquanto o microcontrolador usa

6

Page 17: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

3.3V, o que poderia ocasionar danos à entrada do controlador caso a tensão mais alta fosse

usada.

2.1.1 Microcontrolador:

Segundo datasheet “user manual lpc17xx”, Agosto de 2010, o LPC1768 é um

microcontrolador ARM Cortex-M3 para aplicações embarcadas que exigem um elevado nível

de integração e baixa dissipação de energia.

O LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM

Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de

instrução local separado do barramentos de dados, bem como um terceiro bus para os

periféricos.

Os periféricos do LPC1768 incluem 512kB de memória flash, até 64 kB de memória

de dados, Ethernet MAC, uma interface USB que pode ser configurado como Host, ou

Device, 4 UARTs, 2 canais CAN, dois controladores de SSP, SPI, 3 interfaces I²C, I²S, 8

canais ADC de 12 bits, 10 bits DAC, controle de motor PWM, quatro temporizadores de uso

geral, RTC de baixa potência com fonte de bateria separada, e até 70 pinos de I / O.

O diagrama de blocos simplificado do microcontrolador pode ser visto na figura 2

abaixo.

7

Page 18: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 3 – LPC1768 Diagrama de Blocos simplificado, referência [1].

2.1.2 Mbed:

Visando a rápida evolução do projeto, optou-se por usar um kit de desenvolvimento

que utilizasse o microcontrolador já especificado acima. O Mbed oferece vários GPIOs,

interfaces seriais, ethernet, USB, conversores AD e DA usando o LPC1768. O

microcontrolador processa as informações a 4MHz, e conta com mais memória RAM, devido

a uma memória externa instalada na placa. Além disso, pode-se utilizar o compilador online

oferecido pela empresa, onde encontram-se várias bibliotecas já prontas para o Mbed, e uma

rápida forma de gravação via USB. O kit é mostrado na figura abaixo junto com a pinagem.

8

Page 19: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 4 – Mbed e pinagem, retirado de http://mbed.org

2.1.3 Modem:

No projeto, há a necessidade de enviar os dados de forma wireless. Pelo fato do

rastreador não necessitar de um grande fluxo de informações com o servidor, o serviço de

GPRS foi utilizado no projeto.

Segundo Sanders, Thorens, Reisky, Rulik e Deylitz (GPRS Networks, 2003), GPRS é

um serviço introduzido ao GSM que permite enviar e receber pacotes de dados a altas

velocidades, possibilitando Internet móvel, controle remoto de dispositivos, jogos

multiplayer, m-commerce e demais serviços.

O GPRS criou-se pela necessidade de atender a certos serviços:

• Habilitar acesso à Internet e à LAN da empresa para o usuário;

• Prover relativamente alta taxa de velocidade de transmissão de dados;

• Habilitar o usuário de ser achado a qualquer hora – através de e-mails por

exemplo, e não apenas de chamadas de voz;

9

Page 20: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

• Acesso mais flexível à rede para vários usuários ao mesmo tempo, e otimizar o

uso da rede baixando os custos para o provedor;

• Oferecer novos serviços a preços mais baixos;

A figura a seguir ilustra as vantagens do GPRS.

Figura 5 – Rede GPRS, referência [2] .

Pela facilidade oferecida e fácil disponibilização do produto, foi adquirido um modem

GPRS da fabricante italiana Telit. Outra vantagem deste modem é a integração de GPS e

entrada de SIMCard no mesmo módulo.

Para o modem estabelecer conexão com a rede GPRS e também para fornecer as

informações de coordenadas GPS, é necessário o uso de comandos que digam ao modem o

que deve ser feito. Para isso, vários modems usam um protocolo de comandos, conhecido

como Comandos AT. Há centenas de comandos, para as mais diversas funções como:

discagem para celular, armazenamento de números na memória, conexão GPRS, tocar

campainha, entre outros. Enviando certos comandos para o modem, é possível configurar e

conectá-lo à rede GPRS e enviar os dados para o servidor.

10

Page 21: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

O módulo GM862 pode ser guiado através da interface serial usando os comandos AT

padrões. O módulo é compatível com:

• Lista de comandos AT padrão de Hayes, para manter a compatibilidade com

programas já existentes;

• ETSI GSM 07.07 comandos AT específicos e comandos GPRS;

• ETSI GSM 07.05 comandos AT específicos para SMS (Short Message Service) e CBS

(Cell Broadcast Service);

• Comandos FAX Classe 1.

E ainda o módulo suporta uma lista de comandos AT especial desenvolvida pela Telit.

O anexo I mostra todos os comandos AT usados neste projeto, suas funções e o

significado de cada possível resposta.

Também foi utilizado uma placa de desenvolvimento para o modem (Smart GM862),

expondo os pinos e cuidando da regulação da tensão de entrada.

2.1.4 GPS:

De acordo com Hegarty e Kaplan (Understanding GPS, Principles and Aplications,

2006), o GPS é totalmente funcional e atende aos critérios estabelecidos nos anos 60 de um

sistema de posicionamento ótimo. O sistema fornece uma forma precisa e global de se obter

coordenadas e velocidade. Também disseminou a forma de exibição de tempo Coordinated

Universal Time (UTC). A constelação de satélites consiste em 24 satélites arranjados em 6

planos de órbita com 4 satélites em cada órbita. Uma rede de monitoramento global monitora

os status dos satélites, enviando dados e atualizando os satélites quando necessário. O GPS

envia dados em apenas duas freqüências: L1 (1575,42MHz) e L2 (1227.6MHz) usando uma

técnica chamada Code Division Multiple Access (CDMA).

11

Page 22: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

2.1.4.1 Características Técnicas:

No modem Telit em específico, o módulo GM862-GPS inclui um chip receptor de

sinal GPS SiRFstarIII, que suporta localização em tempo real em área urbana e sempre que

aquisições de alta sensibilidade são necessárias. Não possui antena interna, logo uma antena

externa de é necessária. Como principais características do receptor GPS, podem-se citar:

• Alta sensibilidade para recepção dentro de estabelecimentos, até -159dBm (com

antena ativa);

• “Hot start” menor que 3 segundos;

• Suporta 20 canais GPS L1 1575.42MHz;

• Precisão maior que 2,5m;

• Formato da resposta do GPS respeitando o protocolo NMEA 0183;

• Comandos AT dedicados para o GPS;

• Baixo consumo

O tempo para fixar a primeira coordenada válida demora menos de 3 segundos para

Hot Start, e menos de 35 segundos para os modos Warm Start e Cold Start. A sensibilidade

do módulo chega a até -159dBm. O módulo consome em média 55mA, incluindo 35mA para

o hardware e 20mA para a antena externa. A antena do GPS deve respeitar as seguintes

especificações:

• Frequência: 1575,42MHz;

• Ganho: 1,5dBi < Ganho < 4,5dBi

• Impedância: 50 Ohm

• Amplificação: Típica 25dBm (max. 27dBm)

12

Page 23: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

• Tensão: Deve aceitar entre 3V e 5V DC

• Corrente: Típica de 20mA (max. 40mA)

2.1.4.2 Protocolo NMEA 0183:

O NMEA 0183 são especificações elétricas e de dados combinados para comunicação

entre equipamentos marinhos, entre eles o GPS. É controlado pelo National Marine

Electronics Association nos Estados Unidos.

A comunicação definida pelo protocolo NMEA é um link serial, com o fluxo de

dados de 4800 bits/segundo, sendo transmitidos 8 bits de dados, sem controle de paridade,

sem handshake e com um bit de parada. A sentença NMEA pode ser formado por qualquer

caractere da tabela ASCII, sendo que esta mensagem sempre começa com o símbolo “$” e

termina com um carriege return “\r” seguido de um new line “\n”. Sempre há um talker se

comunicando com um ou mais listeners, análogo a um componente mestre requisitando

informações aos componentes escravos.

Há três tipos de sentenças:

• Talker: Em que o talker requisita informações aos listeners;

• Proprietary: Em que empresas criam seus próprios formatos;

• Query: Em que o listener solicita uma determinada sentença para o talker.

No caso deste projeto, apenas foi usada sentenças tipo “Talker”. Estas ocorrem

quando um dispositivo mestre requisita informações a um dispositivo escravo, no caso, um

módulo GPS. Dessa forma, pode-se identificar o tipo de dispositivo “listener” através das

duas primeiras letras que vêm após o inicio “$” da sentença, no caso do GPS, as duas letras

são GP. Por isso, uma solicitação de coordenadas para um GPS obedecendo o formato

13

Page 24: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

NMEA, sempre começará com “$GP[...]”. Há diversos outros dispositivos, e cada um tem seu

par de letras definidos.

Para o modem, ao enviar o comando AT (AT$GPSACP) que requisita a posição GPS, é

enviada uma resposta no seguinte formato:

$GPSAPC: <UTC>, <latitude>,<longitude>,<hdop>,<altitude>,<fix>,<cog>,<spkn>,<date>,<nsat>

Onde as informações importante ao projeto são:

<UTC> - Hora UTC (hhmmss.sss);

<latitude> - No formato ddmm.mmmm N/S, onde dd – graus e mm.mmmm – minutos,

seguido de N/S: Norte/Sul;

<longitude> - No formato dddmm.mmmm E/W, idem ao acima, seguido de E/W:

Leste/Oeste;

<spkm> - Velocidade sobre a terra (Km/h);

<date> - Data no formato ddmmyy (dia, mês e ano respectivamente);

Esta informação é gravada no microcontrolador e processada pelo firmware, que será

explicado mais adiante.

2.1.5 Protótipo:

O protótipo do rastreador é mostrado abaixo, com os dois módulos ligados por uma

comunicação serial. Medições realizadas mostram que o consumo médio do rastreador em

espera é de 200mA, chegando a 300mA quanto o modem está enviando dados ao servidor,

pois é necessário fornecer maior corrente elétrica à antena GPRS afim de aumentar a potência

para transmissão.

Os testes foram realizados com uma bateria selada de chumba-ácida capaz de fornecer

2300mAH para o rastreador.

14

Page 25: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 6 – Protótipo do rastreador

2.1.5 Placa:

A placa de circuito impresso foi desenvolvida usando a versão livre do software Eagle.

É composta por uma placa dual layer, projetada para regular a tensão de entrada (12V) para as

tensões necessárias para os módulos (4V para o modem Telit e 5V para a placa Mbed).

Também há transistores responsáveis pela transição de sinal na comunicação serial entre os

dois módulos. O esquemático do circuito pode ser verificado abaixo.

15

Page 26: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 7 – Esquemático do circuito

16

Page 27: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

A tensão de entrada (12V) passa por um regulador de tensão com saída ajustável.

Optou-se por usar um regulador chaveado (LM2576), devido ao sobreaquecimento causado

pela dissipação de potência de um regulador linear. Segundo datasheet da fabricante [17] do

regulador, a tensão de saída pode ser calculada como:

Vout = Vref * (1 + (R2/R1)) (1)

Onde Vref vale 1,23[V] segundo [17], e Vout é a tensão de saída do regulador, e R2 e

R1 fazem parte de um divisor de tensão para realimentar o circuito regulador. Conforme a

figura abaixo.

Figura 8 – Circuito do regulador chaveado LM2576, retirado de [17]

A tensão desejada é de 4,6[V], logo, fixando um valor de R1 de 1,2[kOhm] e usando

a equação (1) acima, tira-se que o valor de R2 vale 3,3[kOhm].

A tensão já regulada serve para alimentar o kit Mbed (trabalha entre 4,5[V] e 14,0[V]

segundo a fabricante), e passa por um diodo com queda de 0,7[V] para alimentar o modem

Telit (que opera entre 3,6[V] e 4,2[V]). Entre o Mbed e o Telit há alguns transistores

responsáveis por realizar a transição de sinal da comunicação serial de um módulo para o

outro.

17

Page 28: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

A função da placa é poder usar o modem sem o kit, e integrar os dois módulos para

que possa ser instalado em algum veículo e dar continuidade ao projeto. Optou-se por manter

o kit de desenvolvimento Mbed na placa, por uma questão de facilidade de projeto e agilidade

no desenvolvimento. Figuras do projeto da placa são mostradas abaixo.

Figura 9 – Placa de circuito impresso, vista superior

18

Page 29: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 10 – Placa de circuito impresso, vista inferior

19

Page 30: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

2.2 FIRMWARE

Segundo Sloss, Symes e Wright (ARM system developer's Guide, 2004), o firmware é

um programa totalmente embarcado de baixo nível, que providencia uma interface entre

hardware e a aplicação. Está alocada na memória ROM do dispositivo e é sempre executada

quando a força de alimentação é aplicada ao equipamento embarcado. O firmware pode se

manter ativo após a inicialização do sistema e suportar operações básicas para o sistema. Uma

das principais funções do firmware é providenciar um mecanismo estável para carregar e

iniciar um sistema operacional.

No projeto, não há necessidade da utilização de um sistema operacional embarcado,

logo o firmware é responsável por comandar todas as funções do rastreador. O firmware foi

desenvolvido em C/C++ devido à grande difusão desta linguagem de programação e por ser

esta a linguagem usada pelo ambiente de desenvolvimento do Mbed.

Um fluxograma simplificado do firmware encontra-se abaixo.

20

Page 31: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 11 – Visão geral do firmware

O bloco “Boot do programa” contém apenas inicialização de variáveis e definição de

parâmetros e classes que serão usados durante o programa.

Já os blocos “Inicialização do GPS”, “Inicialização do GPRS” e “Aquisição de dados

do GPS” são compostos por vários comandos AT a serem enviados. Seguem na figura a

seguir o fluxograma de cada bloco e uma parte do código onde é enviado um dos comandos

AT.

21

Page 32: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 12 – Fluxograma de três blocos do programa

void command::CPIN() { //Envia"AT+CPIN?" do{ send ("AT+CPIN?\r"); }while (!receive(READY)); //enquanto não receber "READY" }

Codigo 1 – Envio de comando para verificar o SIMCard.

2.2.1 A Máquina de Estados:

Todos os comandos AT são respondidos por alguma palavra ou frase pelo modem,

como mostrado no Anexo I. A resposta de todos os comandos usados podem ser filtradas por

algumas palavras-chaves. São elas:

22

Page 33: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

• OK: O comando é válido e foi enviado com sucesso;• CGREG: palavra-chave da resposta ao comando AT+CGREG? (vide anexo I);• READY: palavra-chave da resposta ao comando AT+CPIN? (vide anexo I);• CONNECT: Resposta vinda quando o modem se conecta ao servidor;• GPRS 0 ou 1: Resposta quando o modem está (GPRS 1) ou não (GPRS 0) conectado à

rede GPRS;• ERROR: Palavra-chave quando ocorre algum erro no comando enviado;

Para o microcontrolador saber qual resposta foi enviada pelo modem, foi

implementada uma máquina de estados que analisa todas as letras recebidas pela comunicação

serial.

Por exemplo, quando enviamos o comando “AT” (testa conexão com o modem,

semelhante a um “Hello”), espera-se que o modem responda um “OK”. A máquina de estados

permanece no estado inicial onde espera o primeiro caractere chegar pela serial, que pode ser

um “O”, um “C”, um “R”, um “G” ou um “E”. Supondo que tenha recebido a letra “O”, a

máquina de estados irá para um próximo estágio, onde irá esperar pela letra “K”. Se não

receber um “K”, a máquina de estados reinicia e volta para o estado inicial. Se receber a letra

“K”, um indicador que diz ao firmware “foi recebido um OK” é enviado, e o programa

continua. Dessa forma, as demais palavras-chaves são recebidas, qualquer outra informação é

descartada.

Para se conectar ao servidor, o modem acessa uma página na web, para onde são

enviados os dados como parâmetros no próprio endereço da página. Caso a conexão não possa

ser estabelecida, o rastreador armazena os dados para enviar na próxima tentativa de conexão.

Atualmente o rastreador consegue armazenar mais de 400 coordenadas na memória.

Após enviar os dados ou gravá-los na ROM, o dispositivo entra em modo sleep para

esperar o momento de envio da próxima coordenada.

23

Page 34: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Para testes, foi usado o programa HyperTerminal para Windows, onde pode-se

verificar todos os comandos enviados e as respostas vindas do protótipo. As imagens abaixo

mostram o rastreador enviando uma coordenada válida para o servidor.

Figura 13.a – Comandos enviados pelo rastreador

24

Page 35: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 13.b – Continuação dos comandos enviados pelo rastreador

25

Page 36: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

2.3 SERVIDOR

Atualmente o servidor apenas recebe os dados vindos do rastreador e os exibe em uma

página na internet. Pode-se verificar o funcionamento acessando o website

http://www.flashunderground.com . Para isso, as funções são separadas em duas partes:

• O rastreador envia as coordenadas através de um site em PHP, passando os dados

como parâmetros que serão recebidos pelo servidor. Estes dados são então

armazenados em um banco de dados, e o rastreador se desconecta do servidor;

• A outra parte acontece quando o usuário acessa a página na internet. Desta vez a

página é construída usando HTML, PHP e JavaScript com a API do GoogleMaps. O

mapa é carregado na página HTML, e o código em PHP acessa as coordenadas

gravadas no banco de dados mencionado acima, e então as envia para a API, que é

responsável por inserir os elementos que são vistos na tela e como o mapa de

comporta conforme o usuário navega pelo mapa.

A página HTML é responsável por chamar os arquivos JavaScript que serão usados e

definir o estilo da página usando CSS. Segue o código abaixo:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>LocBus</title> <link type="text/css" href="css/style.css" rel="stylesheet" media="all" /> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript" src="js/map.js"></script>

26

Page 37: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>

</head> <body> <h1>LocBus</h1>

<input type="button" value="Guaraituba" id="button" /> <div id="map"></div> </body> </html>

Código 2 – Página HTML

2.3.1 API Google Maps:

Segundo Svennerberg, Gabriel (Beggining Google Maps API 3, 2010), o Google Maps

é uma ferramenta amplamente usada para ver a localização de coisas, procurar um endereço,

conseguir direções enquanto dirige, e muito mais. Aplicações que usam mapas vêm crescendo

muito nos últimos anos e revolucionam como as informações são vistas e usadas. A API do

Google Maps permite mostrar dados de uma forma mais eficiente e usável.

A natureza dinâmica do Google Maps de deve ao uso de HTML, CSS e JavaScript

trabalhando juntos. Os quadros do mapa são imagens carregadas usando chamadas Ajax e

inseridas em uma <div> na página HTML. Conforme o usuário navega pelo mapa,

informações de coordenadas e nível de zoom são enviadas pela API para o Ajax, que retorna

as novas imagens a serem mostradas.

A API consiste basicamente em um arquivo JavaScript que contém classes com

métodos e propriedades que dizem ao mapa como ele deve se comportar.

Para o uso do Google Maps, deve-se respeitar alguns termos de serviços. Traduzido de

[10] “Google Maps/Google Earth APIs Terms of Service”, alguns dos requisitos são:

27

Page 38: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

• Regras Gerais:

- Acesso Livre (sem pagamentos): A implementação usando a API deve ser acessível

aos usuários livre de cobranças, assinaturas pagas, ou outras formas de acesso restrito

por pagamentos. Esta regra vale para todo o conteúdo implementado agora e para

qualquer conteúdo que venha a ser vinculado no futuro.

- Acesso público (sem firewall ): A implementação usando a API não deve operar

somente atrás de um firewall, ou somente dentro de uma rede interna (exceto durante

fase de testes e desenvolvimento), ou dentro de uma comunidade fechada (por

exemplo, acesso somente a usuários convidados).

• Exceções:

- Versão Enterprise do Google: As regras das sessões anteriores não se aplicam caso

se obtenha a versão Enterprise do Google ou que seja concedida uma permissão

escrita da Google.

- Aplicações Móveis: A regra de “Acesso Livre” descrita anteriormente não se aplica

caso esteja se desenvolvendo aplicações para aparelhos móveis que possam ser

vendidos por uma taxa através de uma loja online e que possa fazer o download da

aplicação para uma aparelho que consiga acessar essa loja.

• Exemplos:

- A aplicação pode solicitar que usuários realizem um login, porém não pode cobrar

para isso;

- Pode ser cobrada uma taxa para a sua aplicação caso esta esteja disponível para

download para um aparelho rodando Android através da Android Market.

Se forem recebidas mais de 2.500 solicitações de geocódigo feitas por um mesmo

endereço IP em um período de 24 horas, ou se as solicitações forem enviadas com muita

28

Page 39: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

frequência por um único endereço IP, o geocodificador da Google Maps API começará a

responder com o código de status 620. Se o uso excessivo do geocodificador continuar, o

acesso ao geocodificador da API do Google Maps a partir desse endereço IP pode ser

bloqueado permanentemente.

Ao usar uma das classes de geocodificação da API do Google Maps, as solicitações

são feitas pelo navegador da web do usuário e são contabilizadas na cota do endereço IP do

usuário. Isso significa que o uso excessivo por parte de um usuário não terá impacto em

outros usuários do site. No entanto, se muitos usuários acessarem as APIs do Google Maps

por meio de um único proxy, eles compartilharão a cota do endereço IP do proxy.

Quando as solicitações do geocodificador são feitas com o Serviços de geocodificação,

elas são contabilizadas na cota do endereço IP do sistema que está fazendo a solicitação

HTTP. Porém, não existe um limite para o número de visualizações de páginas de mapas no

site.

O custo estimado para se adquirir uma licença quando é ultrapassado o limite de

geocodificações é de R$32.000,00 por ano.

2.3.2 MySQL:

De acordo com Valade, Janet (PHP and MySQL Web Develpment, 2008), muitas

páginas web dinâmicas necessitam de um banco de dados. Este banco contém informações

que serão mostradas ao usuário pela página, ou irá guardar informações provenientes do

usuário, e em várias aplicações, fará as duas coisas.

O MySQL, o mais popular banco de dados para ser usado em páginas web, foi

desenvolvido para ser rápido e pequeno, especialmente para sites. Este banco é muito famoso

em sites escritos em PHP.

29

Page 40: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

O PHP e o MySQL trabalham bem juntos, pois o PHP tem funções designadas

especificamente para se comunicar com o MySQL. As funções se conectam ao banco e

enviam as queries.

2.3.2.1 Comunicando com MySQL

Toda a interação com o banco de dados é feita passando mensagens para o servidor

MySQL. A comunicação é feita usando Structured Query Language (SQL), que é uma

linguagem padrão interpretada pela maioria dos bancos de dados.

2.3.2.2 Construindo SQL Queries

SQL é composta, na maioria, por palavras em inglês, colocadas em frases muito

similares à língua inglesa. As queries são ações (verbos) que dizem ao MySQL o que deve ser

feito, tais como: CREATE, DROP, INSERT, SELECT, UPDATE, DELETE. Por exemplo:

SELECT lastName FROM Member

Essa query retorna todos os "lastNames" (sobrenomes) armazenados na tabela

"Member".

As queries podem se tornar mais complexas como esta:

SELECT h.DataHora as DataHora, h.latitude as latitude, h.longitude as longitude, h.DynamapID as DynamapID, asText(rcc.ogc_geom) as coordenadas

FROM HistoricoPosicoes h INNER JOIN RUAS_CURITIBA_COLOMBO rcc

ON rcc.DYNAMAP_ID = h.DynamapIDEssa query retorna a hora, latitude, longitude e dynamapID da tabela

“HistoricoPosicoes” e as coordenadas da tabela “RUAS_CURITIBA_COLOMBO” para o

dynamap pertencente ao HistoricoPosicoes

30

Page 41: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

2.3.3 PHP:

Php é uma linguagem de script designada especificamente para o uso na Web,

contendo recursos para auxiliar na programação de tarefas necessárias para desenvolver

aplicações dinâmicas. É uma linguagem usada em mais de 20 milhões de domínios, e sua

popularidade continua crescendo. A sintaxe do php é similar à do C, ou até mesmo mais

simples, já que não inclui alguns conceitos mais difíceis do C, retirado de Valade, Janet (PHP

and MySQL Web Develpment, 2008).

2.3.3.1 PHPMyAdmin:

PhpMyAdmin é uma ferramenta livre escrita em PHP com o intuito de ajudar na

administração do MySQL na internet. A ferramenta suporta uma larga faixa de operação com

MySQL. As mais freqüentes operações usadas são suportadas por uma interface ao usuário (o

banco de dados, tabelas, campos, relações, index, usuários, permissões, etc), enquanto ainda

tem a opção de executar qualquer query que desejar usando uma janela especial.

Esta ferramenta foi usada para estruturar o banco de dados, criando tabelas que

são úteis à aplicação, tais como: tabela que armazena as rotas do ônibus, tabela que armazena

os pontos dos ônibus e a qual linha pertence, tabela para guardar a velocidade média de cada

linha em cada trecho da rota do ônibus; e também para inserir dados nos campos das tabelas,

como por exemplo, as coordenadas de cada ponto da linha, e os trechos que pertencem a cada

linha.

2.3.4 Sistema de Informação Geográfico (GIS):

Um GIS (Geographic Information System) é um sistema computacional capaz de

capturar, armazenar, analisar, e mostrar informações geográficas, que são dados identificados

de acordo com uma localização. O poder de um GIS vem de poder relacionar informações

31

Page 42: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

diferentes em um contexto espacial e pesquisar uma conclusão sobre este relacionamento. A

maioria das informações que se têm sobre o mundo contem referência à uma localização,

colocando esta informação em algum ponto do globo. Por exemplo: Quando uma informação

sobre chuva é coletada, é importante saber onde a chuva está localizada. Isto é feito usando

um sistema de referenciamento de local, como longitude e latitude, e talvez elevação. A

comparação da informação da chuva com outras informações, como a localização dos

pântanos de um lugar, pode mostrar que certos pântanos recebem pouca chuva. Este fato

indica que estes pântanos estão mais propensos a secar, e esta análise pode ajudar

pesquisadores a tomarem a decisões apropriadas de como os humanos devem interagir com o

pântano. Um GIS, também pode revelar novas informações importantes que levam a uma

melhor tomada de decisão.

Várias disciplinas podem se beneficiar de uma tecnologia GIS. Um mercado ativo de

GIS resultou em queda de preços e melhorias contínuas no hardware e software de

componentes GIS. Esse desenvolvimento resultará em um uso muito mais largo da tecnologia

através da ciência, governo, negócios, e indústria, com aplicações incluindo saúde pública,

mapa de crime, defesa nacional, desenvolvimento sustentável, recursos naturais, arquitetura,

planejamento regional e comunitário, transporte e logística. GIS também está divergindo em

serviços baseados em local (LBS - Location-Based Services). LBS permitem aparelhos

móveis com GPS mostrar a localização em relação a restaurantes, postos de combustível,

amigos, carros de polícia ou repassar a posição de volta para uma central para mostrar ou

realizar outro processamento. Estes serviços continuam em desenvolvimento com um

aumento na integração da funcionalidade do GPS com o aumento de eletrônicos móveis mais

poderosos (cell phones, PDA's, laptops).

32

Page 43: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Recentemente houve uma explosão de aplicações envolvendo mapas na web, como o

Google Maps e Bing Maps. Estes websites dão ao público acesso a grande quantidade de

dados geográficos.

Alguns deles, como o Google Maps e o OpenLayer, expõem uma API que possibilita ao

usuário criar aplicações customizadas. Esses toolkits normalmente oferecem mapas de ruas,

imagem aérea/satélite, geocodificação, buscas e funcionalidade de rota. Os serviços de mapa

na web começaram a adotar características mais comuns em GIS.

2.3.5 Geocode Reverso, DynamapID's e Linestring :

Geocode reverso é o processo de conseguir detalhes do endereço a partir de uma

coordenada expressa na forma de latitude-longitude. Assim, dada uma certa coordenada, é

possível saber a rua a qual aquela coordenada pertence, o CEP, a quadra e entre quais

números da rua o ponto se encontra.

Muitas vezes as coordenadas do GPS não são exatamente no ponto original, há um

erro de alguns metros embutido em algumas medições. A função do Geocode reverso, neste

caso do projeto, é para descobrir qual a rua mais próxima daquele ponto, e então deslocar o

ponto original para esta nova coordenada, tentando manter coerente as informações que são

apresentadas na tela, como por exemplo, do ícone do ônibus sempre estar dentro da linha da

rota desejada, e não em outras ruas ou apontando para o telhado de residências em volta da

linha do ônibus.

Os DynamapID's são identificadores para cada quadra de cada rua presente na

cidade de Curitiba e Região Metropolitana. Esses identificadores são únicos e usados para

criar as rotas dos ônibus ao longo da cidade. Assim, cada consulta ao banco de dados que

procure uma rota, um ponto de ônibus ou a última posição do veículo, irá retornar um ou mais

33

Page 44: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

DynamapID's que serão usados para realizar estimativa de tempo e também para apresentação

no mapa.

Cada DynamapID é composto por coordenadas que dizem onde a quadra começa e

termina. Em caso de quadras curvas, ou que seja formada por segmentos, mais coordenadas

são adicionadas entre o início e o final, representando de forma precisa as ruas da cidade.

O Geocode reverso implementado para o projeto verificar qual DynamapID

pertencente à linha do ônibus está mais perto da coordenada apontada pelo rastreador. Para

fazer este cálculo, calcula-se a distância do ponto dado pelo rastreador a todas os coordenadas

de todos os DynamapID's da rota do ônibus, a menor distância vai determinar a qual

DynamapID aquele ponto pertence. O cálculo foi implementado usando-se a fórmula de

Haversine, que será explicada e demonstrada mais adiante, na sessão 2.3.6 – Previsão de

Horário.

LineString é um tipo de dado que contém as coordenadas dos segmentos, definidos

por ada par de coordenadas consecutivas, ou seja, é uma curva com interpolações lineares

entre os pontos, porém, se linestring constituir de apenas duas coordenadas, será um areta.

Estes dados normalmente representam ruas em mapas urbanos ou rios em mapas de terreno.

2.3.6 Estrutura do servidor:

Como dito anteriormente o servidor é composto pela parte responsável em coletar

dados provenientes do rastreador e outra parte que faz a interação com o usuário. A figura

abaixo ilustra o funcionamento do servidor.

34

Page 45: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 14 – Fluxograma do Servidor

2.3.6.1 Index.php:

O index.php é responsável por ser a ponte de acesso entre o usuário e a aplicação. Este

arquivo é composto por tags HTML que estruturam a página inicial e chamam dois outros

arquivos: jquery.js e map.js, ambos escritos em javascript.

2.3.6.2 Jquery.js:

Este arquivo é uma biblioteca rápida e concisa do JavaScript que simplifica o

documento HTML, a manipulação de eventos, animação e interações com o Ajax para um

desenvolvimento web mais rápido.

35

Page 46: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

2.3.6.3 Map.js:

Este arquivo faz a interação com a API do GoogleMaps, fazendo o download do

mapa e configurando as propriedades de apresentação do mesmo. Além disso, este arquivo é

responsável por inserir os ícones no mapa, que são figuras da pasta “imagens”, e também

coleta dados de outros três arquivos. Como pode ser visto na figura 10 acima.

2.3.6.4 GetRota.php:

Este arquivo é chamado pelo map.js para retornar os DynamapID's (quadras) da rota

a qual é desejada. Para isto, é utilizada uma função que se conecta ao banco de dados e

executa uma query de seleção, tal como esta:

SELECT Ordem,DynamapID FROM Itinerario WHERE CodigoLinha=1 ORDER BY

Ordem DESC

Onde são selecionados os DynamapsID's e a ordem que eles compõem a linha, da

tabela “Ininerário” onde o código da linha é “1” (neste caso, a linha Santa Cândida/Capão

Raso). Estes dados são ordenados de forma decrescente e então são retornados para o arquivo

GetRota.php através de uma matriz de dados. O php então constrói um objeto que pode ser

lido pelo javascript e devolve este objeto para o arquivo map.js, que será responsável por

mostrar a rota no mapa.

2.3.6.5 GetBus.php:

O funcionamento deste arquivo é semelhante ao anterior, porém a query que é passada

ao MySQL seleciona outros campos de outra tabela, como por exemplo:

SELECT * FROM HistoricoPosicoes WHERE pos_id = 1

O banco irá devolver ao GetBus.php todos os campos (Hora, Data, Latitude, Longitude,

Velocidade) da tabela “HistóricoPosições” onde o identificador do ônibus é 1 (neste caso, a

36

Page 47: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

linha Santa Cândida/Capão Raso). Da mesma forma como explicado anteriormente, o php irá

encapsular estas informações em um objeto que será enviado ao javascript responsável por

exibir a última posição do ônibus no mapa.

2.3.6.6 GetPontos.php:

Segue a mesma ideia apresentada nos arquivos acima, onde são selecionadas as

coordenadas dos pontos para serem apresentadas no mapa pelo arquivo map.js. Porém nesta

tabela há, além das coordenas, campos que serão usados para realizar a estimativa do horário

dos ônibus.

2.3.6.7 GetSpeed.php:

Este arquivo tem a finalidade de devolver todas as velocidades armazenadas no

banco de dados associadas aos DynamapID's que fazem parte da rota de ônibus. Estas

velocidades são usadas para realizar a estimativa de tempo do veículo chegar aos pontos de

sua rota.

2.3.6.8 GetRotaID.php:

Também usado para realizar a estimativa de tempo, este arquivo retorna do banco o

comprimento de todos os DynamapID's que fazem parte da rota.

2.3.6.9 MySQL:

O MySQL é o banco usado para guardar informações tais como: rotas, pontos,

velocidades, posições, distâncias, etc. Como explicado anteriormente, pode-se acessar os

37

Page 48: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

dados do banco através de queries, que são comandos que dizem ao banco o que deve retornar

e como retorná-los.

O banco é organizado em tabelas, onde são inseridos os dados conforme necessários.

2.3.6.10 Coord.php:

Este arquivo é responsável por coletar as informações provenientes do rastreador,

realizar o geocode reverso e gravá-los no banco de dados, como foi descrito anteriormente na

sessão 2.3.4 Geocode Reverso e os DynamapID's.

2.3.6.11 Classes.php:

No arquivo classes.php são definidas duas classes usadas que auxiliam na elaboração

de rotas e do geocode reverso. São elas:

• Classe Ponto: Usada para armazenar a latitude e longitude das coordenadas.

Utiliza um construtor para separar a coordenadas do resto da string que o

banco retorna após uma consulta;

• Classe Line: Relaciona um DynamapID com um ponto (classe descrita

anteriormente), usada para compor as rotas e fazer o geocode reverso.

Também será útil para realizar a estimativa de tempo.

Abaixo segue uma figura da aplicação mostrando uma rota de ônibus com suas

paradas e a localização do veículo.

38

Page 49: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 15 – Sistema rastreando um veículo em uma rota de ônibus

2.3.7 Previsão de Horário

Um dos diferenciais do projeto é justamente um estimativa de quanto tempo o ônibus

demorará para chegar nos pontos da linha. Para realizar esta previsão, são necessários dados

de velocidade média do veículo e a distância ao longo de todos os DynamapID's pertencentes

à rota de ônibus.

O cálculo do tempo estimado vem de uma equação de cinemática da física (retirada

de Resnick Walker, Halliday, “Fundamentos de Física I – Mecânica”, 7ª Edição, Editora LTC,

p. 19) :

∆x = v * t → t = ∆x/v

39

Page 50: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Onde “t” é o tempo em segundos, “v” é a velocidade média no trecho em questão e

“∆x” é o comprimento do trecho do DynamapID considerado. Aplicando esta equação para

todos os trechos que compõem a rota entre o DynamapID do ônibus e da parada considerada,

e somando os tempos estimados para o veículo percorrer cada um desses trechos, obtém-se

uma previsão de tempo que o veículo necessitará para chegar na parada desejada.

2.3.7.1 Cálculo da distância:

O MySQL possui suporte à algumas funções que utilizam dados tipo geometry, que

são dados de GIS. Estas funções podem ser categorizadas como:

• Funções para “Points”: Retornam a coordenada X ou Y de um determinado ponto;

• Funções para “LineStrings”: Retornam o ponto de início e final de uma determinada

LineString, a quantidade de pontos que compõe a LineString, e também o

comprimento da LineString;

• Funções para “MultiLineString”: Retornam comprimento e se a MultiLineString é

fechada ou aberta;

• Funções para “Polygons”: Retornam a área do polígono e LineStrings que o compõe;

• Funções para “MultiPolygons”: Idem ao acima.

Dentre todas as funções, foi usada apenas a função “Glength(ls)” para LineString.

Esta função recebe como parâmetro uma LineString e retorna o comprimento dela em graus,

ou seja, retorna a diferença entre o ponto (latitude, longitude) inicial e o final, porém esta

distância não é em linha reta, e sim seguindo todos os pontos que a LineString possui, que é

muito útil em casos de trechos em curvas.

Deve-se converter o valor retornado da função “Glength” de graus para metros.

Devido ao planeta ser esférico, não é possível usar a trigonometria Euclediana, pois esta é

40

Page 51: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

relacionada a figuras planas, se fosse usada iria retornar a distâncias entre os pontos, porém

com um “túnel” ligando os dois pontos em linha reta. É necessário calcular a distância pela

superfície do planeta, como o comprimento de um arco em uma esfera. Um dos modos de se

calcular esta distância é pela lei de Haversine, que são fórmulas trigonométricas usadas por

navegadores no passado. O Versine (ou versed sine) de um ângulo A é 1-cos(A). O Haversine

é metade de um Versine, ou (1-cos(A))/2. A fórmula consiste no seguinte:

Suponhamos o planeta Terra como uma esfera de raio R (figura abaixo), com dois

pontos dados em coordenas esféricas (latitude, longitude) P1(lat1, long1) e P2(lat2, long2),

então a fórmula de Haversine (retirado de SINNOT, R. W., "Virtues of the Haversine," Sky

and Telescope, vol. 68, no. 2, 1984):

• ∆lat = lat2 – lat1

• ∆long = long2 – long1

• a = (sen(∆lat/2))² + cos(lat1) * cos(lat2) * (sen(∆long/2))²

• c = 2 * atan(sqrt(a)/sqrt(1 – a))

• d = R * c

O resultado de “c” é a distância percorrida na superfície da esfera em radianos, “a” é

o quadrado da metade do comprimento de corda (linha reta) que liga os dois pontos, e o

resultado de “d” (distância) tem a mesma unidade de R. O valor de c também é o valor

retornado pela função “Glength”, porém dado em graus. Para converter de graus para radianos

basta multiplicar o valor desejado por pi/180°.

41

Page 52: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 16 – Distância entre dois pontos geográficos

A definição histórica de uma “milha náutica” é “um minuto do arco da superfície

terrestre”. Como a superfície não é uma esfera perfeita, esta definição é ambígua. No entanto,

no Sistema Internacional (SI), o valor do comprimento de uma minha náutica é de 1,852km.

Logo, a circunferência da superfície terrestre pode ser expressa por:

360 (graus) * 60 (minutos/grau) * 1,852 (km/minuto) = 40003,2km

Como a circunferência de um círculo é dada por C = 2 * pi * R, tira-se que o valor do

raio da Terra é de:

R = 6367km

Na demonstração da fórmula, suponha uma esfera de raio unitário. A distância deve

ser multiplicada por R, que é o raio da Terra.

Inicia-se com a fórmula calculando a distância em linha reta entre dois pontos

situados sobre o círculo unitário separados por um ângulo theta, como mostra a figura abaixo.

42

Page 53: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 17 – Distância entre dois pontos no círculo unitário, redesenhado de [13]

“O” é o centro do círculo, “A” e “B” estão sobre o círculo, então o segmento AB é a

distância em linha reta entre os dois pontos. Se o ângulo AÔB = theta, então o ângulo AÔC =

theta/2, e OC é perpendicular ao segmento AB. O segmento AC pode ser calculado como AC

= sen(theta/2), portanto o segmento AB mede 2 * sen(theta/2).

Agora considerando a figura da esfera abaixo, com centro em “O” e considerando R =

1 (esfera unitária), os pontos de interesse são A (lat1, long1) e B (lat2, long2), que passam por

duas longitudes diferentes que ligam o polo Norte com a linha do Equador.

43

Page 54: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 18 – Esfera unitária para demonstração da fórmula de Haversine,

redesenhado de [13]

“A” e “B” são os vértices opostos de um trapézio isósceles, ACBD, com os vértices

adicionais C (lat2, long1) e D (lat1, long2). As linhas retas que ligam AC e BD não são

mostradas, apenas os segmentos AD e CB do trapézio podem ser visualizadas na figura

acima.

Se forem ligados os pontos AO e CO (não mostrado), o ângulo AÔC é a diferença

entre lat 1 e lat2, ou ∆lat. O comprimento do segmento AC é, como mostrado anteriormente, 2

* sen(∆lat/2). O segmento BD tem o mesmo comprimento.

Os pontos E e F são onde a long1 e long2, respectivamente, encontram-se com a linha

do Equador. Portanto o comprimento de EF é 2 * sen(∆long/2).

Os pontos A e D estão sobre o círculo de latitude constante lat1. O raio deste círculo é

cos(lat1). Pode-se verificar isto desenhando uma perpendicular do ponto A ao segmento OE,

encontrando OE no ponto G. O ângulo AÔE é lat1, portanto o segmento OG = cos(lat1), que é

o mesmo comprimento do raio do círculo de lat1 no ponto A.

44

Page 55: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Portanto, o comprimento do segmento AD é 2 * sen(∆long/2) * cos(lat1).

Similarmente, o comprimento do segmento CB é 2 * sen(∆long/2) * cos(lat2).

Voltando para a figura em duas dimensões, agora é possível calcular a distância da

diagonal (segmento AB) do trapézio isósceles da figura a seguir.

Figura 19 – Trapézio isósceles retirado da esfera unitária, redesenhado de [13]

O comprimento de CH, onde AH é perpendicular ao segmento CB, é (CB – AD)/2.

Pelo teorema de Pitágoras:

AH² = AC² – CH² = AC² – (CB – AD)²/4

O comprimento de HB é (CB + AD)/2. Usando o teorema de Pitágoras novamente:

AB² = AH² + HB²

AB² = AC² – (CB – AD)²/4 + (CB + AD)²/4

AB² = AC² + CB * AD

Agora pode-se substituir os valores obtidos na figura esférica para os segmentos AC,

CB e AD:

AB² = 4 * (sen²(∆lat/2) + cos(lat1) * cos(lat2) * sen²(∆long/2))

45

Page 56: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

O resultado intermediário “a” é o quadrado da metade do comprimento entre os

pontos:

a = (AB/2)²

a = sen²(∆lat/2) + cos(lat1) * cos(lat2) * sen²(∆long/2)

O último passo é encontrar o ângulo AÔB que corresponde ao comprimento AB. A

fórmula do arctan pode ser encontrada nesta figura:

Figura 20 – Triângulo para determinar o ângulo AÔB, redesenhado de [13]

Como “a” é o quadrado da metade do comprimento AB e AC é metade do

comprimento AB, então AC = sqrt(a). Aplicando Pitágoras:

OC = sqrt(OA² – AC²)

OC =sqrt (1 – a)

46

Page 57: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Onde pode-se tirar que tan(AÔC) = sqrt(a)/sqrt(1-a). Logo a variável “c”, que é o

comprimento de AB em radianos:

c = 2 * AÔC

c = 2 * arctan(srqt(a)/sqrt(1-a))

Como todos os cálculos levaram em consideração uma esfera de raio igual a 1, para

conhecer o comprimento de um arco formado pelo ângulo c (=AÔB) com um raio qualquer,

basta multiplicar “c” por R, portanto:

d = c * R

Demonstrando, assim, a lei de Haversine usada para calcular a distância entre dois

pontos dados suas latitudes e longitudes.

Para mostrar que os valores calculados por esta fórmula estão corretos, seguem duas

imagens: a primeira mostra o valor encontrado pelo sistema LocBus, entre o ônibus e o ponto;

e a segunda através de uma ferramenta que mede a distância entre duas coordenadas fornecida

no Google Maps. Note que o valor da distância nas duas figuras são iguais.

47

Page 58: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 21 – Distância medida pelo sistema LocBus

48

Page 59: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 22 – Distância medida no GoogleMaps

2.3.7.2 Aquisição da velocidade média:

O próximo passo é conseguir a velocidade média de um trecho específico. Quando o

rastreador envia as coordenadas para o servidor, entre os dados está a velocidade que o

veículo se encontra naquele momento. Esta velocidade é então gravada em uma tabela no

banco de dados através do arquivo coord.php.

Toda vez que é necessário calcular a previsão de tempo de um trecho, o arquivo

getSpeed.php acessa o banco de dados e recolhe todas as velocidades dos trechos da rota.

Como a previsão está no cálculo de um MRU, todas essas velocidades são consideradas

velocidades médias do trecho considerado. Logo, calcula-se uma velocidade média total,

49

Page 60: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

fazendo a média da soma de todas as velocidades associadas ao trecho em específico.

Portanto:

Vmed = Σv / n

Onde Vmed é a velocidade média total, n é o número de dados associados a aquele

trecho e Σv é a soma das velocidades dos n elementos.

2.3.7.3 Cálculo do tempo estimado:

Uma vez conhecidas a distância “d” e a velocidade média “Vmed”, é possível calcular

o tempo estimado médio para o veículo passar pelo trecho usando a fórmula já apresentada

anteriormente:

t = d / Vmed

A soma dos n trechos da rota dá a estimativa do tempo total necessário para realizar o

percurso.

2.3.7.4 Variáveis Periódicas:

Alguns fenômenos que ocorrem frequentemente podem alterar os resultados. Porém o

sistema foi projetado levando em considerações tais fatos e tende a reduzir o impacto desses

no resultado final. São elas:

• Semáforos: Apesar de poder saber com antecedência onde estão os

semáforos de uma determinada linha de ônibus, não é possível prever se

este encontrar-se-á “vermelho” ou “verde”. Um veículo que trafega pela

sua rota com todos os semáforos fechados, com certeza irá realizar o

percurso mais rápido do que outro veículo que realiza a mesma rota, porém

com todos os semáforos fechados. Esse efeito tende a ser refletido na

50

Page 61: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

velocidade média do trecho que contém o semáforo, que será menor que a

dos demais trechos. Isso acontece pois várias informações de velocidades

são passadas para o banco diariamente sobre aquele trecho. Logo, uma

certa quantidade dessas informações virão com velocidade de 0 (zero) km/

h, pois o veículo estará parado no semáforo. Quanto mais tempo esse

semáforo persistir fechado, maior serão os casos de velocidade zero, e isso

faz com que a velocidade média total desse trecho diminua.

• Horário de “pico” (maior movimento): O horário que consiste entre

06:00hrs – 08:00hrs e 17:00hrs – 20:00hrs é o horário em que grande parte

da população vai e volta do trabalho, o que gera trânsito e muitas pessoas

dependendo do transporte coletivo, o que acarreta em ônibus mais tempo

parados nos pontos. Assim como semáforos, esses horários geram muito

atrasos para determinados ônibus (que enfrentam congestionamento

pesado) enquanto outros encontram a rota mais livre e com o trânsito

fluindo mais normalmente. Levando isso em consideração, o sistema tende

a filtrar as velocidades médias pelo horário. Se, por exemplo, um usuário

acessa a aplicação às 17:38hrs, será pesquisado no banco de dados todas as

velocidades referentes ao horário entre às 17:00hrs e 18:00hrs, que

provavelmente terão suas velocidades médias menores do que os horários

entre 10:00hrs e 11:00hrs por exemplo, devido ao trânsito intenso.

Realizando esses filtros de posição (trechos que contém algo que faça o ônibus parar

ou reduzir bastante a velocidade) e de tempo (horários que têm maior congestionamento), o

sistema é capaz de adaptar-se a esses fenômenos estimando um tempo mais realista

independentemente de acontecimentos diários.

51

Page 62: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

2.4 CUSTOS DO PROJETO

Esta sessão tem o objetivo de estimar o custo inicial para desenvolver o projeto para

a cidade de Curitiba e Região Metropolitana, e também a estimativa do custo de manutenção

de um sistema desse porte. Devido a algumas dificuldades de se conseguir determinadas

informações, os custos apresentados aqui são apenas estimativas para que possa servir de base

para futuras análises.

2.4.1 Custo do Rastreador

A tabela 1 abaixo mostra todos os componentes do rastreador junto com o preço

pesquisado na loja online da Mouser (www.mouser.com) para duas placas e o preço total para

uma placa:

Item Quantidade Preço/Uni (U$)

Preço Total/Uni (U$)

Preço/Milhar (U$)

Preço Total/Milhar (U$)

BC846 25 0,11 2,75 0,06 1,5B340A 2 0,86 1,72 0,36 0,72LM2546S 2 2,66 5,32 1,22 2,44KLDHCX-0202-A-LT 2 1,18 2,36 0,87 1,74Resistor – 220 25 0,016 0,4 0,01 0,25Resistor – 470 10 0,1 1 0,076 0,8Resistor – 1k 10 0,1 1 0,076 0,8Resistor – 1.2k 5 0,64 3,2 0,42 2,1Resistor – 2.2k 10 0,12 1,2 0,05 0,5Resistor – 4.7k 10 0,12 1,2 0,05 0,5Resistor – 10k 30 0,1 3 0,08 2,4Resistor – 47k 10 0,28 2,8 0,11 1,1max232ECD 2 1,14 2,28 0,54 1,08LD1117S33 2 0,51 1,02 0,34 0,68LPC1768 2 9,48 18,96 5,55 11,1Indutor 2 Oscilador – 12MHz 2 2,89 5,78 1,73 3,46Cristal – 32.768KHz 2 0,99 1,98 0,48 0,96Led – Verde 25 0,1 2,5 0,07 1,75Capacitor – 100n 40 0,05 2 0,01 1,6Capacitor – 10u 30 0,2 6 0,1 3Capacitor Elet. - 330u 4 Capacitor – 1u 10 0,09 0,9 0,05 0,5

52

Page 63: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Capacitor – 18p 5 0,15 0,75 0,06 0,3 SUB-TOTAL (2 Placas) 68,12 39,28SUB-TOTAL (1 Placa) 34,06 19,64 TELIT (GPS+GPRS) 1 69 69 62 TOTAL (1 Placa)* 103,06 81,64*Preço apenas dos componentes eletrônicos, não inclusos cabos, caixas e conectores.

Tabela 1 – Preço dos componentes do rastreador

Como pode ser observado na tabela, o preço aproximado de um rastreador chega a

U$81,64, caso sejam adquiridos mil rastreadores. Usando a cotação do dólar comercial de

R$1,59 do dia 21/06/2011 retirado do site de economia da UOL

(http://economia.uol.com.br/cotacoes), o valor da placa é de R$129,80.

2.4.2 Google Maps Premier

Caso seja necessária uma licença para o uso da API do Google Maps devido alguma

regra vigente nos termos de serviço [10] (com algumas citações já vistas na sessão 2.3.1 –

API Google Maps), o custo é de R$32.000,00 por ano. Porém o projeto realiza o próprio

Geocode e o usuário não precisa fornecer qualquer tipo de pagamento para a utilização do

aplicativo, então, a princípio, não é necessária uma versão paga da API de mapas.

2.4.3 Frota de ônibus e Custo Inicial

A frota de ônibus de Curitiba e Região Metropolitana foi estimada em torno de 4236

veículos. Pode-se verificar no site oficial da URBS [16], que no final do ano de 2010 havia

353 linhas de ônibus. Estimando uma média de 12 (doze) ônibus por linha nos horários de

maior movimento, chega-se a um total de 4236 veículos.

Com o preço do rastreador cotado em R$129,80 e sendo um rastreador por veículo da

frota de ônibus, o custo inicial estimado do projeto é de :

53

Page 64: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

129,80 * 4236 = R$549.865,00

2.4.4 Cálculo e custo de uso de banda mensal do chip GPRS

O plano adquirido para o chip com serviço de GPRS é limitado em 2MB por mês.

Para calcular se este plano é suficiente para as necessidades de rastreamento, estima-se que

cada veículo opera, em média, 12 horas por dia. Uma mensagem do rastreador para o servidor

tem 40bytes de comprimento adicionados de 20bytes do cabeçalho TCP, gerando um total de

60bytes de fluxo para o servidor a cada transmissão. O envio de coordenadas é realizada a

cada minuto, logo podemos estimar a banda mensal consumida pelo rastreador da seguinte

maneira:

12hrs/dia * 60min/hr * 30dias/mês * 60bytes/minuto = 1,296MB/mês

Mostrando, assim, que o plano de 2MB mensal é o suficiente para o funcionamento

normal do rastreador. Para que estoure o limite de banda do plano de serviço de GPRS, é

necessário que o ônibus opere por 18,5 horas diárias.

O custo mensal desse plano está na faixa de R$5,00 a R$10,00 por chip, e será levado

em consideração para o cálculo de custos de manutenção.

2.4.5 Custo de Manutenção

Segundo dados retirados de uma empresa de rastreamento em Curitiba, o custo para

manutenção mensal dos rastreadores pode variar de R$80,00 a até R$160,00 por rastreador.

Estimando que 50% dos rastreadores precisem de manutenção, o que significa 2118

rastreadores por mês, e ainda o custo mensal para o plano do chip, pode-se gerar uma faixa de

custo:

54

Page 65: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

• Custo Mínimo:

2118 * 80,00 + 4236 * 5,00 = R$190.620,00

• Custo Máximo:

2118 * 160,00 + 4236 * 10,00 = R$381.240,00

Os custos são valores muito expressivos, e chegam a representar entre 34% e 69% do

custo inicial do projeto, e ainda não representam os custos para manutenção e

desenvolvimento de software. Apensar do custo parecer alto a princípio, o serviço de

transporte público conta com mais de 2.300.000 usuários diariamente [16]. Logo, o

faturamento de um dia já é suficiente para cobrir todos os custos de um mês para

disponibilizar uma aplicação como esta descrita no projeto, e possivelmente cobrir as

despesas mensais para manutenção do software.

55

Page 66: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

2.5 TESTES E RESULTADOS FINAIS

Este tópico tem o objetivo de mostrar os resultados obtidos com o desenvolvimento

do projeto.

2.5.1 Rastreador:

O rastreador pode ser separado em dois níveis de conclusão: o (i) protótipo e a (ii)

placa final. O protótipo é funcional, com exceção de um bug na firmware que o faz travar

quando se está em movimento. Devido a grandes dificuldades de debuggar o rastreador em

movimento, o motivo desse bug não pôde ser descoberto. Porém, com este protótipo foram

realizados testes de rastreamento em que foi possível verificar o ícone do ônibus se movendo

na rota definida pela linha de ônibus, que será mostrado mais adiante. Já o rastreador em sua

versão final, na placa de circuito impresso, não é funcional, já que nem todos os componentes

foram soldados à placa. A dificuldade de se conseguir componentes SMD no Brasil é grande,

diversas lojas não vendem esses tipos de componentes, e as poucas que vendem dispõem de

um catálogo muito limitado que não supriu as necessidades para o desenvolvimento da placa.

O tempo estimado para importar componentes de lojas internacionais era maior que 30 dias,

tempo este que não estava disponível até a conclusão do projeto. Mas ainda assim, a maior

parte da placa foi montada usando componentes não SMD ou que se conseguiram de

equipamentos estragados. As imagens abaixo mostram o rastreador montado parcialmente.

56

Page 67: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 23 – Rastreador montado parcialmente

Figura 24 – Rastreador dentro do case

O equipamento é capaz de rastrear ininterruptamente quando se está parado, porém,

ao se movimentar, a firmware trava. Para debuggar o problema é muito complicado, pois é

necessário que o veículo esteja em movimento (no caso, a bicicleta) e acessar a serial do

Mbed através de um notebook. Mas, uma análise através dos status leds do rastreador indicam

que o motivo de travamento ocorre ou na comunicação para recolher os dados do GPS, ou na

conexão com o servidor.

57

Page 68: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

2.5.2 Função de rastreamento:

A possibilidade de permitir ao usuário verificar onde encontra-se o ônibus funciona

com sucesso. As rotas são desenhadas no mapa junto com os pontos de ônibus de forma

simples, sendo possível introduzir qualquer rota nova apenas definindo os DynamapID's

pertencentes à linha de ônibus e as coordenadas dos pontos e terminais. O mapa é atualizado a

cada trinta segundos, tornando a aplicação dinâmica e sem ícones fixos, portanto o usuário

não precisa atualizar manualmente para ver onde o veículo se encontra.

Para os testes, o rastreador foi embarcado em uma bicicleta que percorreu a linha do

ônibus enquanto um programa de captura de tela gravava o que acontecia na tela do

computador. Não optou-se por carregar o rastreador no ônibus devido ao risco de travar em

movimento, gastando tempo e recursos, este teste deve ser realizado quando o rastreador se

encontrar em um estado mais confiável. Para minimizar as chances de ocorrer o bug no

rastreador, a bicicleta diminuía a velocidade quando o rastreador se preparava para enviar os

dados, isso não evitou que ele travasse em alguns momentos, porém o teste de rastreamento

pôde ser feito. Esse bug também impediu que os dados de velocidade pudessem ser enviadas

ao servidor com maior exatidão, mais realista à situação real, pois diminuir a velocidade fazia

com que os dados enviados sobre este parâmetro não correspondesse com a situação real.

Abaixo encontram-se imagens de um vídeo feito durante um dos testes de rastreamento. Pode-

se notar que o ícone do veículo segue a rota até chegar ao terminal de ônibus, e depois volta

um trecho do caminho.

58

Page 69: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Figura 23 – Teste da função de rastreamento do sistema

2.5.3 Previsão de Horário:

Para testar a precisão da estimativa de tempo necessário para o veículo chegar em

determinado ponto, cronometrou-se o tempo que o ônibus precisa para chegar ao terminal

pela manhã, e voltar do terminal ao final da tarde. Como mostrado na figura abaixo, é o

59

Page 70: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

percurso determinado pelo ícone do ônibus (parte inferior, atrás do terceiro Ponto “P”) até o

Terminal “T”.

Figura 24 – Previsão de horário

Devido ao bug do rastreador, não foi possível associar velocidades de cada

DynamapID para realizar a estimativa de tempo mais precisa, pois para minimizar as chances

de travamento da firmware, a velocidade sempre era reduzida quando o rastreador enviava os

dados, logo o valor da velocidade não correspondia fielmente à velocidade média daquele

trecho, era sempre inferior à real. Porém, o sistema usa uma velocidade média padrão quando

não há dado de velocidade associada ao DynamapID em que se está calculando a previsão,

esse valor é de 20 km/h, e foi escolhido pelo fato da linha passar por ruas dentro de bairros, de

mão dupla, compartilhadas com outros veículos em movimento ou estacionados.

60

Page 71: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

O tempo previsto é de 3 minutos e 24 segundos (204 segundos), segue uma tabela

com os resultados obtidos para 40 medições realizadas:

Amostra Tempo Medido (segundos) Amostra Tempo Medido (segundos)1 213 21 2232 222 22 1893 206 23 2124 215 24 1915 189 25 1906 212 26 2217 214 27 2158 195 28 2259 211 29 22310 210 30 21211 221 31 21412 195 32 19313 213 33 19514 205 34 21515 212 35 22616 207 36 22317 220 37 22418 218 38 18819 207 39 21620 190 40 197

Tabela 2 – Tempos medidos

Pode-se observar nos dados acima que a maioria dos tempo medidos foram um pouco

maiores do que o tempo estimado (204 segundos). O maior tempo medido foi de 225

segundos, o que gera um erro de 10,3% acima do valor estimado, e o menor tempo para

percorrer o percurso foi de 188 segundos, gerando um erro de 7,85%. Os erros não são muito

elevados, no início do projeto esperava-se um erro máximo de 20%, felizmente o maior valor

encontrado foi a metade do esperado. O tempo médio para percorrer o percurso foi de 209,175

61

Page 72: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

segundos, logo o erro médio para o valor estipulado é de 2,5%, que foi um resultado

surpreendente para a estimativa padrão do sistema.

A seguir segue um gráfico com os valores da tabela 2, mostrando os valores de tempo

reais medidos (linha contínua em preto), a estimativa (linha tracejada em vermelho) e o valor

médio das amostras coletadas (linha pontilhada em azul).

Figura 25 – Tempos medidos e tempo estimado

Como se pode perceber, a estimativa não é precisa, porém a finalidade da previsão de

horário não é a de saber o segundo exato em que o ônibus irá chegar ao destino, e sim situar o

usuário de que o veículo irá chegar próximo do que é estipulado, que nesse caso pode ser 10%

para mais ou para menos.

62

Estimativa de Tempo

0

50

100

150

200

250

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39

Amostras

Tem

po (s

egun

dos)

Tempo Medido Tempo Estimado Média dos tempos medidos

Page 73: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

3. CONCLUSÃO

Dentro do tempo estabelecido e das dificuldades encontradas, o projeto teve um

resultado satisfatório. O objetivo era de criar um sistema capaz de coletar dados de um

veículo através de um equipamento embarcado, e mostrar essas informações em um mapa

com interface simples onde o usuário pode acessar de qualquer dispositivo com acesso à

internet, e ainda estimar um tempo para o veículo percorrer a rota com um erro relativamente

pequeno; esse objetivo foi cumprido.

Infelizmente, um bug crítico no rastreador no estágio de testes do projeto acabou

afetando todos os outros testes associados a ele. Mas ainda assim foi possível mostrar que o

sistema consegue rastrear e estimar tempos satisfatoriamente.

No estágio final do projeto, descobriu-se que o modo como foi implementada a

estimativa de tempo pode causar alguns resultados não muito confiáveis dependendo dos

eventos ocorridos, já que o tempo previsto leva em consideração a velocidade média de todos

os dias. Por exemplo, suponha que existam cem velocidades associadas a um único

DynamapID, e que todas tenham um valor de 30km/h. Porém, neste momento ocorreu um

evento, por exemplo um acidente de trânsito, que causou engarrafamento na quadra desse

DynamapID, e a velocidade média para percorrer este trecho seja, agora, de 2km/h. No modo

como está projetado no sistema atual, será feita uma média aritmética de todas as velocidades,

ou seja, somam-se as cem velocidades dos dias anteriores (30km/h) junto com esta nova

(2km/h) e divide-se pelo total (101), isto retornará uma velocidade média de 29,7km/h, que

não condiz com a realidade, logo o tempo estimado será muito parecido com o de todos os

dias anteriores, mesmo tendo ocorrido um acidente nesta quadra no dia de hoje. Para

contornar este problema, deveria ser implementada uma forma de atribuir pesos às

velocidades. Uma maneira de se fazer isso seria calculando uma velocidade média de todos os

63

Page 74: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

dias anteriores a partir de ontem, e uma outra velocidade média para o dia de hoje, atribuindo

pesos a essas duas velocidade, por exemplo, peso 7 para a velocidade de hoje, e peso 3 para as

velocidades antigas, e só então fazer a média das duas. No caso do exemplo, se usado esse

novo método, ter-se-ia uma velocidade média de 30km/h (soma de todas as velocidades

dividida pelo total) para os dias anteriores, e uma segunda velocidade média para o dia de

hoje (2km/h, já que no exemplo só há uma velocidade associada a esse DynamapID). Fazendo

a média dessas duas velocidades com seus respectivos pesos, obter-se-á uma nova velocidade

média de 10,4km/h, valor esse que ainda não representaria uma estimativa confiável, porém o

valor da velocidade de 2km/h seria muito mais expressiva do que no modo como foi

implementado no projeto.

Essa forma de média por pesos e separadas por data não foi implementada pois

resultaria em várias alterações para o projeto, como na estrutura do banco de dados e dos

vários arquivos que compõem o servidor, mudança essa que não poderia ser feita já que o

problema foi diagnosticado apenas no estágio final. Porém deve ser arrumada para o futuro.

O projeto é inovador para o país, há formas semelhantes implementadas atualmente

no Brasil, como, por exemplo, estimativa de tempo em metrôs e até mesmo em pontos de

ônibus, porém, realizada uma breve pesquisa, não há uma maneira do usuário verificar isso

através da internet. No caso de Curitiba, nem mesmo há uma forma eficiente de se verificar as

rotas de ônibus, só há um aplicativo que desempenha esta função, porém está obsoleto e com

uma interface nem um pouco amigável. Uma solução como o LocBus tentaria trazer uma

forma mais eficiente de se verificar rotas e paradas de ônibus, mais simples para o usuário.

Além de fornecer dois novos serviços para a cidade: o rastreamento de ônibus e previsão de

horário (semelhante talvez aos encontrados nos metrôs em São Paulo).

64

Page 75: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

Apesar da estimativa de custo parecer alta quando vista isoladamente, a

implementação deste projeto e a sua futura manutenção mensal não são das mais

dispendiosas. Basta lembrar que, segundo dados recolhidos do site da URBS, em 2010 foram

estimados um número de 2.300.000 passageiros transportados por dia (no caso, dia útil, sem

contar fins de semana e feriados). Na atual data, a tarifa de ônibus está R$2,50, e

considerando que do total de usuários, aproximadamente 2.000.000 são pagantes, isso gera

um arrecadamento bruto de aproximadamente R$5.000.000,00 diariamente. Se 20% desse

valor for destinado a implementar um sistema como a ideia deste projeto, em um dia é

possível manter o sistema por um mês.

Para finalizar, além do uso diário e promover uma melhor qualidade ao transporte

público na cidade, o projeto tem um grande potencial para ser realizado para a Copa do

Mundo de 2014 no Brasil e também para as Olimpíadas de 2016 no Rio de Janeiro. Devido ao

grande movimento que esses eventos irão gerar, o investimento em transporte público será o

mais adequado, logo, muitos estrangeiros ou pessoas que não conhecem a cidade dependerão

de ônibus e metrôs para chegar no destino desejado, e o LocBus poderia prestar auxílio, além

de até mesmo alguns serviços novos, como por exemplo, indicar todos os ônibus que devem

ser tomados para se chegar em um lugar desejado, como hotéis, restaurantes e pontos

turísticos, mostrando qual a parada mais próxima, conexões em terminais que devem ser feitas

e o tempo que leva para chegar em tal local.

65

Page 76: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

REFERÊNCIAS

[1] NXP , “LPC17xx User Manual”, rev. 2. Agosto 2010.

[2] SANDERS, Geoff, THORENS, Lionel, REISKY, Manfred, RULIK, Oliver e DEYLITZ, Stefan, “GPRS Networks”. John Wiley & Sons Ltd, 2003.

[3] KAPLAN, Elliott D. e HEGARTY, Christopher J., “Undestanding GPS, Principles and Aplications”, 2ª Edição. Artech House Inc, 2006.

[4] SLOSS, Andrew N., SYMES, Dominic e WRIGHT, Chris, “ARM System Developer's Guide”. Elsevier, 2004.

[5] SVENNERBERG, Gabriel, “Beggining Google Maps API 3”. Apress, 2010.

[6] Telit Communications S.p.A, “AT Commands Reference Guide”, rev. 9.

2010.

[7] Telit Communications S.p.A, “GM862 Family Hardware User Guide”, rev 1.

2009.

[8] SCHILDT, Herbert, “C Completo e Total”, 3ª Edição. Makron Books do Brasil

ltda, 1997.

[9] GOOGLE, “The Google Maps Javascript API V3 Documentation”, acesso 13/04/2011, site:http://code.google.com/intl/pt-BR/apis/maps/documentation/javascript/basics.html

[10] GOOGLE, "Google Maps/Google Earth API's Terms of Service", acesso 06/06/2011, site:http://code.google.com/intl/pt-BR/apis/maps/terms.html

[11] VALADE, Janet, "PHP & MySQL Web Development", Wiley Publishing, 2008.

[12] Referência de bibliotecas C++, site: http://www.cplusplus.com/reference/

[13] SINNOT, R. W., "Virtues of the Haversine," Sky and Telescope, vol. 68, no. 2, 1984.

[14] Teoria de Haversine, acessado 15/06/2011 site: http://mathforum.org/library/drmath/view/51879.html

[15] HALLIDAY, Walker Resnick, “Fundamentos de Física I – Mecânica”, 7ª Edição, Editora LTC.

66

Page 77: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

[16] URBS, acessado em 21/06/2011, site: http://www.urbs.curitiba.pr.gov.br/PORTAL/arquivos/XXXXXX080420111302290409.pdf

[17] PRAKASH, Arul, artigo “Geographical Information Systems – An Overview”, Indian Institute of Information Technology.

[18] BETKE, Klaus, “The NMEA 0183 Protocol”, 2000, rev. 2001

[19] National Semiconductor, “LM2576/LM2576HV Series Simple Switcher 3A Step-Dowm Voltage Regulator”, Agosto 2004

[20] GRIMMER, Lenz, “Navigating the spatial data support in MySQL 4.1”, 2003, acessado em 24/05/2011, site: http://www.lenzg.net/mysql/Navigating-The-Spatial-Data-Support.pdf

67

Page 78: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

ANEXO I

Lista de comandos AT usados no projeto. AT é um prefixo para “Attention”.

1. AT:• Funcionalidade: Testa conexão com o modem;

2. ATE0:• Funcionalidade: Desabilita a opção de “Echo” (o modem volta o comando que

foi recebido junto com a resposta);

3. AT+IPR=9600:• Funcionalidade: Configura a comunicação serial para um baudrate de 9600bps;

4. AT&K0:• Funcionalidade: Desabilita o controle de fluxo da comunicação serial (não usa

os sinais CTS e RTS);

5. AT#SKIPESC:• Funcionalidade: Quando a conexão com o servidor é estabelecida, o modem

entra em um modo onde não aceita os comandos AT. Então um comando de “escape” é usado para o modem voltar ao modo normal (comando '+++'). O comando AT#SKIPESC faz com que os caracteres “+++” não sejam enviados ao servidor quando o modem detectá-los;

6. AT+CMEE = 2:• Funcionalidade: Quando algum comando enviar uma resposta de ERROR, a

mensagem será enviada com o que gerou o erro e em modo verbal (ou seja, não virá o código do erro, e sim uma frase diagnosticando o que aconteceu);

7. AT+CPIN?:• Funcionalidade: Requisita o status do SIMCard. A resposta fornece

informações como se o SIMCard está habilitado e pronto para o uso, ou se há algum erro ou esperando alguma senha;

8. AT+CGREG:• Funcionalidade: Verifica de há uma rede GPRS disponível.

9. AT$GPSP=1:• Funcionalidade: Liga o módulo GPS;

10. AT$GPSACP:• Funcionalidade: Requisita informações do GPS;

11. AT+CGDCONT = 1,"IP","APN","0.0.0.0",0,0:• Funcionalidade: Configura parâmetros do contexto PDP (Packet Data

Protocol). O primeiro parâmetro (1), especifica qual conexão está sendo

68

Page 79: LocBus - UFPRO LPC1768 pode operar até uma freqüência de 100 MHz. O processador ARM Cortex-M3 incorpora um pipeline de 3 estágios e usa uma arquitetura Harvard, com o bus de instrução

configurada. O segundo parâmetro especifica o protocolo a ser usado (IP – Internet Protocol ou PPP – Point to Point Protocol). O terceiro é o nome da APN (Acess Point Name) a qual o modem irá se conectar. Os demais parâmetros estão relacionados com compressão de dados;

12. AT#USERID = "xxx":• Funcionalidade: Configura o nome de usuário para se conectar à rede GPRS

definida no comando anterior;

13. AT#PASSW = "xxx":• Funcionalidade: Configura a senha do usuário definido acima;

14. AT#GPRS?:• Funcionalidade: Requisita o status se o modem está ou não conectado à rede

GPRS. Se a resposta for “#GPRS: 1”, o modem está conectado, se for “#GPRS: 0”, não está conectado;

15. AT#GPRS: 1:• Funcionalidade: Conecta à rede GPRS;

16. AT#GPRS: 0;• Funcionalidade: Desconecta da rede GPRS;

17. AT#SKTD = 0,”porta”,”IP”,255,0:• Funcionalidade: Abre um socket (0 – TCP ou 1 – UDP) na porta (definido em

“porta”) do IP/DNS (definido em “IP”, pode ser o IP do servidor ou o DNS). O quarto parâmetro define como a conexão será fechada (0 – Servidor fecha a conexão, 255 – O dispositivo fecha a conexão junto com o comando de escape “+++”). O último parâmetro representa a porta a ser usada do dispositivo, mas é usada apenas em conexões UDP, que não é o caso.

69