GPS NEO 6M NO ARDUINO PAGINA ELETROGATE
GPS Neo-6M com Arduino – Aprenda a Usar
Eletrogate 7 de janeiro de 2018Atualizado em: 09 set 202210 minIntrodução - Como Funciona o Módulo GPS?
O artigo de hoje é sobre o módulo GPS Neo-6M. Esse módulo GPS é simples e fácil de ser integrado em projetos com Arduino. Ótimas bibliotecas já estão disponíveis online e facilitam bastante as tarefas de conversão e tratamento da string de dados que o módulo fornece ao Arduino.
Nesse texto vamos ligar o módulo GPS Ne0-6M com um Arduino UNO e apresentar dados de localização e velocidade na tela serial do computador. Uma aplicação bacana é mostrar os dados na tela de um LCD 16×2, ou mesmo gravá-los em um datalogger para fazer análises posteriores. Também vamos dar algumas dicas nessas direções.
** Revisão em andamento – atualizações em breve**
Com certeza você sabe o que é o sistema GPS, ou pelo menos já ouviu falar dele. Embora o sistema seja usado diariamente por quase todo mundo, poucas pessoas sabem a infraestrutura que está por trás dos equipamentos GPS. A sigla é abreviação de Global Positioning System, e do ponto de vista físico, o sistema em si consiste em uma constelação de satélites, com um número mínimo de 24 satélites para manter o sistema operacional e um número alvo de 33.
O sistema GPS é mantido e administrado pela 50th Space Wing, uma das alas aéreas da Força Aérea dos EUA. Foi lançado originalmente em 1978 com objetivos militares, e acabou se tornando o backbone de toda uma indústria de equipamentos e serviços de posicionamento global.
Além da constelação de satélites, há também a rede de controle baseada em terra e os equipamentos de usuários em si. A constelação é constituída de satélites na órbit MEO (Medium Earth Orbit), a uma altitudade de aproximadamente 20200 km. Cada satélite dá a volta na Terra duas vezes por dia. O arranjo dos satélites é feito de forma que exista 6 planos orbitais igualmente espaçados circulando a Terra. Cada plano contém quatro “slots” ocupados por um satélite. Ou seja, o arranjo total compreende 24 slots, de forma que um usuário pode sempre ver(receber o sinal) de pelo menos 4 satélites de qualquer lugar do planeta.( Fonte: www.gps.gov). A imagem abaixo ilustra a constelação e seus 24 “slots”.
Como o módulo GPS calcula a posição e velocidade?
Com pelo menos 4 satélites sendo percebidos por um módulo GPS, é possível saber a posição e velocidade global. Como isso é feito? Da seguinte forma: Primeiro, os dados enviados para a terra pelos satélites GPS possuem várias informações, dentre elas, as mais importantes é o tempo do momento exato em que o sinal foi enviado(cada satélite possui um preciso relógio atômico integrado para gerar essa informação). Além do tempo medido pelo relógio atômico do satélite, também é enviada a posição orbital do satélite e os tempos de chegada em diferentes pontos da órbita.
Em resumo, o seu módulo GPS(independente de modelo e fabricante) recebe de cada satélite um “timestamp” de quando o sinal foi enviado, e também a informação de onde cada satélite está posicionado(e várias outras informações). Assim, o receptor GPS sabe a distância para cada satélite. Com esses dados, o módulo calcula internamento, via triangulação de dados, a posição, velocidade e tempo exatos.
Para saber os detalhes do cálcula, acesse as seguintes referências:
- Como funciona o GPS?;
- Cálculo de distâncias com GPS;
- How GPS receivers works;
É sempre bom lembrar que além do GPS, que é operado pela USAF, existem outras constelações de satélites usadas para os mesmos propósitos, como o sistema Galileu(Europa), o GLONASS(Russo) e o BeiDou(Chinês).
O módulo GPS Neo-6M
Para mostrar como integrar GPS ao seu projeto, vamos usar o módulo GPS Neo-6M. Esse módulo é capaz de informar a localização exata , enviando dados referentes a latitude e longitude, data, hora e velocidade de deslocamento.
Uma informação importante do Módulo GPS é sua interface serial de 3,3V, não tolerando 5V. Portanto, não aplica sinais de 5V ao módulo, lembre-se de utilizar um conversor de sinais lógicos, como faremos em nosso exemplo.
As especificações são:
- Modelo: GY-GPS6MV1;
- Tensão de trabalho: 3,3 a 5V DC;
- Interface serial de 3,3V;
- Taxa de transmissão padrão: 9600;
- Dimensões do módulo (CxLxA): 30x23x4mm;
- Dimensões da antena (CxLxA): 25x25x8mm;
Para usar o módulo, existe uma conhecida biblioteca chamada TinyGPS. Na verdade, essa biblioteca apenas faz a manipulação dos dados do GPS, evitando que você tenha que manipular as strings enormes que o módulo enviar. Outra boa biblioteca disponível é a GPSneo, que é bem semelhante à anterior.
Aspectos de Hardware
Materiais necessários para o projeto com Arduino Uno e GPS Neo-6M
- 1x Uno R3 + Cabo Usb para Arduino
- 1x Protoboard 400 Pontos
- 1x Jumpers – Macho/Macho – 20 Unidades de 20cm
- 1x Resistor 1K 1/4W (10 Unidades)
- 1x Resistor 2K2 1/4W (10 Unidades)
- 1x Módulo GPS NEO-6M com Antena
A montagem em si é bem simples pois o módulo GPS Neo-6M se comunica com Arduino via interface serial. Vamos usar um divisor de tensão simples para converter os sinais TX do Arduino(5V) para 3.3V correspondentes do RX do GPS Neo-6M. A montagem fica conforme abaixo:
Editado por Gustavo Murta
Várias montagens disponíveis na internet fazem a ligação direta dos pinos RX/TX, sem a conversão de nível de lógico. Em nossos testes, a conexão direta(sem conversão dos níveis lógicos da serial) também funcionou bem, mas recomendamos usar os níveis indicados pelo fornecedor do módulo. Qualquer teste ligando TX direto em RX é por sua conta e risco.
Aspectos de Software
Podemos fazer o software de duas formas. A mais simples de todas é simplesmente ler as strings originais do módulo GPS e mostrá-las na tela serial. A segunda forma é usar uma biblioteca para tratar os dados e usar funções pré-definidas para obter apenas as informações que você pŕecisa.
O código mais simples é mostrado abaixo:
Para esse primeiro código, você vai observar mais ou menos o seguinte na sua saída serial.
Essas strings são os dados “crus” tal como GPS envia para o Arduino. Para tratar as Strings vamos usar a biblioteca TinyGPS. Fazendo as devidas adaptações nos códigos de exemplo, uma bom código de referência é o que se segue abaixo:
Com o segundo código, você obterá como saída o seguinte conjunto de mensagens:
Oberseve que com as funções gps.f_get_position e gps.satelites nós obtivemos os dados de latitude e longitude e também quantos satélites foram identificados pelo módulo. Outras funções estão disponíveis para acessar as demais informações que o módulo fornece.
Sugerimos que você explore os exemplos da biblioteca TinyGPS para conhecer as demais funções que ela disponibiliza. Para entender o significa das strings originais do módulo(lidar com os dados crus pode dar flexibilidade para implementar a sua própria biblioteca ou funções) recomendamos o site gpsinformation(em inglês).
Por fim, imagina como ficaria legal integrar um LCD e um datalogger a esse projeto! Aqui no blog também ensinamos a usar esses componentes em qualquer projeto com arduino. Confira os seguintes posts e incorpore um cartão SD e um LCD para visualizar os dados do seu módulo GPS:
Considerações Finais
Lembre-se de verificar as recomendações de seu fornecedor sobre a tensão de ligação do módulo. Se você olhar de perto, verá que os pinos RX e TX estão conectados diretamente ao módulo uBlox, que é o chip GPS em si do módulo Neo 6m. O datasheet é uma ótima referência para conhecer mais dos módulos da uBlox, uma das principais fabricantes de chips GPS do mercado. De acordo com o datasheet o Neo 6M possui tensão de alimentação de 2,7 a 3,3V.
O que permite que alguns projetos na internet liguem diretamente em 5V é o fato de o pequeno shield ao qual o módulo uBlox vem integrado possuir um adaptador de tensão. Mas o mesmo não acontece com a interface serial, que se liga direta aos ṕinos do chip uBlox, portanto, cuidado!
Conheça a Metodologia Eletrogate e ofereça aulas de robótica em sua escola!
Referências
- How to Interface GPS Module (NEO-6m) with Arduino.
- Tutorial to Communicate Neo-6M GPS to Arduino.
- GPS neo-6m Arduino Library.
- Tutorial Módulo GPS con Arduino.
- Programa U-Center da UBlox
- Biblioteca TinyGPS++
Sobre o Autor
|
Eletrogate
7 de janeiro de 2018Atualizado em: 09 set 2022A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Comentários
Postar um comentário