4、AT指令集入门:AT指令格式、基础AT指令、通信状态检测、信号质量查询

好,咱们进入第四讲。前面三讲我们把蜂窝模组的硬件、上电时序、物理层这些东西捋了一遍。从这章开始,终于要跟模组“对话”了。

怎么对话?就是通过AT指令。说白了,AT指令就是人类和模组之间的“翻译官”。你发一条文本过去,模组理解后执行,再给你回个结果。就这么简单。

我刚开始做物联网项目时,总觉得AT指令很神秘。后来发现,它其实就是一套约定好的字符串协议。你掌握了它的格式和常用命令,模组在你面前就没有秘密了。

4.1 AT指令的基本格式

先看最核心的东西——AT指令长什么样。

每条AT指令都以“AT”开头,以回车换行(\r\n)结束。模组收到后,会回复结果码。

基本格式分两种:

  • 测试指令:AT+<cmd>=? —— 查询该指令支持的参数范围
  • 查询指令:AT+<cmd>? —— 查询当前参数值
  • 设置指令:AT+<cmd>=<param> —— 设置参数
  • 执行指令:AT+<cmd> —— 执行某个操作

举个例子,查询模组厂商信息:

AT+CGMI\r\n

模组回复:

+CGMI: "Quectel"
OK

看到了吗?回复分两部分:一是具体数据(+CGMI: "Quectel"),二是结果码(OK)。

结果码只有三种:

  • OK —— 指令执行成功
  • ERROR —— 指令执行失败
  • +CME ERROR: <err> —— 带错误码的失败信息

我个人习惯,调试时一定开+CME ERROR模式。默认很多模组只回ERROR,你根本不知道哪里错了。用AT+CMEE=1打开详细错误码,能省一半排查时间。

4.2 基础AT指令速查

下面这张表,是我项目中几乎每天都要用到的指令。建议你收藏,或者直接打印出来贴工位上。

指令 功能 典型回复
AT 测试通信是否正常 OK
AT+CGMI 查询模组厂商 +CGMI: "Quectel"
AT+CGMM 查询模组型号 +CGMM: "EC200U"
AT+CGMR 查询固件版本 +CGMR: "EC200UCNAAR01A01M08"
AT+CGSN 查询IMEI号 +CGSN: 861234567890123
AT+CCID 查询SIM卡ICCID +CCID: 89860117841012345678
AT+CSQ 查询信号质量 +CSQ: 20,99
AT+CREG? 查询网络注册状态 +CREG: 0,1
AT+COPS? 查询当前运营商 +COPS: 0,0,"CHINA MOBILE",7

你想想看,拿到一个新模组,第一件事是什么?我建议按这个顺序来:

  1. 发AT,确认串口通不通
  2. 发AT+CGMI、AT+CGMM,确认模组身份
  3. 发AT+CGSN,记下IMEI(设备唯一标识)
  4. 发AT+CCID,确认SIM卡是否识别
  5. 发AT+CSQ,看信号强度
  6. 发AT+CREG?,看是否注册上网络

这套流程走下来,模组的基本健康状况你就心里有数了。

小技巧: 我习惯把上面这些指令写成一个脚本,每次新模组到手,一键跑完。省得一条条敲,还容易漏。

4.3 通信状态检测

模组连上网络了吗?这个问题,靠AT+CREG?来回答。

它的回复格式是:

+CREG: <n>,<stat>

<n>一般不管,关键是<stat>:

stat值 含义
0 未注册,且未搜索
1 已注册,本地网 ✅
2 未注册,正在搜索
3 注册被拒绝
4 未知
5 已注册,漫游 ✅

只有stat为1或5时,模组才算真正连上了网络。其他值,都得排查问题。

我曾经遇到一个坑:模组一直返回stat=2,就是搜不到网。查了半天,发现是天线没拧紧。嗯,这种低级错误,谁还没犯过呢?

还有一个指令AT+CGREG?,查的是GPRS数据业务注册状态。如果你要用TCP/UDP通信,这个也得确认是1或5。

AT+CGREG?
+CGREG: 0,1
OK

注意: CREG查的是语音/短信网络注册,CGREG查的是数据业务注册。两个都得通,才能正常上网。我见过有人只查了CREG就以为万事大吉,结果数据死活发不出去。

4.4 信号质量查询

信号好不好,用AT+CSQ看。

回复格式:

+CSQ: <rssi>,<ber>
  • rssi:接收信号强度指示,范围0-31,值越大信号越强
  • ber:误码率,范围0-7,99表示未知或不可用

rssi值对应的实际信号强度:

rssi值 信号强度(dBm) 评价
0 ≤ -113 极差,基本不可用
1-9 -111 ~ -95 差,容易掉线
10-14 -93 ~ -85 一般,勉强可用
15-19 -83 ~ -75 良好,稳定通信
20-30 -73 ~ -53 优秀,信号满格
31 ≥ -51 极强,少见
99 未知 无法测量

我个人经验,rssi低于10的项目,后期大概率会出问题。信号差会导致重传多、功耗高、掉线频繁。如果现场环境无法改善,至少要在代码里做信号监测和重连机制。

ber值一般不用太关注,99是常态。但如果ber是0-2且rssi也很低,说明干扰严重,得考虑换天线位置或加滤波器。

实战建议: 在产品代码里,我通常会每隔30秒查一次CSQ,连续3次低于阈值就触发告警或自动重启。别等到用户投诉了才发现信号不行。

4.5 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你可以把它当作AT指令入门的“地图”。

AT指令集入门知识体系 AT指令集 指令格式 基础AT指令 通信状态检测 信号质量查询 测试指令 查询指令 设置指令 执行指令 AT+CGMI AT+CGSN AT+CCID AT+COPS? AT+CREG? AT+CGREG? rssi值 ber值 💡 核心原则 先通AT → 再查身份 → 后看网络

这张图把本章内容分成了四个模块:指令格式、基础指令、通信状态、信号质量。你顺着箭头走,先掌握格式,再熟悉常用指令,最后学会查网络和信号。这就是AT指令入门的完整路径。