Monitoramento e Controle de Horários de Veículos do

Propaganda
UNIVERSIDADE POSITIVO
NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
CURSO DE ENGENHARIA DA COMPUTAÇÃO
FELIPE LOPES ESCOTE
THALES AUGUSTO PORTO DA SILVA
Desenvolvimento de uma Rede Inteligente de Transporte Urbano –
Monitoramento e Controle de Horários de Veículos do Transporte Coletivo
Trabalho de Conclusão de Curso.
Prof. Alessandro Brawerman
Orientador
Curitiba, dezembro de 2010.
UNIVERSIDADE POSITIVO
Reitor: Prof. José Pio Martins
Vice-Reitor: Prof. Arno Antônio Gnoatto
Pró-Reitor de Graduação: Prof. Renato Casagrande
Diretor do Núcleo de Ciências Exatas e Tecnológicas: Prof. Marcos José Tozzi
Coordenador do Curso de Engenharia da Computação: Prof. Edson Pedro Ferlin
AGRADECIMENTOS
Aos nossos pais e familiares, por terem acreditado em nós e nos apoiado
durante todos esses anos de graduação, para que pudéssemos chegar até o fim do
curso.
Aos nossos amigos, pela paciência em tolerar nossas ausências em épocas
difíceis, como finais de bimestres e semanas de provas.
Aos amigos de trabalho que conquistamos durante os estágios e empregos,
que muito nos ensinaram, colaborando em nossa evolução profissional e
intelectual.
Aos colegas do curso, que nos proporcionaram momentos cooperação e
descontração, sendo muito importantes para o baixo nível de alteração em nossa
sanidade mental durante esses anos de loucura.
Aos professores, pelo empenho e paciência nas aulas, pelos conhecimentos a
nós fornecidos, pela dedicação, contribuição e preocupação com a nossa
formação acadêmica e pessoal.
Aos funcionários e colaboradores da Universidade Positivo, pelo respeito,
ética e comprometimento na realização das atividades e no relacionamento com
os alunos, em especial, aos funcionários e estagiários do laboratório de altodesempenho, por, diversas vezes, irem de sala em sala procurar proprietários de
pen-drives esquecidos nos laboratórios do curso.
À Universidade Positivo, pela preocupação com a qualidade do ensino e pela
excelente infraestrutura que nos foi disponibilizada, possibilitando um ótimo
aprendizado.
SUMÁRIO
LISTA DE ABREVIATURAS E SIGLAS .................................................... 5
LISTA DE FIGURAS ..................................................................................... 7
LISTA DE TABELAS ..................................................................................... 9
RESUMO ....................................................................................................... 10
ABSTRACT ................................................................................................... 11
1.
INTRODUÇÃO.................................................................................... 12
2.
FUNDAMENTAÇÃO TEÓRICA ...................................................... 14
2.1
Sistemas de Transporte Inteligente ............................................................. 14
2.2
Tecnologias de transmissão de dados em redes de telefonia móvel ......... 15
2.3
Identificação por Radiofrequência ............................................................. 16
2.4
Banco de dados ............................................................................................. 18
3.
TRABALHOS RELACIONADOS .................................................... 19
4.
ESPECIFICAÇÃO DO PROJETO ................................................... 20
4.1
Características do Projeto de Hardware .................................................... 21
4.1.1
4.1.2
4.1.3
4.1.4
Leitores RFID ................................................................................................................... 21
Etiquetas RFID ................................................................................................................. 22
Terminal Java™ TC65i.................................................................................................... 23
Painel Informativo ............................................................................................................ 26
4.2
Requisitos de Hardware ............................................................................... 28
4.3
Arquitetura ................................................................................................... 28
4.3.1
4.3.2
Descritivo do Hardware ................................................................................................... 29
Descritivo do Software ...................................................................................................... 31
4.4
Algoritmo de cálculo do tempo de espera ................................................... 35
4.5
Recursos necessários .................................................................................... 35
5 VALIDAÇÃO E RESULTADOS........................................................... 37
6 CONCLUSÃO.......................................................................................... 43
REFERÊNCIAS ............................................................................................ 44
ANEXO I - ARTIGO .................................................................................... 46
ANEXO II – CÓDIGOS FONTE................................................................. 54
LISTA DE ABREVIATURAS E SIGLAS
A
Ampere
AD
Analógico-Digital
ADSL
Asymmetric Digital Subscriber Line
Auto-ID
Identificação Automática
b
Bit
B
Byte
BD
Banco de Dados
CMOS
Complementary Metal Oxide Semiconductors
DA
Digital-Analógico
DNS
Domain Name Service
CPU
Central Processing Unit
FTP
File Transfer Protocol
G
Giga
GPIO
General Purpose Input/Output
GPRS
General Packet Radio Service
GSM
Global System for Mobile Communications
Hz
Hertz
HSDPA
High-Speed Downlink Packet Access
Id
Identificador
IMP-NG
Information Module Profile - Next Generation
IP
Internet Protocol
ITS
Intelligent Transportation Systems
JSR
Java™ Specification Request
K
Kilo
Km
Quilômetro
LED
Light-Emitting Diode
M
Mega
m
Mili
MIDP
Mobile Information Device Profile
RFID
Radio-Frequency Identification
s
Segundo
SGBD
Sistema Gerenciador de Banco de Dados
SINIAV
Sistema Nacional de Identificação Automática de Veículos
TCP
Transmission Control Protocol
TTL
Transistor-Transistor Logic
UML
Unified Modeling Language
V
Volt
VCC
Volts Corrente Contínua
WWW
World Wide Web
2G
Segunda Geração
3G
Terceira Geração
LISTA DE FIGURAS
Figura 1.1 – Exemplo de utilização do RFID. ...................................................... 13
Figura 2.1 - Leitor e transponder principais componentes dos sistemas RFID. .. 17
Figura 4.1 – Visão geral do Sistema ..................................................................... 20
Figura 4.2 – Esquemático do circuito do RFID.................................................... 22
Figura 4.3 – Etiquetas RFID em formato de disco. .............................................. 23
Figura 4.4 – Módulo Cinterion TC65i. ................................................................. 24
Figura 4.5 – Terminal Java™ TC65i .................................................................... 24
Figura 4.6 – Diagrama em blocos de aplicação exemplo. .................................... 25
Figura 4.7 – Painel Informativo............................................................................ 26
Figura 4.8 – Esquemático do Painel. .................................................................... 27
Figura 4.9 – Circuito do Painel em placa de circuito impresso. ........................... 27
Figura 4.10 – Arquitetura do Sistema................................................................... 29
Figura 4.11 Diagrama de hardware para registro da passagem ........................... 30
Figura 4.12 Diagrama de hardware para obtenção de estimativa. ....................... 30
Figura 4.13 Fluxograma de Firmware.................................................................. 31
Figura 4.14: Fluxograma de software para registro de passagens ........................ 32
Figura 4.15: Fluxograma de software para fornecimento de estimativas ............ 33
Figura 4.16 – Diagrama entidade relacionamento................................................ 34
Figura 5.1 - Emulador Cliente .............................................................................. 37
Figura 5.2 – Disparador de instâncias do emulador. ............................................ 38
Figura 5.3- Estrutura utilizada para os testes. ...................................................... 39
Figura 5.4 – Gráfico de Utilização da CPU.......................................................... 40
Figura 5.5 – Gráfico do tempo necessário para registro....................................... 41
LISTA DE TABELAS
Tabela 4.1 – Resumo dos Custos .......................................................................... 36
Tabela 5.1 – Teste de Desempenho e Precisão .................................................... 40
Tabela 5.2 – Precisão de acordo com a tecnologia de comunicação. ................... 42
RESUMO
O projeto consiste no desenvolvimento de um sistema, para uso em transporte
público, que identifica a passagem de determinados veículos em pontos de
embarque/desembarque de passageiros. Com o uso de etiquetas eletrônicas nos
veículos e leitores nos pontos de parada, as informações são capturadas e
centralizadas em um servidor que armazena e processa os dados recebidos,
permitindo que as estações acessem informações sobre a(s) linha(s). Os
passageiros recebem por meio de um painel, informações quanto à posição atual
do próximo veículo, bem como o tempo estimado para o próximo embarque
naquele ponto.
Devido à falta de uma rede de comunicação na maioria dos pontos de parada,
o sistema realiza a comunicação por meio de modem GPRS, integrado ao
terminal da aplicação embarcada.
De acordo com a empresa gestora do sistema de transporte da cidade de São
Paulo (SPTRANS, 2009), nas ultimas décadas, o controle e monitoração dos
veículos de transporte coletivo resumem-se apenas na fiscalização do correto
cumprimento das viagens previstas em contrato. Essa gestão passiva do sistema
não permite a disponibilização imediata das informações em benefício direto dos
passageiros, pois muitas vezes são registradas por fiscais, motoristas e
cobradores, em sistemas não informatizados.
O objetivo principal desse projeto é criar uma solução de baixo custo e de
fácil adaptação, para registrar os horários das passagens dos veículos em seus
diversos pontos de parada, a partir da captura de sinais RFID emitidos por
etiquetas instaladas nos veículos. Com a automação dos registros podemos
melhorar o controle gerencial das frotas pelas operadoras e pelos órgãos que
administram o transporte coletivo. Como objetivo secundário, é possível utilizar
os registros para calcular uma estimativa de chegada para os veículos, reduzindo
o estresse causado pelo desconhecimento do período de espera, aumentando a
comodidade do passageiro.
Palavras-chave: RFID, GPRS, Java™, transporte urbano, transporte coletivo,
ônibus, telefonia móvel, celular, rede de comunicação.
ABSTRACT
The whole project consists in develop a system, for public transportation, that
identify the vehicle when it pass through the bus stop or station. Installing
sensors at the vehicles and reader equipment in the bus stop/station, the received
information are sent to a server that store and process the received data, and
provide to passengers, in a dashboard at the bus stop, useful informs about the
system as an actual position of the bus in the line and estimating time for the next
bus.
Because the lack of communication system installed in the most part of
stations, it will be necessary to use a GPRS modem, integrated with the
embedded application in the terminal.
According SP-TRANS, the company that manage the public transportation
system in São Paulo city, in the last ten years the only way used for control and
monitoring vehicles, consist in observation of the correct time in the stations. The
information is passed to a supervisor or manager by the drivers or company
agents normally in paper or another non automatized method. There is no way to
provide the information immediately to passengers for their use.
The main purpose of the project is create a low cost and easy solution to
registry the exactly time of the passage of the bus through the station using
installed sensors and readers in the vehicles and bus stops. The information
comes from devices via RFID to a server. With the automatic data processing it
will be possible for the company and passengers to estimate time, control and
avoid the problems caused by the traffic, and manage a number of situations that
causes delays and/or stress.
Keywords: RFID, GPRS, Java™, dashboard, bus, mobile communication
network, public transportation system, mobile phone.
12
1. INTRODUÇÃO
O projeto em questão tem a proposta de desenvolver um Sistema para
monitorar a passagem de um veículo em seus pontos de embarque/desembarque e
gerar uma estimativa da chegada deste nos próximos pontos a serem percorridos.
Atualmente, na maioria das cidades, existe a necessidade de fiscalização
presencial da pontualidade dos veículos e faltam informações quanto à
localização e previsão de suas chegadas a um determinado ponto.
O objetivo primário do sistema é facilitar o controle gerencial da operadora
quanto aos horários e tempos totais decorridos na viagem, a partir da captura de
sinais provindos do veículo ao passar pelos pontos de parada.
Como objetivos secundários apresentam-se:
• Estimar um tempo para a chegada de um veículo a um determinado ponto
de espera, com base nos registros armazenados.
• Fornecimento de informações aos usuários, quanto à passagem do veículo
por pontos de parada.
• Construção de um painel simples e de fácil entendimento para fornecer as
informações recebidas sobre o próximo ônibus ao passageiro;
• Redução do estresse causado pelo desconhecimento do período de espera
para embarque, aumentando assim a comodidade ao passageiro;
O projeto é composto por um conjunto de hardware e software. O hardware
contém o painel informativo, o terminal Java™ TC65i, o leitor RFID e as
etiquetas RFID. O software é desenvolvido em linguagem Java™, e é
implementado no servidor e nos terminais Java™ TC65i. Nos terminais, sua
função é monitorar a passagem dos veículos e registrá-las no servidor, bem como
solicitar ao servidor informações sobre o próximo veículo e enviá-las ao painel.
No servidor, o software armazena informações em Banco de Dados e realiza os
cálculos das estimativas, trocando essas informações com os terminais. O RFID,
como se pode ver na Figura 1.1, é utilizado para detectar e identificar o veículo
que passa pelo ponto de ônibus, utilizando sinais de radiofrequência.
Nesse artigo, alguns termos são utilizados com um significado específico.
Assim, o termo Sistema, sem maiores qualificações, refere-se ao Sistema de
Monitoramento e Controle de Horários de Veículos do Transporte Coletivo. O
termo Terminal refere-se ao Terminal Java™ TC65i. O termo Pontos refere-se
aos pontos de embarque e desembarque de passageiros.
13
Figura 1.1 – Exemplo de utilização do RFID.
A ênfase do Sistema em questão é oferecer, às empresas e aos órgãos que
administram o transporte urbano, um sistema informatizado de registro e
fornecimento de dados precisos acerca dos horários e pontualidade dos veículos
das frotas, e que permita emissão de relatórios, estatísticas e consultas em tempo
real.
O restante deste trabalho está dividido da seguinte forma: o Capítulo 2
apresenta noções importantes para a compreensão do projeto, o Capítulo 3
apresenta alguns trabalhos relacionados utilizados como inspiração e base de
pesquisa para a execução do projeto, o Capítulo 4 apresenta a especificação do
projeto descrevendo as ferramentas utilizadas para o desenvolvimento tanto do
hardware quanto do software, o Capítulo 5 apresenta a validação e resultados do
projeto com o objetivo de mostrar seu desempenho e, por fim, o Capítulo 6
apresenta a conclusão sobre o projeto, descrevendo o que foi obtido com este
trabalho e possíveis melhorias a serem implementadas.
14
2. FUNDAMENTAÇÃO TEÓRICA
Neste capítulo é apresentada a teoria necessária para a compreensão e
entendimento do projeto. São abordados os conceitos e recursos tecnológicos
necessários para o desenvolvimento e funcionamento do projeto.
2.1 Sistemas de Transporte Inteligente
Sistemas de Transporte Inteligente, ou em inglês, Intelligent Transportation
Systems (ITS), é a denominação empregada na utilização de tecnologias
avançadas, que auxiliem na melhoria e eficiência no controle e gerenciamento
dos sistemas de transporte, reduzindo os congestionamentos e a poluição e
melhorando a segurança (DRANE/RIZOS, 1998). Os ITS elevam a mobilidade,
segurança e produtividade através da integração de tecnologias avançadas de
comunicação empregadas na infraestrutura de transportes e nos veículos (US
DOT, 2005).
A denominação genérica de ITS é empregada para designar um conjunto de
tecnologias oriundas das aplicações de telemática nos veículos e nos sistemas de
transportes (FERRAZ E TORRES, 2004). Segundo os autores, os exemplos mais
comuns de ITS no transporte coletivo urbano são: “rastreamento de veículo por
satélite, sistema de bilhetagem inteligente no transporte coletivo urbano, registro
da passagem dos coletivos por locais predeterminados, comunicação em tempo
real com os usuários, utilizando dizeres em painéis digitais e avisos sonoros em
alto-falantes, etc.”.
Observam-se nos conceitos apresentados acima, que a implantação de
tecnologias de telemática e comunicação no transporte coletivo, por meio de
sistemas ITS, traz grandes benefícios aos passageiros e empresas gestoras, por
permitir fornecimento de informações em tempo real, e um maior controle da
frota, aumentando a eficiência e qualidade dos serviços prestados.
O Sistema de Monitoramento e Controle de Horários de Veículos do
Transporte Coletivo, proposto nesse projeto, classifica-se como ITS, já que
possibilita o registro dos horários de passagem pelos Pontos em tempo real, de
forma centralizada, utilizando para isso, a tecnologia de comunicação móvel via
internet denominada GPRS (General Packet Radio Service).
15
2.2 Tecnologias de transmissão de dados em redes de telefonia móvel
As tecnologias de transmissão de dados em redes de telefonia móvel são
elementos essenciais para os ITS, pois permitem a comunicação entre os agentes
envolvidos no transporte coletivo, quando é inviável ou impossível utilizar uma
infraestrutura cabeada para esse fim.
O GSM (Global System for Mobile Communications), visto como um sistema
de telefonia de segunda geração (2G) é o padrão de telefonia celular mais popular
mundo. Até o final dos anos 90, a difusão da Internet fez a indústria sem fio olhar
a transmissão de dados móveis como uma oportunidade de crescimento. Dessa
forma, a indústria assumiu a tarefa de definição de sistemas de terceira geração
(3G), baseado em dados por pacotes (HALONEN/ROMERO/MELERO, 2003).
Com o atraso no lançamento dos sistemas 3G em todo o mundo, foi
necessário o desenvolvimento de um serviço intermediário, voltado para
transmissão de dados, para o GSM. Esse serviço precisaria atingir certos objetos:
Permitir acesso a redes empresariais e a Internet; fornecer velocidade
relativamente alta; Acessibilidade contínua para voz e dados; Acesso flexível
para otimizar o uso da rede, ou seja, muitos usuários com baixas velocidades,
poucos usuários com altas velocidades. O Serviço Geral de Pacotes por Rádio
(GPRS) foi o único serviço a atingir todos esses objetivos, e foi concebido como
uma extensão ao GSM para a transição entre os sistemas 2G e 3G
(SANDERS/THORENS/REISKY/RULIK/ DEYLITZ, 2003).
As redes GPRS foram desenvolvidas para suportar os serviços de dados, pois
surgiram com o propósito de transmissão por comutação de pacotes,
diferentemente das GSM, que utiliza comutação por circuito para voz e dados.
No GPRS, os dados são divididos em pedaços (pacotes) e ao chegarem ao
receptor são agrupados novamente (JESZENSKY, 2004).
Quando o GPRS quebra os dados em pacotes, não bloqueia os recursos da
rede, liberando-os para outras transmissões correntes e, portanto, não necessita
que a ligação seja cobrada por tempo, mas pelos bits transmitidos. O GPRS provê
transparência de suporte ao TCP (Transmission Control Protocol)/IP (Internet
Protocol) e isso permite sua integração com a Internet. Protocolo de Internet (IP)
é um protocolo usado entre duas máquinas em rede para encaminhamento dos
dados. Assim, por meio do GPRS, aplicações do tipo WWW (World Wide Web),
FTP (File Transfer Protocol) e e-mail podem ser atendidas por esse serviço
(PEREIRA/GUEDES, 2004).
Por ser um serviço que agrega funcionalidades e vantagens ao padrão GSM,
que é 2G, e também por anteceder aos sistemas 3G, o GPRS é conhecido como
geração 2,5. Os sistemas 3G, apesar de estarem se popularizando, ainda carece de
cobertura de rede, seus módulos para sistemas embarcados ainda tem custo
elevado, e, devido a grande utilização por usuários domésticos, podem ser
instáveis, tornando-se inviável para o projeto proposto neste trabalho.
16
O GPRS hoje é largamente utilizado para rastreamento veicular, em máquinas
de pagamentos eletrônicos via cartão bancário, em sistemas de segurança e nos
sistemas ITS em geral.
Neste projeto, é utilizado o GPRS para a comunicação via Internet entre os
terminais, localizados nos diversos Pontos, e o servidor central. A tecnologia é
escolhida por atender as necessidades de tráfego de dados do sistema, no que se
refere à velocidade e ao tempo de resposta, e por atualmente, ter um custo de
implantação muito menor que os sistemas 3G. Além disso, o GPRS está
disponível em toda a rede GSM das principais operadoras de telefonia móvel no
Brasil. São utilizados dois cartões SIM (Subscriber Identity Module) de
operadoras diferentes em cada slot do módulo, de forma a oferecer redundância
no acesso a Internet.
2.3 Identificação por Radiofrequência
Nos últimos anos, procedimentos de identificação automática (Auto-ID) se
tornaram muito populares nas empresas de serviços, logística de compra e
distribuição, empresas de manufatura e na indústria em geral. Os procedimentos
de identificação automática existem para fornecer informações sobre pessoas,
animais, mercadorias e produtos em trânsito (FINKENZELLER, 2003).
As etiquetas de código de barras causaram uma revolução nos sistemas de
identificação nos ultimos anos, e está se tornando obsoleta para um número
crescente de casos. Codigos de barras são extremamente baratos, mas a sua
grande desvantagem é a baixa capacidade de armazenamento e ao fato de que
eles não podem ser reprogramados (FINKENZELLER, 2003).
A solução tecnicamente ideal seria o armazenamento de dados em um chip de
silício. A forma mais comum de transporte de dados em meio eletrônico presente
diariamente em nosas vidas é o cartão inteligente baseado em campo de contato
galvânico (cartão telefônico). No entanto, o contato mecânico usado nesses tipos
de cartões muitas vezes é impraticável. A transferência de dados sem contato
entre o dispositivo de transporte de dados e seu leitor é muito mais flexível. No
caso ideal, a energia necessária para operar o dispositivo eletrônico de transporte
de dados, também seria transferida a partir do leitor. Por causa dos
procedimentos utilizados para a transferência de energia e de dados, sistemas de
identificação sem contato são chamados de sistemas RFID (Radio Frequency
Identification) (FINKENZELLER, 2003).
Os sistemas RFID são semelhantes ao cartão inteligente descrito acima. Os
dados são armazenados em um dispositivo eletrônico de transporte de dados: o
transponder. No entanto, o fornecimento de energia e o intercâmbio de dados
entre o dispositivo de transporte de dados e o leitor são alcançados sem a
utilização de contatos galvânicos, e sim utilizando campos magnéticos ou
eletromagnéticos (FINKENZELLER, 2003).
17
Na figura 2.1, têm-se os dois componentes que constituem o RFID:
• Transponder ou etiqueta: que está localizado no objeto a ser indentificado;
• Leitor: Pode ser apenas de leitura, ou de leitura e gravação do dispositivo.
O Leitor normalmente possui um módulo de radiofrequência (transmissor e
receptor), uma unidade de controle e uma antena. A maioria possui também, uma
interface de comunicação para o encaminhamento dos dados recebidos. O
Transponder que representa o dispositivo de transporte de dados de um sistema
de RFID, normalmente constituída por uma antena e um microchip eletrônico
(FINKENZELLER, 2003).
Figura 2.1 - Leitor e transponder principais componentes dos sistemas RFID.
Os transponders, ou etiquetas RFID, possuem identificação própria, que pode
ser predefinida ou personalizável e são capazes de responder a sinais de rádio
enviados por uma base emissora. As etiquetas RFID são classificadas em ativas,
semi-passivas e passivas. As ativas utilizam baterias ou fonte de alimentação
externa e possuem alcance superior a 5 metros. As semi-passivas utilizam tanto a
bateria ou fonte de alimentação quanto o campo magnético gerado pelo leitor
para gerar corrente elétrica e possuem alcance de 0,5 a 5 metros. As passivas
retiram a corrente elétrica necessária para o funcionamento totalmente do campo
magnético gerado pelo leitor e possui alcance de até 50 centímetros.
No Brasil, a identificação de veículos por RFID já é utilizado para pagamento
de pedágios e estacionamentos. Em breve, com a implantação do SINIAV
(Sistema Nacional de Identificação Automática de Veículos), seu uso será
obrigatório em todos os veículos (DENATRAN, 2010).
Neste projeto, utilizamos a tecnologia RFID para a identificação dos veículos,
quando os mesmos passam pelos pontos de embarque/desembarque.
18
2.4 Banco de dados
Banco de dados é uma coleção de dados relacionados que existe por um longo
período de tempo para atender às necessidades de múltiplos usuários dentro de
uma ou múltiplas organizações (ALBUQUERQUE, 2000)
Os bancos de dados podem ser classificados em: relacional; hierárquico e
rede. O modelo relacional usa um conjunto de tabelas para representar tanto os
dados quanto a relação entre eles. Um banco de dados hierárquico compõe-se de
um conjunto ordenado de árvores, mais precisamente de um conjunto ordenado
de ocorrências múltiplas de um tipo único de árvore. Um banco de dados em rede
consiste em uma coleção de registros que são concatenados uns aos outros por
meio de ligações (ELMASRI/NAVATHE, 2005).
Adiciona-se aos tipos citados, o banco de dados orientado a objetos e objetorelacional. O modelo de orientação a objeto está baseado no encapsulamento de
código e dados em uma única entidade chamada objeto (SILVA, 2003). O
modelo objeto-relacional trata-se de um modelo híbrido, com uma estrutura
relacional, adicionando alguns conceitos de orientação a objetos, tais como
herança de tabelas, de tipos e a possibilidade de criação de tipos complexos de
dados. Um modelo de dados define como os dados são armazenados, organizados
e acessados.
Existem vários sistemas que realizam o gerenciamento de banco de dados,
que são chamados de SGBDs (Sistemas Gerenciadores de Banco de Dados).
O SGBD é um software de caráter geral para a manipulação eficiente de
grandes coleções de informações estruturadas e armazenadas de uma forma
consistente e integrada. Tais sistemas incluem módulos para consulta, atualização
e ainda as interfaces entre o sistema e o usuário. O SGBD é constituído por um
conjunto de dados associados a um conjunto de programas para acesso a esses
dados (SILBERSCHATZ, 2006).
No sistema aqui proposto nesse trabalho, utiliza banco de dados para
armazenamento das informações dos Pontos, veículos e linhas, para registro dos
horários de passagens e para realização de cálculos de estimativas. É utilizado
banco de dados com modelo relacional, utilizando o SGDB PostgreSQL.
19
3. TRABALHOS RELACIONADOS
Esse capítulo tem como objetivo relatar e exemplificar os trabalhos
relacionados que foram usados como base para a execução do projeto
desenvolvido. A similaridade que pode ser encontrada nesses trabalhos é a de
utilizar-se de tecnologias de monitoramento para controle de trafego, e
transmissão de dados via GPRS/GSM.
O SOMArt (Sistema de Ônibus Monitorado Automaticamente em Tempo
Real), desenvolvido para o sistema de transporte público de Porto Alegre, é um
sistema para monitoramento automático dos veículos ao longo do itinerário. O
monitoramento é feito através da passagem dos veículos por antenas fixas,
espalhadas na malha viária, as quais capturam informações específicas de cada
veículo. Estas informações estão gravadas em etiqueta eletrônica, fixadas nos
chassis de cada veículo, que são lidas e transmitidas pelas antenas. O SOMArt
utiliza 48 estações fixas espalhadas pela cidade de Porto Alegre, que registram as
passagens e, a cada 3 minutos, transmites os registros via GPRS para o sistema
SOMA (MARIA LADEIRA/FERNANDO MICHEL/SÉRGIO PAVANATTO,
2009).
No Sistema proposto neste trabalho, as estações de monitoramento estão
localizadas nos pontos de parada, permitindo o uso da mesma estrutura para
interação com os passageiros, como por exemplo, o uso de painéis informativos.
Por outro lado, necessita-se de um número muito maior de estações.
O SISTEMA PONTUAL é desenvolvido pela empresa Geocontrol,
especialmente para a Gestão dos transportes públicos, e traz informações precisas
e seguras de toda a frota de ônibus da cidade. Com ele, é possível acompanhar
todo o sistema do transporte público em tempo real. A secretaria responsável pela
gestão, além de receber relatórios imediatos de toda a movimentação da frota,
poderá também, aplicar as correções e medidas necessárias. Com isso, se alcança
uma interação muito maior com o sistema de transporte e o usuário poderá
usufruir de mais segurança, qualidade e pontualidade (GEOCONTROL, 2010).
O Sistema da Geocontrol, assim como a maioria dos sistemas utilizados para
rastreamento da frota, utiliza o GPS ou Triangulação de Antenas GSM para o
posicionamento do veículo e comunicação GPRS para transmitir essas
coordenadas para o sistema de gerenciamento.
20
4. ESPECIFICAÇÃO DO PROJETO
O Sistema de Monitoramento e Controle de Horários de Veículos do
Transporte Coletivo descobre o momento da passagem dos veículos em seus
pontos de parada ao longo de sua rota, e com isso, estabelece uma previsão de
chegada do próximo veículo, para cada um dos pontos de embarque.
Figura 4.1 – Visão geral do Sistema
21
Na Figura 4.1 têm-se a visão geral do Sistema. A descoberta de tempo de
passagem é feita com o uso de etiquetas, instaladas nos veículos, e leitores,
instados nos pontos de parada. Ao passar por um ponto de parada, o Módulo
inicia um processo de comunicação via GPRS, onde é informado ao servidor de
aplicação que determinado veículo passou por aquele local naquele momento.
O servidor de aplicação recebe os dados, e realiza o registro no Banco de
Dados. Com essa centralização, os registros podem ser utilizados para emissão de
relatórios, acompanhamento da frota, controle de pontualidade e consultas
pontuais. A base de dados fica armazenada no mesmo servidor de aplicação ou
em outro servidor que esteja, de preferência, na mesma rede interna.
Em paralelo, o Módulo periodicamente faz uma requisição de estimativa de
tempo de chegada do próximo veículo, de uma determinada linha, naquele ponto.
Assim, inicia-se outro processo de comunicação via GPRS. O servidor recebe a
requisição com os dados do ponto e linha, processa as informações, realizando o
cálculo, e o repassa ao requerente. Ao receber a resposta com o tempo estimado
para a chegada do próximo veículo, o Módulo disponibiliza essa estimativa no
painel, para a visualização pelos passageiros.
4.1 Características do Projeto de Hardware
O projeto é composto por um conjunto de dispositivos eletrônicos que se
comunicam por meio de vários protocolos. As próximas seções detalham o
funcionamento de cada um desses dispositivos.
4.1.1 Leitores RFID
Para o protótipo, são utilizados os leitores RFID Innovations ID-20. Trata-se
de um leitor para etiquetas passivas, de curto alcance, com frequência de
operação de 125 kHz, para leitura de cartões inteligentes ou etiquetas RFID
compatíveis com o formato EM4001.
O leitor citado acima possui saída de dados nos formatos Wiegand 26bit,
Magnet Emulation e ASCII. O sistema em questão utiliza o formato ASCII, pois
este pode ser convertido para o padrão RS-232, e o terminal possui bibliotecas e
métodos que facilitam a operação com esse tipo de padrão.
22
Figura 4.2 – Esquemático do circuito do RFID.
Como é visto na Figura 4.1, o componente leitor RFID precisa ser conectado
a circuito integrado MAX232, para converter os dados ASCII, que são enviados
a nível TTL (Transistor-Transistor Logic) / CMOS (Complementary Metal Oxide
Semiconductors), para o nível RS-232.
Os leitores RFID ficam estrategicamente posicionados nos pontos de parada,
para detectar a presença dos veículos nas proximidades.
4.1.2 Etiquetas RFID
São utilizadas etiquetas RFID Akiyama CP/10, com chip GK4001, para a
identificação dos veículos. Trata-se de etiquetas passivas com alcance máximo de
10 cm. Esse alcance é o suficiente para o desenvolvimento do protótipo, no
entanto, as etiquetas ativas, que possuem alimentação própria, possuem alcance
superior a 5 metros.
23
Figura 4.3 – Etiquetas RFID em formato de disco.
Como é visto na Figura 4.2, as etiquetas utilizadas possuem as bobinas nas
bordas, em forma de disco, com o chip próximo ao centro. Possuem 3 cm de
diâmetro e são adesivas.
4.1.3 Terminal Java™ TC65i
O Terminal Java™ TC65i é um produto nacional produzido pela DuoDigit,
que utiliza a tecnologia do módulo Cinterion TC65i.
O módulo Cinterion TC65i, ilustrado na Figura 4.3, possui uma plataforma
aberta, de alta performance, com uma poderosa plataforma Java™. A Java™
Virtual Machine™ é executada em hardware embarcado, com o processador
ARM9 e memória integrada. A grande vantagem do módulo TC65i, é a
combinação da plataforma Java™ e processador, integrado a tecnologia GPRS,
com pilha TCP/IP sobre comandos AT(attention), e uma série de interfaces
industriais, tais como SPI, barramento I²C, conversor AD (Analógico-Digital) e
DA (Digital-Analógico) e GPIOs (General Purpose Input/Output).
24
Figura 4.4 – Módulo Cinterion TC65i.
A plataforma Java™ integrada ao módulo TC65i é a JSR(Java™
Specification Request)-228, também conhecida como IMP-NG(Information
Module Profile - Next Generation). Essa plataforma é muito parecida com a
MIDP (Mobile Information Device Profile) 2.0, porém, não possui o pacote
lcdui, pois não permite interface gráfica com o usuário. A plataforma Java™ do
módulo, inclui uma biblioteca desenvolvida pela Siemens, para acesso aos
recursos de hardware.
O Terminal Java TC65i possui o módulo TC65i com vários conectores,
dispositivos de controle e slots integrados em uma caixa metálica. Como é visto
na Figura 4.4, o terminal possui conectores DB-15, DB-9, USB (Universal Serial
Bus), Power e Antena GSM, slots para SIM 1 e 2, botão de reset e LEDs
indicadores.
Figura 4.5 – Terminal Java™ TC65i
25
O conector DB-9 é uma porta padrão RS-232, denominada ASC0. O conector
DB-15 é composto por 4 pinos GPIO de saída Open Colector, 4 pinos GPIO de
entrada Pull up, 1 pino com conversor AD, 1 pino com conversor AD ou DA
(programável), VCC (Volts Corrente Contínua), Terra e saída RS-232
denominada ASC1. Os slots para 2 SIM Cards permitem redundância para acesso
a rede GPRS, podendo ser configurado a alternância entre eles em cada
reinicialização. O conector USB é utilizado para debug da aplicação Java™, e
assim como o ASC0 e ASC1, pode ser configurado para transmitir a saída
(system.out) da aplicação Java™ em execução.
Figura 4.6 – Diagrama em blocos de aplicação exemplo.
Na Figura 4.5, segue um exemplo de aplicação do Terminal TC65i. Rodando
um programa Java™ armazenado na memória Flash, o terminal recebe os estados
de um dispositivo pela serial ASC1 e envia os dados de monitoramento a uma
base com IP fixo através de conexão GPRS.
O Terminal Java TC65i é capaz de se comunicar com todo o restante do
sistema, pois possui vários recursos de hardware que permitem conexão com
vários tipos de dispositivos de automação. Além disso, permite atualização
remota do firmware, emissão de avisos sonoros, envio e recebimento de SMS,
utilização dos recursos de chamada por voz, sistema de telefonia para pessoas
com deficiência auditiva, entre outros. Isso possibilita a inclusão de novas
funcionalidades ao sistema, de forma integrada, sem necessidade de troca de
equipamentos ou alteração da arquitetura.
26
4.1.4 Painel Informativo
É utilizado um Painel próprio, desenvolvido de acordo com os recursos de
saída disponibilizados no Terminal e com as necessidades do Projeto proposto.
Como ilustra a Figura 4.7, o painel disponibiliza duas informações, o tempo, em
minutos, com dois dígitos, e uma sinalização relacionada à posição do veículo,
que indica o ponto, caso o veículo esteja parado em algum ponto, ou indica que o
veículo está a caminho (>>) do próximo ponto.
Figura 4.7 – Painel Informativo
A Figura 4.8 detalha os componentes eletrônicos utilizados no Painel. Como o
Módulo disponibiliza uma quantidade limitada de pinos de GPIO, é utilizado um
protocolo próprio pra transmissão de dados para o Painel. São utilizados 2 shiftand-store bus registers, serialização de 16 bits, sendo 4 bits para o decodificador
do primeiro display, outros 4 bits para o decodificador do segundo display, e os
próximos 3 bits são enviados a um demultiplexador, que irá acionar o LED
relativo a posição ou estado do veículo. Desta forma, 5 bits não são utilizados, e
ficam disponíveis para futuras funcionalidades.
Com o uso dos componentes acima descritos, e com o auxílio de um circuito
contador para controlar o deslocamento e propagação dos bits nos registradores,
é possível controlar os 7 segmentos de cada um dos displays, e mais 8 LEDs,
com apenas 2 pinos GPIO, sendo um para dados, e outro para clock.
27
Figura 4.8 – Esquemático do Painel.
Na Figura 4.9, temos o Painel montado em uma caixa, com os LEDs e
displays colocados na mesma posição do trabalho gráfico especificado na Figura
4.7. É utilizado um conector DB-9 para a alimentação do circuito e recebimento
dos dados.
Figura 4.9 – Circuito do Painel em placa de circuito impresso.
28
4.2 Requisitos de Hardware
• Fonte de alimentação externa, 12 VCC para módulo e 5 VCC para Leitor
RFID e Painel.
• Rede de celular GSM/GPRS disponível para as áreas onde estão os pontos
de parada dos veículos das linhas atendidas pelo Sistema;
• Servidor conectado a Internet, com 2 (duas) portas de entrada devidamente
direcionadas e liberadas no firewall de rede. Requisitos mínimos do
equipamento: Processador Pentium III 800MHZ, 512 MB RAM, 20 GB
HD;
• Serviço de DNS dinâmico ou conexão de Internet com IP Fixo para o
servidor.
4.3 Arquitetura
O Sistema consiste em servidor de aplicação e Banco de Dados,
dispositivos embarcados, módulos RFID e painéis informativo.
A Figura 4.10 exemplifica o sistema de comunicação e hardware. O
servidor é responsável pelo SGDB e por executar os softwares de registro de
passagens e estimativas. O Módulo se comunica com o servidor via Internet,
utilizando tecnologia de comunicação móvel GPRS. O mesmo Módulo recebe
dados do Leitor RFID via interface serial RS-232, e também envia as
informações para o painel informativo, utilizando duas portas GPIO.
29
Figura 4.10 – Arquitetura do Sistema
4.3.1 Descritivo do Hardware
Como pode ser visto na Figura 4.11, o registro do veículo é feito assim que a
etiqueta localizada no veículo é detectada pelo Leitor RFID. O Leitor se
comunica com o Terminal Java™ TC65i por meio de comunicação serial RS232. Ao receber a identificação do veículo, o módulo Java™ realiza conexão via
GPRS com o servidor, enviando o código do veículo e do ponto. O servidor
recebe os dados, recupera da base também o código da linha e outras
informações, e registra a passagem.
O processo de exibir a estimativa no painel é iniciado por uma requisição feita
pelo Módulo Java™ ao Servidor, realizada periodicamente, com intervalos de 20
segundos entre o fim de uma requisição e o início de outra. A comunicação
também ocorre pelo mesmo meio, o GPRS, só que em portas distintas. A
resposta dessa requisição pode ser vista na Figura 4.12, onde o servidor processa
e envia os dados ao Terminal Java™, que, por sua vez, controla os LEDs e
displays do painel, por meio das portas de GPIO.
30
Figura 4.11 Diagrama de hardware para registro da passagem
Figura 4.12 Diagrama de hardware para obtenção de estimativa.
O Terminal Java™ TC65i possui firmware que executa tanto o registro das
passagens quanto a obtenção e disponibilização de estimativa. Conforme Figura
4.13, é criada uma thread assim que o sistema é iniciado. Essa thread irá
aguardar o leitor RFID detectar a passagem de um veículo, e assim que isso
ocorrer, irá receber o código do veículo, estabelecer uma conexão socket com o
servidor, enviando logo em seguida, a identificação referente ao ponto no qual
está localizado e a identificação do veículo para registrar sua passagem.
Terminado isso, a conexão é encerrada, e o sistema volta a aguardar nova
detecção.
Paralelamente, o sistema estabelece outra conexão socket com o servidor, por
meio de outra porta, que também pode ser vista na Figura 4.13. Nessa conexão, é
31
solicitada a localização e a estimativa do tempo de chegada do próximo veículo.
Os dados são enviados ao painel, e, após 20 segundos, o ciclo se repete. Nesse
caso, o objetivo é utilizar a mesma conexão para as próximas consultas,
entretanto, sempre que o novo ciclo é iniciado, a conectividade é testada, e se
houver algum problema, será estabelecida uma nova conexão, e finalizada a
antiga.
Figura 4.13 Fluxograma de Firmware
4.3.2 Descritivo do Software
O Sistema é composto por um software para registro da passagem dos
veículos, e outro para cálculo e fornecimento de estimativa de chegada do
próximo veículo.
Podemos verificar no fluxograma da Figura 4.14, que o software de registro
de passagens cria um socket para escutar determinada porta. Assim que recebe
uma requisição de conexão, é disparada uma thread, para voltar a escutar a porta
32
novamente. Isso permite que ele acate novas requisições enquanto processa as
anteriores.
Ao iniciar a thread e estabelecer uma conexão, ele recebe do cliente (Módulo
Java) a identificação do ponto e o código identificador do veículo. Esses dados
são registrados no banco de dados por meio de SPs (Stored Procedures) no
SGDB (Sistema Gerenciador de Banco de Dados), que irá incluir mais dados no
registro, como horário e linha.
Figura 4.14: Fluxograma de software para registro de passagens
O software que fornece as estimativas é ilustrado pela Figura 4.15. Assim
como o software de registro de passagens, ele também cria um socket de escuta, e
inicia uma nova thread a cada requisição.
33
Figura 4.15: Fluxograma de software para fornecimento de estimativas
Após a conexão ser estabelecida, é recebida a identificação do ponto. O
sistema irá verificar sua base, e realizar os cálculos, com base em modelos
estabelecidos, para determinar a estimativa de chegada do próximo veículo para
aquele ponto. Feito isso, as informações são enviadas e a thread fica na espera de
uma nova requisição. Sempre que houver uma nova requisição na mesma
conexão, será realizado o cálculo e o envio das informações. Se em algum
momento a thread ficar na espera por mais de 45 segundos, o sistema entenderá
que houve queda na conexão, e a thread será finalizada.
34
O modelo de dados visto na Figura 4.16 é composto pelas tabelas Pontos,
Linhas, Veículos e Registros, que são detalhadas abaixo.
Pontos: Utilizada para cadastramento dos Pontos. Possui a coluna nome do
Ponto e código da linha. Cada registro vincula o Ponto a uma linha. Para
vincular o mesmo Ponto a mais uma linha, deve ser criado um novo registro,
mantendo o mesmo nome do Ponto.
Veículos: Possui a coluna com o código da etiqueta que identifica o veículo, e
código da linha. Cada registro vincula o veículo a uma linha. Para vincular o
mesmo veículo a mais uma linha, deve ser criado um novo registro, mantendo o
mesmo código da etiqueta.
Linhas: Possui apenas a coluna que identifica o nome da linha.
Registros: Armazena as informações referente a passagem dos veículos nos
Pontos, possui a coluna com o código do Ponto, código da linha, código do
veículo e data do registro.
Além das colunas citadas acima, cada tabela possui uma chave primária
numérica sequencial, referente ao código do registro, que é utilizado para o
relacionamento entre as tabelas.
Figura 4.16 – Diagrama entidade relacionamento.
35
4.4 Algoritmo de cálculo do tempo de espera
Para a determinação do tempo estimado de espera para a chegada do próximo
veículo ao ponto, foi criado um procedimento na linguagem de programação
Transact-SQL, extensão da linguagem SQL, armazenado no Banco de Dados
PostgreeSQL.
O software servidor inicia o procedimento no servidor de Banco de Dados,
enviando os parâmetros da linha e do ponto do qual deseja a estimativa. O
servidor de Banco de Dados executa o procedimento e retorna o tempo de espera
estimado.
A rotina de cálculo leva em consideração o tempo médio que foi
necessário, nas ultimas três viagens anteriores à viagem atual, para percorrer
entre os três Pontos anteriores. Após o cálculo dessas médias, o sistema calcula o
desempenho da viagem atual, em comparação as anteriores, e com isso, realiza a
estimativa de tempo necessário para viagem entre o ponto em questão e o ponto
anterior a ele. O tempo estimado é subtraído do tempo já decorrido após a
passagem pelo ultimo ponto, e após isso, é retornado ao software servidor.
4.5 Recursos necessários
O desenvolvimento do projeto necessita de espaço físico, recursos de
laboratório, licenças de software, orientação técnica, entre outros. Os recursos
principais, como laboratórios e licenças de softwares são disponibilizados pela
Universidade Positivo. Visando estimar o custo total do projeto, estes itens serão
listados na Tabela 4.1.
A Tabela 4.1 é uma estimativa dos custos do projeto, que inclui, além dos
itens citados acima, componentes e recursos eletrônicos, comunicação, material
de escritório e impressão. Dentre os equipamentos, o custo mais relevante é
referente ao Terminal TC65i, que é o item principal para o desenvolvimento do
projeto.
36
Tabela 4.1 – Resumo dos Custos
Descritivo
Quant.
Unid.
Valor Unit Valor Total
Mão de Obra
Coordenador do Curso
80
hora
R$ 110,00
R$ 8.800,00
Professor Orientador
160
hora
R$ 65,00
R$ 10.400,00
Direta
720
hora
R$ 30,00
R$ 21.600,00
Subtotal
R$ 40.800,00
Equipamentos e Insumos
Laboratório
40
mês
R$ 7,00
R$ 280,00
Notebook
1
unidade
R$ 1.500,00
R$ 1.500,00
Ferramentas
---
---
R$ 540,00
R$ 540,00
Multímetro
1
unidade
R$ 30,00
R$ 30,00
Terminal Java TC65i + Acessórios
1
unidade
R$ 800,00
R$ 800,00
Frete compras
---
---
R$ 25,00
R$ 25,00
Internet Móvel
9
mês
R$ 20,00
R$ 180,00
Internet Banda Larga Fixa
9
mês
R$ 40,00
R$ 360,00
Componentes eletrônicos diversos
---
---
R$ 200,00
R$ 200,00
Subtotal
R$ 3.915,00
Documentação
Cópias
500
unidade
R$ 0,10
R$ 50,00
Encadernação Capa-dura
1
unidade
R$ 40,00
R$ 40,00
Encadernação Espiral
3
unidade
R$ 3,00
R$ 9,00
Mídia CD/DVD
2
unidade
R$ 1,50
R$ 3,00
Subtotal
R$ 102,00
Softwares
Windows / Project (licença MSDN-AA)
Proteus
Eclipse / Net Beans / Postgree SQL
9
mês
R$ 0,00
R$ 0,00
160
hora
R$ 5,70
R$ 912,00
9
mês
R$ 0,00
R$ 0,00
Subtotal
R$ 912,00
SubTotal
R$ 45.729,50
Impostos (37,5%)
R$ 17.148,56
Total
R$ 62.878,06
37
5 VALIDAÇÃO E RESULTADOS
Para validar o Sistema, foi utilizado um emulador desenvolvido em
linguagem Java™, com interface gráfica para computador desktop, conforme
visto na Figura 5.1, que simula o funcionamento do Painel e o leitor RFID. Os
códigos-fonte utilizados no emulador são basicamente os mesmos utilizados no
Terminal Java™ TC65i, com exceção da interface gráfica, que não é suportado
pelo Terminal.
Figura 5.1 - Emulador Cliente
No emulador cliente, é possível selecionar os pontos onde são detectadas as
passagens dos veículos, ou seja, sempre que um veículo passar pelos pontos
selecionados, o processo de registro de passagens é executado. Para ativar ou
desativar a detecção, basta clicar nos pontos desejados. Quando botão referente a
38
um determinado Ponto estiver azul, indica que a detecção pelo emulador, daquele
ponto, está ativa.
É possível determinar a velocidade e código identificador do veículo, além
das distâncias entre os pontos. O Emulador também simula o painel, com as
estimativas dos tempos para todas as estações. Para iniciar os recursos, basta
configurar os parâmetros desejados e iniciar a simulação. Para corrigir algum
parâmetro, é necessário parar a simulação, e habilitar a edição dos campos.
Têm-se ainda, a opção de utilizar um programa disparador de instâncias do
emulador, para execução de testes de esforço, que é mostrado na Figura 5.2. Nele
pode-se escolher a quantidade de instâncias paralelas a serem executadas,
optando ou não por configurar os parâmetros de forma aleatória e, com isso,
possibilitando a conexão automática dessas instâncias e a execução em segundo
plano. A opção de gerar relatório permite que seja criado um arquivo de texto,
com o tempo levado entre a detecção do sinal do veículo, até o momento de
confirmação de gravação, para todos os pedidos de registro.
Figura 5.2 – Disparador de instâncias do emulador.
Verificar o comportamento do Sistema, simulando uma situação com dezenas
de módulos conectados, é importante para avaliar a eficiência da arquitetura e das
plataformas utilizadas e bem como o conjunto de hardware utilizado. Os
relatórios com os tempos necessários para a comunicação e processamento dos
registros, nos permite avaliar a precisão do sistema, no que se refere à exatidão
dos horários registrados no banco de dados. Para o tempo de processador, foi
utilizado Monitor de Desempenho do Windows 7, que nos fornece uma média de
utilização do processador em um intervalo de tempo.
39
Figura 5.3- Estrutura utilizada para os testes.
O método e recursos utilizados nos testes são ilustrados na Figura 5.3. É
utilizado o módulo, executando a aplicação embarcada, e computadores desktop,
executando várias instâncias do simulador do módulo. Tanto o módulo quanto os
computadores se comunicaram com o servidor via Internet, sendo que o módulo
utiliza comunicação GPRS, aproximadamente 75% das instâncias dos
simuladores são conectados com ADSL (Asymmetric Digital Subscriber Line)
2+, e os restantes conectados via tecnologia 3G HSDPA (High-Speed Downlink
Packet Access). O Servidor utilizado nos testes também é conectado por
ADSL2+ e possui processador de baixo consumo de energia Intel U2700
(1,3GHz), com 3GB de memória RAM.
A Tabela 5.1 apresenta os resultados dos testes efetuados. A utilização da
CPU (Central Processing Unit) passou de 6%, com 10 clientes, para 10%, com
100 clientes. O atraso na gravação para 100 clientes aumentou 21% em relação
ao tempo de atraso para 10 clientes.
40
Tabela 5.1 – Teste de Desempenho e Precisão
Clientes
% CPU
Tempo para registro
10
6%
2,15 segundos
20
7%
2,18 segundos
30
7%
2,29 segundos
40
8%
2,21 segundos
50
8%
2,20 segundos
60
9%
2,24 segundos
70
9%
2,54 segundos
80
9%
2,62 segundos
90
10%
2,58 segundos
100
10%
2,61 segundos
Na Figura 5.4 temos um gráfico de utilização da CPU, que ilustra os dados
dos testes. Observa-se que, com um aumento em 1000% no número de clientes, o
aumento de utilização da CPU foi de 60%. O gráfico segue uma linha vertical
com uma pequena inclinação, que mostra o pouco impacto dos clientes na
utilização do processador.
Utilização CPU
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
10
20
30
40
50
60
70
80
Utilização CPU
Figura 5.4 – Gráfico de Utilização da CPU.
90
100
41
Na Figura 5.5, temos a evolução do tempo necessário para o processo de
registro. Observa-se que a evolução não é linear, isso se explica pelo fato de
existirem outros fatores que atrasam a comunicação entre os equipamentos, como
o tráfego das redes das operadoras, interferências, colisão de pacotes, etc.. No
entanto, não houve casos em que a variação foi superior a 5 segundos, sendo um
atraso totalmente tolerável para esse tipo de Sistema.
Tempo para registro
3,00
2,50
2,00
1,50
1,00
0,50
0,00
10
20
30
40
50
60
70
80
90
100
Tempo para registro
Figura 5.5 – Gráfico do tempo necessário para registro.
Na tabela 5.2, são comparados os atrasos entre os tipos de tecnologias
utilizadas para os testes. Nesse quesito, o GPRS ficou muito próximo do 3G
HSDPA, com um desempenho de 2% a 8% inferior. Em comparação com o
ADSL2+, sua desvantagem foi menor que 1 segundo.
Isso mostra que, apesar de ser uma tecnologia mais antiga se comparado ao
3G HSDPA, o GPRS apresenta um ótimo desempenho para aplicações que não
dependem de grande tráfego de dados. O ADSL2+ possui desempenho superior
devido ao seu meio de transporte ser com cabos, porém, seu custo e dificuldade
de manutenção e implantação, não são compensatórios para o Sistema em
questão.
42
Tabela 5.2 – Precisão de acordo com a tecnologia de comunicação.
Conexão/Tempo
10 Clientes
50 Clientes
100 Clientes
ADSL2+
1,84
1,98
2,48
3G HSDPA
2,70
2,82
2,96
GPRS
2,92
2,97
3,03
O desempenho do Sistema, nos quesitos avaliados acima, ficou acima do
esperado, pois mostra que, mesmo com um servidor com recursos de hardware
limitados, é possível conectar dezenas de módulos sem perda significativa de
desempenho. Para aumentar o desempenho e capacidade do Sistema, pode ser
considerado a utilização de um hardware mais robusto e link de Internet via fibra
ótica para o servidor.
Foram realizadas verificações nas estimativas fornecidas aos passageiros. Os
testes verificaram que os cálculos definidos no algoritmo foram capazes de
verificar variações na velocidade média dos veículos entre os Pontos, comparálas com as viagens anteriores e, com isso, alterar a previsão. Por ser objetivo
secundário desse trabalho, não foi feita uma validação das previsões em um
ambiente real, pois isso demandaria muito tempo.
43
6 CONCLUSÃO
Este trabalho consiste no desenvolvimento de um Sistema de Registro e
Controle da Frota do Transporte Coletivo, para registrar os horários das
passagens dos veículos pelos pontos de paradas, tendo como objetivo secundário,
fornecer estimativas de chegada dos veículos aos passageiros. É composto por
um conjunto de hardware e software. O hardware engloba os leitores e etiquetas
RFID, painel informativo e Módulo Java TC65i com comunicação GPRS
integrado. O software é dividido em três aplicações, sendo uma no módulo, que
interpreta os dados recebidos pelo leitor RFID, e envia informações ao painel,
outras duas no servidor, para registro dos dados e fornecimento de estimativas.
No final têm-se um sistema completamente automatizado, que realiza todas as
ações sem a necessidade de intervenção humana, realizando os registros em
tempo real, e, da mesma forma, oferecendo estimativas com base em
informações armazenadas em um servidor central.
Com este projeto, percebeu-se que a utilização da identificação por rádio
frequência pode melhorar o processo de monitoramento do transporte urbano
devido o alto grau de automação que ela proporciona, reduzindo custos e erros na
fiscalização e aumentando a qualidade do serviço.
Nos testes, o Sistema teve desempenho acima do esperado, pois se mostrou
bastante eficiente e preciso no registro dos horários das passagens. Com um
baixo nível de utilização do processamento do servidor, e baixo atraso no registro
das passagens, mesmo utilizando um servidor com recursos de hardware
limitados, foi possível conectar dezenas de módulos sem perda significativa de
desempenho.
O cálculo do tempo estimado foi satisfatório e atendeu as expectativas
previstas, porém, necessita de estudos estatísticos para validação e
aprimoramento do algoritmo utilizado.
Como sugestão para futuros trabalhos, pode-se utilizar Displays de Cristal
Líquido (LCD – Liquid Crystal Display) para confecção dos painéis, avisos
sonoros, para que a informação possa ser acessível aos deficientes visuais e
serviço de consultas via SMS e Web.
44
REFERÊNCIAS
ALBUQUERQUE, Fernando. Introdução a Banco de Dados. Brasília: UNB,
2000;
ALENCAR, Marcelo Sampaio de. Telefonia Celular Digital. 2. ed. São Paulo:
Ética, 2007.
DRANE, Chris; RIZOS, Chris. Positioning Systems
transportation systems. London: Artech House, 1998.
in
intelligent
ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados. 4. ed. São
Paulo: Pearson, 2005;
FERRAZ, Antonio Clovis Pinto; TORRES, Isaac Guilhermo Espinosa.
Transporte Público Urbano. 2. ed. São Carlos: Rima, 2004.
FINKENZELLER, Klaus. RFID handbook : fundamentals and applications
in contactless smart cards and identification. 2. ed. Chichester: John Wiley &
Sons Ltd, 2003;
GEOCONTROL. Sistema Pontual , Vitória, Abril de 2010. Disponível em: <
http://www.geocontrol.com.br/ >. Acesso em Abril de 2010.
HALONEN, Timo; ROMERO Javier; MELERO, Juan. GSM, GPRS, and
EDGE performance: evolution towards 3G/UMTS. 2. ed. Chichester: John
Wiley & Sons Ltd, 2003;
JESZENSKY, Paul Jean Etienne. Sistemas Telefônicos. Barueri, SP: Manole,
2004.
45
KANNINEN, B. J. Intelligent transportation systems: an economic and
environmental policy assessment. Londres, 1996.
PEREIRA, M. M.; GUEDES, L. G. Perspectivas das comunicações móveis no
Brasil. Disponível em: <www.UCG.edu.br>. Acesso em: 26 ago. 2010.
SANDERS, Geoff; THORENS, Lionel; REISKY, Manfred; RULIK, Oliver;
DEYLITZ, Stefan. GPRS Networks. Chichester: John Wiley & Sons Ltd, 2003.
SÃO PAULO TRANSPORTE S.A. - SPTRANS. Sistemas Informatizados
para a Gestão do Transporte Coletivo do Município de São Paulo. São Paulo,
Maio de 2009. Disponível em: < http://www.sptrans.com.br/pdf/biblioteca_
tecnica/sistemas_informatizados_para_a_gestao_do_transporte.pdf >. Acesso em
Março de 2010.
SILVA, Ardemirio de Barros. Sistemas de informações geo-referenciadas:
conceitos e fundamentos. Campinas: UNICAMP, 2003.
SUDARSHAN, S.; KORTH, Henry; SILBERSCHATZ, Abraham. Sistema de
Banco de Dados. 4. ed. São Paulo: Campus/Elsevier, 2006.
U.S. DEPARTAMENT OF TRANSPORTATION - US DOT. Research and
Innovative Technology Administration, Washington, Setembro de 2009.
Disponível em: < http://www.its.dot.gov/faqs.htm >. Acesso em Abril de 2010.
46
ANEXO I - ARTIGO
47
Desenvolvimento de uma Rede Inteligente de Transporte Urbano – Monitoramento e
Controle de Horários de Veículos do Transporte Coletivo
Felipe Lopes Escote – [email protected]
Thales Augusto Porto da Silva – [email protected]
Graduandos do Curso de Engenharia da Computação da Universidade Positivo
Endereço para contato:
Universidade Positivo
Rua Prof. Pedro Viriato Parigot de Souza, 5300 – Campo Comprido
81280-330, Curitiba – PR
Tel.: (+55) 41 3317-3270 Fax:(+55) 41 3317-3270
Resumo: Neste artigo, são apresentadas características e funcionalidades do Sistema de
Monitoramento e Controle de Horários de Veículos do Transporte Coletivo, desenvolvido como
Trabalho de Conclusão de Curso de Engenharia da Computação. São explicados os motivos
que levaram ao desenvolvimento do projeto, e seus objetivos. São estudadas várias
tecnologias utilizadas no sistema e questão, em especial o Serviço de Rádio de Pacote Geral
(GPRS - General Packet Radio Service), utilizado na comunicação, e a Identificação por
Radiofrequência (RFID - Radio-Frequency Identification), utilizado na detecção e identificação
dos veículos.
Palavras-chave: RFID, GPRS, Java, transporte urbano, transporte coletivo, ônibus, telefonia
móvel, celular, rede de comunicação.
1 INTRODUÇÃO
O projeto em questão tem a proposta de desenvolver um Sistema para monitorar a
passagem de um veículo em seus pontos de embarque/desembarque e gerar uma estimativa
da chegada deste nos próximos pontos a serem percorridos.
Nesse artigo, alguns termos são utilizados com um significado específico. Assim, o
termo Sistema, sem maiores qualificações, refere-se ao Sistema de Monitoramento e Controle
de Horários de Veículos do Transporte Coletivo. O termo Módulo refere-se ao Módulo Java
TC65i. O termo pontos refere-se aos pontos de embarque e desembarque de passageiros.
Atualmente, na maioria das cidades, existe a necessidade de fiscalização presencial da
pontualidade dos veículos e faltam informações quanto à localização e previsão de suas
chegadas a um determinado ponto.
O objetivo primário do Sistema é facilitar o controle gerencial da operadora quanto aos
horários e tempos totais decorridos na viagem, a partir da captura de sinais provindos do
veículo ao passar pelos pontos de espera.
Como objetivos secundários apresentam-se:
• Estimar um tempo para a chegada de um veículo a um determinado ponto de espera,
com base nos registros armazenados.
• Fornecimento de informações aos usuários, quanto à passagem do veículo por pontos
de espera.
• Construção de um painel simples e de fácil entendimento para fornecer as informações
recebidas sobre o próximo ônibus ao passageiro;
O projeto é composto por um conjunto de hardware e software. O hardware contém o
painel informativo, o módulo Java TC65i, o leitor RFID e as etiquetas RFID. O software é
desenvolvido em linguagem Java, e é implementado no servidor e nos módulos Java TC65i.
Nos módulos, sua função é monitorar a passagem dos veículos e registrá-las no servidor, bem
como solicitar ao servidor informações sobre o próximo veículo e enviá-las ao painel. No
servidor, o software armazena informações em Banco de Dados e realiza os cálculos das
estimativas, trocando essas informações com os módulos.
A ênfase do Sistema é oferecer às empresas e aos órgãos que administram o
transporte urbano, um sistema informatizado de registro e fornecimento de dados precisos
sobre os horários e pontualidade dos veículos da frota, e que permita emissão de relatórios,
48
estatísticas e consultas em tempo real.
Nas próximas seções, são apresentadas as tecnologias GPRS e RFID, metodologia
utilizada e arquitetura do Sistema, descritivo do hardware e software, algoritmos desenvolvidos,
resultados obtidos e ao final, as conclusões.
2 GPRS
O GPRS (General Packet Radio Service) é um serviço baseado em dados, que permite
o envio e recepção de informações através de uma rede telefônica móvel, provendo
transparência de suporte ao Protocolo de Internet (IP – Internet Protocol) e isso permite sua
integração com a Internet. IP é um protocolo usado entre duas máquinas em rede para
encaminhamento dos dados. Assim, por meio do GPRS, aplicações do tipo TCP (Transmission
Control Protocol), FTP (File Transfer Protocol) e e-mail podem ser atendidas (PEREIRA e
GUEDES, 2004).
O Sistema utiliza como meio de comunicação o GPRS, pois esse serviço está
disponível em toda a rede GSM (Global System for Mobile Communications) das principais
operadoras de telefonia móvel no Brasil. São utilizados dois cartões SIM (Subscriber Identity
Module) de operadoras diferentes em cada módulo, de forma a oferecer redundância no
acesso a Internet.
3 RFID
RFID é um acrônimo do nome "Radio-Frequency Identification" em inglês que, em
português, significa Identificação por Rádio Frequência. Trata-se de um método de
identificação automática através de sinais de rádio, recuperando e armazenando dados
remotamente através de dispositivos chamados de etiquetas RFID.
As etiquetas RFID possuem identificação própria, que pode ser predefinida ou
personalizável e são capazes de responder a sinais de rádio enviados por uma base emissora.
As etiquetas RFID são classificadas em ativas, semi-passivas e passivas. As ativas utilizam
baterias ou fonte de alimentação externa e possuem alcance maior de 5 metros. As semipassivas utilizam tanto a bateria ou fonte de alimentação quanto o campo magnético gerado
pelo leitor para gerar corrente elétrica e possuem alcance de 0,5 a 5 metros. As passivas
retiram a corrente elétrica necessária para o funcionamento totalmente do campo magnético
gerado pelo leitor e possui alcance de até 50 centímetros.
No Brasil, a identificação de veículos por RFID já é utilizado para pagamento de
pedágios e estacionamentos, e em breve, com a implantação do SINIAV (Sistema Nacional de
Identificação Automática de Veículos), seu uso será obrigatório em todos os veículos.
Nesse projeto utilizamos a tecnologia RFID para a identificação dos veículos, quando
os mesmos passam pelos pontos de embarque/desembarque.
4 METODOLOGIA
O Sistema descobre o momento da passagem dos veículos em seus pontos de parada
ao longo de sua rota, e com isso, estabelece uma previsão de chegada do próximo veículo,
para cada um dos pontos de embarque.
A descoberta de tempo é feita com o uso de etiquetas (veículos) e leitores (pontos)
RFID e os registros de passagem dos veículos são transmitidos via GPRS, para um servidor
central, que os grava em uma base de dados. Sempre que houver uma requisição de
estimativa, o servidor processa as informações, realizando o cálculo, que é repassado ao
requerente. A requisição da estimativa é feita pelo mesmo módulo que registra as passagens, e
que também disponibiliza a estimativa no painel, para a visualização pelos passageiros.
5 ARQUITETURA
O Sistema consiste em servidor de aplicação e Banco de Dados, dispositivos
49
embarcados, módulos RFID e painéis informativo.
A Figura 1 exemplifica o sistema de comunicação e hardware. O servidor executa os
softwares de registro de passagens e estimativas, além do SGDB (Sistema Gerenciador de
Banco de Dados). O Módulo se comunica com o servidor via Internet, utilizando tecnologia de
comunicação móvel GPRS. O mesmo Módulo recebe dados do Leitor RFID via interface serial
RS232, e também envia as informações para o painel informativo, utilizando duas portas GPIO
(General Purpose Input Output).
Figura 1 - Arquitetura do Sistema
10 DESCRITIVO DO HARDWARE
Como é visto na Figura 2, o registro do veículo é feito assim que a etiqueta localizada
no veículo é detectada pelo Leitor RFID. O Leitor se comunica com o Módulo por meio de
comunicação serial RS-232. Ao receber a identificação do veículo, o Módulo realiza conexão
via GPRS com o servidor, e registra a passagem.
50
Figura 2 - Diagrama de hardware para registro da passagem.
O processo de exibir a estimativa no painel é iniciado por uma requisição feita pelo
Módulo ao Servidor, realizada periodicamente, com intervalos de 20 segundos entre o fim de
uma requisição e o início de outra. A comunicação também ocorre pelo mesmo meio, o GPRS,
só que em portas distintas. A resposta dessa requisição pode ser vista na Figura 3, onde o
servidor processa e envia os dados ao Módulo, que, por sua vez, controla os LEDs e displays
do painel, por meio das portas de GPIO.
Figura 3 - Diagrama de hardware para obtenção de estimativa.
O Módulo possui firmware que executa tanto o registro das passagens, quanto a
obtenção e disponibilização de estimativa. Para isso, é criada uma thread assim que o sistema
é iniciado. Essa thread irá aguardar o leitor RFID detectar a passagem de um veículo, e assim
que isso ocorrer, irá receber o código do veículo, estabelecer uma conexão socket com o
servidor, enviando logo em seguida, a identificação referente ao ponto no qual está localizado e
a identificação do veículo para registrar sua passagem. Terminado isso, a conexão é
encerrada, e o sistema volta a aguardar nova detecção.
Paralelamente, o sistema estabelece outra conexão socket com o servidor, por meio de
outra porta. Nessa conexão, é solicitada a localização e a estimativa do tempo de chegada do
próximo veículo. Os dados são enviados ao painel, e, após 20 segundos, o ciclo se repete.
Nesse caso, o objetivo é utilizar a mesma conexão para as próximas consultas, entretanto,
sempre que o novo ciclo é iniciado, a conectividade é testada, e se houver algum problema,
será estabelecida uma nova conexão, e finalizada a antiga.
51
10 DESCRITIVO DO SOFTWARE
O Sistema é composto por um software para registro da passagem dos veículos, e
outro para cálculo e fornecimento de estimativa de chegada do próximo veículo.
O software de registro de passagens cria um socket para escutar determinada porta.
Assim que recebe uma requisição de conexão do Módulo, é disparada uma thread para
atender a requisição, e a função principal volta a escutar a porta. Isso permite que ele acate
novas requisições enquanto processa as anteriores.
Ao iniciar a thread e estabelecer uma conexão, o software recebe do cliente (Módulo) a
identificação do ponto e o código identificador do veículo. Esses dados são registrados no
banco de dados por meio de SPs (Stored Procedures) no SGDB, que irá incluir mais dados no
registro, como horário e linha.
Assim como o software de registro de passagens, o software que fornece as
estimativas também cria um socket de escuta, e inicia uma nova thread para cada requisição.
Após a conexão ser estabelecida, a thread criada recebe do Módulo a identificação do
ponto e da linha da qual se deseja a previsão. O software irá calcular e enviar a estimativa ao
módulo, e permanecer conectado, aguardando uma nova requisição, que será feita
periodicamente pelo módulo, a cada 20 segundos. Se em algum momento a thread ficar na
espera por mais de 45 segundos, o sistema entenderá que houve queda na conexão, e a
thread será finalizada.
7 ALGORITMO DE CÁLCULO DO TEMPO DE ESPERA
Para a determinação do tempo estimado de espera para a chegada do próximo veículo
ao ponto, foi criado um procedimento na linguagem de programação Transact-SQL, extensão
da linguagem SQL, armazenado no Banco de Dados PostgreeSQL.
O software servidor inicia o procedimento no servidor de Banco de Dados, enviando os
parâmetros da linha e do ponto do qual deseja a estimativa. O servidor de Banco de Dados
executa o procedimento e retorna o tempo de espera estimado.
A rotina de cálculo leva em consideração o tempo médio que foi necessário, nas
ultimas três viagens anteriores à viagem atual, para percorrer entre os três pontos anteriores.
Após o cálculo dessas médias, o sistema calcula o desempenho da viagem atual, em
comparação as anteriores, e com isso, realiza a estimativa de tempo necessário para viagem
entre o ponto em questão e o ponto anterior a ele. O tempo estimado é subtraído do tempo já
decorrido após a passagem pelo ultimo ponto, e após isso, é retornado ao software servidor.
11 RESULTADOS
Para validar o Sistema, foi desenvolvido um emulador com interface gráfica para
Computador Desktop, simulando quatro pontos de parada, e o leitor RFID. Os códigos e
métodos utilizados, com exceção da interface gráfica, foram os mesmos utilizados no Módulo.
Como pode ser visto na Figura 4, o emulador exibe o status da conexão e nome do
ponto escolhido para emulação, localização do próximo veículo (em amarelo) e o tempo
estimado (em minutos) para a chegada do próximo veículo.
52
Figura 4 – Interface Gráfica do Emulador do Painel
Em testes realizados durante 1 hora, o Sistema se manteve estável, registrando todas
as requisições, com uso de processamento médio inferior a 10%, nas seguintes condições:
• Servidor conectado a Link de Internet 4Mbps;
• 1 Cliente Módulo conectado via GPRS;
• 20 Clientes Emulador conectados por link de Internet 1Mbps (Internet celular 3
Geração);
• 60 Clientes Emulador, executando 30 instancias na rede local, e outras 30 instancias
em outro computador, utilizando link de Internet 2Mbps.
O Sistema se mostrou eficiente e confiável em seu principal objetivo, que é o registro das
passagens. A funcionalidade de previsão de chegada do próximo veículo funcionou conforme
previsto, porém, necessita ser aprimorada para implantação em um sistema real. Deve-se ser
feito um estudo estatístico para validação e aprimoramento do algoritmo aqui utilizado.
12 CONCLUSÃO
O projeto consiste em um Sistema de Registro e Controle da Frota do Transporte
Coletivo, que registra horários das passagens pelos pontos de paradas e fornece estimativas
de chegada dos veículos aos passageiros, sendo composto por um conjunto de hardware e
software. O hardware engloba os leitores e etiquetas RFID, painel informativo e Módulo Java
TC65i com comunicação GPRS integrado. O software é dividido em três aplicações, sendo
uma no módulo, que interpreta os dados recebidos pelo leitor RFID, e envia informações ao
painel, outras duas no servidor, para registro dos dados e fornecimento de estimativas.
No final têm-se um sistema completamente automatizado, que realiza todas as ações
sem a necessidade de intervenção humana, oferecendo de modo instantâneo, estimativas com
base em informações armazenadas em um servidor central.
Com este projeto, percebeu-se que a utilização da identificação por rádio frequência
pode melhorar o processo de monitoramento do transporte urbano devido o alto grau de
automação que ela proporciona, reduzindo custos e erros na fiscalização e aumentando a
qualidade do serviço.
O Sistema mostrou-se bastante eficiente e preciso no registro dos horários das
passagens, o cálculo do tempo estimado foi satisfatório, porém, necessita de estudos
estatísticos para validação e aprimoramento do algoritmo utilizado.
Como sugestão para futuros trabalhos, pode-se utilizar Displays de Cristal Líquido
(LCD – Liquid Crystal Display) para confecção dos painéis, avisos sonoros, para que a
informação possa ser acessível aos deficientes visuais e serviço de consultas via SMS (Short
Message Service) e Web.
REFERÊNCIAS
53
ALENCAR, Marcelo Sampaio de. Telefonia Celular Digital. 2. ed. São Paulo: Ética, 2007.
DENATRAN - Departamento Nacional de Trânsito. SINIAV: Sistema Nacional de
Identificação
Automática
de
Veículos.
Disponível
em:
<http://www.denatran.gov.br/siniav.htm>. Acesso em: 10 ago. 2010
DRANE, Chris; RIZOS, Chris. Positioning systems in intelligent transportation systems.
London: Artech House, 1998.
FERRAZ, Antonio Clovis Pinto; TORRES, Isaac Guilhermo Espinosa. Transporte Público
Urbano. 2. ed. São Carlos: Rima, 2004.
IGLESIAS, Fabio and GUNTHER, Hartmut. A espera na vida urbana: uma análise
psicossocial das filas. [online]. 2009, vol.14, n.3, pp. 537-545. ISSN 1413-7372.
JESZENSKY, Paul Jean Etienne. Sistemas Telefônicos. Barueri, SP: Manole, 2004.
PEREIRA, M. M.; GUEDES, L. G. Perspectivas das comunicações móveis no Brasil.
Disponível em: <www.UCG.edu.br>. Acesso em: 26 ago. 2010.
54
ANEXO II – CÓDIGOS FONTE
55
Código-fonte do Servidor
CGD.java
public class CGD {
private Connection dbCon;
private String Usuario;
private String Senha;
private String Url;
private boolean ConfOK=false;
public void LeConf(){
if (!ConfOK)
{
BufferedReader in = null;
try {
in = new BufferedReader(new FileReader("./server.dat"));
Url = in.readLine();
Usuario = in.readLine();
Senha = in.readLine();
} catch (FileNotFoundException ex) {
Logger.getLogger(CGD.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(CGD.class.getName()).log(Level.SEVERE, null, ex);
}
ConfOK=true;
}
}
public void conectar() throws SQLException {
LeConf();
//Class.forName("org.postgresql.Driver");
dbCon = DriverManager.getConnection("jdbc:postgresql:"+Url, Usuario, Senha);
}
public void desconectar() throws SQLException {
dbCon.close();
}
public void alterar() {
}
public void deletar() {
}
public void regPassagem( String pontoParada, String idtag ) {
try {
conectar();
PreparedStatement ps;
ps = dbCon.prepareStatement("INSERT INTO movimentos(ponto,idtag,dthrpassagem)
VALUES(?,?,?)");
ps.setString(1,pontoParada);
ps.setString(2,idtag);
ps.setDate(3, new Date(System.currentTimeMillis()));
ps.execute();
56
desconectar();
} catch (SQLException ex) {
Logger.getLogger(CGD.class.getName()).log(Level.SEVERE, null, ex);
}
}
public ResultSet relatorio(String placa, String tipoVeic, String Documento, String nome, String
motivo,boolean PorData, String dataInic, String dataFinal) throws SQLException{
String where="";
if (Documento.length()>0)
where=where.concat(" AND m.cnh='"+Documento+"' ");
if (PorData)
{
if (!dataInic.equals(""))
where=where.concat(" AND m.dt_ent>'"+dataInic+" 00:00:00.000' ");
if (!dataFinal.equals(""))
where=where.concat(" AND m.dt_ent<'"+dataFinal+" 23:59:59.999' ");
}
ResultSet rs=null;
conectar();
PreparedStatement ps = dbCon.prepareStatement("SELECT * FROM movimentos m,veiculos
v,condutores c WHERE m.placa=v.placa AND m.cnh=c.cnh AND v.placa like '%"+placa+
"%' AND v.uso like '%"+tipoVeic+"%' AND c.nome like '%"+nome+"%' AND m.motivo
like '%"+motivo+"%'"+where+" ORDER BY m.dt_ent");
rs = ps.executeQuery();
desconectar();
return rs;
}
}
ServSocket.java
public class ServSocket{
private int PortaSrv = 10010;
ServerSocket srv = null;
Socket s = null;
public ServSocket( )
{
try {
srv = new ServerSocket(PortaSrv);
System.out.println("ServSocket - escutando porta: " + srv.getLocalPort());
while(true){
System.out.println("ServSocket: Aguardando conexao");
s = srv.accept();
System.out.println("ServSocket: Conexao detectada");
new ServSocketThread(s).start();
}
} catch (Exception e) {
System.out.println("ServSocket: " + e.getMessage());
}
}
}
57
servSocketThread.java
public class ServSocketThread extends Thread{
Socket s = null;
DataInputStream dis=null;
DataOutputStream dos=null;
public ServSocketThread(Socket s)
{
this.s=s;
setDaemon(true);
}
public void run() {
System.out.println("Thread Server: iniciada");
while(!abreSocketIO())
fechaSocketIO();
StringBuffer str = new StringBuffer();
System.out.println("vou ler");
int
ch;
do{
recebeStringServer();
}while(true);
}
private boolean abreSocketIO( ){
try {
dis = new DataInputStream(s.getInputStream());
dos = new DataOutputStream(s.getOutputStream());
System.out.println("Thread server ASS - conectado: " + s.getInetAddress() + ":" +
s.getPort());
return testaComunicServer( );
} catch (Exception e) {
System.out.println("Thread server ASS: " + e.getMessage());
return false;
}
}
private boolean testaComunicServer( ){
try {
String recebida = recebeStringServer( );
System.out.println("Thread Gprs TCS - recebida: " + recebida );
return recebida.equals(Integer.toString("testeComunic".hashCode()));
} catch (Exception e) {
System.out.println("Thread Gprs TCS: " + e.getMessage());
return false;
}
}
private String recebeStringServer( ){
StringBuffer str = new StringBuffer();
String strFinal = null;
try {
int i=0;
while (dis.available()<4){
Thread.sleep(500);
if (i==10){
return "";
58
}
i++;
}
int recByte = dis.readInt();
System.out.println("num de caracteres:"+recByte);
int j = recByte;
for (i=0; i<j; i++){
recByte = dis.read();
str.append((char)recByte);
}
strFinal = new String(str);
enviaStringServer(strFinal);
System.out.println("Thread Gprs RSS - recebida: " + strFinal);
return strFinal;
} catch (Exception e){
System.out.println("Thread Gprs RSS: " + e.getMessage());
return "";
}
}
private boolean enviaStringServer(String texto){
try {
System.out.println("Thread Server ESS - enviando: " + texto);
dos.writeInt(texto.length());
dos.write(texto.getBytes());
dos.flush();
return true;
} catch (Exception e) {
System.out.println("Thread Server ESS: " + e.getMessage());
return false;
}
}
private boolean fechaSocketIO( )
{
try {
dos.close();
dis.close();
s.close();
System.out.println("Thread server FSS: Socket finalizado");
return true;
} catch (Exception e) {
System.out.println("Thread server FSS: " + e.getMessage());
return false;
}
}
}
59
Código-fonte do Cliente
RFID.java
import java.io.*;
import javax.microedition.io.*;
public class Rfid {
CommConnection commConn;
InputStream inStream;
OutputStream outStream;
public Rfid() {
System.out.println("Portas
disponiveis:
"
+
System.getProperty("microedition.commports"));
try {
String strCOM = "comm:COM0;baudrate=9600;bitsperchar=8;stopbits=1;parity=none";
commConn = (CommConnection)Connector.open(strCOM);
System.out.println("porta" + strCOM + "aberta.");
inStream = commConn.openInputStream();
System.out.println("IS aberta");
} catch(IOException e) {
System.out.println(e);
}
}
public void letag() {
System.out.println("escutando porta serial");
StringBuffer str=new StringBuffer();
try {
int ch = -1;
int i = 0;
while(ch != 'Q') {
ch = inStream.read();
if (ch >= 0) {
i++;
System.out.print(ch + "-");
str.append(ch);
}
if (i==16){
System.out.print(ch + "\r\n");
break;
}
}
new RfidThread(new String(str)).start();
} catch(IOException e) {
System.out.println(e);
}
}
public void pauseApp() {
System.out.println("RS232Demo: pauseApp()");
}
public void destroyApp(boolean cond) {
System.out.println("RS232Demo: destroyApp(" + cond + ")");
try {
inStream.close();
60
outStream.close();
commConn.close();
System.out.println("Streams and connection closed");
} catch(IOException e) {
System.out.println(e);
}
}
}
mae.java
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class mae extends MIDlet {
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
notifyDestroyed();
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
System.out.println("estou rodando");
Rfid errefid=new Rfid();
try{
while(true){
errefid.letag();
}
}catch (Exception e) {
destroyApp(true);
}
destroyApp(true);
}
}
RfidThread.java
public class RfidThread extends Thread{
private String idtag = null;
public RfidThread(String idtag) {
this.idtag=idtag;
}
public void run(){
SockGprs conecGprs = new SockGprs(10010);
conecGprs.enviar(new String(idtag));
}
}
SockGprs.java
import java.io.*;
import javax.microedition.io.*;
61
public class SockGprs{
private String destHost = "nomehost.com", destPort = "10010", connProfile
"bearer_type=gprs;access_point=tim.br;username=tim;password=tim",
connProfile2
"bearer_type=gprs;access_point=zap.vivo.com.br;username=vivo;password=vivo";
SocketConnection sc = null;
DataInputStream dis = null;
DataOutputStream dos = null;
public SockGprs(int destPort)
{
System.out.println("Thread Gprs SG: construtor" );
this.destPort=Integer.toString(destPort);
}
public void enviar(String str)
{
while(!abreGprs( )){
System.out.println("Thread Gprs SG: nao foi possivel estabelecer conexao" );
fechaGprs( );
}
System.out.println("Thread Gprs SG: conexao estabelecida" );
while(!enviaStringGprs(str));
{ System.out.println("Thread Gprs SG: erro ao enviar tag"); }
System.out.println("Thread Gprs SG: tag "+ str + " enviada!");
fechaGprs();
}
private boolean abreGprs( ){
try { String openParm = "socket://" + destHost + ":" + destPort+ ";" + connProfile;
System.out.println("Thread Gprs AG: Connector open: " + openParm);
sc = (SocketConnection) Connector.open(openParm);
System.out.println("Thread Gprs AG: conectado com o socket ");
dis = new DataInputStream(sc.openInputStream());
dos = new DataOutputStream(sc.openOutputStream());
} catch (Exception e) {
String aux = connProfile;
connProfile = connProfile2;
connProfile2 = aux;
System.out.println("Thread Gprs AG: " + e.getMessage());
return false;
}
return testaComunicGprs( );
}
private boolean testaComunicGprs( ){
try {
return enviaStringGprs(Integer.toString("testeComunic".hashCode()));
} catch (Exception e) {
System.out.println("Thread Gprs TCG: " + e.getMessage());
return false;
}
}
private boolean enviaStringGprs(String texto){
boolean verif=false;
try { int i=0;
System.out.println("Thread Gprs ESG: enviando: " + texto);
do{
dos.writeInt(texto.length());
=
=
62
dos.write(texto.getBytes());
dos.flush();
i++;
verif=recebeStringGprs( ).equals(texto);
System.out.println("Thread Gprs ESG - verificacao: " + verif);
}while((!verif)&&i<5);
return verif;
} catch (Exception e) {
System.out.println("Thread Gprs ESG: " + e.getMessage());
return false;
}
}
private String recebeStringGprs( ){
StringBuffer str = new StringBuffer();
try {
int i=0;
while (dis.available()<4){
Thread.sleep(500);
if (i==5){
return "";
}
i++;
}
int recByte = dis.readInt();
System.out.println("num de caracteres:"+recByte);
int j = recByte;
for (i=0; i<j; i++){
System.out.println("entrei no for:" + str);
recByte = dis.read();
str.append((char)recByte);
}
System.out.println("Thread Gprs RSG - recebida:" + new String(str));
} catch (Exception e) {
System.out.println("Thread Gprs RSG: " + e.getMessage());
return "";
}
return new String(str);
}
private boolean fechaGprs( ){
try {
dis.close();
dos.close();
sc.close();
return true;
} catch (Exception e) {
System.out.println("Thread Gprs FG: " + e.getMessage());
return false;
}
}
public void pauseApp() {
System.out.println("Thread Gprs: pauseApp()");
}
public void destroyApp(boolean cond) {
System.out.println("Thread Gprs: destroyApp(" + cond + ")");
}
}
Download