Arduino Mega 2560 接 NEO-6M GPS 模块完整教程
所需元件
| 元件 | 单价(约) | 数量 |
|---|---|---|
| Arduino Mega 2560 | $30 | 1 |
| u-blox NEO-6M GPS 模块(含有源天线) | $30 | 1 |
总成本约 $60。另需 Arduino IDE。
GPS 基础知识
什么是 GPS?
全球定位系统由至少 24 颗卫星组成,全天候、全球覆盖、免费使用。卫星每天绕地球两周,广播唯一信号与星历参数。接收机通过测量信号传播时间计算到各卫星距离,三角定位得出经纬度;4 颗以上卫星可解算海拔。典型追踪 8+ 颗卫星。
信号构成
- 伪随机码:卫星 ID
- 星历数据:卫星精确轨道、健康状态、日期时间
- 星历表数据:全星座轨道概要,辅助快速捕获
NEO-6M 模块详解
核心特性
- u-blox NEO-6M 芯片,50 通道,同时追踪 22 颗卫星
- 跟踪灵敏度 -161 dBm,冷启动 TTFF < 1 s(热启动)
- 功耗 45 mA(连续),Power Save Mode 仅 11 mA
- 板载 MIC5205 3.3V LDO,逻辑 5V 兼容,可直连 Arduino
- 默认波特率 9600 bps(可配 4800–230400)
- 板载 HK24C32 4KB EEPROM + 充电纽扣电池,掉电保持 BBR(钟摆时钟、最后位置、配置),加速后续定位
- 位置指示 LED:不闪=搜星中,1 Hz 闪烁=已定位
引脚定义
| 引脚 | 功能 |
|---|---|
| VCC | 供电 3.3–5V(建议接 Mega 3.3V 或 5V) |
| GND | 地 |
| TxD | 模块发送 → Arduino RX |
| RxD | 模块接收 ← Arduino TX |
Arduino Mega 2560 简介
- ATmega2560,54 路数字 I/O(15 PWM)、16 路模拟输入
- 4 组硬件串口:Serial0 (0/1)、Serial1 (19/18)、Serial2 (17/16)、Serial3 (15/14)
- 16 MHz 晶振、USB、DC 接口、双稳压器(5V/3.3V)
- I²C (20/21)、SPI (50–53)、6 路外部中断
接线方式
推荐使用硬件串口 Serial1(引脚 18/19),避免软串口不稳定:
| Mega 引脚 | NEO-6M 引脚 |
|---|---|
| 3.3V | VCC |
| GND | GND |
| TX1 (18) | RxD |
| RX1 (19) | TxD |
也可用 Serial2 (16/17) 或 Serial3 (14/15)。
软件配置
- 安装 TinyGPS 库:解压至
Documents/Arduino/libraries(文件夹名无连字符) - IDE 中选择 Tools → Board → Arduino Mega 2560
- 选择正确 COM 口
- 上传示例代码
示例代码
#include <TinyGPS.h>
float lat, lon;
TinyGPS gps;
void setup() {
Serial.begin(57600);
Serial.println("GPS Received Signal:");
Serial1.begin(9600); // 连接 NEO-6M
}
void loop() {
while (Serial1.available()) {
if (gps.encode(Serial1.read())) {
gps.f_get_position(&lat, &lon);
Serial.print("Position: Latitude: ");
Serial.print(lat, 6);
Serial.print(", Longitude: ");
Serial.println(lon, 6);
}
}
}
代码中已注释出 Serial2/Serial3 版本,只需取消注释对应段即可切换串口。
运行结果
串口监视器每秒输出经纬度(小数点后 6 位),如:
Position: Latitude: 22.123456, Longitude: 113.987654
首次冷启动可能需 30–60 秒搜星,随后 1 s 内更新。
常见问题
- 模块需焊接排针,天线朝天、远离金属
- 室内可能无法定位,需靠窗或户外
- 波特率务必与模块一致(出厂 9600)
- 若串口乱码,检查 TX/RX 是否接反
制造工艺
- Arduino Nano高速摄影控制器 – 定格水滴碰撞瞬间
- 基于 Arduino Mega 与 Nextion 显示屏的交互式气象站
- u-blox LEA-6H GPS 模块:Arduino 与 Python 集成指南
- Blynk + Arduino 读取 DHT11 温湿度数据教程
- Arduino 合成乐音:从零实现 88 键钢琴全音域
- Arduino 连接 NMEA-0183 设备全攻略:从硬件接线到协议解析
- Arduino GPS与TFT触摸屏扩展板:实时定位显示项目
- Arduino Modbus 从机开发全攻略:基于 RS485 扩展板的分步实现指南
- Visuino 可视化编程实战:Arduino Nano 记录 GPS 数据到 MicroSD 卡
- 使用 Arduino UNO 和 NEO-6M GPS 模块构建目的地到达提醒器
- SIM800L GPRS 模块与 Arduino 对接 AT 指令教程
- Arduino Due 望远镜自动导星系统 rDUINOScope:GPS、RTC、蓝牙、触控屏全集成