- Descrição: O Sensor (Detector) de Gás Inflamável / Fumaça -…
Módulo GPS GY-NEO6MV2 – Guia completo de como usá-lo com o Arduino
Imagine adicionar o recurso de GPS no seu projeto ioT? Isso tornaria seu projeto muito mais completo e interessante, e isso é possível graças ao Módulo GPS GY-NEO6MV2. Acompanhe este tutorial e veja como é simples usar este módulo junto ao Arduino.
Antes de te apresentar o Módulo GPS GY-NEO6MV2, temos que entender um conceito importante:
– Como funciona o GPS?
A função dos receptores GPS é descobrir a que distância eles estão de vários satélites.
Os satélites transmitem informações sobre sua posição e a hora atual na forma de sinais de rádio em direção à Terra. Esses sinais identificam os satélites e informam ao receptor onde eles estão localizados.
O receptor então calcula a distância de cada satélite, levando em consideração quanto tempo levou para os sinais chegarem. Uma vez que tenha informações sobre a distância de pelo menos três satélites e onde eles estão no espaço, o receptor pode identificar sua localização na Terra.
Agora que você já sabe como funciona um GPS, vamos falar um pouco do protagonista do nosso tutorial: o Módulo GPS GY-NEO6MV2.
O Módulo GPS GY-NEO6MV2 é um dispositivo que tem como finalidade definir a geolocalização e fornecer os dados para uma plataforma microcontrolada.
Este Módulo conta com uma antena externa para melhorar a recepção de sinal e a comunicação com a plataforma microcontrolada é feita via serial (RX / TX).
– Especificações:
– Modelo: GY-NEO6MV2
– Tensão de operação: 2,7 a 5VDC
– Corrente de operação: 45mA
– Comunicação: serial
– Possui conector U.FL para antena
– Possui bateria para backup de informações
– Nível lógico: 3.3 e 5V
– Taxa de comunicação (padrão): 9600 bauds
– Warm start: 1s
– Cold start: 27s
– Temperatura de operação: -40 a 85°Celsius
– Precisão: 5m
– Conhecendo o Módulo GPS GY-NEO6MV2 mais a fundo
O chip GPS NEO-6M da u-blox é o coração deste módulo. Este chip é cheio de recursos, o que torna este módulo bem completo.
Ele pode rastrear até 22 satélites em 50 canais, com uma sensibilidade de rastreamento de -162dBm, enquanto consome apenas 45mA de corrente.
Ao contrário de outros módulos GPS, ele pode fazer até 5 atualizações de localização por segundo com precisão de posição horizontal de 2,5m.
Um dos melhores recursos que o chip oferece é o Power Save Mode (PSM), que permite uma redução no consumo de energia do sistema ligando e desligando seletivamente partes do receptor. Isso reduz drasticamente o consumo de energia do módulo (de 45 para 11mA), tornando-o adequado para aplicações sensíveis à energia, como relógio de pulso com GPS.
Há um LED no Módulo GPS NEO-6M que indica o status da Posição Fixa. Ele piscará em várias taxas, dependendo do estado em que está:
Sem piscar – está procurando por satélites.
Pisca a cada 1s – Posição Fixa encontrada (o módulo pode ver satélites suficientes).
A tensão de operação do chip NEO-6M é de 2,7 a 3,6V. Porém, um regulador de 3.3V já vem integrado ao módulo, assim, os pinos lógicos deste módulo são tolerantes a 5V para que possamos conectá-lo facilmente a um Arduino ou a qualquer outro microcontrolador lógico de 5V, sem a necessidade de reguladores de tensão externos.
O Módulo GPS GY-NEO6MV2 possui uma EEPROM de 4KB de conectada ao chip NEO-6M. Além disso, ele também contém uma bateria recarregável que atua como um supercapacitor.
A EEPROM em conjunto com a bateria é usada pelo módulo para armazenar os dados de relógio e posição mais recentes, assim, o tempo de detecção de dados é reduzido sempre que iniciar o módulo.
Vale lembrar que a bateria deste módulo é carregada automaticamente quando o módulo é ligado.
Não podemos esquecer da antena que acompanha o Módulo GPS GY-NEO6MV2. Sem ela, não há comunicação.
A antena possui um conector U.FL para ser conectado ao módulo e tem sensibilidade de rastreamento de -162dBm, como mencionado acima.
– Pinagem do Módulo GPS GY-NEO6MV2
Ligar este módulo à uma plataforma embarcada não tem mistério, já que o mesmo possui somente 4 pinos:
– Quer testar seu Módulo GPS GY- NEO6MV2 antes de realizar a prática?
O U-center da u-blox é um software para avaliação, análise de desempenho e configuração de receptores GPS U-blox, incluindo o NEO-6M. É uma ferramenta gratuita, mas só pode ser usada na plataforma Windows.
Ele pode exibir visualização de dados estruturados e gráficos em tempo real de qualquer receptor GPS, como:
- Visualização de resumo de satélite
- Visualização do resumo da navegação
- Bússola, velocímetro, relógio, altímetro
- Visualização de gráfico de quaisquer dois parâmetros de escolha
- Funcionalidade de gravação e reprodução de dados
Você pode fazer o download do U-Center, clicando aqui.
Para testar o seu Módulo, você precisará deste software instalado no seu computador e também de um conversor USB para TTL. Em nossa Loja Virtual, você encontra alguns modelos de conversores. A fim de demonstração, usarei um conversor CH340.
A ligação entre o conversor CH340 e o módulo deve ser feita como mostra a imagem:
Após a instalação do U-Center, inicie o programa em seu computador. Basta você ir em Menu Iniciar > u-center-v22.02. A tela inicial do programa será conforme a seguinte imagem:
Localize a barra de ferramentas de comunicação e clique na seta ao lado do ícone. Isso mostrará uma lista com todas as portas COM disponíveis. Selecione a porta COM correspondente onde o receptor está conectado.
Ao conectar-se com a porta COM correta, após alguns segundos, a ferramenta começará a ler alguns dados, como mostra a imagem:
O botão do Text Console mostrará as sequencias NMEA brutas.
Mas o que são essas sequencias NMEA?
NMEA é um acrônimo para National Marine Electronics Association . Este é um formato de mensagem padrão para quase todos os receptores GPS. O padrão NMEA é formatado em linhas de dados chamadas sentenças. Cada frase é separada por vírgulas para facilitar a análise por computadores e microcontroladores.
Essas sentenças NMEA são enviadas em um intervalo chamado taxa de atualização. O módulo GPS NEO-6M atualiza essas informações uma vez por segundo (frequência de 1Hz) por padrão.
E se essas sequencias apareceram, seu módulo está funcionando perfeitamente.
Depois desse teste, vamos ver o funcionamento deste módulo na prática?
– O que vamos precisar para a prática
Para o desenvolvimento desta prática, vamos usar:
– 1 Placa ATmega328p com Cabo USB A/B (Compatível com Arduino Uno R3);
Você encontra todos esses produtos e muito mais em nossa Loja Virtual. Utilize o cupom VIMDOBLOG e ganhe desconto na sua compra. Aproveite!!
– Esquema de ligação
– Tutorial de instalação e configuração do ambiente de programação do Arduino:
Se seu IDE ainda não está configurado para iniciar suas programações, execute o tutorial Arduino – Instalação e Configuração da IDE no Windows antes de dar prosseguimento na prática.
– Instalação de Biblioteca
Como mencionamos acima, o Módulo GPS GY- NEO6MV2 recebe dados em sentenças NMEA. Para simplificar nosso trabalho, temos uma biblioteca chamada biblioteca TinyGPS++. Esta biblioteca faz o trabalho pesado necessário para receber dados de módulos GPS, como ler e extrair dados úteis em segundo plano.
Faça o download da biblioteca TinyGPS++ clicando aqui, e em seguida faça a instalação da mesma no IDE do Arduino.
Se você não sabe como fazer a instalação de bibliotecas no IDE, acesse o link abaixo e em seguida retorne para continuar:
Arduino – Importando bibliotecas para o IDE
– Código da prática:
O código para testes está abaixo, basta copiar o mesmo, colar no IDE, salvar e carregar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
//INCLUSÃO DE BIBLIOTECAS #include <TinyGPS++.h> #include <SoftwareSerial.h> /*DEFINIÇÃO DE PINOS DO ARDUINO. LEMBRE-SE: O PINO ONDE VOCÊ CONECTOU O TX SERÁ O RX AQUI NO CÓDIGO E VICE-VERSA. ISSO É POR CAUSA DA COMUNICAÇÃO SERIAL. PARA MAIS DETALHES, VOCÊ PODE CONSULTAR NOSSO BLOG*/ int RXPin = 2; int TXPin = 3; int GPSBaud = 9600; //CRIANDO UM O BJETO PARA COMUNICAR COM A BIBLIOTECA TinyGPSPlus gps; // CRIANDO UMA PORTA SERIAL gpsSerial PARA CONVERSAR COM MÓDULO SoftwareSerial gpsSerial(RXPin, TXPin); void setup() { // INICIA A SERIAL Serial.begin(9600); // INICIA A PORTA SERIAL DO SOFTWARE NO BAUD PADRÃO DO GPS, COMO DETERMINAMOS ACIMA:9600 gpsSerial.begin(GPSBaud); } void loop() { // TODA VEZ QUE FOR LIDA UMA NOVA SENTENÇA NMEA, CHAMAREMOS A FUNÇÃO displayInfo() PARA MOSTRAR OS DADOS NA TELA while (gpsSerial.available() > 0) if (gps.encode(gpsSerial.read())) displayInfo(); //SE EM 5 SEGUNDOS NÃO FOR DETECTADA NENHUMA NOVA LEITURA PELO MÓDULO,SERÁ MOSTRADO ESTA MENSGEM DE ERRO. if (millis() > 5000 && gps.charsProcessed() < 10) { Serial.println("Sinal GPS não detectado"); while(true); } } void displayInfo()//FUNÇÃO RESPONSAVEL PELA LEITURA DOS DADOS { if (gps.location.isValid())//SE A LOCALIZAÇÃO DO SINAL ENCONTRADO É VÁLIDA, ENTÃO { Serial.print("Latitude: "); Serial.println(gps.location.lat(), 6);//IMPRIME NA SERIAL O VALOR DA LATIDUE LIDA Serial.print("Longitude: "); Serial.println(gps.location.lng(), 6);//IMPRIME NA SERIAL O VALOR DA LONGITUDE LIDA } else { Serial.println("Não detectamos a localização");//SE NÃO HOUVER NENHUMA LEITURA, IMPRIME A MENSAGEM DE ERRO NA SERIAL } Serial.print("Data: "); if (gps.date.isValid())//IMPRIME A DATA NA SERIAL { Serial.print(gps.date.day());//LEITURA DO DIA Serial.print("/"); Serial.print(gps.date.month());//LEITURA DO MêS Serial.print("/"); Serial.println(gps.date.year());//LEITURA DO ANO } else { Serial.println("Erro");//SE NÃO HOUVER NENHUMA LEITURA, IMPRIME A MENSAGEM DE ERRO NA SERIAL } Serial.print("Time: "); //LEITURA DA HORA PARA SER IMPRESSA NA SERIAL if (gps.time.isValid()) { if (gps.time.hour() < 10) Serial.print(F("0")); Serial.print(gps.time.hour() - 3); //AJUSTA O FUSO HORARIO PARA NOSSA REGIAO (FUSO DE SP 03:00, POR ISSO O -3 NO CÓDIGO) E IMPRIME NA SERIAL Serial.print(":"); if (gps.time.minute() < 10) Serial.print(F("0")); Serial.print(gps.time.minute());//IMPRIME A INFORMAÇÃO DOS MINUTOS NA SERIAL Serial.print(":"); if (gps.time.second() < 10) Serial.print(F("0")); Serial.print(gps.time.second());//IMPRIME A INFORMAÇÃO DOS SEGUNDOS NA SERIAL } else { Serial.println("Não detectamos o horário atual");//SE NÃO HOUVER NENHUMA LEITURA, IMPRIME A MENSAGEM DE ERRO NA SERIAL } Serial.println(); Serial.println(); delay(1000); } |
– Resultado Final
Você pode conferir o resultado desta prática no vídeo abaixo.
Gostou do resultado final? Então deixe seu feedback nos comentários. Estou ansiosa para saber se você desenvolveu esta prática!!!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Página no Instagram: https://www.instagram.com/blogmasterwalkershop/
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Espero ter contribuído com seu aprendizado. Até a próxima!!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Postagem anterior: Cuide de sua plantinha com o Arduino
Próxima postagem: Alerta de incêndio com o Sensor de Fogo, NodeMCU e Blynk