上位机知识篇---蜂窝通信
蜂窝通信模块(比如我们常说的 2G/3G/4G/5G 模块)是能让设备接入蜂窝网络(比如手机信号网络)的硬件,相当于设备的 “无线网卡 + 手机卡”,可以实现打电话、发短信、上网(联网传输数据)等功能。而AT 指令是控制这些模块的 “语言”—— 通过发送简单的文本指令,就能让模块执行具体操作(比如 “发一条短信”“连接 4G 网络”)。
一、先搞懂:蜂窝通信模块是什么?
简单说,蜂窝通信模块是一个集成了射频芯片、基带芯片、SIM 卡接口的小型电路板,比如常见的 SIM800(2G)、EC20(4G)、SIM8200(5G)等。它的核心作用是:让没有 “联网能力” 的设备(比如单片机、传感器、智能设备)通过手机卡(SIM 卡)接入移动、联通、电信的蜂窝网络,实现远程通信。
比如:
- 共享单车的定位器,通过 4G 模块把位置信息发到后台;
- 智能电表通过 2G 模块把用电量数据上报给电力公司;
- 车载导航通过 5G 模块实时更新地图数据。
二、AT 指令:控制模块的 “简单语言”
AT 指令的全称是 “Attention Command”(注意指令),起源于早期的调制解调器(Modem),现在被蜂窝通信模块沿用,成为行业通用的控制方式。
它的特点是:简单直观,用文本命令控制硬件,不需要复杂的编程,通过串口(比如 USB 转串口)发送指令,模块就会返回结果。
1. AT 指令的基本格式
- 指令开头:必须以 “AT” 或 “at”(不区分大小写)开头,比如
AT
、AT+CMGS
。 - 指令主体:基础指令是单字母(如
ATD
拨号),扩展指令用 “+ 指令名”(如AT+CSQ
查询信号强度)。 - 结尾:必须以 “回车”(\r)结束,模块才会识别(比如在串口工具里输入指令后按回车发送)。
- 响应格式:
- 成功:返回
OK
; - 失败:返回
ERROR
或具体错误码(如+CME ERROR: 10
表示 SIM 卡未插入); - 执行结果:比如查询信号强度会返回
+CSQ: 25,0
(25 是信号值,越大越好)。
- 成功:返回
2. 常用 AT 指令分类与示例
不同模块的指令略有差异(厂商会在标准指令基础上扩展),但核心指令通用。下面按功能分类举例:
(1)基础测试指令:检查模块是否正常工作
AT
:最基础的 “心跳指令”,发送后模块返回OK
,说明模块和串口连接正常(就像 “喂,你在吗?”)。AT+GMI
:查询模块厂商(比如返回SIMCOM_Ltd
,说明是 SIMCom 品牌的模块)。AT+GMM
:查询模块型号(比如返回SIM800L
,确认模块型号)。AT+GSN
:查询模块的 IMEI 号(相当于模块的 “身份证号”,唯一标识)。
(2)SIM 卡相关:检查 SIM 卡状态
AT+CPIN?
:查询 SIM 卡是否需要 PIN 码(返回+CPIN: READY
表示不需要,直接可用;返回+CPIN: SIM PIN
表示需要输入 PIN 码)。AT+CPIN="1234"
:输入 SIM 卡 PIN 码(比如默认 PIN 是 1234,输对后返回OK
,SIM 卡激活)。AT+COPS?
:查询当前注册的运营商(比如返回+COPS: 0,0,"China Mobile"
,表示注册到中国移动)。
(3)信号与网络相关:检查网络连接
AT+CSQ
:查询信号强度,返回+CSQ: <rssi>,<ber>
。rssi
是信号值(0-31,31 最强,<10 表示信号差,可能断连;99 表示无信号);- 比如
+CSQ: 28,0
表示信号很好。
AT+CGATT?
:查询是否附着到 GPRS/4G 网络(返回+CGATT: 1
表示已附着,0 表示未附着,无法上网)。AT+CGREG?
:查询是否注册到移动网络(返回+CGREG: 0,1
表示注册成功;0,0 表示正在注册;0,2 表示注册失败)。
(4)通话相关:打电话、挂电话
ATD10086;
:拨打 10086(注意结尾必须加;
,模块会返回OK
,然后开始拨号,接通后返回+CIEV: "CALL",1
)。ATH
:挂断当前通话(返回OK
)。AT+VTS="123"
:通话中发送 DTMF 信号(比如按 123 键,相当于手机拨号键盘输入)。
(5)短信相关:发送、读取短信
短信有两种模式:“文本模式”(直接发文字,简单)和 “PDU 模式”(二进制编码,支持长短信,复杂)。新手常用文本模式:
- 第一步:
AT+CMGF=1
:设置为文本模式(返回OK
)。 - 第二步:
AT+CMGS="13800138000"
:指定接收手机号(返回>
,表示可以输入短信内容)。 - 第三步:输入短信内容(比如 “测试短信”),然后按
Ctrl+Z
(ASCII 码为 26)发送(模块会返回+CMGS: <消息序号>
和OK
,表示发送成功)。 - 读取短信:
AT+CMGR=1
:读取第 1 条短信(返回短信内容、发送者、时间等)。
(6)数据传输相关:连接网络(TCP/UDP)
这是物联网设备最常用的功能(比如模块通过 4G 连接服务器,发送传感器数据):
以 4G 模块连接 TCP 服务器为例:
AT+CGDCONT=1,"IP","CMNET"
:设置 APN(移动的 APN 是 CMNET,联通是 UNINET,相当于 “网络接入点”)。AT+NETOPEN
:打开网络(返回+NETOPEN: 0
表示成功)。AT+IPSTART="TCP","123.45.67.89",8080
:连接服务器(IP 是 123.45.67.89,端口 8080)。AT+IPSEND=5
:发送 5 字节数据(返回>
后,输入数据,比如 “12345”,按回车发送)。AT+IPSHUT
:关闭连接。
三、AT 指令的交互流程(举例:用模块发送一条短信)
实际操作时,需要按步骤发送指令,比如用 SIM800 模块给 13800138000 发 “你好”
- 用 USB 转串口线连接模块和电脑,打开串口助手(如 SecureCRT、Xshell),设置波特率(模块默认波特率通常是 9600,需和串口助手一致)。
- 发送
AT
→ 模块返回OK
(确认连接正常)。 - 发送
AT+CPIN?
→ 返回+CPIN: READY
(SIM 卡正常)。 - 发送
AT+CSQ
→ 返回+CSQ: 25,0
(信号良好)。 - 发送
AT+CMGF=1
→ 返回OK
(切换到文本模式)。 - 发送
AT+CMGS="13800138000"
→ 返回>
(等待输入内容)。 - 输入 “你好”,按
Ctrl+Z
→ 模块返回+CMGS: 123
和OK
(发送成功,123 是消息序号)。
四、实用拓展知识
1. 不同模块的指令差异
- 基础指令(如
AT
、AT+CSQ
)几乎所有模块通用,但厂商会扩展指令(比如华为模块有AT^SYSCFG
设置网络模式,SIMCom 模块用AT+CNMP
)。 - 5G 模块会多一些 NR(新空口)相关指令(如
AT+CNRV
查询 5G 信号),但向下兼容 4G/2G 的核心指令。
2. 调试工具
- 电脑端:用串口助手(SecureCRT、Putty、XCOM)手动发送指令,适合调试。
- 嵌入式端:单片机(如 STM32、Arduino)通过 UART 串口发送 AT 指令(比如 Arduino 用
Serial.println("AT+CSQ\r")
发送查询信号指令)。
3. 常见问题与解决
- 指令发送后无响应?
可能是波特率不匹配(模块默认 9600,串口助手也设 9600)、接线错误(TX 接 RX,RX 接 TX)、模块没上电(需要给模块单独供电,很多模块耗电高,USB 供电不足)。 - 发送短信失败?
检查 SIM 卡是否有话费、是否开通短信功能、信号是否太差(AT+CSQ
返回值 < 10)。 - 无法联网?
检查 APN 是否正确(比如电信 4G 的 APN 是 CTNET)、是否附着网络(AT+CGATT?
返回 1)。
4. 安全注意
- 模块需要 SIM 卡(物联网卡或手机卡),注意流量和话费套餐,避免超支。
- 敏感操作(如修改 PIN 码)需谨慎,连续输错 PIN 码会导致 SIM 卡锁定(需 PUK 码解锁,PUK 码在 SIM 卡大卡上)。
五、应用场景
掌握 AT 指令后,就能用蜂窝模块实现各种功能:
- 智能家居:通过 4G 模块远程控制家电(发送指令让空调开机);
- 工业监控:传感器数据(温度、压力)通过 5G 模块实时上传到云端;
- 车载系统:GPS 定位信息通过 4G 模块发送到后台,实现车辆追踪;
- 远程报警:设备故障时,通过模块发送短信或电话给管理员。
总结
蜂窝通信模块是设备的 “无线通信桥梁”,而 AT 指令是控制这座桥梁的 “简单语言”。它不需要复杂的底层开发,通过串口发送文本指令就能实现打电话、发短信、联网等功能,是物联网、嵌入式开发中不可或缺的技能。只要记住核心指令的格式和流程,多动手调试(比如用串口助手测试),很快就能掌握。