SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em...

106
RODRIGO SILVA LEMOS SISTEMA DE MONITORAMENTO DA VELOCIDADE EM TEMPO REAL PARA VEÍCULOS POR GPS CANOAS, 2010

Transcript of SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em...

Page 1: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

RODRIGO SILVA LEMOS

SISTEMA DE MONITORAMENTO DA VELOCIDADE EM TEMPO

REAL PARA VEÍCULOS POR GPS

CANOAS, 2010

Page 2: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

RODRIGO SILVA LEMOS

SISTEMA DE MONITORAMENTO DA VELOCIDADE EM TEMPO

REAL PARA VEÍCULOS POR GPS

Trabalho de conclusão apresentado para a banca examinadora do curso de Engenharia de Telecomunicações do Centro Universitário LA SALLE – Unilasalle, como exigência parcial para obtenção do grau de Bacharel em Engenharia de Telecomunicações.

Orientação: Profº Me. Diogo Scolari

CANOAS, 2010

Page 3: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

RODRIGO SILVA LEMOS

SISTEMA DE MONITORAMENTO DA VELOCIDADE EM TEMPO REA L PARA

VEÍCULOS POR GPS

Trabalho de conclusão apresentado para a banca examinadora do curso de Engenharia de Telecomunicações do Centro Universitário LA SALLE – Unilasalle, como exigência parcial para obtenção do grau de Bacharel em Engenharia de Telecomunicações.

Aprovado pelo avaliador em 8 de dezembro de 2010.

AVALIADOR:

___________________________________________________

Profº Me. Diogo Scolari

Unilasalle

Page 4: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

Dedico este trabalho a minha esposa Jaqueline, pela inspiração e apoio nos

momentos difíceis; minha mãe Zeny, pelo apoio incondicional aos meus estudos; e

principalmente ao meu pai Gomercindo, eterno referencial de caráter e bondade que

me guia e me ilumina de onde quer que esteja.

Page 5: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

AGRADECIMENTOS

Agradeço a Deus por ter me guiado nesta difícil e vitoriosa caminhada; aos

familiares, que sempre estiveram comigo; aos amigos, que sempre se mostraram

presentes e interessados e aos colegas de graduação da Unilasalle.

Agradeço aos meus colegas de trabalho, que sempre me deram subsídio

moral e intelectual, para que minhas tarefas pudessem ser concluídas. Sem eles a

caminhada teria sido muito mais difícil.

Ao meu orientador, Prof° Me. Diogo Scolari, por su a paciência ao longo deste

projeto, e dedicação nos momentos decisivos.

Em especial, agradeço a minha esposa Jaqueline, que sempre esteve ao meu

lado em minhas decisões. Sempre me apoiou e me mostrou o caminho mais

sensato, através da sua grandeza e sabedoria.

Finalmente, agradeço aos meus pais Zeny e Gomercindo Lemos, sem os quais,

nada disso teria acontecido. Foram leais às minhas escolhas, muitas vezes

investindo-se no limite das suas forças. A eles trago o fruto do meu trabalho e da

minha dedicação.

Page 6: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

RESUMO

Este documento apresenta um estudo focado no desenvolvimento e implementação

de um dispositivo capaz de receber e informar ao condutor de um veículo a máxima

velocidade permitida em um determinado trecho da rodovia, monitorando em tempo

real e informando o momento em que esta é ultrapassada. Instrumento este,

embarcado e independente de qualquer forma de supervisão externa ao veículo,

auxiliado por um sistema de GPS. Na implementação deste projeto foram utilizadas

ferramentas conhecidas pelo estudante de Engenharia de Telecomunicações e de

fácil aquisição tais como: Microcontrolador, módulo GPS, programação em

“Linguagem C” e programas para compilação e programação.

Palavras-chave: Veículo. Velocidade. Rodovia. Tempo real. GPS. Engenharia de

Telecomunicações. Microcontrolador. Linguagem C.

Page 7: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

ABSTRACT

This paper presents a study focused on the development and implementation of a

device capable of receiving and informs to the driver of a vehicle the maximum speed

allowed on a particular stretch of highway, real-time monitoring and reporting the time

it is outdated. This instrument, embedded and independent any form of external

supervision to the vehicle, aided by a GPS system. In implementing this project were

familiar tools used by the student of Telecommunication Engineering and affordable

such as microcontroller, GPS module, programming in "C Language" and programs

for building and programming.

Keywords: Vehicle. Speed. Highway. Real time. GPS. Telecomunications

Engineering. Microcontroller. C language.

Page 8: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

LISTA DE FOTOS

Foto 1: Protótipo do modelo embarcado....................................................................20 Foto 2: Controle remoto usado no projeto..................................................................39 Foto 3: Gravador com modificação............................................................................43

Page 9: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

LISTA DE FIGURAS

Figura 1: Arquitetura interna do AT89S52..................................................................23

Figura 2: Pinagem externa do AT89S52 (DIP – 40 Pinos).........................................24

Figura 3: Constelação dos Satélites...........................................................................25

Figura 4: Estações de Terra.......................................................................................26

Figura 5: Módulo receptor com antena integrada......................................................28

Figura 6: Pinagem......................................................................................................28

Figura 7: Sentenças NMEA recebidas.......................................................................29

Figura 8: Sentenças recebidas através do hiperterminal do Windows......................30

Figura 9: Sentença utilizada no projeto, no detalhe a velocidade em Knots..............32

Figura 10: Placa de Desenvolvimento GGDL-3000...................................................33

Figura 11: Circuito Integrado MAX 232......................................................................35

Figura 12: Aplicação do MAX 232..............................................................................35

Figura 13: No detalhe o delay após cada conjunto de instruções..............................37

Figura 14: Buzzer.......................................................................................................38

Figura 15: Receptor de Infra Vermelho......................................................................39

Figura 16: Diagrama de Blocos do HS0038A2..........................................................40

Figura 17: Sinal reconhecido e processado pelo sensor...........................................40

Figura 18: “Ton” e “Toff” do sinal de teste..................................................................41

Figura 19: Aplicação proposta pelo fabricante...........................................................41

Figura 20: Placa Gravadora Cerne-Tec.....................................................................43

Figura 21: Criando um novo projeto...........................................................................45

Figura 22: Dispositivo escolhido.................................................................................45

Figura 23: Adicionando o código ao ambiente de desenvolvimento..........................46

Figura 24: Indicação da criação do arquivo “.hex”.....................................................47

Figura 25: Simulação de um contador.......................................................................48

Figura 26: IC-Prog 1.05D...........................................................................................49

Figura 27: Interface visual do programa gravador GP 8051 USB..............................50

Figura 28: IC-Prog pronto para gravação...................................................................50

Figura 29: Procedimento de gravação.......................................................................51

Figura 30: Processo de gravação concluído..............................................................51

Page 10: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

Figura 31: Escolha da ferramenta a ser programada.................................................52

Figura 32: Testando a transformação de ASCII para ANSI.......................................53

Figura 33: Interface Visual do GPS Diagnostics........................................................55

Figura 34: Área de memória reservada para os SFR................................................60

Figura 35: Trecho do programa utilizado neste trabalho, em detalhe o registrador

IE................................................................................................................................62

Figura 36: Trecho do programa utilizado neste trabalho, em detalhe o registrador

IP................................................................................................................................64

Figura 37: Trecho do programa utilizado neste trabalho, em detalhe o registrador

TMOD (APÊNDICE A)................................................................................................65

Figura 38: Trecho do programa utilizado neste trabalho, em detalhe o

registrador..................................................................................................................66

Figura 39: Trecho do programa utilizado neste trabalho, em detalhe o registrador

TCON.........................................................................................................................67

Figura 40: Em detalhe o registrador SCON................................................................68

Figura 41: Cristal de Quartzo.....................................................................................69

Figura 42: Valor de carga do contador (FDh).............................................................70

Figura 43: Diagrama em bloco da porta serial I/O.....................................................71

Figura 44: Identificação da sentença NMEA..............................................................72

Figura 45: Conversão de Knots para Km/h................................................................73

Figura 46: Imagem capturada no osciloscópio RIGOL DS-1102E.............................74

Figura 47: Início da codificação da tecla de número 8...............................................75

Figura 48: Função de Interrupção..............................................................................76

Figura 49: Atribuição dos limites de velocidade a partir referida tecla no controle

remoto........................................................................................................................77

Figura 50: Limite codificado para ser enviado ao micrcontrolador A.........................78

Figura 51: Os 4 últimos bits da tecla de número 8.....................................................79

Figura 52: Microcontrolador “A” decodificando limites recebidos do microcontrolador

“B”...............................................................................................................................80

Figura 53: Velocidade sendo comparada com limite.................................................80

Figura 54: Condutor com velocidade acima do permitido................................. ........81

Page 11: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

LISTA DE TABELAS

Tabela 1: Descrição dos pinos...................................................................................29

Tabela 2: Pinagem do Módulo LCD 16 x 2................................................................36

Tabela 3: Porta P1 com o conteúdo igual ao valor 0xAAh (1010101010b)...............61

Tabela 4: O registrador IE..........................................................................................62

Tabela 5: Registrador IE configurado com valor 84h (10000100b)............................62

Tabela 6: Registrador IP.............................................................................................63

Tabela 7: Registrador IP configurado com valor 04h (00000100b)............................63

Tabela 8: O registrador TMOD...................................................................................64

Tabela 9: Registrador TMOD com TIMER1 configurado no modo 2 (ANEXO

A)................................................................................................................................65

Tabela 10: Registrador TMOD com TIMER0 configurado no modo 1 (ANEXO

B)................................................................................................................................65

Tabela 11: O registrador TCON.................................................................................66

Tabela 12: Registrador TCON configurado com valor 04h (00000100h)...................67

Tabela 13: O registrador SCON.................................................................................67

Tabela 14: Registrador SCON configurado com valor 50h (01010000).....................68

Page 12: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

LISTA DE ABREVIATURAS

CTB – Código de Trânsito Brasileiro

CFC – Curso de Formação de Condutores

IPVA -

GPS - Global Positioning System

LCD – Liquid Cristal Display

RF – Rádio Frequencia

SMS -

CPL - Combined Programming Language

BCPL - Basic CPL

UART - Universal Asynchronous Receiver and Transmitter

CI – Circuito Integrado

CPU – Central Processor Unit

ROM – Read Only Memory

PROM – Programable Read Only Memory

EPROM – Erasable Programable Read Only Memory

EEPROM – Electrically Erasable Programable Read Only Memory

RAM – Random Acces Memory

SRAM – Staic Random Acces Memory

DRAM – Dynamic Random Acces Memory

ISP - In-system programming

DIP - Dual In-line Package

PLCC - Plastic Leaded Chip Carrier

TQFP - Thin Quad Flat Pack

EUA – Estados Unidos da América

UTC - Universal Time Coordinated

CDMA - Code Division Multiple Access

PRN - Pseudo-Random Code

NMEA - National Marine Electronics Association

EIA - Eletronics Industries Association

ASCII - American Standard Code for Information Interchange

Page 13: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

ZIF - Zero Insertion Force

IDE - Integrated Development Environment

NM – Nautical Mile

Page 14: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

LISTA DE SÍMBOLOS

V – volts

DC – Direct Current

VDC – Tensão DC

VAC – Tensão Alternada

KB – Kilo Byte

MHz – Mega Hertz

Km – Kilo Metros

ns – Nano Segundos

Ω – Hom

dB – deci Bell

bps – bits por segundo

mA – mili Ampere

Page 15: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

SUMÁRIO

1 INTRODUÇÃO..........................................................................................13

2 APRESENTAÇÃO ....................................................................................15

2.1 Apresentação do Projeto ........................................................................15

2.2 Programação ............................................................................................16

2.2.1 Linguagem C.............................................................................................18

2.3 Implementação em Hardware .................................................................19

2.4 Apresentação dos Principais Componentes ........................................19

2.4.1 Microcontroladores....................................................................................21

2.4.1.1 Microcontrolador AT89S52........................................................................22

2.4.2 GPS...........................................................................................................24

2.4.2.1 Módulo Receptor SkyNav SKM53.............................................................27

2.4.2.2 Padrão NMEA............................................................................................30

2.4.3 Placa de Desenvolvimento GGDL-3000...................................................32

2.4.4 Alimentação...............................................................................................33

2.4.5 Interface de Comunicação........................................................................34

2.4.5.1 MAX 232....................................................................................................34

2.4.6 Display LCD AMC 1602 A.........................................................................35

2.4.7 Buzzer.......................................................................................................37

2.4.8 Sensor Infravermelho................................................................................38

2.4.9 Placa Gravadora CERNE-TEC..................................................................41

2.5 Programas Utilizados ..............................................................................43

2.5.1 Keil uVision 3.............................................................................................43

2.5.2 Gravador CERNE GP8051........................................................................47

2.5.3 IC-Prog......................................................................................................50

2.5.4 DEV-C++...................................................................................................52

2.5.5 GPS Diagnostics.......................................................................................53

3 APLICAÇÃO .............................................................................................55

3.1 Controle da Velocidade ...........................................................................55

3.2 Limite de Velocidade Variável Para Um Determina do Trecho ............56

3.3 Aplicação de Multas em Tempo Real ....................................................57

Page 16: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

4 PROCESSOS............................................................................................59

4.1 Configuração do AT89S52 ......................................................................59

4.2 Aquisição e Validação dos Dados GPS .................................................68

4.3 Aquisição dos Limites de Velocidade Para o Trec ho ..........................72

4.4 Comparação .............................................................................................78

5 CONCLUSÃO .......................................................................................... 81

REFERÊNCIAS.........................................................................................83

APÊNDICE A – Código do Microcontrolador A.........................................85

APÊNDICE B – Código do Microcontrolador B.........................................93

ANEXO A – Esquema elétrico da Placa de Desenvolvimento..................99

ANEXO B – Tabela ASCII Padrão..........................................................100

ANEXO C – Tabela ASCII Estendida......................................................101

ANEXO D – Conjunto de instruções do módulo LCD.............................102

Page 17: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

1 INTRODUÇÃO

“Brasil é quinto país do mundo em mortes por acidentes de trânsito”, é o que

indica a pesquisa publicada recentemente pela Organização Mundial da Saúde

(OMS). (PORTAL DO TRÂNSITO, 2010)

“Mortes causadas por acidentes de trânsito sobem 20,8% entre 1994 e 2004”

segundo a Agência Brasil, órgão oficial do governo brasileiro. (FÓRUM DE

ENTIDADES NACIONAIS DE DIREITOS HUMANOS, 2007).

Ao se falar em pesquisas sobre acidentes de trânsito no Brasil, todas revelam

uma trágica estatística de crescimento de óbitos nestes eventos, principalmente em

estradas e rodovias. O fator preponderante na maioria das vezes é o desrespeito à

sinalização somado ao excesso de velocidade.

Além de óbitos, mutilações e perdas materiais, o acidente de trânsito traz

diversos prejuízos à sociedade e ao poder público, que arca todo ano com o peso

dos gastos com saúde e indenizações. Gastos estes que se tornam ínfimos se

comparados com o maior dos prejuízos: a perda da vida humana.

Este problema deve-se a inúmeros fatores, dentre eles a falta de educação

para o trânsito e uma fiscalização falha por parte dos órgãos competentes.

Para uma educação eficiente no trânsito não basta somente dar a informação,

é preciso despertar a consciência do indivíduo. O papel da educação é também, e

no caso do trânsito principalmente, desempenhado pela fiscalização que tem se

mostrado inadequada para determinados casos.

Várias medidas vem sendo tomadas, tais como: mudança no CTB, novos

métodos pedagógicos na formação do condutor, aumento das taxas no CFC,

aumento de IPVA, privatizações de rodovias, instalação de novos radares,etc. Tudo

acaba contribuindo positivamente, porém, com muita morosidade no que diz respeito

a redução de acidentes, e com ineficácia no quesito desrespeito aos limites de

velocidade.

Se fizermos um comparativo com o modelo do sistema de “Controle de

Tráfego Aéreo”, onde o piloto obedece a uma série de regras e é orientado e

controlado através de uma série de dispositivos, veremos que algumas adaptações

são plausíveis e necessárias.

Page 18: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

14

Alguns anos e muitas mortes por acidentes no trânsito se passarão até que

um sistema eficaz seja implementado, mas o primeiro passo tem que ser dado

urgentemente.

Este documento trata sobre um projeto que visa implemetar o controle da

velocidade através da interação veículo/rodovia através de um sistema embarcado.

Este sistema é responsável por receber parâmetros, ao longo de todo trajeto

percorrido, e apresentar em tempo real instruções ao condutor. Instruções de caráter

mandatório, imperativo, que fazem com que o condutor se mantenha dentro dos

limites de velocidade daquele trecho. O sistema também é capaz de configurar a

infração por excesso de velocidade e aplicar a multa adequada àquela situação.

O projeto está focado no uso da tecnologia na fiscalização de trânsito,

utilizando técnicas e equipamentos de baixo custo cujo tema será abordado com

detalhes no que diz respeito à implementação, componentes, programação e

funcionamento do sistema. Não serão deixados de lado sugestões e comentários

sobre possíveis implementações ao projeto como um todo.

Page 19: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

15

2 APRESENTAÇÃO

2.1 Apresentação do Projeto

Este trabalho apresenta o projeto de equipamento capaz de indicar a

velocidade atual de um objeto através dos dados recebidos por um módulo receptor

de GPS. O dispositivo projetado possui também a capacidade de receber dados

externos a ele, através de um receptor de infravermelho, utilizando-os na fixação de

diferentes limites de velocidade ao longo de um determinado trecho. Os limites de

velocidade, os auxílios visuais e a velocidade atual do objeto, são apresentados em

dois “displays de LCD 16 X 2”.

Para este trabalho, o equipamento será aplicado em um automóvel, de forma

embarcada, sendo alimentado pela tomada de 12V deste veículo. Saliento que o

mesmo equipamento possui livre aplicação a qualquer objeto que se mova, neste

caso, utiliza-se uma bateria para sua alimentação.

Ao longo de todo trajeto percorrido pelo veículo serão apresentadas também,

mensagens de informação e advertência de forma visual e sonora, fazendo com que

o condutor se mantenha dentro dos limites de velocidade para aquele trecho,

indicando quais atitudes devem ser tomadas naquele instante.

Todas as atitudes necessárias são tomadas pelo condutor, não há

intervenção da máquina sobre o homem no que diz respeito a condução e a

manutenção da velocidade do veículo. Fica a critério do condutor, permanecer ou

não dentro dos limites de velocidade para aquele trecho. Logo, um serviço extra de

aplicação de multas foi implementado no projeto.

Ao entrar em uma área controlada o equipamento recebe, via RF, o limite de

velocidade para aquele trecho. A velocidade atual a qual se desloca o veículo é

comparada em tempo real com o limite do trecho, caso a velocidade do veículo seja

maior, mensagens de advertência e alertas sonoros são apresentadas ao condutor.

Caso a velocidade permaneça maior, uma indicação sonora e luminosa é

apresentada, indicando que o condutor foi multado. Neste instante o equipamento

aciona o envio de uma mensagem SMS ao posto de fiscalização mais próximo,

indicando que aquele veículo deve ser multado. É claro que esta é uma sugestão de

Page 20: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

16

aplicação, porém, totalmente palpável, já que no equipamento encontra-se

implantado o sistema que possibilita o acionamento de um módulo responsável pelo

envio desta mensagem.

A aquisição dos dados GPS é feita através do receptor SkyNav SKM53,

fabricado pela Skylab M&C Technology.

O processamento, controle e armazenamento, são feitos através de um

microcontrolador da família 8051, o “AT89S52”, fabricado pela ATMEL. Este

componente é largamente aplicado na indústria eletro-eletrônica mundial.

A escolha de um microcontrolador desta família se deve a vários fatores,

dentre eles:

Baixo custo do componente – cerca de R$ 5,00 no varejo;

Baixo custo operacional - o 8051 é amplamente difundido nas escolas

técnicas deste país, barateando consideravelmente a mão de obra de programação

e implementação.

2.2 Programação

A programação do microcontrolador pode ser feita em qualquer tipo de

linguagem, tanto em “alto nível” como em “baixo nível”. Basta que se tenha um

software (compilador) capaz de compilar a linguagem escolhida, e que seja capaz de

criar um arquivo com a extensão “.hex”, contendo as instruções e os dados

programados para aquele microcontrolador.

O compilador, para o nosso caso, deve possuir “bibliotecas” com o conteúdo

interno do AT89S52, com informações sobre seus registradores, bancos de

memórias e instruções. O compilador escolhido para este projeto foi o “KEIL

uVISION 3”, e será apresentado posteriormente.

O “KEIL” foi escolhido por possuir ambiente de desenvolvimento, compilador e

ambiente de simulação integrados em uma única interface gráfica. Este software

possui também uma grande vantagem sobre seus concorrentes, a programação

pode ser feita em “Assembly” ou em “C”, já que a maioria de compiladores para este

microcontrolador só aceitam linguagem “Assembly”.

Page 21: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

17

A linguagem de programação utilizada foi a “Linguagem C”. Ela foi escolhida

devido a diversos fatores positivos, tanto para a área de desenvolvimento quanto

para produção, vejamos:

• O “C” é muito difundido, tanto na área da indústria quanto na área

acadêmica;

• Esta linguagem serve como base para diversas outras plataformas, isto

acaba sendo um atrativo já que outros softwares como, por exemplo, o

MATLAB, poderão ser manipulados pelo mesmo setor ou operador, caso

seja utilizado como apoio ao desenvolvimento;

• A literatura disponível para “C” é mais difundida do que para outras

linguagens;

• A implementação de cálculos matemáticos é mais acessível em

linguagens de alto nível, como o “C”;

• O número grande de “Bibliotecas” desta linguagem facilita

implementações em software.

Uma desvantagem da linguagem “C” é o tamanho do código “.hex” gerado

pelos compiladores. Este tamanho não segue uma regra, varia de compilador para

compilador. Isto ocorre por que as instruções na linguagem em que foi feita a

programação tem que ser correlacionadas com a linguagem nativa do

microcontrolador. Esta correlação e feita por quem desenvolveu o compilador e pode

variar de um para outro.

Caso a programação fosse feita na linguagem nativa do AT89S52, o

“Assembly”, o espaço ocupado por dados e instruções seria menor. Porém, o

manuseio desta linguagem é muito mais delicado e de difícil implementação em

alguns casos, como por exemplo, o uso de cálculos trigonométricos.

Não descartamos o uso do “Assembly” como segunda opção, dependendo da

habilidade e da vivência do programador com a linguagem.

Page 22: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

18

2.2.1 Linguagem C

A primeira versão de “C” foi criada por Dennis Ritchie em 1972 nos

laboratórios da empresa “Bell”. Este protótipo da linguagem “C” foi desenvolvido

para ser incluído como um dos softwares que seriam distribuídos juntamente com o

sistema operacional Unix do computador “DEC PDP-11”, na equipe certificada por

Ken Thompson.

Em 1967 surge a linguagem “CPL” nas universidades de Londres e

Cambridge, com o objetivo de elevar um pouco mais o nível da programação.

Ainda em 1967, em Cambridge, Martin Richards criou o “BCPL”, uma

simplificação do CPL.

Em 1970, Ken Thompson, chefe da equipe que projetou o UNIX para o “ DEC

PDP11” do “Bell Labs”, implementou um compilador para uma versão mais reduzida

do CPL, a linguagem “B’.

Tanto “BCPL” quanto “B’ mostravam-se muito limitadas, prestando-se apenas

para certas classes de problemas.

Após uma tentativa de reescrever o UNIX com uma linguagem de alto nível,

no caso o “B”, constatou-se a inviabilidade por este ser um programa muito lento

para esta aplicação.

Este e outros problemas levaram o projetista Dennis Ritchie, do “Bell Labs’, a

trabalhar no desenvolvimento de uma nova linguagem, sucessora do “B”, que viria

então a ser chamada de “C”.

A linguagem “C” buscou manter o "contato com o computador real" e ainda

sim dar ao programador novas condições para o desenvolvimento de programas em

áreas diversas, como comercial, científica e de engenharia.

Por muitos anos a sintaxe tida como padrão da linguagem “C” foi aquela

fornecida com o “UNIX versão 5.0” do “Bell Labs”. A principal documentação deste

padrão encontra-se na publicação "The C Programming Language", de Brian

Kernighan e Dennis Ritchie (K&R), tida como a "bíblia da linguagem C".

O mais interessante desta versão de “C” era que os programas-fonte criados

para rodar em um tipo de computador podiam ser transportados e recompilados em

outros sem grandes problemas. A esta característica dá-se o nome de portabilidade.

Page 23: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

19

Com ela, uma empresa que desenvolve um programa pode fazê-lo rodar em

diferentes computadores sem ter um elevado custo a cada vez que isto for feito.

Finalmente em 1985, o ANSI (American National Standards Institute)

estabeleceu um padrão oficial de C o chamado "C ANSI". (SWAN, 1994)

2.3 Implementação em Hardware

Neste projeto implementamos um receptor de GPS, com antena embutida,

acoplado a um microcontrolador. A comunicação entre os equipamentos é feita

através de uma interface de comunicação no padrão UART, via serial full-duplex de

8 bits.

Implementamos ainda, uma interface visual responsável por apresentar os

dados e os alertas do sistema através de dois displays de LCD de dezesseis colunas

por duas linhas (LCD 16 X 2), e uma interface sonora através um “Buzzer” DC.

Todo este sistema é alimentado através de um circuito com entrada de 12

VDC/VAC e saída de 5 VDC.

2.4 Apresentação dos Principais Componentes

A partir deste item será feita uma apresentação de cada um dos principais

componentes e suas principais características. Não será feito um estudo mais

detalhado de cada componente, afim de evitar fugir do foco deste trabalho.

Os principais componentes utilizados neste projeto são:

• 02 (dois) Microcontroladores AT89S52;

• 02 (dois) Display’s de LCD 16 X 2;

• 01 (um) Módulo Receptor GPS;

• 01 (um) Buzzer;

• 01 (um) Sensor de infravermelho ;

Page 24: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

20

• 01 (uma) Interface de comunicação entre o microcontrolador e o

módulo GPS;

• 01 (um) Circuito de alimentação e;

• 10 (dez) Led’s;

• Dentre outros componentes discretos como resistores, capacitores e

transistores.

Os experimentos práticos e as simulações foram efetuados com auxílio de

uma placa de desenvolvimento, que posteriormente será apresentada.

O módulo de GPS e a interface de comunicação e alimentação foram

montados em uma matriz de contatos (protoboard).

O protótipo completo, com o módulo conectado a placa, pode ser visualizado

na foto abaixo.

Foto 1: Protótipo do modelo embarcado Fonte: autoria própria, 2010.

Page 25: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

21

2.4.1 Microcontroladores

O microcontrolador é um dispositivo semicondutor produzido em forma de

Circuito Integrado (CI). Os microcontroladores são dispositivos altamente complexos

e versáteis, pois possuem em sua arquitetura todas as partes básicas de um

microcomputador:

• Microprocessador (CPU);

• Memórias não-voláteis (ROM /PROM/EPROM /EEPROM);

• Memórias voláteis (RAM, SRAM, DRAM, Flash RAM);

• Portas de entrada e saídas (paralela e/ou serial, conversores

analógico/digitais, etc.).

Muitas vezes o microcontrolador é chamado de microcomputador de um único

chip, por possuir todas as “etapas” de processamento e controle inerentes a um

microcomputador.

Existem diversos tipos de microcontroladores disponíveis no mercado,

projetados para infinitas aplicações com infinitas características. Além disso,

diversos fabricantes produzem microcontroladores da família 8051 (Intel, AMD,

Atmel, Dallas, OKI, Matra, Philips, Siemens, SMC, SSI).

A Intel iniciou a produção do “8051” em 1981. Em 1982 foram produzidos 2

(dois) milhões de unidades; em 1985 foram 18 milhões; e em 1993, 126 milhões.

(KRAUS JR, 2010)

Além do “8051” propriamente dito, existem variantes como o 8031 (sem

memória ROM interna e com apenas 128 bytes de memória RAM), o 8751 (4 kB de

memória EPROM) e o 8052 (8 kB de memória ROM, um terceiro timer e 256 bytes

de memória RAM. (KRAUS JR, 2010)

Para este projeto foi escolhido o AT89S52, variante do “8052”, fabricado pela

ATMEL. Os motivos desta escolha são muitos, inclusive os já citados na subseção

2.1, “Apresentação do Projeto”, onde o custo operacional e a facilidade de aquisição

na praça local foram fatores decisivos.

Page 26: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

22

2.4.1.1 Microcontrolador AT89S52

O AT89S52 é um microcontrolador que surgiu a partir do “8052’ e do “8051’,

logo, possui algumas melhorias em relação a seus antecessores.

Este microcontrolador possui 3 (três) temporizadores/contadores, um a mais

que o “8051”.

Possui maior capacidade de memórias, tanto RAM quanto ROM, e um

número maior de interrupções.

As principais características do AT89S52 são:

• Compatibilidade com os produtos da família MCS 51;

• 8K bytes de memória Flash reprogramável;

• 1000 (mil) ciclos de regravações;

• Faixa de operação entre 4.0 e 5.5 V;

• Operação totalmente estática entre 0 (zero) e 33 MHz;

• Proteção do programa em 3 (três) níveis;

• RAM interna de 256 bytes;

• 32 linhas de E/S (Entrada/Saída) programáveis;

• Três temporizadores/contadores de 16 bits;

• Oito fontes de interrupção;

• Uma UART serial programável “full duplex”;

• Modo de economia de energia desligado/ocioso;

• “Restart” da CPU através de interrupções nos modos de economia de

energia;

• Temporizador cão de guarda (Watchdog Timer);

• Data Pointer duplo;

• Velocidade de programação rápida e;

• Programação ISP.

O AT89S52 é fabricado com 3 (três) tipos de encapsulamento. Podemos

encontrá-lo nos padrões: DIP, PLCC e TQFP. O componente utilizado neste projeto

é o padrão DIP de 40 pinos.

Page 27: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

23

As figuras 1 e 2 mostram o diagrama de blocos, retirados do Datasheet deste

CI, e a pinagem externa com a identificação de suas funções.

Figura 1: Arquitetura interna do AT89S52

Fonte: Datasheet ATMEL AT89S52.

Page 28: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

24

Figura 2: Pinagem externa do AT89S52 (DIP – 40 Pinos) Fonte: Datasheet ATMEL AT89S52.

Na Seção 4 (quatro) deste trabalho, será feita uma explicação detalhada

sobre o funcionamento geral do projeto. Com o decorrer da apresentação e

explicação, os componentes internos e as funções do AT89S52, que foram

utilizados, vão sendo apresentados.

2.4.2 GPS

A tecnologia atual permite que qualquer pessoa possa se localizar no planeta

com uma precisão altamente satisfatória O sistema responsável por esse avanço é o

Global Positioning System (Sistema de Posicionamento Global - GPS)

O GPS foi concebido pelo Departamento de Defesa dos EUA no início da

década de 1960, sucedendo o “projeto NAVSTAR”, onde os pontos de referência

utilizados não eram satélites e sim radares em solo. O sistema de GPS foi declarado

totalmente operacional apenas em 1995. Seu desenvolvimento custou 10 bilhões de

dólares.

O sistema é composto atualmente por uma constelação de 24 satélites que

orbitam a terra a 20.200 km e emitem simultaneamente sinais de rádio codificados.

Page 29: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

25

Testes realizados em 1972 mostraram que a pior precisão do sistema era de

15 metros, e a melhor, 1 metro. Preocupados com o uso inadequado, os militares

americanos implantaram duas opções de precisão: para usuários autorizados (eles

mesmos) e usuários não-autorizados (civis). Os receptores GPS de uso militar

apresentavam precisão de 1 metro e os de uso civil, de 15 a 100 metros.

Figura 3: Constelação dos Satélites Fonte: SCOLARI, 2004.

Cada satélite emite um sinal que contém: código de precisão (P); código geral

(CA) e informação de status. Como outros sistemas de rádio-navegação, todos os

satélites enviam seus sinais de rádio exatamente ao mesmo tempo, permitindo ao

receptor avaliar o lapso entre emissão/recepção. A potência de transmissão é de 50

Watts.

A hora-padrão (UTC) GPS é um dos dados transmitidos pelo satélite.

Receptores de GPS em qualquer parte do mundo mostrarão a mesma hora, minuto

e segundos. A hora-padrão é altamente precisa, pois cada satélite tem um relógio

atômico, com precisão de “ns” (nano segundos).

O receptor tem que reconhecer as localizações dos satélites. Uma lista de

posições, conhecida como almanaque, é transmitida de cada satélite para os

Page 30: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

26

receptores. Controles em terra rastreiam os satélites e mantém seus almanaques

acurados.

Figura 4: Estações de Terra Fonte: SCOLARI, 2004.

A transmissão do sinal dos satélites é feita com modulação CDMA em duas

freqüências chamadas de L1 (1575,42 MHz) e L2 (1227,6 MHz).

O sinal gerado pelos satélites contém um "código de identidade" (ou pseudo-

randômico), dados efêmeros (de status) e dados do almanaque.

• O código de identidade “Pseudo-Random Code” (PRN) identifica qual

satélite está transmitindo. Usa-se como referência dos satélites seus

“PRN’, de 1 a 32.

O código pseudo-randômico permite que todos os satélites do sistema

compartilhem a mesma freqüência sem interferências. É um sistema

engenhoso que torna o GPS prático e relativamente barato de se usar. De

fato, os sinais GPS são tão fracos que não são maiores que o ruído de fundo

(de rádio) inerente à Terra. O princípio do código pseudo-randômico, que

significa literalmente "aparentemente aleatório", se baseia em uma

Page 31: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

27

comparação realizada em muitos ciclos de um sinal, que é demorada e

incômoda se comparada com um sinal de TV por exemplo.

• Os dados efêmeros (de status) são constantemente transmitidos e

contém informações de status do satélite (operacional ou não), hora, dia,

mês e ano.

• Os dados de almanaque dizem ao receptor onde procurar cada satélite

a qualquer momento do dia. Com um mínimo de três satélites, o receptor

pode determinar uma posição de latitude/longitude – que é chamada

posição fixa 2D – bi-dimensional. Com a recepção de quatro ou mais

satélites, um receptor pode determinar uma posição 3D, isto é,

latitude/longitude/Altitude. Pelo processamento contínuo de sua posição,

um receptor pode também determinar velocidade e direção do

deslocamento.

2.4.2.1 Módulo Receptor SkyNav SKM53

O SkyNav “Série SKM53” é um módulo receptor de sinal GPS que possui um

desempenho compatível com nosso trabalho. Este dispositivo possui uma antena

interna integrada com freqüência central de 1575+- 3MHz e 50 Ω de impedância, o

que facilita sua implementação em diversos tipos de projetos já que dispensa

cablagem e suportes para antenas. Facilita também, pois o projetista não precisa se

preocupar com a aquisição de mais um componente, a antena, e não precisa se

preocupar com diferentes modelos, diferentes fabricantes, conexões e casamentos

de impedância.

Page 32: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

28

Figura 5: Módulo receptor com antena integrada Fonte: Datasheet SkyNav SKM 53.

Figura 6: Pinagem Fonte: Datasheet SkyNav SKM 53.

Este receptor possui uma alta sensibilidade na recepção igual a “- 165 dBm”.

O SKM53 recebe o sinal de GPS na banda de freqüência “L1”, com uma taxa

de atualização de posição de 1 HZ. Sua precisão também surpreende positivamente,

são 3m, quando em modo 3D, cerca 0,1 m/s na velocidade e 60ns no tempo.

O módulo processa os dados e os envia a uma taxa de 9600 bps, através de

uma saída UART. Esta saída possui características compatíveis com o

microcontrolador escolhido para este projeto, logo, a conexão pode ser feita

diretamente. Seguindo recomendações do fabricante, foi colocado um resistor de

Page 33: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

29

push-pull na saída do módulo GPS, a fim de melhorar a estabilidade na

comunicação.

Tabela 1: Descrição dos pinos

Fonte: Datasheet SkyNav SKM 53

Para visualizar os dados enviados pelo receptor (sentenças NMEA),

diretamente no Hiperterminal do Windows, é necessário implementar uma interface

para o padrão “EIA RS – 232”. Esta interface foi montada com o CI “MAX 232”, que

será apresentado posteriormente.

A série SKM53 suporta as seguintes sentenças NMEA: GGA, GLL, GSA,

GSV, RMC VTG, ZDA.

Figura 7: Sentenças NMEA recebidas Fonte: Datasheet SkyNav SKM 53

Page 34: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

30

2.4.2.2 Padrão NMEA

A “National Marine Electronics Association” é o órgão responsável pela

padronização dos equipamentos eletrônicos da Marinha norte-america. Este órgão é

responsável pela criação do padrão que leva seu nome, o padrão NMEA.

Este padrão foi desenvolvido visando a conexão de dispositivos eletrônicos de

uso da Marinha, porém, se tornou um padrão de uso voluntário por parte da

indústria. A sua primeira versão foi liberada em março de 1983. Caba ressaltar que o

padrão NMEA é protegido pelas leis de copyright e não é gratuito e custa cerca de

250 dólares americanos para não-membros da instituição (NMEA).

O padrão NMEA define dentre outros: características elétricas do sinal,

protocolo da transmissão de dados, sincronismo e formatos específicos de

sentenças de transmissão. Este padrão foi adotado internacionalmente na indústria

de receptores GPS devido sua confiabilidade e simplicidade em sua implementação,

além de ser constantemente atualizado (versão, 3.01, data de janeiro de 2002).

Um dos itens deste padrão trata da comunicação e a maneira como são

apresentadas as informações processadas pelo receptor. Estas informações são

processadas de acordo com os dados recebidos da constelação de satélites do

sistema de GPS e atualizadas (na maioria dos equipamentos a atualização é feita

uma vez por segundo). O módulo recebe, dentre outros, horário UTC e, localização

e identidade de cada satélite. O receptor faz os cálculos necessários e apresenta os

resultados através de linhas contendo informações diversas. Estas linhas são

chamas de sentenças NMEA.

Page 35: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

31

Figura 8: Sentenças recebidas através do hiperterminal do Windows Fonte: autoria própria, 2010.

Uma sentença NMEA possui até 82 caracteres do padrão ASCII. Cada

sentença começa com o caractere “$” (24h) e termina com um “carriage return” (^M

= 0Dh) e uma instrução de nova linha (“LF”, ^J = 0Ah), tudo retirado do padrão ASCII

(ANEXO B). Todos os campos de dados são delimitados por vírgulas (,) e tem

comprimento variável. Os campos nulos também são delimitados por vírgulas (,)

mas não contêm nenhuma informação. O primeiro campo de dados é um campo de

endereço, chamado de cabeçalho. Este campo identifica a sentença como se fosse

um índice, se for necessário extrair alguma informação específica das sentenças,

basta identificar aquela que contém a informação desejada. O último campo de

dados é um controle de soma conhecido com “checksum”.

O cabeçalho possui uma apresentação que inicia com os caracteres “GP”,

sucedidos de 3 (três) caracteres que nomeiam a sentença, por exemplo:

“$GPGGA”.

Existem ainda sentenças de conteúdo proprietário que iniciam com o

caractere “P” (de “proprietary”), seguido de 3 (três) caracteres que identificam o

fabricante (código da instituição), e mais dois caracteres que identificam a sentença,

por exemplo:

Page 36: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

32

Uma sentença proprietária da empresa “GARMIN” é apresentada como,

“$PGRMME” (“P”, “GRM” e “ME”).

Os códigos de alguns dos fabricantes de equipamentos que adotam o formato

NMEA são: ASH (Ashtech), Cmp (C-Map), CSI (Communications Systems Intl), DAS

(Dassault Sercel), DNT (Del Norte), FEC (Furuno Electric Corp), GRM (Garmin

Corp), HPK (Hewlett Packard), e HWM (Honeywell Marine).

Existem várias sentenças, que trazem diversos tipos de dados ao usuário.

Neste projeto foi implementada a sentença “GPRMC”. Esta sentença possui os

dados de “velocidade sobre o solo” em sua composição. (SANTOS, 2010)

Figura 9: Sentença utilizada no projeto, no detalhe a velocidade em Knots Fonte: autoria própria, 2010.

2.4.3 Placa de Desenvolvimento GGDL-3000

As simulações deste projeto foram efetuadas com auxílio dos softwares, que

serão apresentados posteriormente, e da placa de desenvolvimento GGDL-3000.

Esta placa possui um soquete de encaixe rápido para o microcontrolador,

cristal de oscilação e diversos acessórios que podem ser utilizados, como: barra de

Page 37: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

33

led’s, buzzer, relé, dentre outros, como pode ser observado na figura abaixo, e em

seu diagrama, no Anexo “A”.

Figura 10: Placa de Desenvolvimento GGDL-3000 Fonte: autoria própria, 2010.

2.4.4 Alimentação

Durante o processo de desenvolvimento foram utilizadas duas formas de

alimentação: fonte de tensão contínua conectada na rede elétrica, e bateria

chumbo/ácida de 12V / 15mA.

A placa de desenvolvimento GGDL-3000 possui circuito de alimentação da

própria placa. Quando utilizada em bancada, foi alimentada com uma fonte de

tensão contínua de 9 ~ 14 V / 500mA. Quando foram efetuados testes em campo, foi

utilizada a bateria citada anteriormente.

O circuito montado na protoboard recebeu a mesma alimentação da placa de

desenvolvimento, tanto em bancada como em campo. Porém, foi implementado um

circuito regulador de tensão (CI 7805) para rebaixar e regular a tensão para 5 V,

Page 38: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

34

usados na alimentação do módulo receptor GPS e a interface de comunicação (CI

Max 232).

2.4.5 Interface de Comunicação

O sinal recebido pelo módulo GPS é processado, e é neste momento que o

módulo entra com os dados da constelação de satélites em seu sistema e as

sentenças NMEA são criadas.

Os dados contendo estas sentenças é enviado ao microcontrolador de

maneira serial, full-duplex com 8 bits de dados e um “stop bit”. Este último bit tem a

função de indicar o término de um byte

Esta transmissão ocorre com um Baud Rate de 9600, valor utilizado na

grande maioria dos módulos GPS pesquisados para este trabalho.

Utilizamos uma interface de comunicação com auxílio do CI Max 232.

A placa de desenvolvimento utilizada possui em sua entrada serial este CI,

sua função é transformar o sinal que entrada na placa em um nível que possa ser

reconhecido pelo 89S52.

2.4.5.1 MAX 232

O “CI Max 232”, utilizado na interface de comunicação entre o módulo

receptor e o microcontrolador, é um duplo driver/receptor utilizado na comunicação

serial entre um DTE (terminal de dados) e um DCE (comunicador de dados).

Este componente é comumente utilizado em interfaces onde seja necessário

adaptar os níveis de tensão, como por exemplo, do “TTL” para "CMOS”.

Este padrão é denominado “RS–232” pela EIA, órgão responsável por sua

padronização. Abaixo temos a pinagem deste CI e a montagem/aplicação sugerida

pelo fabricante.

Page 39: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

35

Figura 11: Circuito Integrado MAX 232 Fonte: Datasheet MAX 232.

Figura 12: Aplicação do MAX 232 Fonte: Datasheet MAX 232.

2.4.6 Display LCD AMC 1602 A

O display de LCD “16 X 2”, é um “periférico inteligente”, que possui um

microprocessador próprio que se comunica com o mundo externo através de 8 bits.

O display utilizado neste projeto possui 16 colunas por 2 (duas) linhas, onde

cada ponto possui uma matriz “5x8”, que forma o caractere. Este display tem a

capacidade de apresentar 32 caracteres e armazenar mais 64 caracteres em sua

memória interna.

A grande maioria dos displays possui um registrador interno chamado “RS”, e

é através deste registrador que informamos se o que está sendo enviado ao display

Page 40: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

36

é um dado ou uma instrução para ele, já que todos os bytes enviados ao LCD

passam por apenas um barramento.

Possui também outros dois registradores importantes, chamados “R/W” (de

Read e Write) e “E” (de Enable). O primeiro é responsável pela leitura e escrita de

um caractere no LCD. Se possuir valor 1 (um) faz a leitura do dado, se possuir valor

0 (zero) faz a escrita do dado.

O segundo, o registrador “E”, trata-se de um “Latch” responsável por habilitar

o recebimento dos dados no LCD, através do barramento de dados de 8 vias.

Existe ainda uma iluminação extra para alguns displays, chamado backlight.

Quando existente é comandada sua intensidade através dos pinos 15 e 16.

Tabela 2: Pinagem do Módulo LCD 16 x 2 Pino Função Descrição

1 Alimentação Terra ou GND 2 Alimentação VCC ou +5V 3 V0 Tensão para ajuste de contraste (ver Figura 1)

4 RS Seleção: 1 - Dado, 0 - Instrução 5 R/W Seleção: 1 - Leitura, 0 - Escrita 6 E Chip select 1 ou (1 → 0) - Habilita, 0 - Desabilitado 7 B0 LSB 8 B1 9 B2 Barramento

10 B3 de 11 B4 Dados 12 B5 13 B6 14 B7 MSB 15 A Anodo p/ LED backlight 16 K Catodo p/ LED backlight

Fonte: adaptado de DATASHEET Display LCD AMC1602A, 2010.

Sempre que um display é iniciado (ligado), deve-se configurá-lo para que

apresente os caracteres da maneira que o programador deseja, isso justifica a

existência do registrador “RS”, pois são enviados bytes com instruções (ANEXO D),

e bytes com dados.

Page 41: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

37

Estas instruções são responsáveis pela maneira como o caractere será

apresentado, se da direita para a esquerda ou o contrário, se de baixo para cima, se

será escrito na primeira linha, primeira coluna, etc

Não podemos esquecer que para cada instrução realizada devemos preservar

um delay em nosso programa.

Figura 13: No detalhe o delay após cada conjunto de instruções Fonte: autoria própria, 2010.

2.4.7 Buzzer

Uma das funções deste projeto inclui a emissão de alertas visuais e sonoros.

Os alertas sonoros estão presentes no momento em que o condutor excede o

limite de velocidade, ao receber um novo limite de velocidade para o trecho e no

instante em que é multado.

Page 42: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

38

Para emissão destes alertas foi implementado um buzzer de 5 V. Este

componente é facilmente encontrado no varejo, possui custo acessível e fácil

implementação.

Figura 14: Buzzer Fonte: imagem internet, 2010.

2.4.8 Sensor Infravermelho

O modelo proposto indica a utilização de um transmissor de RF, localizado na

via, emitindo os limites de velocidade para o trecho, e um receptor da mesma

tecnologia embarcado no veículo, recebendo estes limites.

Para este trabalho, implementamos um sistema de emissão e recepção com

sinal Infra Vermelho (IR). Este sinal é emitido através de um controle remoto:

Foto 2: Controle remoto usado no projeto Fonte: autoria própria, 2010.

Page 43: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

39

O sensor receptor utilizado é o HS0038A2:

Figura 15: Receptor de Infra Vermelho Fonte: Datasheet HS0038A2.

Este sensor possui a função de fotodetector através de um diodo tipo PIN, e

também a função de pré amplificador.

Figura 16: Diagrama de Blocos do HS0038A2 Fonte: Datasheet HS0038A2.

Este receptor identifica o sinal IR e libera em sua saída um sinal de mesma

freqüência e modulação, porém, na forma de onda quadrada. Este processo é

utilizado na decodificação do sinal já que o mesmo possui um filtro interno para

PCM.

Page 44: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

40

Figura 17: Sinal reconhecido e processado pelo sensor Fonte: Datasheet HS0038A2.

Figura 18: “Ton” e “Toff” do sinal de teste Fonte: Datasheet HS0038A2.

O componente foi escolhido por ser de fácil implementação, possuir baixo

custo, e alimentação de 5 VDC, a mesma de todos os outros componentes do

λ = 950 nm, sinal de teste, Figura 17

, veja Figura 18

Page 45: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

41

projeto. Basta alimentar, aterrar e conectar sua saída em alguma porta do

microcontrolador. No nosso caso, sua saída é conectada no AT89S52, no pino

responsável por sua interrupção.

Figura 19: Aplicação proposta pelo fabricante Fonte: Datasheet HS0038A2.

O processo completo de aquisição dos limites de velocidade, implementado

com IR, será detalhado oportunamente neste trabalho.

2.4.9 Placa Gravadora CERNE-TEC

Para o desenvolvimento do programa responsável pelo controle e execução

do projeto, foram utilizados softwares que serão oportunamente apresentados,

inclusive o software deste gravador.

Após todas as etapas de programação e simulação, um arquivo no formato

“HEX-80” e extensão “.hex” era gravado no microcontrolador, afim de verificar seu

funcionamento.

Para efetuar a gravação deste arquivo foi utilizado um gravador de

microcontrolador conectado com o PC através da porta USB.

O gravador “GP 8051 USB” foi adquirido através da loja virtual Cerne

Tecnologia e Treinamento (www.cerne-tec.com.br).

Page 46: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

42

Este gravador utiliza um “PIC 18F 2550” em seu processo de gravação e

funciona com a tensão de alimentação proveniente da própria porta USB, não sendo

necessário utilizar fonte de alimentação externa.

Este gravador possui em seu modelo original um soquete simples tipo DIP de

40 pinos para alojar o microcontrolador, como pode ser visto na figura 20.

Figura 20: Placa Gravadora Cerne-Tec Fonte: www.cerne-tec.com.br , Acessado em julho de 2010.

Para o uso deste gravador, o CI é encaixado no soquete, gravado, e retirado.

O soquete utilizado pelo fabricante não é ideal para este procedimento.

Para solucionar este problema, o soquete simples foi substituído por um

soquete de encaixe rápido tipo ZIF, melhorando consideravelmente o processo de

gravação.

Page 47: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

43

Foto 3: Gravador com modificação Fonte: autoria própria, 2010.

2.5 Programas Utilizados

Alguns programas foram utilizados no desenvolvimento deste trabalho.

Plataformas para desenvolvimento de software, emuladores e gravadores.

Todos os programas utilizados foram adquiridos em suas versões gratuitas,

através da internet. Estas ferramentas foram imprescindíveis em todas as etapas de

projeto, desde a concepção até a implementação propriamente dita.

Faremos agora uma apresentação destes programas e em qual etapa do

projeto foram utilizados.

2.5.1 Keil uVision 3

O Keil é basicamente um software que é utilizado no desenvolvimento de

outros softwares, um “Ambiente Integrado de Desenvolvimento” (IDE - Integrated

Page 48: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

44

Development Environment). Ele possui uma interface visual muito completa e de

fácil entendimento, além de possuir uma versão gratuita para download.

O Keil possui em sua distribuição, bibliotecas do padrão “ANSI C”, como por

exemplo "stdio" e “stdlib”, e possui também bibliotecas específicas para o

microcontrolador a ser programado.

Existe uma lista muito grande de microcontroladores e PIC’s, de diversos

fabricantes que podem ser escolhidos neste ambiente de desenvolvimento.

Podemos afirmar com convicção que o keil é o software de maior importância

neste trabalho. È nele que a programação e as simulações são efetuadas.

Para utilizarmos esta ferramenta seguimos alguns passos:

1° Abrir o programa e criar um novo projeto, em “Pr oject” e em seguida, “New

uVisio Project”.

Figura 21: Criando um novo projeto Fonte: autoria própria, 2010.

Dentro deste projeto poderão ser incluídos diversos códigos diferentes.

2° Em seguida o keil abre uma janela para que seja escolhido o dispositivo

que será programado. No nosso caso, um microcontrolador do fabricante ATMEL, o

AT89S52.

Page 49: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

45

Figura 22: Dispositivo escolhido Fonte: autoria própria, 2010

3° Em seguida, deve-se clicar com o botão direito e m cima de “Source Group

1” afim de adicionar o código que será trabalhado. Caso não se tenha nenhum

trecho pronto, no menu “File”, abrir ”new file” e salvar com a extensão escolhida, no

nosso caso “.C”.

Figura 23: Adicionando o código ao ambiente de desenvolvimento Fonte: autoria própria, 2010.

Page 50: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

46

Além das funções já citadas, ele possui também a função de criar, a partir do

código escrito pelo programador, o código em formato hexadecimal (.hex) que será

gravado na memória do microcontrolador.

Figura 24: Indicação da criação do arquivo “.hex” Fonte: autoria própria, 2010.

O equipamento responsável por efetuar esta gravação é o gravador CERNE

GP8051, que será apresentado posteriormente.

O keil em sua versão livre permite que sejam feitas simulações utilizando um

código com tamanho máximo de 2 KB. Esta limitação trouxe um incômodo

considerável na fase de programação e simulação.

A solução encontrada para superar esta dificuldade foi desmembrar o código

e testá-lo em partes diferentes, com tamanhos inferiores a 2 KB. Não se tornaria

viável mudar de software na fase em que foi detectado este problema, já que existia

um prazo estipulado para o fechamento deste projeto.

Para os “delays” e contadores, por exemplo, a técnica de desmembramento

foi muito utilizada.

Page 51: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

47

Figura 25: Simulação de um contador Fonte: autoria própria, 2010.

2.5.2 Gravador CERNE GP8051

Como já foi comentado, a gravação do arquivo “.hex” é feita com o gravador

“GP 8051 USB”.

Para o procedimento de gravação utilizou-se o software proprietário deste

gravador, executado com sistema operacional Windows XP.

O software, assim como o hardware, infelizmente não pôde ser usado na sua

forma original. Um segundo programa teve que ser usado em conjunto com o

primeiro, pois este não reconhecia o arquivo “.hex” gerado pelo software Keil.

O problema se deu, pois o keil gera um arquivo que contem somente os

dados e as instruções que devem ser gravados, e o software do gravador precisa

Page 52: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

48

além disso que sejam completados com “00FF’ os espaços de memória que não

serão utilizados.

Para solucionar este problema foi utilizado o software “IC-Prog”, que será

apresentado na “Subseção 2.5.3.”.

Figura 26: IC-Prog 1.05D Fonte: autoria própria, 2010.

Repare que no caso acima, o conteúdo do arquivo “.hex” encontram-se a

partir do endereço “0800” e o restante da memória é preenchida com “00FF”.

Solucionado o problema, seguimos os seguintes passos na gravação:

1° Inserir o microcontrolador no ZIF soquete do gra vador.

2° Conectar o gravador na porta USB do PC.

O gravador utiliza driver do próprio Windows, neste instante o hardware é

reconhecido e a interface visual do software á aberta automaticamente. A interface é

intuitiva e de fácil manuseio.

Page 53: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

49

Figura 27: Interface visual do programa gravador GP 8051 USB Fonte: autoria própria, 2010.

3° Apagar o conteúdo atual da memória do microcontr olador .

4° Abrir o IC-Prog e selecionar o modelo do microco ntrolador que será

gravado, no nosso caso selecionar AT89S52.

Figura 28: IC-Prog pronto para gravação Fonte: autoria própria, 2010.

5° Através do menu “File”, abrir o arquivo”.hex” qu e deve ser gravado e

salvá-lo com outro nome na extensão “.hex”.

6° Somente agora o software do gravador poderá util izar o arquivo. Clicar

em “Gravar AT89S52 ou AT89S8253”.

Page 54: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

50

Figura 29: Procedimento de gravação Fonte: autoria própria, 2010.

7° Ao término da gravação uma mensagem como abaixo informa que o

microcontrolador foi gravado.

Figura 30: Processo de gravação concluído Fonte: autoria própria, 2010.

Após o processo concluído, retira-se o microcontrolador que está pronto para

o uso.

2.5.3 IC-Prog

O IC-Prog é um software gratuito para programar microcontroladores,

memórias e diversos modelos de PIC.

Compatível com diversos gravadores disponíveis gratuitamente na internet. O

IC-Prog como todo bom software gratuito está disponível em diversos idiomas

incluindo português.

Page 55: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

51

Este software foi utilizado em nosso projeto como auxiliar no processo de

gravação do microcontrolador, por preencher os requisitos técnicos do hardware

gravador CERNE GP8051 como citado anteriormente.

Sua utilização é muito simples e seu processamento muito rápido, trata-se de

um executável de fácil manuseio. Basta abrir o programa, escolher a ferramenta

(PIC, microcontrolador ou memória) que será feita a gravação e abrir o arquivo

“.hex”.

Figura 31: Escolha da ferramenta a ser programada Fonte: autoria própria, 2010.

Este programa é utilizado também para efetuar gravações no modo ISP, com

utilização da porta paralela do PC. Porém, não foi utilizado com este intuito neste

projeto, pois a gravação foi efetuada com o software próprio do hardware gravador

adquirido, através da porta USB.

Page 56: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

52

2.5.4 DEV-C++

O “DEV-C++” é um Ambiente de Desenvolvimento Integrado (IDE) para

programação na linguagem C/C++, gratuito e de código aberto, totalmente escrito

em Delphi

Neste trabalho, foi utilizado em ambiente Windows, como auxiliar na

concepção deste projeto. Sua interface de fácil interação foi fator decisivo na

escolha de um ambiente paralelo ao Keil.

Diversos trechos de código que não tinham ligação direta com o AT89S52, ou

seja, não necessitavam das bibliotecas específicas, foram escritos e testados neste

software.

Figura 32: Testando a transformação de ASCII para ANSI

Fonte: autoria própria, 2010.

Após a análise dos resultados, os trechos eram copiados para o “keil”, sendo

inseridos no código principal.

2.5.5 GPS Diagnostics

Page 57: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

53

Este programa foi utilizado como auxiliar na utilização do módulo GPS. Como

o módulo não possui nenhuma interface visual, foi necessário utilizar esta

ferramenta, através da porta serial do PC, em diversas etapas do projeto.

Capaz de identificar diversas sentenças e capaz de identificar diferentes

fabricantes de módulos receptores de GPS. Aplicado ao sistema operacional

Windows, este software possui uma versão livre que pode ser facilmente encontrada

na internet.

O software identifica as sentenças NMEA e apresenta os resultados através

de uma boa interface gráfica, além de apresentar em tempo real o recebimento das

sentenças NMEA na mesma tela.

O GPS Diagnostics foi utilizado para efetuar o teste do equipamento, para

efetuar as medições das velocidades, dos delays do módulo, em fim, foi uma

ferramenta muito importante no desenvolvimento deste trabalho.

Page 58: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

54

Figura 33: Interface Visual do GPS Diagnostics Fonte: autoria própria, 2010.

No detalhe da figura 33 as sentenças NMEA sendo recebidas. E acima, as

sentenças interpretadas pelo GPS Diagnostics.

Page 59: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

55

3 APLICAÇÃO

Nossa proposta se restringe primeiramente a aplicação em trechos de

estradas e rodovias, onde a fiscalização se mostra cada vez mais ineficiente.

A implementação nestes trechos, de maneira experimental, seria também

muito mais acessível, devido ao tipo de fluxo de veículos. Em uma rodovia existem

basicamente dois sentidos de trânsito, e ambos estão fisicamente muito próximos, o

que facilita a emissão e captura do sinal de RF. Em um trecho urbano com várias

vias fisicamente próximas, o controle individual se torna mais complexo.

Sua aplicação em trechos urbanos está condicionada a mudanças em seu

projeto original, porém, não inviabiliza sua implementação

3.1 Controle da Velocidade

A principal função deste projeto é auxiliar na diminuição de acidentes de

trânsito. Um dos fatores que mais contribui para o acidente de trânsito é a ineficiente

fiscalização da velocidade nas estradas e rodovias.

A legislação brasileira prevê que radares de controle de velocidade devam ser

anunciados quando existentes, levando os maus condutores a reduzir sua

velocidade apenas naquele determinado ponto, e logo em seguida retomam a

velocidade não permitida. Esta fiscalização é falha e ultrapassada, pois apenas um

pequeno trecho da rodovia está sendo fiscalizado efetivamente. Além disso, o custo

de cobertura por radar, para o mesmo tipo de cobertura deste projeto, acabaria

gerando um custo alto para o estado.

Contar apenas com o fator humano na tomada de decisões que podem

colocar a vida de terceiros em risco, e contar apenas com a consciência do condutor

esperando que sejam cumpridas as regras de trânsito, não nos parece ser a melhor

opção. Logo, uma interação e um determinado controle efetuado pela máquina se

tornam indispensável.

Aliado a uma política de educação eficiente para o trânsito, o controle é a

melhor forma de garantir a queda no número de acidentes de trânsito.

Page 60: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

56

Para este trabalho foi implementado um sistema de controle onde a

velocidade atual do objeto é dada pelo sistema de GPS.

O equipamento embarcado recebe os dados da velocidade e recebe ao longo

da via, por outro sistema, os limites de velocidade. O sistema de GPS atualiza seus

dados uma vez por segundo, logo, a velocidade é atualizada com esta freqüência.

Constantemente a velocidade e o limite para o trecho são comparados,

independentes de outro sistema externo, assim, a fiscalização é feita

individualmente em cada veículo.

3.2 Limite de Velocidade Variável Para Um Determina do Trecho

Além de efetuar uma fiscalização mais eficiente, este projeto trás uma

melhoria na qualidade do trânsito com a implementação de limites de velocidade

variáveis.

Como vimos anteriormente, o condutor intercepta um transmissor de RF no

início e no fim do trecho a ser fiscalizado. O limite de velocidade para aquele trecho

é apresentado no display juntamente com um alerta sonoro. A velocidade pode

ainda ser apresentada em painéis na rodovia, no mesmo ponto do transmissor.

Estes painéis eletrônicos de indicação são aplicados atualmente em diversas

rodovias no Brasil.

Ainda sobre o transmissor de RF, este deverá ser controlado remotamente,

via fibra óptica, RF, Data link, etc. A tecnologia utilizada para seu controle pode

variar de acordo com a disponibilidade local.

Logo, a velocidade para um determinado trecho pode ser monitorada e

modificada a qualquer instante, remotamente, de acordo com vários parâmetros, tais

como:

Condições meteorológicas no trecho monitorado - Uma rodovia que se

encontra sob neblina não deveria possuir o mesmo limite de velocidade que possui

em um dia ensolarado, por exemplo. O mesmo se aplica para condições de chuva e

durante a noite;

Fluxo de veículos no trecho monitorado – Uma rodovia possui um fluxo de

veículos variável. Logo, o controle desse fluxo deve ser tratado de maneira

Page 61: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

57

diferenciada. O fluxo pode variar em determinados horários do dia ou em datas

especiais como finais de semana prolongados e feriados. A aplicação de um limite

de velocidade de acordo com o fluxo deve diminuir o congestionamento e acabar

com o trânsito proibido nos acostamentos. Lembrando que o motivo de muitos

congestionamento e paradas bruscas se deve ao fato de o condutor “furar a fila” pelo

acostamento, fazendo com que todos os outros parem ou diminuam a velocidade

para que ele entre novamente na via;

Da mesma forma, a rodovia pode ter seu limite de velocidade aumentado,

trazendo um ganho muito grande de qualidade no trânsito.

Este monitoramento e controle devem ser feitos por órgão competente, de

forma criteriosa e com a tecnologia que julgar conveniente.

3.3 Aplicação de Multas em Tempo Real

De nada adianta impor um limite de velocidade e fiscalizá-lo se não houver

um sistema de punição para quem ultrapassar o limite imposto.

O projeto prevê a implementação de um módulo GSM podendo ser utilizado

para o envio de uma mensagem ao posto policial mais próximo caso o veículo

ultrapasse o atual limite de velocidade. Ressaltamos que o projeto prevê esta

implementação, porém, este item não foi executado neste trabalho.

No entanto, o controle deste módulo e a simulação de seu acionamento foram

implementados junto ao software e ao hardware deste projeto.

O veículo ao ultrapassar o limite de velocidade é alertado através de

mensagens apresentadas no display, além de alertas sonoros emitidos pelo buzzer.

Somente após a permanência nesta situação por um período de tempo determinado,

a mensagem de multa é enviada através do módulo GSM (ou GPRS). Esta

mensagem contém a identidade digital do veículo, podendo ser facilmente

implementado o local onde ocorreu a infração (através do GPS) e o tipo de infração

(média, grave ou gravíssima) de acordo com o percentual excedido, como prevê o

CTB.

Em seguida o condutor é alertado mais uma vez, através do display e do

buzzer, desta vez informando que o veículo foi multado. Neste caso, após

Page 62: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

58

implementarmos o algoritmo para tipificar a multa, o valor da mesma pode ser

apresentado ao condutor no display de LCD no instante em que este foi multado.

Page 63: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

59

4 Processos

Nesta seção faremos uma explicação sobre os processos de aquisição dos

dados GPS, limites de velocidade e como é feito o processamento deste conteúdo.

A partir da próxima subseção a explicação será feita a partir da programação

do AT89S52, onde partes do código que se encontra nos anexos”B” e ”C”, serão

apresentadas ao longo desta seção.

Como foi citado anteriormente, os componentes internos utilizados (partes

internas do microcontrolador, LCD e demais componentes) serão apresentados ao

longo da explicação, a fim de facilitar a leitura e a compreensão deste trabalho.

4.1 Configuração do AT89S52

O AT89S52 possui uma região de sua memória composta por alguns

registradores de funções especiais. São os chamados SFR.

Na área de memória SFR, existem alguns registradores que são bytes e bits

endereçáveis, e outros que são apenas bytes endereçáveis. Nesta área não é

possível fazer gravação de código.

Figura 34: Área de memória reservada para os SFR Fonte: INTERNET, 2010.

Page 64: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

60

Estes registradores devem ser configurados de acordo com a aplicação do

microcontrolador. Neste trabalho utilizamos alguns deles:

• P0, P1, P2 e P3 – As “portas” 0, 1, 2 e 3 são SFR’s de 8 bits cada, que

possuem seus estados apresentados diretamente em seus pinos físicos

correspondentes, como visto na Fig. Xx. Estes bits podem ser acessados

individualmente e são usados como portas de E/S. Neste projeto estas

portas são utilizadas para enviar e receber dados tanto para periféricos

como de um microcontrolador para o outro. No caso de acionamento de

periféricos optamos pelo acionamento através de transistor do tipo PNP,

com acionamento em nível baixo. Abaixo, um exemplo de utilização da

porta P1:

Tabela 3: Porta P1 com o conteúdo igual ao valor 0xAAh (1010101010b) Pino 8 7 6 5 4 3 2 1

Identificador P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0

Valor do Bit 1 0 1 0 1 0 1 0

Nível de Saída VCC GND VCC GND VCC GND VCC GND

Fonte: autoria própria, 2010.

• IE (Interrupt Enable) – O registrador “IE” é o responsável por habilitar

as interrupções do AT89S52 que se deseja utilizar.

Seus bits são endereçáveis por software, não podendo ser acessados

diretamente como nas portas “P0 -3”.

Para habilitar uma interrupção, atuamos neste registrador através das

seguintes chaves:

Page 65: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

61

Tabela 4: O registrador IE Bit 7 6 5 4 3 2 1 0

Símbolo EA ----- ET2 ES ET1 EX1 ET0 EX0

1 – Habilita Interrupção 0 – Desabilita Interrupção

Fonte: adaptado de DATASHEET AT89S52, 2010.

Onde “EA”, habilita todas interrupções que estiverem selecionadas com nível

alto. Neste projeto esta sendo utilizada a interrupção “EX1” (Interrupção

Externa 1 – INT1). Esta interrupção é utilizada no recebimento dos limites de

velocidade.

Para este trabalho o registrador “IE’ foi configurado da seguinte maneira:

Tabela 5: Registrador IE configurado com valor 84h (10000100b) Bit 7 6 5 4 3 2 1 0

Símbolo EA ----- ET2 ES ET1 EX1 ET0 EX0

Nível 1 0 0 0 0 1 0 0

Fonte: autoria própria, 2010.

Figura 35: Trecho do programa utilizado neste trabalho, em detalhe o registrador “IE” Fonte: autoria própria, 2010.

Page 66: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

62

• IP (Interrupt Priority) – Para programarmos a prioridade de uma

interrupção, utilizamos o registrador IP cujas chaves são:

Tabela 6: Registrador IP Bit 7 6 5 4 3 2 1 0

Símbolo ----- ----- ----- PS PT1 PX1 PT0 PX0

1 – Interrupção com prioridade de atendimento 0 – Interrupção sem prioridade

Fonte: adaptado de DATASHEET AT89S52, 2010.

As prioridades são sempre programadas dentro de sua categoria, por

exemplo, com “PT0” igual 1(um) o TIMER0 é atendido antes do TIMER1.

Para este trabalho a prioridade de acionamento é da Interrupção

Externa1, a única utilizada no momento, porém, optamos por deixar este

registrador preparado caso fossem introduzidas novas interrupções.

O registrador IP foi configurado da seguinte maneira:

Tabela 7: Registrador IP configurado com valor 04h (00000100b) Bit 7 6 5 4 3 2 1 0

Símbolo ----- ----- ----- PS PT1 PX1 PT0 PX0

Nível 0 0 0 0 0 1 0 0

Fonte: autoria própria, 2010.

Page 67: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

63

Figura 36: Trecho do programa utilizado neste trabalho, em detalhe o registrador IP Fonte: autoria própria, 2010.

• TMOD (Time Mode) – Este registrador seleciona o timer que será

utilizado e o modo de operação deste timer (temporizador ou contador). Os

bits M1 e M0 são utilizados na escolha do modo, de 0 (zero) a 3 (três).Abaixo

a configuração para este projeto:

Tabela 8: O registrador TMOD Bit 7 6 5 4 3 2 1 0

Símbolo GATE1 C/T1 M1 M0 GATE0 C/T0 M1 M0

TIMER 0 TIMER 1

Fonte: adaptado de DATASHEET AT89S52, 2010.

Foram utilizados os TIMER’s 0 (zero) e 1 (um) neste projeto, nos

modos 1 (um) e 2 (dois). O modo 1 configura o TIMER como temporizador de

16 bits, e o modo 2 (dois) como temporizador de 8 bits.

Tabela 9: Registrador TMOD com TIMER1 configurado no modo 2 (ANEXO A)

Page 68: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

64

Bit 7 6 5 4 3 2 1 0

Símbolo GATE1 C/T1 M1 M0 GATE0 C/T0 M1 M0

Nível 0 0 1 0 0 0 0 0

Fonte: autoria própria, 2010.

Figura 37: Trecho do programa utilizado neste trabalho, em detalhe o registrador TMOD (APÊNDICE A)

Fonte: autoria própria, 2010.

Tabela 10: Registrador TMOD com TIMER0 configurado no modo 1 (ANEXO B) Bit 7 6 5 4 3 2 1 0

Símbolo GATE1 C/T1 M1 M0 GATE0 C/T0 M1 M0

Nível 0 0 0 0 0 0 0 1

Fonte: autoria própria, 2010.

Page 69: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

65

Figura 38: Trecho do programa utilizado neste trabalho, em detalhe o registrador TMOD (APÊNDICE B)

Fonte: autoria própria, 2010.

• TCON (Time Control) – Neste registrador podemos configurar bits de

TIMER e bits de interrupções:

Tabela 11: O registrador TCON Bit 7 6 5 4 3 2 1 0

Símbolo TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TIMER INTERRUPÇÃO

Fonte: adaptado de DATASHEET AT89S52, 2010.

É no “TCON’ que escolhemos a forma de como será feita a interrupção

(no nosso caso INT1), se por borda ou nível. Colocando-se o flag IT1 para

nível 1 (um), o acionamento é feito por nível, e 0( zero), é feito por borda.

Para este trabalho a interrupção é acionada na “borda de descida” do sinal

responsável pela interrupção (sinal de infravermelho). Logo, coloca-se 1 (um)

no flag IT1:

Page 70: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

66

Tabela 12: Registrador TCON configurado com valor 04h (00000100h) Bit 7 6 5 4 3 2 1 0

Símbolo TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Nível 0 0 0 0 0 1 0 0

Fonte: autoria própria, 2010.

Figura 39: Trecho do programa utilizado neste trabalho, em detalhe o registrador TCON

Fonte: autoria própria, 2010.

• SCON (Serial Control) – Neste registrador é feita a configuração da

porta serial do AT89S52. Ele contém não somente os bits de controle de

modo, como também o nono bit para transmissão e recepção (TB8 e RB8),

e os bits de controle de interrupções de transmissão de recepção da serial

(TI e RI).

Tabela 13: O registrador SCON Bit 7 6 5 4 3 2 1 0

Símbolo FE/SM0 SM1 SM2 REN TB8 RB8 TI RI

Fonte: adaptado de DATASHEET AT89S52, 2010.

Page 71: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

67

O módulo de GPS se comunica com o microcontrolador através do

padrão UART de 8 bits, isto equivale ao modo 1 na configuração do SCON.

Logo, os bits SM0 e SM1 recebem 0 (zero) e 1 (um) respectivamente.

Em seguida, é necessário habilitar a recepção serial através do bit

“REN”.

Tabela 14: Registrador SCON configurado com valor 50h (01010000) Bit 7 6 5 4 3 2 1 0

Símbolo FE/SM0 SM1 SM2 REN TB8 RB8 TI RI

Nível 0 1 0 1 0 0 0 0

Fonte: autoria própria, 2010.

Figura 40: Em detalhe o registrador SCON Fonte: autoria própria, 2010.

Page 72: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

68

4.2 Aquisição e Validação dos Dados GPS

Como citado no início deste trabalho, foram usados dois AT89S52, um desses

microcontroladores tem a função receber e processar os dados do GPS, e

apresentar a velocidade do objeto em um dos dois displays de LCD, neste caso o

“display A”. O microcontrolador em questão também será denominado de

“microcontrolador A”

Os dados com as sentenças NMEA são recebidos pelo “microcontrolador A”

através da porta serial. Esta comunicação é feita através dos padrões inseridos no

SCON, a uma taxa de 9600 bps. Esta é a taxa de recepção que precisa ser

configurada através do temporizador, no nosso caso através do “TIMER 1”.

Para utilização de qualquer um dos temporizadores é necessário que se

aplique um cristal entre os pinos 18 e 19 do AT89S52 para acionar o circuito

oscilador interno do microcontrolador. Este cristal é formado por quartzo e possui

características piezoelétricas.

Figura 41: Cristal de Quartzo Fonte: INTERNET, 2010.

Um cristal com freqüência de 11.0592 MHz foi escolhido, pois o mesmo gera

uma taxa de erro de 0% para o Baud Rate em questão, que é calculado da seguinte

forma:

Baud Rate = k * (Freqüência do Oscilador) / 32 * 12 * [256 – (TH1)]

• Se SMOD = 0, k = 1;

Page 73: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

69

• Se SMOD = 1, k = 2;

• SMOD = bit 7 de PCON;

• Ou seja,

se SMOD = 0, logo, TH1= 256 – ((Freqüência do Oscilador / 384) / Baud);

se SMOD = 1, logo, TH1= 256 – ((Freqüência do Oscilador / 192) / Baud).

• Para o cristal e Baud Rate em questão:

TH1 = 256 – ((11059200 / 384) / 9600)

TH1 = 256 – 3

TH1 = 253

• O valor a ser carregado em TH1 é igual a 253 (FDh), como pode ser

visto no código abaixo:

Figura 42: Valor de carga do contador (FDh) Fonte: autoria própria, 2010.

Page 74: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

70

Sabemos que a comunicação é feita com 8 bits de cada vez, mais um bit de

parada. Ou seja, o módulo envia um caractere por vez.

Os caracteres tem que ser armazenados para posteriormente serem

processado, estes são armazenados no SBUF (Serial Buffer), um de cada vez, após

o reconhecimento do bit de parada.

O SBUF é um registrador de 8 bits, utilizado tanto para armazenar como para

enviar os dados na via serial:

Figura 43: Diagrama em bloco da porta serial I/O Fonte: adaptado de DATASHEET AT89S52, 2010.

Feitas as configurações necessárias, iniciamos pelo reconhecimento de uma

sentença NMEA.

Sabemos que toda sentença começa com o caractere “$”, que possui

codificação ASCII (ANEXO D) igual a “0x24h”.

O primeiro passo é identificar quando o microcontrolador está recebendo uma

sentença NMEA, para depois identificar a sentença que contem os dados de

velocidade real. Porém, após manusear diversas vezes estas sentenças, foi

observado que a sentença “$GPRMC” (sentença que possui os dados de velocidade

real) é a única que possui o caractere “R”, e este está presente no cabeçalho da

sentença. Logo, descartamos a identificação do “$” e seguimos direto para a

identificação do “R”.

Page 75: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

71

Para identificar um caractere é necessário receber, armazenar no SBUF, e

comparar com o que está sendo procurado.

Após identificar o cabeçalho da sentença que será utilizada, os caracteres

seguintes são armazenados em um vetor de 60 posições, tamanho suficiente para

armazenar a sentença inteira.

Depois de armazenada a sentença, é necessário verificar a validade dos

seus dados. Quando os dados são totalmente confiáveis, a sentença apresenta o

caractere “A” na posição 16 do vetor, que teve como início o caractere “R”.

Figura 44: Identificação da sentença NMEA Fonte: autoria própria, 2010.

Com a sentença totalmente capturada, e sua validade checada, os dados de

velocidade já podem ser processados.

A primeira coisa a ser feita é a conversão da velocidade de “Knots” para

“Km/h”. Para isso, multiplica-se a velocidade recebida por “1,85”. Pois, sabe-se que:

1 Knot = 1 NM / hora e;

1 NM = 1,852 m então;

1 Km/h = 1,852 * 1 Knots, usamos 1,85 (esta precisão é suficiente)

Page 76: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

72

Figura 45: Conversão de Knots para Km/h Fonte: autoria própria, 2010.

Lembrando que o módulo GPS envia caracteres no Padrão ASCII, e estes,

tem que ser convertidos para o padrão ANSI no formato “Inteiro”, para só então

serem feitos os cálculos e as conversões necessárias.

Depois de Identificada a velocidade, esta é apresentada no “display A”.

4.3 Aquisição dos Limites de Velocidade Para o Trec ho

Neste projeto os limites de velocidade são identificados através do

recebimento de um sinal infravermelho, emitido pelas teclas de um controle remoto.

Para este trabalho foram decodificadas as teclas dos números 4 (quatro), 6

(seis) e 8 (oito). Estas teclas estão relacionadas aos limites de velocidade iguais a

40, 60 e 80Km/h, respectivamente. Foi decodificada ainda, a tecla de liga/desliga

para indicarmos o ingresso em uma região em que não há fiscalização pelo sistema

de GPS.

Page 77: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

73

O sensor receptor de infravermelho tem sua saída conectada a porta “P3.3”

(pino 13) do “microcontrolador B”. Este é o gatilho que dispara a interrupção externa

“INT1” neste microcontrolador.

A porta “P3.3” possui naturalmente nível alto em seu registrador e o

acionamento ocorre em nível baixo, tanto em borda de descida quanto em detecção

de nível baixo. Para este projeto a interrupção é acionada no momento em que há a

detecção de uma borda de decida neste registrador.

O sinal infravermelho emitido pelo controle remoto possui as seguintes

características:

• Possui codificação no padrão PCM;

• Inicia em nível baixo e permanece por um longo tempo (10 ms) e em

seguida há um nível alto de aproximadamente 5 ms;

• Após estas duas transições inicia-se um padrão de transmissão de 26

bits que estão presentes em todas as teclas do controle remoto em

questão, e que serão ignorados neste projeto:

Figura 46: Imagem capturada no osciloscópio RIGOL DS-1102E Fonte: autoria própria, 2010.

Page 78: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

74

• Na tela do osciloscópio o sinal de infravermelho é apresentado

da direita para esquerda. Após o trânsito destes 26 bits inicia-se o

recebimento do código em 16 bits, da tecla que foi pressionada.

Figura 47: Início da codificação da tecla de número 8 Fonte: autoria própria, 2010.

Então, o início do código específico se dá após a passagem das duas

transições iniciais, mais o trânsito dos 26 bits padrão. Aproximadamente no instante

58,5 ms como pode ser visto na fig.xxxx, em seguida, inicia-se o processo de

decodificação.

A sequência de decodificação implementada passa pelos seguintes passos:

1° - O microcontrolador identifica uma interrupção. Neste instante, o local

onde o programa foi interrompido é salvo, e é feito um direcionamento para a função

responsável pela “INT1’:

Início do código 26 bits padrão

Page 79: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

75

Figura 48: Função de Interrupção Fonte: autoria própria, 2010.

2° - Ao entrar na função, o sistema de detecção de interrupções é

desabilitado, pois neste instante o programa já se encontra na função desejada, a

fim de se fazer o processamento do sinal que continua sendo recebido.

3° - É feita uma contagem (delay) até 58,40ms, e só então inicia-se o

processo de decodificação da tecla pressionada.

4° - Depois de identificada a tecla pressionada, po de-se então atribuir o limite

de velocidade àquela tecla específica.

Page 80: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

76

Figura 49: Atribuição dos limites de velocidade a partir referida tecla no controle remoto

Fonte: autoria própria, 2010.

Após identificado o limite de velocidade, deve-se informar ao condutor este

limite através do “display B”. Também é necessário que seja enviado o limite de

velocidade para o “microcontrolador A”, para que este possa comparar a velocidade

atual com o limite atual.

O limite de velocidade é codificado, a fim de ocupar um espaço pequeno na

memória e para facilitar o seu transporte.

Page 81: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

77

Figura 50: Limite codificado para ser enviado ao micrcontrolador A Fonte: autoria própria, 2010.

Quanto aos 16 bits de código da tecla pressionada, deve-se armazenar um a

um, de maneira que possa ser formada uma palavra ou um byte. No caso deste

projeto, não se fez uso dos 16 bits e sim dos primeiros 8 bits, devido ao número

reduzido de teclas utilizadas.

Para decodificação destes oito bits se faz necessário identificar se o sinal

recebido em nível lógico alto se trata de 1 (um) ou 0 (zero) lógico, em nosso

programa, pois o PCM codifica o nível alto em relação de sua permanência neste

nível.

No controle remoto utilizado neste projeto, para um pulso que permaneça em

nível alto por 1,6ms, é etribuido nível lógico igual a 1. Para um pulso que permaneça

em nível alto por 0,8ms, é etribuido nível lógico igual a zero.

Os 16 bits de código são enviados a partir do LSB, e quando de trata de uma

tecla que representa um número, este código contém o valor em binário do

respectivo número.

40Km/h = 01b 60Km/h = 10b 80Km/h = 11b

Page 82: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

78

Figura 51: Os 4 últimos bits da tecla de número 8 Fonte: autoria própria, 2010.

Repare que ao pressionar a tecla de número 8, o sinal recebido possui o valor

do número 8: “1000” (este número equivale a 8 no código binário)

Lembrando que é transmitido primeiramente o LSB dos 16 bits, logo, recebe-

se “0001”, e uma sequência de mais 12 bits que completam o código.

4.4 Comparação

Depois de estabelecido o limite de velocidade a tarefa é comparar em tempo

real a velocidade a qual se move o objeto, com o limite imposto naquele instante.

Neste momento é necessário trabalhar com os dois microprocessadores, pois

um envia informações de controle ao outro.

Como visto anteriormente, o microcontrolador “A” recebe do “B “ os limites

codificados. Estes, agora são decodificados para então ser feita a comparação da

velocidade atual como o limite atual.

0 0 0 1

Page 83: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

79

Figura 52: Microcontrolador “A” decodificando limites recebidos do microcontrolador “B”

Fonte: autoria própria, 2010.

Figura 53: Velocidade sendo comparada com limite

Fonte: autoria própria, 2010.

Page 84: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

80

Caso a velocidade seja excedida, o microcontrolador “A”, retorna para “B” a

informação de que foi excedida a velocidade. Em seguida, o microcontrolador “B”, já

com a informação de excesso de velocidade, emite os alertas ao condutor.

O microcontrolador “B” informa através do LCD de que a velocidade deve ser

diminuída, e o buzzer emite um alerta uma vez por segundo, enquanto a velocidade

permaneça acima do permitido.

Figura 54: Condutor com velocidade acima do permitido Fonte: autoria própria, 2010.

Se o condutor permanecer nesta situação, o sistema entra no modo de

aplicação de multa.

Page 85: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

81

5 CONCLUSÃO

Um sistema de controle de velocidade mais eficiente trará uma diminuição de

óbitos nas estradas e rodovias. Acreditamos que este trabalho possui potencial para

trazer este benefício à sociedade.

. Contudo, o sistema de controle como um todo, necessita de uma série de

adaptações legais e técnicas para sua implementação. Necessita também de um

período de adaptação por parte da sociedade, onde, uma implementação em

pequenos trechos de rodovias, com um aumento programado, seria a melhor

maneira de iniciar este tipo de controle.

Neste trabalho apresentamos uma idéia de como seria o controle de

velocidade, um modelo global com várias sugestões. Citamos as várias etapas e

técnicas necessárias, os programas e os componentes. Mas não nos detivemos

somente ao modelo global e projetamos o equipamento que virá embarcado no

veículo, responsável pela fiscalização. Ao concluir a etapa de implementação deste

equipamento, após todo processo de concepção, e simulação, ratificamos

plenamente a viabilidade deste projeto.

As etapas de programação e simulação foram decisivas para o sucesso desta

empreitada. Porém, enfrentamos problemas nesta área. Tivemos que utilizar um

segundo software para apoiar o principal. Uma mudança no hardware e software

gravadores trará uma diminuição no tempo de programação, consequentemente

uma diminuição na mão-de-obra desta área.

O programa Keil, distribuído gratuitamente, também trouxe um incômodo na

parte da programação. Este programa em sua versão livre permite que sejam feitas

simulações utilizando um código com um tamanho máximo de 2 KB. Medidas

paliativas foram tomadas, porém, a substituição por outro software, talvez até em

outro sistema operacional como LINUX, seria mais interessante para o projeto.

Salientamos que estas mudanças não foram feitas durante o andamento do

projeto, pois o prazo de entrega foi priorizado. Os problemas citados acima surgiram

em uma etapa em que correções valiam mais a pena do que fazer grandes

modificações no projeto.

Um grande ganho para o projeto foi a montagem do mesmo em protoboard.

No início do projeto foi utilizada somente a placa de desenvolvimento GGDL -3300,

Page 86: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

82

porém, com o avanço do projeto, tornou-se inviável os testes e simulações já que

era necessário fazê-las com dois microcontroladores e dois displays.

O resultado geral alcançado neste trabalho foi muito satisfatório, tanto na

parte de programação quanto na implementação, os componentes utilizados se

mostraram totalmente capazes de desempenhar as tarefas para as quais foram

escolhidos.

O receptor de GPS possui uma sensibilidade e uma precisão muito

satisfatória, além de possuir um custo muito acessível. O AT89S52 possui uma

versatilidade muito grande, o que possibilitou a implementação de idéias que foram

surgindo ao longo do projeto.

Estes fatores foram estimulantes no fechamento deste projeto, trazendo

ânimo e coragem para seguir até implementação e visualização dos últimos

resultados.

Page 87: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

83

REFERÊNCIAS

DATASHEET, AT89S52 - 8-bit Microcontroller with 8K Bytes in System Programmable Flash. © Atmel Corporation 2001 [5] [10] [11] [12] [13] DATASHEET, SkyNav SKM53 Series - Ultra High Sensitivity and Low Power. The Smart Antenna GPS Module. ©Copyright 2008 Skylab M&C Co., Ltd, All Right Reserved [6] DATASHEET, LCD MODULE AMC 1602 . Oriented Display, Specifications for LCD Module. Modify the full specification, 2005.3. [x] DATASHEET, IR Receiver Modules for Remote Control Systems - HS0038A2 Vishay Semiconductor GmbH, P.O.B. 3535, D-74025 Heilbronn, Germany, Rev. 1.0, 08-Feb-08 [14] DATASHEET, Dual EIA-232 Drivers/Receivers - MAX 232 © Copyright 2004, Texas Instruments Incorporated FÓRUM DE ENTIDADES NACIONAIS DE DIREITOS HUMANOS. (2007). http://www.direitos.org.br/index.php?option=com_content&task=view&id=2639&Itemid=2 Acesso: 15 de setembro de 2010. [2] KRAUS JR.,Werner. Apostila 8051 Hari . Departamento de Automação e Sistemas - Universidade Federal de Santa Catarina. 2010. Disponível em: http://www.das.ufsc.br/~werner/eel7030/8051/Apostila8051Hari.pdf Acesso: 15 de outubro de 2010. LAIONE, Fábio. Computação Embarcada. Material - Didático Universidade Federal da Grande Dourados, Faculdade de Ciências Exatas e Tecnologia. Disponível em: http://www.do.ufgd.edu.br/fabioiaione/CE/index_CE.html Acesso: 23 de setembro de 2010. [ ] MAZIDI, Muhammad Ali; MAZIDI, Janice Gillispie; MCKINLAY. The 8051 microcontroller and embedded systems: using Assembly and C. Upper Saddle River [Estados Unidos]: Pearson Prentice Hall, 2006.

Page 88: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

84

NICOLOSI, Denys E. C. Microcontrolador 8051 com linguagem C : Prático e Didático. São Paulo, SP, Érica, 2005. ______. Laboratório de Microcontrolador Família 8051 . São Paulo, SP, Érica, 2005. ______. Microcontrolador 8051 Detalhado . São Paulo, SP, Érica, 2000. PORTAL DO TRÂNSITO. (2009). Portal especializado em assuntos de trânsito. Disponível em: http://www.portaldotransito.com.br/noticias/brasil-e-quinto-pais-do-mundo-em-mortes-por-acidentes-de-transito.html Acesso: 20 de agosto de 2009. [1] SÁ, Maurício Cardoso de. Programação C para Microcontroladores 8051 . São Paulo, SP: Érica, 2005. [7] SANTOS, Marcelo Carvalho dos. Padrão de Formato de Dados NMEA . Material Didático. 2010. Disponível em: http://www.mundogeo.com.br/revistas-interna.php?id_noticia=7926 Acesso: 25 de outubro de 2010. [16] SCOLARI, Diogo. Identificador de Pontos Usando GPS. Trabalho acadêmico, Pontifícia Universidade Católica do Rio Grande do Sul, Porto Alegre, 2004. SWAN, Tom. Tecle & Aprenda C . São Paulo : Berkeley, 1994.

Page 89: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

85

APÊNDICE A – Código do Microcontrolador A

/////////////////////////////////////////////////////// //////////////////////////// BIBLIOTECAS ///////////// #include<REGX52.H> #include<intrins.h> #include<stdio.h> #include<stdlib.h> #include<math.h> //////////////////////////////////////////////////////////// /////////////////////////// ATRIBUIÇÕES A PINOS FÍSICOS //// //////////////////////////////////////////////////////////// #define limite_0 P1_0 #define limite_1 P1_1 #define v_acima P1_2 #define led_multa P1_3 #define buzzer P2_3 #define LCD_data P0 #define LCD_rs P2_7 #define LCD_rw P2_6 #define LCD_en P2_5 ////////////////////////////////////////////////////////////////////////////// //////////////////////////// VARIÁVEIS ///////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// unsigned char NMEA[60]; unsigned char vet[6],vet_v[4],limite = 0,conta_virgula = 0, n1=0,n2=0,n3=0,i=0,a=0,j=0,n=0, //conta_led =0; unsigned int v_int=0,v_int1; //índices double d1,d2,d3,v_km; /////////////////////////////////////////////////////////////// ///////////////////////////// FUNÇÕES ///////////////////////// ////////////////////////////////////////////////////////////// void liga_LCD() // tempo para LCD começar a processar informações unsigned int i1; For (i1=0;i1<8500; i1++); void delay_LCD() // tempo para cada operação no LCD unsigned char i,j; for(i=0;i<40;i++) for(j=0;j<2;j++); void LCD_instruction(unsigned char var) //função que passa //as instruções para o LCD LCD_data = var; LCD_rs = 0; LCD_rw = 0; LCD_en = 1; _nop_(); _nop_();

Page 90: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

86

LCD_en = 0; delay_LCD(); void LCD_senddata(unsigned char var) LCD_data = var; LCD_rs = 1; LCD_rw = 0; LCD_en = 1;//habilita buffer de recepção do LCD _nop_(); _nop_(); LCD_en = 0;//desabilita buffer de recepção do LCD delay_LCD(); void LCD_sendstring(unsigned char *var)//função que passa //caracter por caracter para a função "LCD_senddata" while(*var) LCD_senddata(*var++); delay_LCD(); void delay_inicio()///// 1 ciclo de máquina = 12 cloks. //Período para F = 11.0592, 9.0422 * 10 e-8. 1 ciclo de máquina = 1. 085 us. unsigned int i,j; for (i=0;i<500; i++) for (j=0;j<922; j++);//1 ms unsigned char RX_SERIAL(void) //recebe char da porta serial unsigned char c; while(!RI); RI =0; c = SBUF; return SBUF; void main(void)///função Principal

SCON = 0X50; // 01010010 - SCON: modo 1 - *N1, 8 bits, REN = 1, recepção habilitada TMOD = 0X20; ////TMOD: timer 1, modo 2, 8 bits reload, SMOD=0 TH1 = 0xFD; ///TH1: valor de carga para BAUD_RATE de 9600 bps com cristal de 11.0592 TR1 = 1;////habilita timer 1 led_multa = 1;

//////////////Intruções para LCD///////////////////////////////////////////// liga_LCD(); LCD_instruction(0x38); LCD_instruction(0x38); LCD_instruction(0x0C); LCD_instruction(0x01); LCD_instruction(0x06); LCD_instruction(0x07);

/////////////////////////Inicializando/////////////////////////////////// LCD_instruction(0x80); LCD_sendstring(" TCC ");

Page 91: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

87

LCD_instruction(0xC0); LCD_sendstring(" RODRIGO LEMOS "); delay_inicio(); delay_inicio();

///////////// Mensagem enquanto sentença GPRMC não é válida LCD_instruction(0x80); LCD_sendstring(" INICIALIZANDO "); LCD_instruction(0xC0); LCD_sendstring(" GPS "); delay_inicio(); ////////////////////////////////////////////////////////////////////////////// ///////////////////LOOP de leitura da serial e escrita no LCD////////////////////// for(;;) TR1 = 1;////habilita timer 1 RI = 0;// zera flag de recebimento da serial buzzer = 1;// desliga buzzer conta_virgula = 0; //zera contador i=0; NMEA [i] = RX_SERIAL();//recebe um CHAR if (NMEA [i] == 'R')// Verifica se o CHAR recebido é um "R", //letra que só se encontra na sentença que será utilizada, //logo, identifico a sentença while (i < 60)// Preenche um vetor de 60 posições. //Capturo a sentença GPRMC inteira. i++; NMEA [i] = RX_SERIAL(); delay_LCD();

if (NMEA [15] == 'A')//Testa a validade da sentença

///////RECEBE DO uC 1 LIMITES DE VELOCIDADE ///////////

if (limite_0 == 0 && limite_1 == 0) limite = 0;

if (limite_0 == 1 && limite_1 == 0) limite = 40;

if (limite_0 == 0 && limite_1 == 1) limite = 60;

if (limite_0 == 1 && limite_1 == 0) limite = 80; for (j=0;j < 50; j++)

Page 92: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

88

if (NMEA [j] == ',')// primeira virgula conta_virgula ++; if(conta_virgula == 7)//As informações de velocidade

//encontram-se sempre nesta sentença e após a sétima vírgula

a = j + 1 ;// variável "a" possui a posição da sétima vírgula + um, // onde tenho o primeiro dígito de velocidade n = 0; while (NMEA [a]!= ',')// Enche buffer "vet[]" com os dados da velocidade, //enquanto não encontra a próxima vírgula

vet[n] = NMEA[a]; n++; a++;

/// IDENTIFICA QUANTAS CASAS ANTES DO PONTO QUE SEPARA O DECIMAL ///////

if (vet[1] == '.')// se for velocidade x.xx ,//A velocidade em Knots neste caso,

// possui 1 dígito antes do decimal //mas quando convertida para Km/h, chega a dois dígitos (9.99Knots * 1,85 = //18,48), //logo, divido a conversão para char em //dois laços diferentes, um para x.xx Km/h e outro para xx.xx Km/h

n1 = (unsigned char)(vet[0]- 0x30); d1 = (double)((vet[2]- 0x30) / 10); v_km = (double) (1.85 * (n1 + d1)); // COMPARA VELOCIDADE ATUAL COM LIMITE///////////////////////

if ((v_km > limite)&&(limite != 0))////TEM QUE SER DIFERENTE DE ZERO TAMBÉM, //POIS QUANDO NÃO TENHO LIMITE, ELE É ZERO.

conta_led = conta_led +1;//conta 1 segundo, já que passa por aqui a cada segundo //devido atualização do GPS if(conta_led == 6)//conta 5 segundos, no sexto, aciona o procedimento de multa e

//zera contador

led_multa = 0;//ACENDE LED conta_led = 0; buzzer = 0;// liga buzzer, ALERTA SONORO DE QUE ESTÁ ACIMA DA //VELOCIDADE

v_acima = 0;// acende led indicando que veículo está acima da velocidade // //permitida

if (v_km < limite)// a qualquer instante que a velocidade se enquadra dentro do limite, o //contador é zerado

led_multa = 1;//apaga LED da multa conta_led = 0; v_acima = 1;//APAGA LED

Page 93: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

89

////PROCEDIMENTO PARA TRANSFORMAR A VELOCIDADE EM CARACTER E IMPRIMIR NO LCD///////////////////////// if (v_km < 10) v_int = (int)(v_km);// Transforma em inteiro, usa só a parte inteira do double

vet_v[0] = (unsigned char)(v_int + 0x30);//transforma em char(ASCII) a parte inteira vet_v[1] = '.';/// Para este "if", como v_km é menor que 10, sempre tem um "."

//na segunda posição do vetor v_int = (int)((v_km - v_int) * 10);//pega a v_km(em double), diminui do v_int

//e multiplica por dez. Encontra o decimal do v_km. vet_v[2] = (unsigned char)(v_int + 0x30);//Transforma o segundo dígito em //char(ASCII)

//////// Escreve no LCD /////////////// LCD_instruction(0x80); LCD_sendstring("VELOCIDADE ATUAL"); LCD_instruction(0xC0); LCD_sendstring(" "); LCD_senddata(vet_v[0]); LCD_senddata(vet_v[1]); LCD_senddata(vet_v[2]); LCD_sendstring(" Km/h "); if (v_km >= 10 && v_km < 20) v_int = (int)(v_km / 10);//divide por dez e pega o inteiro vet_v[0] = (unsigned char)(v_int + 0x30);

v_int = (int)((v_km ) - (v_int * 10));// Pega o segundo dígito //do valor //inteiro

vet_v[1] = (unsigned char)(v_int + 0x30);// Transforma o //segundo //dígito em char(ASCII) vet_v[2] = '.';/// Para este "if", como v_km é maior que 10, //sempre //tem um "." na // terceira posição do vetor v_int = (int)(v_km);//Pega a parte inteirta do double v_int = (int)((v_km - v_int) * 10);//pega a v_km(em double), //diminui do v_int e multiplica por dez. Encontra o decimal do v_km. vet_v[3] = (unsigned char)(v_int + 0x30); /////////////////////////////////////// Escreve no LCD /////////////// LCD_instruction(0x80); LCD_sendstring("VELOCIDADE ATUAL"); LCD_instruction(0xC0); LCD_sendstring(" "); LCD_senddata(vet_v[0]); LCD_senddata(vet_v[1]); LCD_senddata(vet_v[2]); LCD_senddata(vet_v[3]); LCD_sendstring(" Km/h "); /////////////////////////////////////////////////////////////////////////

if (vet[2] == '.') ///////// se for velocidade xx.xx /////// n1 = (unsigned char)((vet[0]- 0x30) * 10);// Muda de Char para //inteiro n2 = (unsigned char)(vet[1]- 0x30);// Muda de Char para inteiro v_int = (int) (n1 + n2);//Parte inteira da velocidade, ainda em //knots

Page 94: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

90

d1 = (double)((vet[3]- 0x30) / 10);// Pega decimal da velocidade v_km = (double) (1.85 * (v_int + d1));// Transforma para Km/h /////// COMPARA VELOCIDADE ATUAL COM LIMITE////////

if ((v_km > limite)&&(limite != 0))////TEM QUE SER DIFERENTE DE ZERO TAMBÉM, //POIS QUANDO NÃO TENHO LIMITE, ELE É ZERO.

conta_led = conta_led +1;//conta 1 segundo, já que passa por aqui a //cada //segundo devido atualização do GPS

if(conta_led == 6)//conta 5 segundos, no sexto, aciona o procedimento //de //multa e zera contador

led_multa = 0;///ACENDE LED conta_led = 0; v_acima = 0;// acende led buzzer = 0;// liga buzzer if (v_km < limite)// a qualquer instante que a velocidade se enquadra //dentro do //limite, o contador é zerado led_multa = 1;//apaga LED da multa conta_led = 0; v_acima = 1;//APAGA LED //PROCEDIMENTO PARA TRANSFORMAR A VELOCIDADE EM CARACTER E IMPRIMIR NO //LCD///////////////////////// if ((v_km >= 10) && (v_km < 100)) v_int = (int)(v_km / 10);//divide por dez e pega o inteiro vet_v[0] = (unsigned char)(v_int + 0x30); v_int = (int)((v_km ) - (v_int * 10));// Pega o segundo dígito do inteiro

vet_v[1] = (unsigned char)(v_int + 0x30);// Transforma o //segundo //dígito em //char(ASCII)

vet_v[2] = '.';/// Para este "if", como v_km é maior que 10, sempre tem //um "." //na terceira posição do vetor

v_int = (int)(v_km);//Pega a parte inteirta do double v_int = (int)((v_km - v_int) * 10);//pega a v_km(em double), //diminui do v_int e multiplica por dez. Encontra o decimal do v_km. vet_v[3] = (unsigned char)(v_int + 0x30); //////////////////////////////////// Escreve no LCD /////////////// LCD_instruction(0x80); LCD_sendstring("VELOCIDADE ATUAL"); LCD_instruction(0xC0); LCD_sendstring(" "); LCD_senddata(vet_v[0]); LCD_senddata(vet_v[1]); LCD_senddata(vet_v[2]); LCD_senddata(vet_v[3]); LCD_sendstring(" Km/h "); if ((v_km >= 100) && (v_km < 200))

Page 95: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

91

v_int = (int)(v_km / 100);//divide por cem e pega o inteiro vet_v[0] = (unsigned char)(v_int + 0x30); v_int1 = (int)((v_km ) - (v_int * 100));// Pega o segundo dígito do //inteiro v_int = (int)(v_int1 / 10);

vet_v[1] = (unsigned char)(v_int + 0x30);// Transforma o segundo dígito em //char(ASCII)

v_int = (int)((v_int1 ) - (v_int * 10));// Pega o terceiro dígito do inteiro vet_v[2] = (unsigned char)(v_int + 0x30); vet_v[3] = '.';/// Para este "if", como v_km é maior ou igual a 100, //sempre tem um "." na quarta posição do vetor v_int = (int)(v_km);//Pega a parte inteirta da velocidade v_int = (int)((v_km - v_int) * 10);//pega a v_km(em double), diminui do //v_int e multiplica por dez. Encontra o decimal do v_km. vet_v[4] = (unsigned char)(v_int + 0x30); //////////////////////////////////////// Escreve no LCD /////////////// LCD_instruction(0x80); LCD_sendstring("VELOCIDADE ATUAL"); LCD_instruction(0xC0); LCD_sendstring(" "); LCD_senddata(vet_v[0]); LCD_senddata(vet_v[1]); LCD_senddata(vet_v[2]); LCD_senddata(vet_v[3]); LCD_senddata(vet_v[4]); LCD_sendstring(" Km/h "); ///////////////////////////////////////////////////////////////////////////////// if (vet[3] == '.') //////// se for velocidade xxx.xx //////////////////////////// n1 = (unsigned char)((vet[0]- 0x30) * 100);// Muda de Char para inteiro n2 = (unsigned char)(vet[1]- 0x30 * 10);// Muda de Char para inteiro n3 = (unsigned char)(vet[2]- 0x30);// Muda de Char para inteiro

v_int = (int) (n1 + n2 + n3);//Parte inteira da velocidade, ainda em knots d1 = (double)((vet[4]- 0x30) / 10);// Pega decimal da velocidade v_km = (double) (1.85 * (v_int + d1));// Transforma para Km/h

/////////////////////////////// COMPARA VELOCIDADE ATUAL COM LIMITE////////////

if ((v_km > limite)&&(limite != 0))////TEM QUE SER DIFERENTE DE ZERO TAMBÉM, //POIS QUANDO NÃO TENHO LIMITE, ELE É ZERO.

conta_led = conta_led +1;//conta 1 segundo, já que passa por aqui a cada //segundo devido atualização do GPS

if(conta_led == 6)//conta 5 segundos, no sexto, aciona o procedimento de //multa e zera contador

led_multa = 0; conta_led = 0; v_acima = 1;//APAGA LED buzzer = 0;// liga buzzer, ALERTA SONORO DE QUE ESTÁ ACIMA DA VELOCIDADE

v_acima = 0;// acende led indicando que veículo está acima da velocidade permitida

Page 96: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

92

if (v_km < limite)// a qualquer instante que a velocidade se enquadra dentro do limite, o //contador é zerado

led_multa = 1;//apaga LED da multa conta_led = 0; //PROCEDIMENTO PARA TRANSFORMAR A VELOCIDADE EM CARACTER E IMPRIMIR NO LCD///////////////////////// if ((v_km >= 100) && (v_km < 1000)) v_int = (int)(v_km / 100);//divide por cem e pega o inteiro

vet_v[0] = (unsigned char)(v_int + 0x30); v_int1 = (int)((v_km ) - (v_int * 100));// Pega o segundo dígito do inteiro

v_int = (int)(v_int1 / 10); vet_v[1] = (unsigned char)(v_int + 0x30);// Transforma o segundo dígito em char(ASCII)

v_int = (int)((v_int1 ) - (v_int * 10));// Pega o terceiro dígito do inteiro vet_v[2] = (unsigned char)(v_int + 0x30); vet_v[3] = '.';/// Para este "if", como v_km é maior ou igual a 100, sempre tem um "." na quarta

//posição do vetor v_int = (int)(v_km);//Pega a parte inteirta da velocidade v_int = (int)((v_km - v_int) * 10);//pega a v_km(em double), diminui do v_int e multiplica por

//dez. Encontra o decimal do v_km. vet_v[4] = (unsigned char)(v_int + 0x30);

//////// Escreve no LCD ///////////////

LCD_instruction(0x80); LCD_sendstring("VELOCIDADE ATUAL"); LCD_instruction(0xC0); LCD_sendstring(" "); LCD_senddata(vet_v[0]); LCD_senddata(vet_v[1]); LCD_senddata(vet_v[2]); LCD_senddata(vet_v[3]); LCD_senddata(vet_v[4]); LCD_sendstring(" Km/h ");

///////////////////////////////////////////////////////////////////////////////////////////////////////// j = 0;//sai do último loop NMEA [15] = 'Z'; // muda a validade da sentença para forçar saída

Page 97: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

93

APÊNDICE B – Código do Microcontrolador B

#include<REGX52.H> #include<intrins.h> #include<stdio.h> #include<stdlib.h> #include<math.h> /////////////////////////////////////////////////////////////////////////////////// /////////////////////////// ATRIBUIÇÕES A PINOS FÍSICOS /////////////////////////// /////////////////////////////////////////////////////////////////////////////////// #define led_limite0 P1_0 #define led_limite1 P1_1 #define v_acima P1_2 #define led_multa P1_3 #define ID_0 P1_4 #define ID_1 P1_5 #define ID_2 P1_6 #define ID_3 P1_7 #define pino_int P3_3 #define buzzer P2_3 #define LCD_data P0 #define LCD_rs P2_7 #define LCD_rw P2_6 #define LCD_en P2_5 ////////////////////////////////////////////////////////////////////////////// //////////////////////////// VARIÁVEIS ///////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// unsigned char limite = 0; unsigned int i=0,a=0,j=0; //índices void liga_LCD() // tempo para LCD começar a processar informações unsigned int i; for (i=0;i<8500; i++); void delay_LCD() // tempo para cada operação no LCD unsigned char i,j; for(i=0;i<40;i++) for(j=0;j<2;j++); void LCD_instruction(unsigned char var)//função que passa as instruções para //o LCD LCD_data = var; LCD_rs = 0; LCD_rw = 0; LCD_en = 1; _nop_(); _nop_(); LCD_en = 0; delay_LCD();

Page 98: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

94

void LCD_senddata(unsigned char var) LCD_data = var; LCD_rs = 1; LCD_rw = 0; LCD_en = 1; //habilita buffer de recepção do LCD _nop_(); _nop_(); LCD_en = 0; //desabilita buffer de recepção do LCD delay_LCD(); void LCD_sendstring(unsigned char *var)//função que passa caracter por caracter para a função "LCD_senddata" while(*var) LCD_senddata(*var++); delay_LCD(); void delay_inicio()///// 1 ciclo de máquina = 12 cloks. Período para F = //11.0592, 9.0422 * 10 e-8. 1 //ciclo de máquina = 1. 085 us. unsigned int i,j; for (i=0;i<500; i++) for (j=0;j<922; j++);//1 ms ///////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////INTERRUPÇÂO/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////// void infrared_int(void) interrupt 2 /// INTERRUPÇÃO PELO CONTROLE REMOTO, INT1 unsigned char valor = 0, estado = 0, conta_bit; EA = 0;// desabilita para não acionar novamente, //já que o sinal é uma onda quadrada

//Espera 58,48 ms, espera passar todos bits "padrão", //para começar a trabalhar com os bits variáveis de código, //e então identificar a tecla, este tempo acaba no meio do //primriro nível baixo ////

TMOD = 0x01;// timer 0, modo 1 com 16 bits para poder contar //até 53881 = 58,40 ms TL0 = 0x86; TH0 = 0x2D; TR0 = 1;//// Liga timer zero while (TF0 == 0); TR0 = 0;///// desliga timer 0

TF0 = 0;//// Flag de estouro de contagem, deve ser zerado por //software, caso não //esteja //acionada interrupção por timer.

conta_bit = 0;//conta os bits recebidos após os 58.48 ms, //queremos receber 8 bits, já //o suficiente para decodificarmos o PCM while (conta_bit < 7)////recebe 7 bits rotacionando, depois do //enlace receberá o //último sem rotacionar if (pino_int == 1)///// Espera até encontrar nível 1 =~ 5V

Page 99: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

95

////////////////Espera 882us, tempo para identificar se é 1 ou zero. TR0 = 0; TL0 = 0xE6; TH0 = 0xFC; TR0 = 1; while (TF0 == 0); TR0 = 0; TF0 = 0; ////////////////////////////////////////////////////////////////////////////// estado = pino_int;///estado recebe o valor //instantâneo do pino de //interrupção, zero ou um if ( estado == 0) valor = valor + estado ; valor = valor << 1 ; if ( estado == 1) valor = valor + estado ; valor = valor << 1 ; //////////////// Se estado é igual a 1, espera mais 1 ms passar todo nível. TR0 = 0; TL0 = 0x78; TH0 = 0xFC; TR0 = 1; while (TF0 == 0); TR0 = 0; TF0 = 0; /////////////////////////////////////////////////////////////////////////// conta_bit = conta_bit + 1; if (conta_bit == 7)// O último bit será recebido sem rotacionar, //senão, perco o //primeiro bit recebido estado = pino_int; valor = valor + estado; if /*(valor == 0x04 )*/(valor == 0x20)//botão 4, 40Km/h buzzer = 0; limite = 40;

if /*(valor == 0x06 )*/(valor == 0x60)//botão 6, 60Km/h buzzer = 0; limite = 60;

if /*(valor == 0x08 )*/(valor == 0x10)//botão 8, 80Km/h

Page 100: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

96

buzzer = 0; limite = 80;

if (valor == 0x18)//botão desliga, sai de uma área //controlada buzzer = 0; limite = 0;

delay_LCD(); delay_LCD(); delay_LCD(); delay_LCD(); EA = 1;// ativa interrupções novamente para sair da //função pronto para ser //interrompido novamente buzzer = 1;//desliga buzzer void main(void)///função Principal led_multa = 1; buzzer = 1; IE = 0x84;// habilita int1 TCON = 0x04;// 00000100 habilita int1 por borda de descida IP = 0x04;// 00000100 coloca a int1 com prioridade máxima //////////////Intruções para LCD///////////////////////////////////////////// liga_LCD(); LCD_instruction(0x38); LCD_instruction(0x38); LCD_instruction(0x0C); LCD_instruction(0x01); LCD_instruction(0x06); LCD_instruction(0x07); //////////////////////////Inicializando/////////////////////////////////// LCD_instruction(0x80); LCD_sendstring(" TCC "); LCD_instruction(0xC0); LCD_sendstring(" RODRIGO LEMOS "); delay_inicio(); delay_inicio(); ////////////////////////////////////////////////////////////////////////////// ///////////////////LOOP de leitura da serial e escrita no LCD////////////////////// for(;;) if (limite == 0) led_limite0 = 0;////meu código //para este //limite led_limite1 = 0; LCD_instruction(0x80); LCD_sendstring("SEM FISCALIZACAO"); LCD_instruction(0xC0); LCD_sendstring("PELO //SISTEMA GPS"); if (limite == 40)

Page 101: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

97

led_limite0 = 1;////meu código //para este //limite led_limite1 = 0; /////////////////////////Alerta visual de que o limite de velocidade mudou

LCD_instruction(0x80); LCD_sendstring("VELOCIDADE "); LCD_instruction(0xC0); LCD_sendstring("LIMITE 40 //Km/h");

if (limite == 60) led_limite0 = 0;////meu código //para este //limite led_limite1 = 1; /////////////////////////Alerta visual de que o limite de velocidade mudou LCD_instruction(0x80); LCD_sendstring("VELOCIDADE "); LCD_instruction(0xC0); LCD_sendstring("LIMITE 60 //Km/h");

if (limite == 80) led_limite0 = 1;////meu código //para este //limite led_limite1 = 1; /////////////////////////Alerta visual de que o limite de velocidade mudou LCD_instruction(0x80); LCD_sendstring("VELOCIDADE "); LCD_instruction(0xC0); LCD_sendstring("LIMITE 80 //Km/h"); if (v_acima == 0)/////RECEBE //INDICAÇÃO //DO uC A DE QUE FOI EXCEDIDO O LIMITE LCD_instruction(0x80); LCD_sendstring(" DIMINUA //SUA "); LCD_instruction(0xC0); LCD_sendstring(" VELOCIDADE "); if(led_multa == 0) buzzer = 0; /////bip longo ID_0 = 0;//// Envia ID do veículo ID_1 = 1; ID_2 = 0; ID_3 = 1; delay_inicio(); ID_0 = 1; ID_1 = 1; ID_2 = 1; ID_3 = 1; buzzer = 1;

Page 102: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

98

Page 103: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

99

ANEXO A – Esquema elétrico da Placa de Desenvolvime nto

Page 104: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

100

ANEXO B – Tabela ASCII Padrão

Disponível em: http://www.asciitable.com/ Acesso: 20 de novembro 2010.

Page 105: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

101

ANEXO C – Tabela ASCII Estendida

Disponível em: http://www.asciitable.com/ Acesso: 20 de novembro 2010.

Page 106: SISTEMA DE MONITORAMENTO DA VELOCIDADE … silva lemos sistema de monitoramento da velocidade em tempo real para veÍculos por gps canoas, 2010

102

ANEXO D – Conjunto de instruções do módulo LCD

INSTRUÇÃO RS R/W B

7 B6

B5

B4

B3

B2

B1

B0

DESCRIÇÃO e tempo de execução (uS)

t

Limpa Display 0 0 0 0 0 0 0 0 0 1 -Limpa todo o display e retorna o cursor para a primeira posição da primeira linha

1.6 mS

Home p/ Cursor

0 0 0 0 0 0 0 0 1 * -Retorna o cursor para a 1. coluna da 1. Linha -Retorna a mensagem previamente deslocada a sua posição original

1.6 mS

Fixa o modo de funcionamento

0 0 0 0 0 0 0 1 X S -Estabelece o sentido de deslocamento do cursor (X=0 p/ esquerda, X=1 p/ direita) -Estabelece se a mensagem deve ou não ser deslocada com a entrada de um novo caracter (S=1 SIM, X=1 p/ direita) -Esta instrução tem efeito somente durante a leitura e escrita de dados.

40 uS

Controle do Display

0 0 0 0 0 0 1 D C B -Liga (D=1) ou desliga display (D=0) -Liga(C=1) ou desliga cursor (C=0) -Cursor Piscante(B=1) se C=1

40 uS

Desloca cursor ou mensagem

0 0 0 0 0 1 C R * * -Desloca o cursor (C=0) ou a mensagem (C=1) para a Direita se (R=1) ou esquerda se (R=0) - Desloca sem alterar o conteúdo da DDRAM

40 uS

Fixa o modo de utilização do módulo LCD

0 0 0 0 1 Y N F * * -Comunicação do módulo com 8 bits(Y=1) ou 4 bits(Y=0) -Número de linhas: 1 (N=0) e 2 ou mais (N=1) -Matriz do caracter: 5x7(F=0) ou 5x10(F=1) - Esta instrução deve ser ativada durante a inicialização

40 uS

Posiciona no endereço da CGRAM

0 0 0 1 Endereço da CGRAM

-Fixa o enderço na CGRAM para posteriormente enviar ou ler o dado (byte)

40 uS

Posiciona no endereço da DDRAM

0 0 1 Endereço da DDRAM

-Fixa o enderço na DDRAM para posteriormente enviar ou ler o dado (byte)

40 uS

Leitura do Flag Busy

0 1 BF

AC -Lê o conteúdo do contador de endereços (AC) e o BF. O BF (bit 7) indica se a última operação foi concluída (BF=0 concluída) ou está em execução (BF=1).

0

Escreve dado na CGRAM / DDRAM

0 1 Dado a ser gravado no LCD

- Grava o byte presente nos pinos de dados no local apontado pelo contador de endereços (posição do cursor)

40 uS

Lê Dado na CGRAM / DDRAM

1 1 Dado lido do módulo - Lê o byte no local apontado pelo contador de endereços (posição do cursor)

40 uS

Fonte: Adaptado do DATASHEET Display LCD AMC 1602 A