Aprenda a utilizar o módulo GPS com Arduino

Modulo-GPS-GY-NEO6MV2
Font Size

Olá amantes da tecnologia, tudo bem?
Nesta publicação iremos utilizar um módulo muito importante presente em todos os Smartphones, o GPS, que é muito utilizado para saber em quais coordenadas geográfico o nosso dispositivo está.

Através do Módulo GPS GY-NEO6MV2 iremos conseguir muitas informações legais, além da localização, através dele é possível obter a hora e data, para onde o gps está se locomovendo e até a altitude do local, olha quanta coisa só um módulo consegue, então se ainda não tem tá esperando o que? Passa lá na Loja AutoCore Robótica e garante o seu.

Agora vamos conhecer melhor esse sensor tão poderoso!

Conhecendo o Módulo GPS GY-NEO6MV2

Este módulo pode até parecer simples, pois só tem 4 pinos, mas não se engane, ele já contem um microcontrolador interno, o NEO-6, que já realiza todos os processamentos necessários e disponibiliza os dados obtidos por dois pinos, o TX e o RX, através desses poderemos repassar esses dados para diversos microcontroladores ou sistemas embarcados como Raspiberry Pi, ESP e o Arduino, que iremos utilizar nesse tutorial.

Módulo GPS GY-NEO6MV2
Fonte: AutoCore Robótica

Esse módulo é composto por duas partas, a antena, responsável por capitar as informações provindas dos satélites e o sistema de controle, responsável pelo processamento dos dados obtidos, como já dito anteriormente.

Especificações:

– Tensão de alimentação: 3V~5V
– Modelo: GY-GPS6MV2
– Tipo de antena: Cerâmica
– Velocidade padrão: 9600 baudrate
– Número de canais: 50
– Sensibilidade: -146dBm/-160dBm
– Faixa de atualização de navegação: 5Hz
– Altitude limite: 50000m
– Velocidade limite: 500m/s
– Possui EEPROM interna para armazenar as configurações
– Possui bateria de backup
– Possui LED para indicar o sinal

Documentação

– Datasheet do Módulo GPS GY-NEO6MV2

Agora já conhecemos bastante o nosso módulo, então vamos para a prática!

Montagem do circuito

A montagem do circuito para utilizar o nosso módulo é muito simples, não é necessário de nenhum resistor se quer.

Materiais Utilizados:

Montagem:

O circuito do projeto ficará conforme o da imagem:

Módulo GPS GY-NEO6MV2
Fonte: Autocore Robotica

Conexão:

Esses são os pinos do sensor que são conectados com o Arduino

VCC 5V
GND GND
TX RX – Digital 10
RX TX – Digital 11

Agora que já montamos o circuito está na hora de programar!

Código Comentado:

Nesse projeto serão utilizadas duas bibliotecas, a SoftwareSerial necessária para emulação dos pinos TX e RX, que já vem junto com a IDE arduino , e a TinyGPS, que é necessária a instalação dela, então, baixe-a quanto antes.

O código é bastante simples, olha só como ele ficou:

#include <SoftwareSerial.h> //biblioteca para emular o TX e o RX
#include <TinyGPS.h> //biblioteca do GPS

SoftwareSerial serial1(10, 11); // RX, TX
TinyGPS gps1; //Criando o GPS

void setup() {
 serial1.begin(9600); //valeocidade do GPS, não é possivel modificar
 Serial.begin(9600); // Velocidade do serial


Serial.println("Aguardando a concecção com os satelites");
}

void loop() {
 bool recebido = false; // indicará quando o GPS conseguiu se conectar aos satélites

while (serial1.available()) { //realiza diversas leituras até conseguir se conectar
 char cIn = serial1.read();
 recebido = gps1.encode(cIn);
 }

// quando conseguir se conectar aos satélites ele irá realizar as leituras
 if (recebido) {
 Serial.println("----------------------------------------");
 
 //Latitude e Longitude
 long latitude, longitude;
 unsigned long idadeInfo;
 gps1.get_position(&latitude, &longitude, &idadeInfo); // obtem a latitude, longitude e a idade da informação

// se a latitude for algo valido ela será impressa
 if (latitude != TinyGPS::GPS_INVALID_F_ANGLE) {
 Serial.print("Latitude: ");
 Serial.println(float(latitude) / 100000, 6);
 }

// se a longitude for algo valido ela será impressa
 if (longitude != TinyGPS::GPS_INVALID_F_ANGLE) {
 Serial.print("Longitude: ");
 Serial.println(float(longitude) / 100000, 6);
 }
 
 // se a data da informação for algo valido ela será impressa
 if (idadeInfo != TinyGPS::GPS_INVALID_AGE) {
 Serial.print("Idade da Informacao (ms): ");
 Serial.println(idadeInfo);
 }


 //Obtem o Dia e Hora no GMT, ou seja, há 3 horas de diferença com o horário do Brasil
 int ano;
 byte mes, dia, hora, minuto, segundo, centesimo;
 gps1.crack_datetime(&ano, &mes, &dia, &hora, &minuto, &segundo, &centesimo, &idadeInfo); //obtendo a data, horário e a idade da informação
 
 // imprimindo os dados
 Serial.print("Data (GMT): ");
 Serial.print(dia);
 Serial.print("/");
 Serial.print(mes);
 Serial.print("/");
 Serial.println(ano);

Serial.print("Horario (GMT): ");
 Serial.print(hora);
 Serial.print(":");
 Serial.print(minuto);
 Serial.print(":");
 Serial.print(segundo);
 Serial.print(":");
 Serial.println(centesimo);


 //Obtendo a altitude
 float altitudeGPS;
 altitudeGPS = gps1.f_altitude();

// se a altitude for algo valido e diferente de 1000000Cm ela será impressa
 if ((altitudeGPS != TinyGPS::GPS_INVALID_ALTITUDE) && (altitudeGPS != 1000000)) {
 Serial.print("Altitude (cm): ");
 Serial.println(altitudeGPS);
 }


 //obtem a velocidade de locomoção do gps em km/h
 float velocidade;
 velocidade = gps1.f_speed_kmph();

Serial.print("Velocidade (km/h): ");
 Serial.println(velocidade, 2); //Conversão de Nós para Km/h

//obtem o sentito do movimento em centesima de graus
 unsigned long sentido;
 sentido = gps1.course();

Serial.print("Sentido (grau): ");
 Serial.println(float(sentido) / 100, 2);


 //obtem a quantidade de satelites e a precisão
 unsigned short satelites;
 unsigned long precisao;
 satelites = gps1.satellites();
 precisao = gps1.hdop();

if (satelites != TinyGPS::GPS_INVALID_SATELLITES) {
 Serial.print("Satelites: ");
 Serial.println(satelites);
 }

if (precisao != TinyGPS::GPS_INVALID_HDOP) {
 Serial.print("Precisao (centesimos de segundo): ");
 Serial.println(precisao);
 }
 }
}

Depois que o código foi enviado para o arduino basta esperar alguns segundos, cerca de 60, o que pode variar de acordo com a sua localização ou interferência eletromagnética.

Passado esse tempo o módulo conseguirá estabelecer contato com os satélites e pronto para o uso

Conclusão:

Entenderam o funcionamento simples do Módulo GPS GY-NEO6MV2? é bem simples não?

Testamos o código e olha só o resultado:

Testes do Módulo GPS GY-NEO6MV2
Fonte: Autocore Robotica

Se você quiser testar a veracidade dessas coordenadas obtidas pelo módulo, mas ta colocar-las no Google Maps do seguinte formato : Latitude”S Longitude”W

Caso você esteja em estados acima do equador como Amapá ou Roraima basta trocar o S por N

Fazendo isso conseguiremos ver a nossa localização ;D

Testes do Módulo GPS GY-NEO6MV2
Fonte: Autocore Robotica

Esperamos que esse tutorial tenha ajudado vocês na utilização desse pequeno, mais poderoso módulo, a quantidade de aplicações dele é enorme.

Se tiver dúvidas, observações ou quiser mandar um abraço para nós, coloca ai nos comentários, iremos adorar te responder. ;D

Confira mais conteúdos em nosso blog. Conteúdos explicativos e exclusivos para você.

Posts relacionados

Módulo I2C para LCD 16×2 e Arduino

por autocore
5 anos ago

Integrando teclado matricial, DHT22 e Display LCD

por autocore
8 anos ago

Aprenda a utilizar o módulo RTC17 DS1307

por autocore
7 anos ago
Sair da versão mobile