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, ¢esimo, &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ê.
