Conectando Arduino Mega ao Módulo GPS NEO‑6M: Guia Passo a Passo
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino Mega 2560 | 1 |
| Módulo GPS u-blox NEO-6M | 1 |
Aplicativos e Serviços Online
- Arduino IDE
Sobre o Projeto
Não encontrei nenhum tutorial para interfacear Arduino Mega com módulo GPS NEO-6M, então decidi criar um. Espero que gostem!
Componentes Necessários
Hardware
- Arduino Mega → ~$30
- Módulo GPS NEO-6M → ~$30
Software
- Arduino IDE
Custo total do projeto: ~$60.
Informações sobre GPS
O que é GPS?
O Sistema de Posicionamento Global (GPS) é um sistema de navegação baseado em satélites composto por pelo menos 24 satélites. Funciona em quaisquer condições climáticas, em qualquer lugar do mundo, 24 horas por dia, sem taxas de assinatura ou configuração.
Como o GPS Funciona
Os satélites GPS orbitam a Terra duas vezes por dia em órbita precisa. Cada satélite transmite um sinal único e parâmetros orbitais que permitem aos receptores GPS decodificar e calcular a posição precisa do satélite. Receptores GPS usam essa informação e trilateração para calcular a localização exata do usuário. Essencialmente, o receptor mede a distância a cada satélite pelo tempo que leva para receber o sinal transmitido. Com medições de distância de alguns satélites a mais, o receptor determina a posição do usuário e a exibe.
Para calcular posição 2D (latitude e longitude) e rastrear movimento, o receptor GPS deve estar travado no sinal de pelo menos 3 satélites. Com 4 ou mais, determina posição 3D (latitude, longitude e altitude). Geralmente, um receptor rastreia 8 ou mais satélites, dependendo da hora e localização. Uma vez determinada a posição, a unidade GPS calcula outras informações:
- Velocidade
- Rumo (Bearing)
- Trajeto (Track)
- Distância da viagem (Trip dist)
- Distância ao destino
O que é o Sinal
Satélites GPS transmitem pelo menos 2 sinais de rádio de baixa potência. Os sinais viajam por linha de visão, passando por nuvens, vidro e plástico, mas não através da maioria dos objetos sólidos como prédios e montanhas. Receptores modernos são mais sensíveis e costumam rastrear através de casas. Um sinal GPS contém 3 tipos de informação:
- Código pseudoaleatório - ID que identifica qual satélite está transmitindo.
- Dados de efemérides - necessários para determinar a posição do satélite e dão informações sobre saúde do satélite, data e hora atuais.
- Dados de almanaque - dizem ao receptor onde cada satélite GPS deve estar a qualquer momento e mostram informações orbitais de todos os satélites do sistema.
Módulo GPS NEO-6M
O módulo NEO-6M vem com antena externa e não vem com pinos header. Você precisará soldá-los.
Visão Geral do Módulo NEO-6M
- Chip GPS NEO-6M - O coração do módulo é o chip NEO-6M da u-blox. Rastreia até 22 satélites em 50 canais e atinge sensibilidade líder da indústria (-161 dB tracking) consumindo apenas 45mA. O motor de posicionamento u-blox 6 tem Time-To-First-Fix (TTFF) inferior a 1 segundo. Um dos melhores recursos é o Power Save Mode (PSM), que reduz consumo do sistema ligando/desligando partes do receptor seletivamente, baixando consumo para apenas 11mA, adequado para aplicações sensíveis a energia como relógios GPS. Os pinos de dados necessários são levados a headers de "0.1″ pitch, incluindo pinos para comunicação UART com microcontrolador.
Nota: O módulo suporta taxa de baud de 4800bps a 230400bps com padrão de 9600.
- LED Indicador de Fixação de Posição - Indica status da fixação:
- Sem piscar → Procurando satélites
- Pisca a cada 1s → Fixação de posição encontrada
- Regulador LDO 3,3V - O chip NEO-6M opera de 2,7 a 3,6V. O módulo vem com regulador MIC5205 ultra-low dropout 3V3 da MICREL. Pinos lógicos são tolerantes a 5V, permitindo conexão direta ao Arduino ou qualquer microcontrolador 5V sem conversor de nível lógico.
- Bateria e EEPROM - O módulo possui EEPROM HK24C32 de 4KB (I2C) e bateria recarregável de botão que atua como supercapacitor. Juntas, retêm a RAM com backup de bateria (BBR) contendo dados de relógio, última posição (GNSS) e configuração do módulo. Não é para armazenamento permanente. A bateria reduz significativamente o TTFF para 1s, permitindo fixações mais rápidas. Sem bateria, o GPS sempre faz cold-start, demorando mais para travar inicial. A bateria carrega automaticamente quando há energia e mantém dados por até duas semanas sem energia.
- Pinout
- GND → Pino terra, conectar ao GND do Arduino
- TxD (Transmissor) → Comunicação serial
- RxD (Receptor) → Comunicação serial
- VCC → Alimentação do módulo, conectar diretamente ao 5V do Arduino
Arduino Mega
Arduino é uma plataforma eletrônica open-source baseada em hardware e software fáceis de usar. Placas Arduino leem entradas (luz em sensor, dedo em botão, mensagem no Twitter) e transformam em saídas (ativar motor, acender LED, publicar online). Você diz à placa o que fazer enviando instruções ao microcontrolador. Para isso, usa a linguagem Arduino (baseada em Wiring) e o Arduino Software (IDE), baseado em Processing.
Arduino Mega 2560 é baseado no ATmega2560.
- 54 pinos I/O digitais e 16 pinos analógicos. Dos 54 digitais, 15 para PWM.
- Oscilador de cristal de 16MHz.
- Porta USB para conectar e transferir código do computador.
- Jack DC para alimentação.
- Dois reguladores de tensão: 5V e 3,3V.
- Botão reset e 4 portas seriais de hardware (USART) para comunicação de alta velocidade.
- Três formas de alimentar: USB, Vin, jack DC ou bateria.
Descrição dos Pinos
- 5V e 3,3V → Saída de tensão regulada ~5V (máx 50mA no 3,3V).
- GND → 5 pinos terra disponíveis.
- Reset → Nível LOW reseta a placa.
- Vin → Tensão de entrada 7-20V (acessível via jack DC).
- Comunicação Serial → 4 portas: Serial0 (RX0/TX1), Serial1 (TX18/RX19), Serial2 (TX16/RX17), Serial3 (TX14/RX15).
- Interrupções Externas → 6 pinos: int0(0), int1(3), int2(21), int3(20), int4(19), int5(18).
- LED → LED embutido no pino digital 13.
- AREF → Tensão de referência analógica.
- Pinos Analógicos → 16 pinos (A0-A15), também usáveis como I/O digital, resolução 10-bit.
- I2C → Pinos 20 (SDA) e 21 (SCL).
- SPI → Pinos 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS).
Arduino IDE
Assumindo que já tenha o Arduino IDE instalado:
- Baixe a biblioteca necessária: TinyGPS
- Extraia e mova para C:\Users\...\Documents\Arduino\libraries (sem hífen no nome)
- Abra o Arduino IDE e copie o código da seção de programa
- Selecione a placa: Tools → Boards → Arduino Mega 2560
- Selecione a porta: Tools → Ports
- Clique em Upload
Conexões
Arduino MEGA → NEO-6M GPS
- 3.3V → VCC
- GND → GND
- Tx1 (pino 18) → Rx
- Rx1 (pino 19) → Tx
Também pode usar Serial2 ou Serial3:
- Serial2: Tx2 (16) → Rx, Rx2 (17) → Tx
- Serial3: Tx3 (14) → Rx, Rx3 (15) → Tx
Resultado
Código
Arduinomega_GPS
// Conectar com pinos 18 e 19
#include <TinyGPS.h>
float lat, lon;
TinyGPS gps;
void setup() {
Serial.begin(57600);
Serial.println("The GPS Received Signal:");
Serial1.begin(9600);
}
void loop() {
while (Serial1.available()) {
if (gps.encode(Serial1.read())) {
gps.f_get_position(&lat, &lon);
Serial.print("Position: ");
Serial.print("Latitude: ");
Serial.print(lat, 6);
Serial.print(",");
Serial.print("Longitude: ");
Serial.println(lon, 6);
}
}
}
/*
// Alternativa: Conectar com pinos 16 e 17 (Serial2)
#include <TinyGPS.h>
float lat, lon;
TinyGPS gps;
void setup() {
Serial.begin(57600);
Serial.println("The GPS Received Signal:");
Serial2.begin(9600);
}
void loop() {
while (Serial2.available()) {
if (gps.encode(Serial2.read())) {
gps.f_get_position(&lat, &lon);
Serial.print("Position: ");
Serial.print("Latitude: ");
Serial.print(lat, 6);
Serial.print(",");
Serial.print("Longitude: ");
Serial.println(lon, 6);
}
}
}
*/
/*
// Alternativa: Conectar com pinos 14 e 15 (Serial3)
#include <TinyGPS.h>
float lat, lon;
TinyGPS gps;
void setup() {
Serial.begin(57600);
Serial.println("The GPS Received Signal:");
Serial3.begin(9600);
}
void loop() {
while (Serial3.available()) {
if (gps.encode(Serial3.read())) {
gps.f_get_position(&lat, &lon);
Serial.print("Position: ");
Serial.print("Latitude: ");
Serial.print(lat, 6);
Serial.print(",");
Serial.print("Longitude: ");
Serial.println(lon, 6);
}
}
}
*/
Esquemáticos
Diagrama de conexões disponível na seção de esquemáticos do projeto original.
Processo de manufatura
- Capture Gotas d'Água em Ação com Arduino Nano – Fotografia de Alta Velocidade DIY
- Projeto HMI Interativo com Nextion, Arduino Mega e Sensores
- Módulo GPS u-blox LEA‑6H 02: Guia de Integração com Arduino e Python
- Leitura de Temperatura e Umidade com DHT11 no Blynk – Tutorial Arduino Passo a Passo
- Criar Tons Musicais com Arduino: Um Guia Passo a Passo
- Conectando Arduino ao NMEA‑0183: Guia Passo a Passo
- Projeto Arduino GPS e Shield TFT Touchscreen: Exibição de Localização em Tempo Real
- Dominando Modbus no Arduino: Guia Passo a Passo
- Como Registrar Dados GPS em Cartão MicroSD Usando Visuino no Arduino Nano
- Construa um Notificador de Destino GPS com Arduino UNO e Módulo NEO‑6M