LTE Cat 1 无线通信模块 AT 指令使用
LTE Cat 1 无线通信模块 AT 指令使用
嵌入式工程狮
已于 2024-03-25 15:16:19 修改
阅读量3.8k
收藏 42
点赞数 18
文章标签: 网络 服务器 iot mcu 经验分享
版权
开放原子开发者工作坊 文章已被社区收录
加入社区
文章转载自 Alson
文章目录
- 应用场景
-
- 初始化
- TCP 通信
- 发送短信(文本模式)
- 读取短信(文本模式)
- 发送短信(PDU 模式)
- HTTP 通信
以 移远 EC800M-CN LTE Cat 1 模块 为例。
应用场景
初始化
默认波特率为 9600,1 位起始位,8 位数据位,1 位停止位,无校验。
-
AT:测试模块是否收发正常。
[10:24:02.368]发→◇AT [10:24:02.370]收←◆AT OK
- 1
- 2
- 3
- 4
- 5
-
ATI:提供 MT 的 ID 信息。最大响应时间:300 ms。
[10:42:50.292]发→◇ATI [10:42:50.295]收←◆ATI Quectel EC800M Revision: EC800MCNGAR06A06M08 OK
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
-
AT+CIMI:查询 IMSI。最大响应时间:300 ms。
如果检测到卡,返回 460 开头 的国际移动用户识别码(IMSI)。
[10:29:42.722]发→◇AT+CIMI [10:29:42.725]收←◆AT+CIMI 460115122109796 OK
- 1
- 2
- 3
- 4
- 5
- 6
- 7
-
AT+CSQ:查询信号强度。最大响应时间:300 ms。
[10:34:05.919]发→◇AT+CSQ [10:34:05.921]收←◆AT+CSQ +CSQ: 29,99 OK
- 1
- 2
- 3
- 4
- 5
- 6
- 7
-
AT+CGATT?:查询注册网络情况。最大响应时间:140 s,取决于网络状态。
返回 1 代表注册成功。
[10:39:28.514]发→◇AT+CGATT? [10:39:28.518]收←◆AT+CGATT? +CGATT: 1 OK
- 1
- 2
- 3
- 4
- 5
- 6
- 7
TCP 通信
-
AT+QICSGP:配置 TCP/IP 场景参数
[10:51:53.940]发→◇AT+QICSGP=1,1,"CTNET","","",1 [10:51:53.943]收←◆AT+QICSGP=1,1,"CTNET","","",1 OK
- 1
- 2
- 3
- 4
- 5
APN:接入点名称(Access Point Name),字符串参数。
- 中国电信:CTNET
- 中国移动:CMNET
- 中国联通:UNINET
-
AT+QIACT: 激活场景。最大响应时间:150 s,受网络状态影响。
[10:57:47.880]发→◇AT+QIACT=1 [10:57:47.883]收←◆AT+QIACT=1 OK
- 1
- 2
- 3
- 4
- 5
-
AT+QIACT?:查询激活状态。最大响应时间:150 s,受网络状态影响。
[11:00:41.661]发→◇AT+QIACT? [11:00:41.664]收←◆AT+QIACT? +QIACT: 1,1,1,"10.238.250.166" OK
- 1
- 2
- 3
- 4
- 5
- 6
- 7
-
AT+QIOPEN:打开 Socket 服务。最大响应时间:150 s,受网络状态影响。
[12:40:17.144]发→◇AT+QIOPEN=1,0,"TCP","106.14.142.171",8001,0,1 [12:40:17.147]收←◆AT+QIOPEN=1,0,"TCP","106.14.142.171",8001,0,1 OK [12:40:17.272]收←◆ +QIOPEN: 0,0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
-
TCP 客户端连接成功,需等待
URC:+QIOPEN: <connectID>,<err>
响应, 建议等待 150 秒。若 150 秒内未收到 URC 响应,可以使用 AT+QICLOSE 断开 Socket。 -
最后一个参数为
<access_mode>
,代表 Socket 服务的数据访问模式。- 0:缓存模式
- 1:直吐模式
- 2:透传模式
-
AT+QISEND:发送数据
AT+QISEND=0,5 > [11:14:16.528]发→◇Hello [11:14:16.532]收←◆Hello SEND OK
- 1
- 2
- 3
- 4
- 5
- 6
注意这里的 connectID 参数需要和
URC:+QIOPEN: <connectID>,<err>
中的保持一致。
-
接收数据
+QIURC: "recv",0,6 Hello
- 1
- 2
- 3
在 直吐模式 下,模块接收到数据后会上报 URC 通知。
-
+QIURC: "recv",<connectID>,<currentrecvlength><CR><LF><data>
- connectID:整型。Socket 连接号。范围:0~11。
- currentrecvlength:整型。实际接收数据的长度。
- data:读取的数据。
-
AT+QICLOSE:关闭 Socket 服务。默认 10 秒,取决于
<timeout>
取值。[11:22:44.804]发→◇AT+QICLOSE=0 [11:22:44.809]收←◆AT+QICLOSE=0 OK
- 1
- 2
- 3
- 4
- 5
发送短信(文本模式)
文本模式下字符采用 ASCII 编码。
- AT+QICSGP:配置 TCP/IP 场景参数。
-
AT+CMGF:配置短消息模式。最大响应时间:300 ms。
[12:56:50.288]发→◇AT+CMGF=1 □ [12:56:50.290]收←◆AT+CMGF=1 OK
- 1
- 2
- 3
- 4
- 5
- 0:PDU 模式
- 1:文本模式
-
AT+CMGS:发送短消息。最大响应时间:120 s,取决于网络状态。
AT+CMGS="1825258xxxx" >
- 1
- 2
输入想发送的文本信息之后在输入 Ctrl + Z 触发发送(Ctrl + Z 也就是 0x1A)
[13:07:25.648]发→Hello [13:07:25.653]收←Hello [13:07:32.773]发→ [13:07:33.276]收← +CMGS: 84 OK
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
读取短信(文本模式)
接收到短消息时,会有 URC +CMTI: <mem>,<index>
提示。
-
<mem>
:短消息存储位置。- “SM”:(U)SIM 卡
- “ME”: 移动设备
-
<index>
:索引值
一般通过 AT+CNMI 设置短消息上报方式。
-
AT+CSCS:设置 TE 字符集。最大响应时间:300 ms。
[13:29:03.656]发→AT+CSCS="GSM" [13:29:03.660]收←AT+CSCS="GSM" OK
- 1
- 2
- 3
- 4
- 5
-
<chset>
:字符串类型- “GSM”: GSM 默认字符集
- “IRA”:国际参考字符集
- “UCS2”:UCS2 字符集
-
AT+CNMI:设置短消息上报方式。最大响应时间:300 ms。
[13:24:45.438]发→◇AT+CNMI=1,2,0,1,0 [13:24:45.442]收←◆AT+CNMI=1,2,0,1,0 OK
- 1
- 2
- 3
- 4
- 5
设置 SMS-DELIVER 消息直接发送至 TE。
-
短消息提示
[13:45:29.802]收← +CMT: "1825258xxxx",,"23/12/29,13:45:28+32" Hello
- 1
- 2
- 3
- 4
发送短信(PDU 模式)
PUD 模式下可以收发中英文短信。
- AT+QICSGP:配置 TCP/IP 场景参数。
-
AT+CMGF:配置短消息模式。最大响应时间:300 ms。
[13:53:34.214]发→◇AT+CMGF=0 [13:53:34.217]收←◆AT+CMGF=0 OK
- 1
- 2
- 3
- 4
- 5
- 0:PDU 模式
- 1:文本模式
-
短消息设置
- 要发送的中文短信:你好,世界
- 要发送的电话号码:+86181124xxxx1
- 要接收的电话号码:+86182525xxxx7
-
对发送号码进行处理
-
去掉首位的 “+” 号,末尾添加 “F”
86181124xxxx1F -
交换奇偶位
68811142xxxxF1 -
首位添加 “91”
9168811142xxxxF1 -
首位添加 1 字节长度,长度为 08 (HEX)
089168811142xxxxF1
-
-
对接收号进行处理
-
去掉首位的 “+” 号,末尾添加 “F”,并做交换奇偶位
68815252xxxxF7 -
首位添加 “11000D91”,末尾添加 “0008AA”
111000D9168815252xxxxF70008AA
-
-
对短信内容进行处理
-
将中文短信内容转换为 UNICODE 编码
4f60597dff0c4e16754c -
首位增加 1 字节长度,长度为 10 = 0A (HEX)
0a4f60597dff0c4e16754c
-
-
组合,格式为:发送方 + 接收方 + 短信内容
089168811142xxxxF1111000D9168815252xxxxF70008AA0a4f60597dff0c4e16754c
-
AT+CMGS:发送短消息。最大响应时间:120 s,取决于网络状态。
[14:52:04.929]发→◇AT+CMGS=26 [14:52:04.933]收←◆AT+CMGS=26 > [14:52:17.567]发→089168811142xxxxF1111000D9168815252xxxxF70008AA0a4f60597dff0c4e16754c [14:52:17.571]收←089168811142xxxxF1111000D9168815252xxxxF70008AA0a4f60597dff0c4e16754c [14:52:24.369]发→ [14:52:24.889]收← +CMGS: 85 OK
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
这里的 26 代表长度,长度 = (组合内容字符长度 / 2) + 1。
HTTP 通信
-
AT+QHTTPCFG:配置 PDP 上下文 ID。
设置命令:
AT+QHTTPCFG=“contextid”[,<contextID>]
[15:48:51.149]发→◇AT+QHTTPCFG="contextid",1 [15:48:51.152]收←◆AT+QHTTPCFG="contextid",1 OK
- 1
- 2
- 3
- 4
- contextID:整型。PDP 上下文 ID。范围:[1,15]。默认值:1
-
AT+QHTTPCFG:启用输出 HTTP 响应头信息。
设置命令:
AT+QHTTPCFG=“responseheader”[,<response_header>]
[15:55:03.414]发→◇AT+QHTTPCFG="responseheader",1 [15:55:03.417]收←◆AT+QHTTPCFG="responseheader",1 OK
- 1
- 2
- 3
- 4
- response_header:整型。禁用或启用输出 HTTP 响应头信息。
- 0:禁用
- 1:启用
-
AT+QIACT:查询激活状态。最大响应时间:150 s,受网络状态影响。
查询命令:
AT+QIACT?
[09:53:01.154]发→◇AT+QIACT? [09:53:01.174]收←◆AT+QIACT? OK
- 1
- 2
- 3
- 4
-
AT+QICSGP:配置 PDP 上下文。
设置命令:
AT+QICSGP=<contextID>[,<context_type>,<APN>[,<username>,<password>)[,<authentication>]]]
[09:56:28.572]发→◇AT+QICSGP=1,1,"UNINET","","",1 [09:56:28.622]收←◆AT+QICSGP=1,1,"UNINET","","",1 OK
- 1
- 2
- 3
- 4
- contextID:整型。场景ID。范围:[1,15]。
- context_type:整型。协议类型。
- 1:IPv4
- 2:IPv6
- 3:IPv4v6
- APN:字符串类型。接入点名称。
- username:字符串类型。用户名。最大长度:127 字节。
- password:字符串类型。密码。最大长度:127 字节。
- authentication:整型。APN 鉴权方式。
- 0:None
- 1:PAP
- 2:CHAP
- 3:PAP or CHAP
-
AT+QIACT:激活 PDP 状态。最大响应时间:150 s,受网络状态影响。
设置命令:
AT+QIACT=<contextID>
[09:58:16.449]发→◇AT+QIACT=1 [09:58:16.701]收←◆AT+QIACT=1 OK
- 1
- 2
- 3
- 4
- contextID:整型。场景ID。范围:1~15。
-
AT+QIACT:查询激活状态。最大响应时间:150 s,受网络状态影响。
查询命令:
AT+QIACT?
[09:59:05.372]发→◇AT+QIACT? [09:59:05.389]收←◆AT+QIACT? +QIACT: 1,1,1,"10.129.2.186" OK
- 1
- 2
- 3
- 4
- 5
- 6
-
AT+QHTTPURL:设置 URL。最大响应时间:取决于参数
<timeout>
。设置命令:
AT+QHTTPURL=<URL_length>[,<timeout>]
[10:27:30.481]发→◇AT+QHTTPURL=27,80 [10:27:30.497]收←◆AT+QHTTPURL=27,80 CONNECT [10:27:36.105]发→◇http://106.14.142.171:8000/ [10:27:36.113]收←◆ OK
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- URL_length:整型。URL 长度。范围:[1,2048]。单位:字节。
- timeout:整型。URL 的最大输入时间。范围:[1,65535]。默认值:60。单位:秒。
-
AT+QHTTPGET:发送 GET 请求。最大响应时间:取决于参数
<rsptime>
。设置命令:
AT+QHTTPGET=<rsptime>
[10:31:39.280]发→◇AT+QHTTPGET=80 □ [10:31:39.296]收←◆AT+QHTTPGET=80 OK
- 1
- 2
- 3
- 4
- rsptime:整型。上报 OK 后,此参数为 HTTP GET 响应的最大响应时间。范围:[1,65535]。默认值:60。单位:秒。
接收到来自 HTTP 服务器的响应后,将上报以下 URC:
- +QHTTPGET: <err>[,<httprspcode>[,<content_length>]]
- err:错误代码。
- 0:操作成功
- httprspcode:HTTP 服务器响应代码。
- 200:响应成功
- content_length:HTTP 响应体长度。
- err:错误代码。
-
AT+QHTTPREAD:通过 UART/USB 读取 HTTP 服务器响应信息。最大响应时间:取决于参数
<wait_time>
。设置命令:
AT+QHTTPREAD=<wait_time>
AT+QHTTPREAD=80 CONNECT HTTP/1.0 200 OK Server: SimpleHTTP/0.6 Python/3.6.8 Date: Mon, 25 Mar 2024 06:41:43 GMT Content-type: application/octet-stream Content-Length: 4 Last-Modified: Mon, 25 Mar 2024 06:06:36 GMT ? OK +QHTTPREAD: 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- wait_time:整型。接收两个数据包之间的最大间隔时间。范围:1~65535;默认值:60;单位:秒。