Como fazer a interface do Arduino Mega com o Módulo GPS NEO-6M
Componentes e suprimentos
| × | 1 | ||||
| × | 1 |
Aplicativos e serviços online
|
Sobre este projeto
O que descobri é que não há tutorial para interface do Arduino Mega com o módulo GPS NEO-6M, então decidi fazer um. Espero que você goste!
Componentes necessários
Hardware
- Arduino Mega ==> $ 30
- Módulo GPS Neo-6M ==> $ 30
Software
- Arduino IDE
O custo total do projeto é de $ 60.
Informações sobre GPS
O que é GPS?
O Sistema de Posicionamento Global (GPS) é um sistema de navegação baseado em satélite composto por pelo menos 24 satélites. O GPS funciona em qualquer condição climática, em qualquer lugar do mundo, 24 horas por dia, sem taxas de assinatura ou taxas de configuração.
Como funciona o GPS
Os satélites GPS giram em torno da Terra duas vezes por dia em uma órbita precisa. Cada satélite transmite um sinal único e parâmetros orbitais que permitem que os dispositivos GPS decodifiquem e calculem a localização precisa do satélite. Os receptores GPS usam essas informações e trilateração para calcular a localização exata de um usuário. Essencialmente, o receptor GPS mede a distância de cada satélite pela quantidade de tempo que leva para receber um sinal transmitido. Com medições de distância de mais alguns satélites, o receptor pode determinar a posição de um usuário e exibi-la.
Para calcular sua posição 2-D (latitude e longitude) e o movimento da trilha, um receptor GPS deve ser travado para o sinal de pelo menos 3 satélites. Com 4 ou mais satélites, o receptor pode determinar sua posição 3-D (latitude, longitude e altitude). Geralmente, um receptor GPS rastreia 8 ou mais satélites, mas isso depende da hora do dia e de onde você está na Terra. Assim que sua posição for determinada, a unidade GPS pode calcular outras informações, como
- Velocidade
- Rolamento
- Trilha
- Distância de viagem
- Distância até o destino
O que é sinal
Os satélites GPS transmitem pelo menos 2 sinais de rádio de baixa potência. Os sinais viajam pela linha de visão, o que significa que eles passarão por nuvens, vidro e plástico, mas não passarão pela maioria dos objetos sólidos, como edifícios e montanhas. No entanto, os receptores modernos são mais sensíveis e geralmente podem rastrear através das casas. Um sinal de GPS contém 3 tipos diferentes de informação
- Código pseudoaleatório
É um ID código que identifica qual satélite está transmitindo informações. Você pode ver de quais satélites está recebendo sinais na página de satélite do seu dispositivo.
- Dados efemérides
Os dados das efemérides são necessários para determinar a posição de um satélite e fornecem informações importantes sobre a saúde de um satélite, data e hora atuais.
- Dados do almanaque
Os dados do Almanaque informam ao receptor GPS onde cada satélite GPS deve estar a qualquer hora do dia e mostram as informações orbitais desse satélite e de todos os outros satélites do sistema.
Módulo GPS Neo-6M
O módulo NEO-6M GPS é mostrado na figura abaixo. Ele vem com uma antena externa e não vem com pinos de cabeçalho. Portanto, você precisará soldá-lo.
Visão geral do módulo NEO-6M GPS
- NEO-6M GPS Chip
O coração do módulo é um chip NEO-6M GPS da u-blox. Ele pode rastrear até 22 satélites em 50 canais e atinge o nível mais alto de sensibilidade da indústria, ou seja, rastreamento de -161 dB, enquanto consome apenas 45mA de corrente de alimentação. O motor de posicionamento u-blox 6 também possui um Time-To-First-Fix (TTFF) de menos de 1 segundo. Um dos melhores recursos que o chip oferece é o Modo de economia de energia (PSM). Ele 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 para apenas 11mA, tornando-o adequado para aplicações sensíveis à energia, como relógio de pulso GPS. Os pinos de dados necessários do chip NEO-6M GPS são divididos em cabeçalhos de pitch de "0,1". Isso inclui os pinos necessários para comunicação com um microcontrolador via UART.
Nota :- O módulo suporta taxa de transmissão de 4800bps a 230400bps com transmissão padrão de 9600.
Indicador LED de correção de posição
Há um LED no Módulo NEO-6M GPS que indica o status da posição fixa. Ele piscará em várias taxas, dependendo do estado em que se encontra
- Sem piscar ==> significa que está procurando por satélites
- Piscar a cada 1s - significa que a posição fixa foi encontrada
- Regulador LDO de 3,3 V
A tensão de operação do chip NEO-6M é de 2,7 a 3,6 V. Porém, o módulo vem com o regulador 3V3 de dropout ultrabaixo MIC5205 da MICREL. Os pinos lógicos também são tolerantes a 5 volts, portanto, podemos conectá-los facilmente a um Arduino ou a qualquer microcontrolador lógico de 5 V sem usar nenhum conversor de nível lógico.
Bateria e EEPROM
O módulo está equipado com um EEPROM serial de dois fios HK24C32. É de 4 KB e conectado ao chip NEO-6M via I2C. O módulo também contém uma bateria recarregável que atua como um supercapacitor.
Uma EEPROM junto com a bateria ajuda a reter a RAM com bateria de reserva (BBR). O BBR contém dados de relógio, dados de posição mais recentes (GNSS ou dados de bits) e configuração de módulo. Mas não se destina ao armazenamento permanente de dados.
Como a bateria retém o relógio e a última posição, o tempo para a primeira correção (TTFF) reduz significativamente para 1s. Isso permite bloqueios de posição muito mais rápidos.
Sem a bateria, o GPS sempre é inicializado a frio, de modo que o bloqueio inicial do GPS leva mais tempo. A bateria é carregada automaticamente quando a energia é aplicada e mantém os dados por até duas semanas sem energia.
Pinagem
- GND é o pino de aterramento e precisa ser conectado ao pino GND no Arduino.
- O pino TxD (transmissor) é usado para comunicação serial.
- O pino RxD (receptor) é usado para comunicação serial.
- VCC fornece energia para o módulo. Você pode conectá-lo diretamente ao pino de 5 V no Arduino.
Arduino Mega
Arduino é uma plataforma eletrônica de código aberto baseada em hardware e software fáceis de usar. As placas Arduino são capazes de ler entradas - luz em um sensor, um dedo em um botão ou uma mensagem do Twitter - e transformá-la em uma saída - ativando um motor, ligando um LED, publicando algo online. Você pode dizer à sua placa o que fazer enviando um conjunto de instruções para o microcontrolador da placa. Para fazer isso, você usa a linguagem de programação Arduino (baseada em Wiring), e o Arduino Software (IDE), baseado em Processing.
Arduino Mega 2560 é uma placa de microcontrolador baseada no Atmega2560.
- Existem 54 pinos de E / S digitais e 16 pinos analógicos incorporados na placa que tornam este dispositivo único e se destaca dos outros. Das 54 E / S digitais, 15 são usadas para PWM (modulação por largura de pulso).
- Um oscilador de cristal de frequência de 16 MHz.
- A placa vem com uma porta de cabo USB que é usada para conectar e transferir códigos do computador para a placa.
- O conector de alimentação DC é acoplado à placa que é usada para alimentar a placa.
- A placa vem com dois reguladores de tensão, ou seja, 5 V e 3,3 V, que fornecem flexibilidade para regular a tensão de acordo com os requisitos.
- Há um botão de reinicialização e 4 portas seriais de hardware chamadas USART que produzem uma velocidade máxima para configurar a comunicação.
- Existem três maneiras de alimentar a placa. Você pode usar um cabo USB para alimentar a placa e transferir o código para a placa ou pode ligá-lo usando o Vin da placa ou através do conector de alimentação ou bateria.
Especificações
Pinagem
Descrição do PIN
- 5 V e 3,3 V ==> Este pino é usado para fornecer tensão regulada de saída em torno de 5V. Esta fonte de alimentação regulada energiza o controlador e outros componentes da placa. Ele pode ser obtido do Vin da placa ou do cabo USB ou de outra fonte de tensão regulada de 5 V. Enquanto outra regulação de tensão é fornecida pelo pino de 3,3V. A potência máxima que pode consumir é de 50mA.
- GND ==> Existem 5 pinos de aterramento disponíveis na placa, o que o torna útil quando mais de um pino de aterramento é necessário para o projeto.
- Redefinir ==> Este pino é usado para reinicializar a placa. Definir este pino como BAIXO irá reinicializar a placa.
- Vin ==> É a tensão de entrada fornecida à placa que varia de 7V a 20V. A tensão fornecida pelo conector de alimentação pode ser acessada por meio deste pino. No entanto, a tensão de saída através deste pino para a placa será automaticamente configurada para 5V.
- Comunicação serial ==> RXD e TXD são os pinos seriais usados para transmitir e receber dados seriais, ou seja, Rx representa a transmissão de dados enquanto Tx é usado para receber dados. Existem quatro combinações desses pinos seriais, onde Serail 0 contém RX (0) e TX (1), Serial 1 contém TX (18) e RX (19), Serial 2 contém TX (16) e RX (17), e Serial 3 contém TX (14) e RX (15).
- Interrupções externas ==> Seis pinos são usados para criar interrupções externas, ou seja, interrupção 0 (0), interrupção 1 (3), interrupção 2 (21), interrupção 3 (20), interrupção 4 (19), interrupção 5 (18). Esses pinos produzem interrupções de várias maneiras, ou seja, fornecendo valor BAIXO, borda ascendente ou descendente ou valor alterado para os pinos de interrupção.
- LED ==> Esta placa vem com LED embutido conectado ao pino digital 13. O valor HIGH neste pino irá acender o LED e o valor LOW irá desligá-lo.
- AREF ==> AREF significa Tensão de Referência Analógica, que é uma tensão de referência para entradas analógicas.
- Pinos analógicos ==> Existem 16 pinos analógicos incorporados na placa rotulados como A0 a A15. É importante observar que todos esses pinos analógicos podem ser usados como pinos de E / S digitais. Cada pino analógico vem com resolução de 10 bits. Esses pinos podem medir desde o aterramento até 5V. No entanto, o valor superior pode ser alterado usando a função AREF e analogReference ().
- I2C ==> Dois pinos 20 e 21 suportam comunicação I2C, onde 20 representa SDA (linha de dados serial usada principalmente para manter os dados) e 21 representa SCL (linha de relógio serial usada principalmente para fornecer sincronização de dados entre os dispositivos)
- Comunicação SPI ==> SPI significa Interface Periférica Serial usada para a transmissão de dados entre o controlador e outros componentes periféricos. Quatro pinos, ou seja, 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS) são usados para comunicação SPI.
IDE Arduino
Estou assumindo que você já instalou o IDE do Arduino.
1. Baixe a biblioteca necessária fornecida abaixo
TinyGPS lib
2. Depois de fazer o download. Extraia-o e mova-o para a pasta C:\ Usuários \ ... \ Documentos \ Arduino \ bibliotecas, certifique-se de que não haja (-).
3. Abra o IDE do Arduino e copie o código da seção do programa.
4. Em seguida, selecione a placa para ir em Ferramentas ==> Placas ==> selecione a placa aqui estamos usando o Arduino Mega 2560.
5. Depois de selecionar a porta da placa, vá para Ferramentas ==> Portas.
6. Após selecionar a placa e a porta, clique em upload.
Conexões
Arduino MEGA ==> NEO-6M GPS
- 3,3V ==> VCC
- GND ==> GND
- Tx1 (18) ==> Rx
- Rx1 (19) ==> Tx
Você também pode usar Serial2 ou Serial3 em vez de Serial1
Pinos Serial2
- Tx2 (16) ==> Rx
- Rx2 (17) ==> Tx
Pinos Serial3
- Tx3 (14) ==> Rx
- Rx3 (15) ==> Tx
Resultado
Código
- Arduinomega_GPS
Arduinomega_GPS Arduino
// Conecte com os pinos 18 e 19 # include// long lat, lon; // cria variável para latitude e longitude objectfloat lat, lon; TinyGPS gps; // cria configuração do objectvoid do GPS () {Serial.begin (57600); // conecte serialSerial.println ("O sinal recebido do GPS:"); Serial1.begin (9600); // conecte o sensor gps} void loop () {while (Serial1.available ()) {// verifique os dados do gps if (gps.encode (Serial1.read ())) // codifique os dados do gps {gps.f_get_position (&lat , &lon); // obtém latitude e longitude Serial.print ("Posição:"); // Latitude Serial.print ("Latitude:"); Serial.print (lat, 6); Serial.print (","); // Longitude Serial.print ("Longitude:"); Serial.println (lon, 6); }}} / * // Conecte com os pinos 16 e 17 # include // long lat, lon; // cria variável para latitude e longitude objectfloat lat, lon; TinyGPS gps; // cria configuração do objectvoid do GPS () {Serial.begin (57600); // conecte serialSerial.println ("O sinal recebido do GPS:"); Serial2.begin (9600); // conecte o sensor gps} void loop () {while (Serial2.available ()) {// verifique os dados do gps if (gps.encode (Serial2.read ())) // codifique os dados do gps {gps.f_get_position (&lat , &lon); // obtém latitude e longitude Serial.print ("Posição:"); // Latitude Serial.print ("Latitude:"); Serial.print (lat, 6); Serial.print (","); // Longitude Serial.print ("Longitude:"); Serial.println (lon, 6); }}} * // * // Conecte com os pinos 14 e 15 # include // long lat, lon; // cria variável para latitude e longitude objectfloat lat, lon; TinyGPS gps; // cria configuração do objectvoid do GPS () {Serial.begin (57600); // conecte serialSerial.println ("O sinal recebido do GPS:"); Serial3.begin (9600); // conecte o sensor gps} void loop () {while (Serial3.available ()) {// verifique os dados do gps if (gps.encode (Serial3.read ())) // codifique os dados do gps {gps.f_get_position (&lat , &lon); // obtém latitude e longitude Serial.print ("Posição:"); // Latitude Serial.print ("Latitude:"); Serial.print (lat, 6); Serial.print (","); // Longitude Serial.print ("Longitude:"); Serial.println (lon, 6); }}} * /
Esquemas
Processo de manufatura
- Capturando as gotas de água com Arduino
- Brincando com Nextion Display
- u-blox LEA-6H 02 Módulo GPS com Arduino e Python
- Como ler a temperatura e umidade em Blynk com DHT11
- Como fazer música com um Arduino
- Como usar NMEA-0183 com Arduino
- Tela de localização GPS com GPS e telas TFT
- Como usar o Modbus com Arduino
- Registrar informações de GPS no cartão MicorSD com Visuino
- Módulo Arduino + GPS - Notificador de Destino