[!TIP] !!!不要删除这个高亮块中的内容!!!
必读文章: docs.openluat.com 文档开发过程(新人必看) docs 文章基本要求(大家仔细阅读,严格遵守)
写本篇文章时,文章内容可以参考的一些合宙内部的资料(有些资料可能不是 Air780E 的,仅供参考):
- AT 命令手册;
- https://docs.openluat.com/air780e/luatos/quick_start/hello/
- https://doc.openluat.com/wiki/21?wiki_page_id=6044
- https://doc.openluat.com/wiki/21?wiki_page_id=1986
- https://doc.openluat.com/wiki/21?wiki_page_id=1991
- https://doc.openluat.com/wiki/21?wiki_page_id=6059
写本篇文章时,文章基本结构和内容框架必须参考:docs 文章基本要求(大家仔细阅读,严格遵守)
2024-10-15 第一版
一、AT 命令概述
AT 命令是一种古老的使用方式,从有线通信就开始使用了。
距离到 2024 年的今天, 已经有超过 40 年的使用历史。
AT 命令的使用场景是,把 4G 模组当做一个黑盒配件,设备必须有一个主控 CPU。
设备的主控 CPU, 通过串口,(也可以是 SPI 或者 USB,但是 99% 的场景都是通过串口),发送一个 "AT"字符串开头的指令, 像 4G 模组请求各种服务。
4G 模组完成服务后, 回复一个字符串,向主控 CPU 做应答。
通过这样一系列的发送请求,应答的交互方式, 使设备具备了通信能力。
AT 命令发展到今天, 功能日趋完善。
厂家的 4G 模组的 AT 指令至少具备如下完善的功能:
- 基本的网络查询指令 信号强度查询,运营商查询,SIM 卡状态查询,IMEI 查询,注册网络状态查询,等等;
- 各种通信协议的支持 TCP/UDP 协议,HTTP 协议,FTP 协议,MQTT 协议,等等;
- 模组内部资源的使用文件系统的存入,删除,查询,等等。
尽管 AT 使用起来很便利,但是 AT 指令方式依然有几个明显的缺点:
- 运行效率低 只能是两个物理 CPU 通过串口这样的介质做异步通信, 沟通效率很低,如果要做高效的业务和通信的整合动作的话, 代价更大。
- 需要一个额外的主控 CPU;
- 对于复杂度不高的物联网设备,虽然 4G 模组本身的运算资源和存储资源已经过剩, 但是为了使用 AT 指令,依然需要一个额外的主控 CPU。
- 为了节约成本,主控 CPU 往往会选择一个资源不太大的型号,通常无法运行高级语言, 所以往往要用 C 语言开发业务逻辑。
- 这需要研发团队熟悉主控 CPU 的开发架构,仍然是一个不小的学习成本。
- 而 4G 模组因为资源足够大, 大多数 4G 模组已经支持脚本开发应用了,
- 所以省掉设备主控 CPU,直接用 4G 模组开发应用, 研发成本更低。
尽管 AT 指令有这些缺点, 但是由于 AT 指令有庞大的用户群, 基于使用的惯性, AT 指令在今天仍然有非常大的使用比例。
二、演示功能概述
本文教你怎么使用 AT 命令,通过几个简单的步骤,就可以让合宙 4G 模组与 UDP 服务器通讯。
- 使用 UDP 服务器
- 4G 模组插卡开机后,使用 AT 指令完成 UDP 链接建立,数据发送,数据接收以及链接关闭操作
三、准备硬件环境
工欲善其事,必先利其器。在正式介绍本功能示例之前,需要先准备好以下硬件环境。
3.1 Air780E 开发板
本文使用 Air780E 核心板,如下图所示:
点击链接购买:Air780E 核心板淘宝购买链接 ;
此核心板的详细使用说明参考:Air780E 产品手册 中的 << 开发板 Core_Air780E 使用说明 VX.X.X.pdf>>,写这篇文章时最新版本的使用说明为:开发板 Core_Air780E 使用说明 V1.0.5.pdf ;核心板使用过程中遇到任何问题,可以直接参考这份使用说明 pdf 文档。
3.2 SIM 卡
准备一张可以上网的 SIM 卡,可以是物联网卡,也可以是自己的手机卡;
注意:SIM 卡不能欠费,可以正常上网!!!
3.3 PC 电脑
准备一台电脑;
注意:电脑有 USB 口,并且可以正常上网!!!
3.4 数据通信线
准备一根数据线,此数据线的作用是,连接 Air780E 开发板和 PC 电脑,通过 AT 命令完成业务逻辑的控制和交互;
有两种数据线可以使用,二选一即可;
第一种数据线是 USB 数据线(连接 Air780E 开板的一段是 Type-C 接口),一般来说这种数据线如下图所示:
普通的手机 USB 数据线一般都可以直接使用;
第二种数据线是 USB 转 TTL 串口线,一般来说这种数据线如下图所示:
在本教程中,使用的是第一种 USB 数据线。
3.5 组装硬件环境
按照 SIM 卡槽上的插入方向,插入 SIM 卡,注意不要插反!
如下图所示,将 SIM 卡用力推入卡槽,听到咔嚓声音后即可。
USB 数据线,连接电脑和 Air780E 开发板,如下图所示:
四、准备软件环境
工欲善其事,必先利其器。在正式介绍本功能示例之前,需要先准备好以下软件环境。
4.1 Luatools 工具
要想烧录 AT 固件到 4G 模组中,需要用到合宙的强大的调试工具:Luatools;
详细使用说明参考:Luatools 工具使用说明 。
4.2 AT 固件
4G 模组中必须烧录正确的 AT 固件才能支持 AT 命令功能;
通过 Luatools 可以烧录 AT 固件;
有两种方式可以获取到 Air780E 模组的最新 AT 固件,二选一即可;
第一种方式是通过 Luatools 获取,如下图所示,可以直接选中最新版本的 AT 固件:
第二种方式是访问:Air780E 固件版本 ,找到最新版本的固件即可。
4.3 合宙 合宙 UDP/UDP web 测试服务器
为了方便测试,合宙提供了免费的不可商用的 合宙 UDP/UDP web 测试服务器;
4.4 PC 端串口工具
在量产的项目硬件设计中,一般都是由主控 MCU 通过 UART 给 4G 模组发送命令实现具体的业务逻辑;
在本教程中,为了测试方便,没有使用主控 MCU;
而是使用了 PC 电脑上的一个串口工具 LLCOM 给 4G 模组发送命令来实现演示功能;
LLCOM 的下载链接:LLCOM ,详细使用说明可以直接参考下载网站。
五、使用方法举例
5.1 确认开发板正常开机并联网正常
本次教程所用固件版本是 v1169,通过 luatools 烧录过固件后可以通过打印来判断设备情况,具体参考下图:
5.2 UDP 相关指令
5.3 打开测试服务器
在本文中用合宙 UDP/UDP web 测试服务器来演示整个过程。
点击右侧连接进入工具:https://netlab.luatos.com,浏览器中出现如下界面:
点击右上角“打开 UDP”,在 WEB 页面左上角会显示当前可用于连接的 UDP 服务器 IP 地址和端口号
如下图标记处:待测试的 IP 地址为:112.125.89.8: 端口号为:44482
注意:读者进行测试时 IP 和端口会随机分配,测试中我们替换成对应的 IP 和端口号即可。
六、UDP 通信实例
6.1 UDP 非透传应用 1:模块做为客户端,单链接,数据发送和数据接收
下面演示及普通连接流程,并进行 UDP 通讯操作。
查看流程时需要注意指令后面注释的内容,有助于理解指令具体作用
AT+CIPMUX=0 //设置为单链接模式
OK
AT+CIPQSEND=1 //设置为快发模式
OK
AT+CSTT //启动任务,设置APN模块注册网络后会从网络自动获取<apn>并激活一个PDP上下文(此<apn>可以通过AT+CGDCONT?来查询),所以直接输入AT+CSTT即可,模块内部会按照自动获取的<apn>来设置CSTT的APN
OK
AT+CIICR //激活移动场景,获取IP地址
OK
AT+CIFSR //查询分配的IP地址
10.83.172.111 // 此处IP随机
AT+CIPSTART="UDP","112.125.89.8",45214 //建立UDP链接,其中:"UDP"为链接的协议类型,“112.125.89.8"为对端服务器的IP地址45214 为对端服务器的UDP端口号
OK
CONNECT OK //如果链接成功,会有如此URC上报
AT+CIPSEND //发送数据
> //等待发送的内容
234567890<CTRL-Z>//当出现">"后,输入待发送的数据:0123456789。<CTRL-Z>用来发送数据,发送16进制数0x1A即等同于发送<CTRL-Z>。
DATA ACCEPT:10 //成功将数据发送到模块
执行到此处,服务器成功接收到字符串“1234567890”
如下图,在 WEB 工具输入框输入字符“123456789”,点击发送按钮,模组成功接收字符“123456789”
AT+CIPCLOSE //关闭UDP链接
CLOSE OK //关闭成功
AT+CIPSTATUS //查询下链接状态
OK
STATE: TCP CLOSED
AT+CIPSHUT //关闭移动场景
SHUT OK
AT+CIFSR //查询当前的模块IP
+CME ERROR: 3 //IP地址已经没有了
指令以上执行如下图所示:
6.2 UDP 透传应用 1:模块做为客户端,单链接,数据发送和数据接收
AT+CIPMODE=1 //设置TCPIP应用为透明传输模式
OK
AT+CIPQSEND=1 //设置为快发模式
OK
AT+CSTT //激活移动场景,获取IP地址
OK
AT+CIFSR //查询分配的IP地址
10.83.172.111 //此处IP随机
AT+CIPSTART="UDP","112.125.89.8",45214 //建立UDP链接,其中:"UDP"为链接的协议类型,“112.125.89.8"为对端服务器的IP地址45214 为对端服务器的UDP端口号
OK
CONNECT //如果链接成功,会有如此URC上报
//透传开始,在这里输入数据并传送,此时也可以接收服务器传来的数据,发送的字符内容都原样的会直接发送到服务器(“+++”字符除外)
此时发送字符“123456789”和“abcdefg”都直接发送到的服务器,如下图
哪怕是 AT 指令也会原样发送到服务器如:“AT+CSTT”
服务器下发的内容也会原样的发送到模组,如下图:
如果需要关闭连接,需要退出透传模式,使用“+++”字符串可以让模组退出透传模式,注意"+++"后不能够带有回车和其他字符。
+++ //推出透传模式,注意末尾不加回车
OK
指令执行实例如下图:
退出透传模式后我们可以正常发送 AT 指令,关闭连接,指令序列如下:
AT+CIPCLOSE //关闭TCP链接
CLOSE OK //关闭成功
AT+CIPSHUT //关闭移动场景
SHUT OK //关闭成功
指令执行实例截图如下:
当传输中有协议栈错误发生时,会转入 AT 命令状态并上报该错误码,指令如下:
UDP ERROR:xx //当传输中有协议栈错误发生时,会转入AT命令状态并上报该错误码
AT+CIPSHUT //发生这种情况时,+CIPSHUT关闭连接。如果没有错误发生,则+++返回AT命令状态,再+CIPSHUT关闭连接
SHUT OK
七、总结
7.1 模块上电初始化以及 TCPIP 流程。
7.2 单链接状态机
当输入 TCPIP 相关命令以后, 模块的状态也会发生相应的迁移。 查询状态的命令是 AT+CIPSTATUS
7.3 多链接状态机
关于单连接状态机的几点说明:
1.输入 AT+CIICR, 会马上进入 IP CONFIG 状态, 当返回 OK 后, 会进入到 IP GPRSACT 状态;
2.输入 AT+CIPSTART 后, 会立马进入 IP/UDP CONNECTING 状态, 如果后续模块上报 CONNECT OK 这个 URC,表明连接服务器成功, 此时进入 CONNECT OK 状态;
3.输入 AT+CIPCLOSE 后, 立马进入 TCP/UDP CLOSING 状态, 此时如果模块上报 CLOSE OK, 则表明关闭与服务器的连接成功, 此时模块进入 TCP/UDP CLOSED 状态;
4.如果模块上报 +PDP DEACT 这个 URC, 则标志着模块释放 PDP 上下文, 并进入了 PDP DEACT 状态;
5.在 IP GPRSACT, IP STATUS, CONNECT OK 以及 TCP/UDP CLOSED 状态下, 输入 AT+CGATT=0, 则也可以使模块释放上下文, 进入 PDP DEACT 状态;
6.模块进入 PDP DEACT 状态, 仍需要输入 AT+CIPSHUT, 进入 IP INITIAL 状态;
7.模块在各个状态下均可以输入 AT+CIPSHUT, 进入 IP INITIAL 状态。
八、参考资料
8.1 合宙 Air780E 模组资料中心
https://docs.openluat.com/air780e/
8.2 Air780E AT TCP 快速入门教程
https://docs.openluat.com/air780e/at/quick_start/tcp/tcp/
九、使用到的工具
https://docs.openluat.com/air_tools/
十、常见问题 Q&A
10.1 问:开发板发送 AT 指令无任何响应?
a.确保模组已经开机;
b.开发板有两个 USB 端口,确保 Micro USB 接入开发板标识 USB 的端口上;
c.电脑 USB 驱动是否安装正确;
d.串口助手是否选择了正确 AT 指令端口;
e.检查串口助手参数是否设置正确,如波特率,停止位,奇偶校验,停止位,新行发送等;
f.确保模组固件为标准 AT 固件。
10.2 问:模组 AT 指令测试正常,但无法建立 UDP 链接?
a.检查模组建立 UDP 链接前是否已经获取到 IP 地址,通过指令 AT+CIFSR 查看;
b.检查 UDP 参数是否正确,如指令 AT+CIPSTART="UDP",XXX,YYY, “xxx”表示 UDP 连接 IP 地址"YYY"为端口号,同时需要确保发送建立 UDP 连接前服务器对应的端口处于打开状态。
10.3 问:重试多次 PDP 激活失败,UDP 应用一直连接失败,怎么解决?
a.使用 RESET 引脚复位模块
b.极端情况下,直接给模块断电,再上电,POWER KEY 引脚拉低开机
给读者的话
本篇文章由
Murphy
开发;本篇文章描述的内容,如果有错误、细节缺失、细节不清晰或者其他任何问题,总之就是无法解决您遇到的问题;
请登录合宙技术交流论坛,点击文档找错赢奖金-Air780E-AT-软件指南-应用实例-UDP;
用截图标注+文字描述的方式跟帖回复,记录清楚您发现的问题;
我们会迅速核实并且修改文档;
同时也会为您累计找错积分,您还可能赢取月度找错奖金!