FAÇA UM SIMPLES GPS COM PIC16F628A E MÓDULO NEO-6M (REF328)

Visualize sua posição geográfica usando recursos de satélites GPS…

A proposta desta montagem é mostrar em um LCD16x2 as suas coordenadas de localização geográfica usando a rede de satélites GPS. Abaixo vemos o circuito necessário para este objetivo.

O módulo NEO-6M é responsável pela recepção de sinais via satélites, o processamento e envio destes dados ao microcontrolador PIC.
Este último apenas captura a informação desejada e mostra em um display de LCD.
Talvez se pergunte qual é o protocolo de comunicação do módulo NE0-6M.
Ele usa o padrão NMEA via comunicação serial, a 9600 bauds. Observe abaixo um exemplo de uma porção de dados enviados ao microcontrolador em funcionamento normal:

$GPGLL,3329.32272,N,04730.29031,W,180204.00,A,A*6C
$GPRMC,180205.00,A,3329.32276,N,04730.29039,W,0.159,,230719,,,A*7B
$GPVTG,,T,,M,0.159,N,0.294,K,A*21
$GPGGA,180205.00,3329.32276,N,04730.29039,W,1,05,1.50,624.9,M,-5.0,M,,*44
$GPGSA,A,3,28,30,17,05,13,,,,,,,,2.63,1.50,2.16*0C
$GPGSV,2,1,06,05,31,264,35,13,22,217,37,17,24,007,22,19,13,357,*73
$GPGSV,2,2,06,28,77,257,35,30,49,161,38*70

Para nossos objetivos usamos apenas a frase $GPGLL (Geographic Position – Latitude/Longitude):
Veja o que significa cada parte desta frase:

=======1===2===3==4=====5=====6=7
$GPGLL,llll.ll,a,yyyyy.yy,a,hhmmss.ss,A*hh

1) Latitude
2) N or S (North or South)
3) Longitude
4) E or W (East or West)
5) Time (UTC)
6) Status A – Data Valid, V – Data Invalid
7) Checksum

Como percebemos na descrição acima, ela fornece a localização do dispositivo por meio de coordenadas de latitude e longitude.
O programa usa a interrupção da serial para capturar apenas esta parte pequena da informação recebida. Em seguida mostra no LCD da seguinte forma, como exemplo:

LA=3329.32272,N, //Latitude 33º 29 Minutos e 32272 segundos decimais
LO=04730.29031,W //Longitude 47º 30 Minutos e 29031 segundos decimais

Nota importante:
Valor mostrado está em graus/minutos/segundos decimais. Mas o padrão do aplicativo “Google Maps” é: graus/minutos decimais. Para converter valor mostrado para padrão Google Maps multiplique os minutos por 100 e divida por 60. O que restar desta divisão deve ser somado com os segundos decimais.

Ex. 2332.49444 (mostrado no LCD)

Pegue os graus e multiplique por 100 e divida por 60:
32×100/60= 53.33333

Obtido foi 53 graus decimais com resto de .33333

Somando resto (.33333) com os segundos decimais (.49444):

49444+33333=82777

Então valor convertido será:
2353.82777

Ambas as coordenadas necessitam ser convertidas caso queira usa-las no aplicativo Google Maps.

O programa poderia ter sido feito mais facilmente usando manipulação de strings das bibliotecas do CCS C.
No entanto, seu uso aumenta consideravelmente o consumo de memória flash. Isto dificulta a inserção de novas funções ao programa. Note que este programa consumiu apenas 37% de espaço da flash.
Certifique de usar esta montagem em um ambiente que permita visualização dos satélites com facilidade. Se não conseguir recepção ou demorar mais que alguns minutos para mostrar a localização, tente mudar a posição física desta montagem. Áreas externas tendem a dar melhor recepção de sinal. A antena acoplado ao módulo NEO-6M deve ficar na posição horizontal (nivelada) conforme recomendações do fabricante.
Obs. Esta montagem é experimental, sendo de caráter didático, montada apenas em placa experimental (do tipo “Protoboard”), sujeita a “bugs” ainda não detectados. Está sendo fornecido os arquivos para que cada hobista possa alterar o programa segundo suas necessidades.

Segue pasta zipada com os arquivos da montagem:

GPS_16F628A_ZIP

Manuais:
PIC16F628A
GPS NEO-6M DATASHEET

Curiosidades:
A ciência imita os maravilhosos projetos da natureza
Somos todos uma família
Muita aprendizagem mas poucas mudanças
Um número muito útil mas intrigante

Outros assuntos:
Será que a Bíblia ensina que a terra é plana?
Como cuidar de um parente com uma doença terminal?
Será que Deus, a Bíblia ou a religião podem ajudar você a ter satisfação na vida?
O que é a Torá?
O que é a batalha do Armagedon?
O que os números significam na Bíblia?

Vídeos:
A criação nos ensina a ser corajosos
A criação nos ensina a ser perseverantes
Teve um projeto? – A tromba do elefante
O que o livro de Jó nos ensina sobre – animais?
Como se preparar para um desastre natural?

Até o próximo artigo!

Back To Top