UDP
一、UDP 概述
UDP(用户数据报协议,User Datagram Protocol)是一种无连接的、不可靠的传输层协议,主要用于实现网络中的快速通讯。以下是 UDP 通讯的主要特点:
1.1 无连接通讯:
UDP 在发送数据之前不需要建立连接,这大大减少了通讯的延迟。发送方只需将数据包封装成 UDP 报文,并附上目的地址和端口号,即可直接发送。
1.2 不可靠传输:
UDP 不保证数据包的顺序性、完整性和可靠性。数据包在传输过程中可能会丢失、重复或乱序到达。因此,UDP 通讯需要应用层自行处理这些问题,如实现错误检测、数据重传等机制。
1.3 面向报文:
UDP 以报文为单位进行数据传输,每个报文都是独立的。这种面向报文的特性使得 UDP 能够保持数据的完整性,并且便于进行错误检测和处理。
1.4 高效性:
UDP 的头部结构非常简单,只包含必要的字段,如源端口、目的端口、数据长度和校验和。这种简洁的头部设计使得 UDP 在处理数据包时更加高效,减少了网络延迟。
1.5 实时性:
UDP 通讯具有较快的传输速度,适用于对实时性要求较高的应用场景,如视频通话、在线游戏等。在这些场景中,即使数据包偶尔丢失或延迟,也不会对整体功能产生严重影响。
二、演示功能概述
本文教你怎么使用 AT 命令,通过几个简单的步骤,就可以让合宙 4G 模组与 UDP 服务器通讯。
1. 使用 UDP 服务器 2. 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 电脑
准备一台电脑;
电脑操作系统为:WIN10 以及以上版本的 WINDOWS 系统。
注意:电脑有 USB 口,并且可以正常上网!!!
3.4 数据通信线
准备一根 USB TypeC 数据线,此数据线的作用是,连接 Air780E 开发板和 PC 电脑,通过 AT 命令完成业务逻辑的控制和交互,如下图所示;
普通的手机 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 合宙 TCP/UDP web 测试服务器
为了方便测试,合宙提供了免费的不可商用的 合宙 TCP/UDP web 测试服务器;
4.4 PC 端串口工具
在量产的项目硬件设计中,一般都是由主控 MCU 通过 UART 给 4G 模组发送命令实现具体的业务逻辑;
在本教程中,为了测试方便,没有使用主控 MCU;
而是使用了 PC 电脑上的一个串口工具 LLCOM 给 4G 模组发送命令来实现演示功能;
LLCOM 的下载链接:LLCOM ,详细使用说明可以直接参考下载网站。
五、使用方法举例
5.1 确认开发板正常开机并联网正常
本次教程所用固件版本是 v1169,通过 Luatools烧录过固件后可以通过打印来判断设备情况,具体参考下图:
5.2 UDP 相关指令
5.3 打开测试服务器
在本文中用合宙 TCP/UDP web 测试服务器来演示整个过程。
点击右侧链接进入工具:https://netlab.luatos.com,浏览器中出现如下界面:
点击右上角“打开 UDP”,在 WEB 页面左上角会显示当前可用于连接的 UDP 服务器 IP 地址和端口号
如下图标记处:待测试的 IP 地址为:112.125.89.8: 端口号为:44482
注意:读者进行测试时 IP 和端口会随机分配,测试中我们替换成对应的 IP 和端口号即可。
六、UDP 通信实例
事实上,数据发送方式有快发和慢发两种,由 AT+CIPQSEND=n命令来设置。
1. n=0:快发模式0(缺省值),当服务器收到数据,模块返回:"SEND OK"(单链接)或 "n,SEND OK"(多链接);
2. n=1:快发模式1,当数据发送到模块,终端返回:"DATAACCEPT:length"(单链接) "DATAACCEPT:n,length" (多链接);
3. n=2:慢发模式当服务器收到数据,模块返回:"SEND OK"(单链接)或 "n,SEND OK"(多链接);
4. 慢发模式每发送一笔数据需要服务器那边的确认,而快发则发送到模块就可以了,不需要服务器的确认。推荐使用 0 或 1;
5. 这两种快发模式实现机制没有区别,区别只在于发送完数据,模式 0 提示 "SEDN OK",模式 1 提示 "DATA ACCEPT",使用快发模式时建议使用 CIPACK 命令查询每笔数据对端是否已经收到;
6. 6.1节使用分别介绍快发、慢发两种模式,其他小节只介绍快发模式介绍。
6.1 UDP 非透传应用:模块做为客户端,单链接,数据发送和数据接收
下面演示及普通连接流程,并进行 UDP 通讯操作。
查看流程时需要注意指令后面注释的内容,有助于理解指令具体作用
AT+CIPMUX=0 //设置为单链接模式
OK
AT+CIPQSEND=1 //注意:数据发送选择“快发模式1”时,选用指令AT+CIPQSEND=1 设置为快发模式。数据发送选择“慢发模式2”时,选用指令AT+CIPQSEND=2 设置为慢发模式。
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 //成功将数据发送到模块
慢发模式
AT+CIPSEND //发送数据
> //等待发送的内容
234567890<CTRL-Z>//当出现">"后,输入待发送的数据:0123456789。<CTRL-Z>用来发送数据,发送16进制数0x1A即等同于发送<CTRL-Z>。
SEND OK //当服务器收到数据, 模块返回 SEND OK ,否则阻塞
执行到此处,服务器成功接收到字符串“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 透传应用:模块做为客户端,单链接,数据发送和数据接收
数据透传(Transparent Transmission)是指将原始数据从一个设备直接传输到另一个设备,不对数据(除“+++”退出透传模式指令外)进行任何处理或解析,这种方式类似于数据的"直通车",确保数据的完整性和一致性,透传模式能够实现更高的传输效率和更低的延迟。
AT+CIPMODE=1 //设置为透明传输模式
OK
AT+CIPSEND=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 //关闭UDP链接
CLOSE OK //关闭成功
AT+CIPSHUT //关闭移动场景
SHUT OK //关闭成功
指令执行实例截图如下:
当传输中有协议栈错误发生时,会转入 AT 命令状态并上报该错误码,指令如下:
UDP ERROR:xx //当传输中有协议栈错误发生时,会转入AT命令状态并上报该错误码
AT+CIPSHUT //发生这种情况时,+CIPSHUT关闭连接。如果没有错误发生,则+++返回AT命令状态,再+CIPSHUT关闭连接
SHUT OK
6.3 APN 设置与专网卡
用户根据自己使用的网络类型来区分,sim 卡可以分为公网卡和专网卡两种;对于如何判断自己手里的 sim 卡是公网卡还是专网卡可以通过下面两种办法区分:
- 咨询 sim 卡供应商;
- 如果有 apn 账号、或者有密码、或者有加密类型,则可以认为是专网卡。
对于公网卡和专网卡设置和查询有不同的指令,合宙 Air780E 4G 模组设置和查询 APN 相关指令可以参考下图:
设置apn指令流程:
AT+CPIN? //检查卡是否正常
AT+CPNETAPN=2,jscmiot,u9682,iot98765,2 //举例,根据实际填写,不能照抄
AT+CGATT? //查询是否附着上数据网络,如果返回+CGATT: 0表示未附着上,1表示正常
APN 及专网卡常见问题
1. 模块如何设置 APN
1、如果是公网SIM卡,不需要用户主动设置APN,软件自动去网络端查询APN进行设置。
2、如果是专网SIM卡,首先咨询SIM卡提供商APN参数,然后通过AT+CPNETAPN=mode,“apnname”,“user”,“pwd”,authmoded进行专网卡的参数设置。
1. 专网卡连接服务器失败
1、有的专网卡没设置APN的情况下也能激活PDP,但是不能连专网卡指定的服务器,或者开机后模块没自动激活PDP,这个时候参考1,检查APN参数是否设置正确。
2、如果有其他厂家的模块,对比测试下是否连接正常。
3、如果无法百分百保证服务器配置没问题,最好在服务器端用wireshark抓包,或者在服务器上安装一个第三方工具,开启一个服务器端口来对比测试。
4、用定向Ip的物联网卡,需要把域名或IP加入白名单才能使用。
1. 专网卡访问白名单
用定向 IP 的物联网卡,需要把域名或 IP 加入白名单才能使用,下面列出模块会访问的域名或 IP 服务器。
七、总结
文章介绍了如何使用Air780E模组通过AT指令进行UDP通信,透传和非透传两种应用。
八、参考资料
8.1 合宙 Air780E 模组资料中心
https://docs.openluat.com/air780e/
8.2 Air780E AT UDP 快速入门教程
https://docs.openluat.com/air780e/at/quick_start/tcp/tcp/
九、使用到的工具
https://docs.openluat.com/air_tools/
十、常见问题 Q&A
10.1 问:开发板发送 AT 指令无任何响应?
a.确保模组已经开机;
b.串口助手是否选择了正确 AT 指令端口;
c.检查串口助手参数是否设置正确,如波特率,停止位,奇偶校验,停止位,新行发送等;
d.确保模组固件为标准 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;
用截图标注+文字描述的方式跟帖回复,记录清楚您发现的问题;
我们会迅速核实并且修改文档;
同时也会为您累计找错积分,您还可能赢取月度找错奖金!