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 |
你想想看,拿到一个新模组,第一件事是什么?我建议按这个顺序来:
- 发
AT,确认串口通不通 - 发
AT+CGMI、AT+CGMM,确认模组身份 - 发
AT+CGSN,记下IMEI(设备唯一标识) - 发
AT+CCID,确认SIM卡是否识别 - 发
AT+CSQ,看信号强度 - 发
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指令入门的完整路径。