GPS 模块入门完全手册:从原理到实战
GPS 模块
项目需要精准定位数据却不知从何下手?你需要 GPS 模块。基础 GPS 模块即可提供所需全部位置信息。虽处理 GPS 稍显棘手,但得益于各方努力,实际应用比想象简单。您可能对选型或采购感到困惑,本文将解决 GPS 相关难题,传授 GPS 电路核心知识。
什么是 GPS 模块?
GPS
提到定位首先想到 GPS。全球定位系统 (GPS) 是无线电导航系统,不受天气影响,陆海空均可精准确定位置、速度与时间。GPS 模块让设备/电路接收 GPS 数据。无模块时,单片机配合简单代码也可替代。现今手机、电脑、智能设备普遍内置 GPS,支持实时地图导航与位置共享。
GPS 工作原理
GPS 卫星
GPS 卫星与接收机是核心部件。接收机始终能连接至少 4 颗卫星。每颗卫星发送当前时间与位置数据,经无线电波(光速传播)传至接收机。通过发射与接收时间差计算卫星距离。接收机收到 3 颗以上卫星信号后,通过三边测量法确定自身位置。至少需 3 颗卫星提供定位数据。
GPS 接收机
大多数 GPS 模块工作原理一致:标准串口通信,支持 SPI/I2C。数据输出遵循 NMEA-0183 标准。也可用微控制器代码(如 Adafruit GPS、minima、NeoGPS)模拟 GPS 模块,通过串行数据流提供定位数据。
GPS 模块配合 Arduino 与树莓派
本项目采用 NEO-6M GPS 模块,自带外置天线,无排针,需自行焊接。兼容 Arduino 与树莓派。所需元件:
- Arduino 套件
- 杜邦线
- NEO-6M GPS 模块
Arduino 接线
NEO-6M 四引脚:RX、GND、VCC、TX。主串口通信,TX/RX 为串口引脚。接线:
- GPS GND → Arduino GND
- GPS RX → Arduino D3
- GPS TX → Arduino D4
- GPS VCC → Arduino 5V
代码
上传以下代码至 Arduino UNO:
Arduino 代码
请根据模块特性修改代码参数。
树莓派接 GPS 模块
使用 U-Blox NEO-M8N GPS 模块,需 Python 基础与 Raspbian 系统。所需:
- 树莓派主板
- 树莓派电源
- 面包板
- ≥8GB MicroSD 卡
- 杜邦线
- U-Blox NEO-M8N GPS 模块
构建步骤
先启用树莓派 UART:
- 文件末尾添加:
- Ctrl+X 退出,Y 保存回车。
注:UART 为 Raspbian 串口控制台,可禁用。修改 /boot/cmdline.txt 前请先备份:
- 重写 cmdline.txt:
- Ctrl+X 退出,Y 保存回车。
- 重启树莓派生效:
观察 GPS 模块 LED,黄灯闪烁表示工作正常。运行命令:
禁用树莓派 Serial Getty 服务
若 ttyAMA0 映射 Serial0,执行:
若 Serial0 映射 ttyS0,执行:
重启系统。
启用 ttyS0
禁用 ttyAMA0 后启用 ttyS0:
安装 "Pynmea2" 与 "Minicom"
安装 minicom 连接 GPS 模块:
安装 pynmea2 解析 NMEA 数据:
测试电路输出
运行命令测试 GPS 输出:
结果示例:
GPS 原始输出
记录 Python 代码对接树莓派与 GPS:
最终解析结果:
GPS 解析结果
如何为项目选择合适的 GPS 模块
多数 GPS 模块原理相同,选型取决于应用:
- 高速移动平台(如自动驾驶)需高更新率模块。
- 低更新率、米级精度场景基础模块即可。
- 需持续信号选外置天线模块。
- 追求极致精度选用 RTK (Real-Time Kinematics) 技术模块。
结语
GPS 卫星与接收机
GPS 模块提供高速精准定位。卫星环绕地球持续服务,数据光速传输,快速可靠。有疑问欢迎联系。
工业技术