4. 串口助手与模块通信:让模块开口说话

模块焊好了,线也接上了。接下来要做什么?

你得让它开口说话。说白了,就是通过串口调试助手,跟模块建立最基本的通信链路。这一步要是走不通,后面所有配置都白搭。我见过太多新手卡在这一关,折腾半天发现是波特率设错了,或者串口号选成了蓝牙虚拟端口。

4.1 选对工具:SSCOM vs Putty

市面上的串口工具很多,我个人最常用的是 SSCOM 和 Putty。它们各有侧重,我列个表给你看:

特性 SSCOM Putty
主要用途 纯串口调试,AT指令交互 SSH/Telnet/串口通用终端
AT指令发送 支持手动发送 + 自动换行 需手动按回车,无自动换行
NMEA数据查看 支持ASCII/HEX双模式 仅ASCII,长行会折行
日志保存 支持实时保存到文件 需开启日志功能
多实例 可开多个窗口 每个会话独立
我的建议:调试定位模块,优先用 SSCOM。它专门为串口调试设计,发送AT指令时自动追加回车换行,省得你每次手动敲 \r\n。Putty 更适合做 SSH 或 Telnet 连接,串口功能只是附带。

4.2 连接前的最后检查

别急着点「打开串口」。先花30秒确认三件事:

  1. 串口号对不对——去设备管理器里看,别凭记忆选COM3结果插的是COM5。
  2. 波特率匹配——模块默认波特率通常是9600或115200。我遇到过一块模块默认是38400,查了半天手册才发现。
  3. 供电是否稳定——USB转串口模块的3.3V输出电流有限,如果模块功耗大,建议外接稳压电源。
注意:千万不要在模块上电状态下插拔串口线。我曾经手贱,热插拔时把模块的TX引脚烧了,换了一片才恢复。先断电,再接线,这是铁律。

4.3 发送第一条AT指令

打开SSCOM,选对串口和波特率,点击「打开串口」。然后输入:

AT

点击发送。如果模块正常,你应该看到:

OK

就两个字符。但就是这两个字符,能说明很多问题:

  • 串口通信物理层正常
  • 模块主控芯片在运行
  • 波特率匹配无误

如果没反应?别慌。先检查接线——TX接RX,RX接TX,这个交叉连接很多人会搞反。我刚开始做项目时就犯过这个错,对着屏幕看了十分钟,心想模块怎么没动静,结果发现线接成了直连。

4.4 读取NMEA原始数据

AT指令测试通过后,下一步就是看定位数据。大部分定位模块上电后会自动输出NMEA语句。你只需要打开串口,就能看到类似这样的数据流:

$GPGGA,092750.000,5321.6802,N,00630.3372,W,1,08,1.0,9.8,M,55.2,M,,*47
$GPGSA,A,3,10,07,05,02,29,04,24,13,01,17,19,15,1.0,0.8,0.6*0A
$GPGSV,3,1,12,10,63,137,17,07,61,098,15,05,59,290,20,08,54,157,30*70
$GPRMC,092750.000,A,5321.6802,N,00630.3372,W,0.02,31.66,280807,,,A*43

这些就是NMEA 0183协议的标准语句。每行以 $ 开头,以 * 加两位校验和结尾。我挑几个最常用的说说:

语句 含义 关键字段
$GPGGA 全球定位系统固定数据 时间、纬度、经度、定位质量、卫星数、海拔
$GPRMC 推荐最小定位信息 时间、状态、纬度、经度、速度、航向、日期
$GPGSV 可见卫星信息 卫星编号、仰角、方位角、信噪比
$GPGSA 精度因子与活跃卫星 定位模式、卫星编号、PDOP/HDOP/VDOP

怎么看懂GGA语句? 举个例子:

$GPGGA,092750.000,5321.6802,N,00630.3372,W,1,08,1.0,9.8,M,55.2,M,,*47

  • 092750.000 — UTC时间 09:27:50.000
  • 5321.6802,N — 北纬53度21.6802分
  • 00630.3372,W — 西经6度30.3372分
  • 1 — 定位质量,1表示GPS定位,2表示差分定位
  • 08 — 使用中的卫星数量
  • 1.0 — 水平精度因子HDOP
  • 9.8,M — 海拔高度9.8米

4.5 原始数据能告诉我们什么?

你盯着这些不断滚动的数据,可能会觉得眼花。但这里面藏着很多信息:

  • 定位状态——看GGA语句第6个字段,0表示未定位,1表示单点定位,2表示差分定位。如果一直是0,说明模块没收到足够卫星信号。
  • 信号质量——GSV语句里每个卫星的信噪比(SNR),数值越高信号越好。低于30的卫星基本是凑数的。
  • 精度估计——GSA语句里的PDOP值,小于2表示精度很好,2-4算正常,大于6就别指望高精度了。

嗯,这里要注意:刚上电时模块需要一段时间搜星,数据里可能全是0。别急,拿到室外或者窗边等个一两分钟。我测试时经常把模块放在窗台上,天线朝南,信号会好很多。

4.6 常见问题与排查

我把这些年遇到过的串口通信问题整理了一下:

现象 可能原因 解决办法
发送AT无响应 波特率不匹配 / 接线错误 检查设备管理器确认串口,交换TX/RX
收到乱码 波特率不一致 / 数据位/停止位设置错误 统一设为 8数据位 1停止位 无校验
数据断断续续 供电不足 / USB转串口驱动问题 外接3.3V稳压电源,更新驱动
只有$GPGGA没有$GPRMC 模块配置问题 / 固件版本差异 发送AT指令查询当前输出语句配置
定位状态始终为0 天线未接 / 室内信号太弱 检查天线连接,移到室外测试
一个小技巧:如果模块没反应,试试用示波器看TX引脚的波形。有方波说明模块在发数据,问题在接收端;没波形说明模块没工作或者坏了。这招帮我快速定位过好几次硬件故障。

4.7 知识体系:串口通信与数据流

下面这张图梳理了从串口助手到模块数据解析的完整链路:

串口助手与模块通信流程 串口调试助手 SSCOM / Putty USB转串口 TX ↔ RX 交叉 定位模块 NMEA数据输出 AT指令 NMEA数据 原始数据查看 AT指令交互 参数配置 💡 核心要点 串口助手是PC与模块之间的桥梁。AT指令用于配置模块参数,NMEA数据用于获取定位结果。 两者可以同时进行——一边看定位数据,一边发指令调整配置。

这张图把整个流程分成了三层:上层是PC端工具和模块之间的物理连接,中间是数据流向,下层是你能做的三件事——看原始数据、发AT指令、配置参数。三者互不冲突,你可以一边观察NMEA数据的变化,一边调整模块的配置参数。

4.8 实操建议

最后给你几个实操建议:

  • 先通AT,再看NMEA——AT指令响应快,能快速确认通信链路正常。链路通了再关注定位数据。
  • 学会看校验和——NMEA语句末尾的 *47 就是校验和。如果数据在传输中出错,校验和会不匹配,模块会丢弃这条语句。SSCOM可以开启校验和显示,方便排查。
  • 保存原始日志——调试时把串口数据保存到文件,方便后续分析。我习惯把每次测试的原始数据都存档,出问题时回头翻翻,经常能找到线索。
  • 别怕乱码——偶尔出现乱码很正常,可能是上电瞬间电平不稳。如果持续乱码,先检查波特率,再查接线。

串口通信是定位模块调试的基本功。这一步练扎实了,后面配置各种参数、解析定位数据都会顺手很多。拿起你的模块,接上线,打开SSCOM,试试看能不能收到第一条 OK 吧。