跳转至

Air780EP模块AT开发TCP/UDP应用指南

简介

材料准备

  • [EVB_Air780EP(V)]开发板一套,包括天线SIM卡
  • USB线
  • PC电脑
  • 串口调试工具(如果没有准备,推荐可以使用llcom,下载地址:https://llcom.papapoi.com)
  • AT固件获取:https://gitee.com/openLuat/airm2m-ec718-at/releases ,进页面按下Ctrl+F 搜索 AirM2M_780EP_LTE_AT 即可找到780EP模块所使用的AT固件,推荐选用该固件名称后面数字版本号最高的最新relase版本进行调试。
  • 当前文档示例使用AirM2M_780EP_V1007_LTE_AT版本固件

TCP 示例

1.1 开机

开机以后通过串口循环发送AT直到收到OK

AT

OK

1.2 查询SIM卡状态

发送 AT+CPIN? 查询SIM卡状态,直到收到+CPIN: READY,模块主动上报SIM REMOVED和查询返回+CME ERROR: 10 是模块没有检测到SIM卡,如果10s内没有收到建议重启模块,如果重启问题依旧需要检查卡是否有插好,或者排查板子的硬件连接。

AT+CPIN?

+CPIN: READY

OK

1.3 查询模块信号强度

一般信号强度18以上才能稳定通讯;11-17能连接,会有断网的可能,10以下基本连接不上,在不能联网的情况下,可以先参考一下信号强度如何。

AT+CSQ

+CSQ: 19,0

OK

AT+CESQ

+CESQ: 99,99,255,255,31,41

OK

1.4 查询网络注册情况

AT+CGATT? 查询是否注册网络收到+CGATT: 1

值是1即为注册成功,正常情况下注册时间不会超过两分钟,如果超过两分钟没有注册可以进入飞行模式五秒后退出再查询,或者直接重启模块。 值是0则没有注册成功

AT+CGATT?

+CGATT: 1

OK

1.5 PDP激活和APN

公网卡,可以不指定APN,自动使用HSS中存储的默认公网APN 专网卡,必须指定正确的APN和鉴权参数

IP地址和APN通过AT+CGDCONT?查看

AT+CGDCONT?

+CGDCONT: 1,"IP","cmiot","10.74.149.48"

OK

1.6.1连接TCP

此处使用的是非SSL连接 TCP/UDP测试网页TCP/UDP测试网页

使用AT+CIPSTART来建立连接

AT+CIPSTART="TCP","112.125.89.8",42795

OK

CONNECT OK

1.6.2连接UDP

此处使用的是非SSL连接 TCP/UDP测试网页TCP/UDP测试网页

使用AT+CIPSTART来建立连接

AT+CIPSTART="UDP","112.125.89.8",42458

OK

CONNECT OK

1.7发送数据

AT+CIPSEND可以发送定长或不定长数据,收到>以后就可以发送数据(最大1460字节)。

如果是定长数据,输入数据达到长度会向服务器自动发送数据。

如果是不定长数据,输入数据后发送十六进制1A结束发送,发送完1A以后设备会向服务器发送1A之前的所有数据。

定长数据,假设这里发送10个字节数据

AT+CIPSEND=10 输入发送数据

可以看到调试网页已经接收到了数据

不定长数据 直接发送AT+CIPSEND,会返回一个>符号,之后可以输入数据,数据输入完毕后,发送十六进制的1A,结束发送,模块会将输入的数据发送到服务器

发送AT+CIPSEND后,可以看到返回了一个>,后续输入的内容没有返回值

此时再发送十六进制的1A来结束发送

返回了SEND OK

再看调试服务器网页,已经收到了刚才发送的数据

1.8 接收数据

当连接服务器成功以后,模块默认配置是服务器下发的数据会通过串口自动上报,直接就可以接收数据。

从调试网页发送数据到模块

可以看到模块收到了数据 其他说明

最新的AT固件支持开机直接发送AT+CIPSTART联网,不过不推荐使用,推荐根据状态机一步一步实现

2、TCP 使用SSL 示例

2.1 开机

通过拉低powerkey2秒进行开机,开机以后通过串口循环发送AT直到收到OK,如果90秒没有收到OK请拉低 RESET_IN_N 引脚 150ms 以上。或使用其他方法见模块硬件设计手册张开关机章节。

2.2 查询卡状态

AT+CPIN?查询卡状态,直到收到+CPIN: READY,如果10s内没有收到建议重启模块

2.3 查询网络注册情况

AT+CGATT?查询是否注册网络收到+CGATT: 1值是1即为注册成功,正常情况下注册时间不会超过两分钟,如果超过两分钟没有注册可以进入飞行模式五秒后退出再查询,或者直接重启模块。

2.4 配置连接

AT+CIPMUX=0设置为单链接模式

AT+CIPQSEND=1设置为快发

注意:这两条一定要在启用网络之前配置,不然会失败。

2.5 激活网络

AT+CSTT配置网络,非私有APN以外Cat1的固件支持根据卡自动配置APN,直接输入AT+CSTT即可,模块会按照自动获取的APN设置CSTT的APN。

AT+CIICR激活网络,在IP START的状态使用AT+CIICR激活网络,激活以后通过AT+CIFSR查询是否获取IP,如果成功就可以开始配置TCP连接了,如果不成功使用AT+CIPSHUT关闭移动网络,从AT+CSTT重新进行。

2.6 配置连接

AT+CIPSSL=1 开启SSL功能开关为开

AT+FSCREATE=”server.crt” 创建CA 证书文件

AT+FSCREATE=”client.crt”创建客户端证书文件

AT+FSCREATE=”client.key”创建客户端密钥文件

AT+FSWRITE=”server.crt”,0,2080,15文件长度2080只是举例,要根据实际填写。下同。

AT+FSWRITE=”client.crt”, 0,128,10输入客户端证书文件

AT+FSWRITE=”client.key”,0,188,10输入客户端密钥文件

AT+SSLCFG=”cacert”,0, ”server.crt”设置服务器CA 证书SSL 上下文id,在单链接的情况下缺省为0

AT+SSLCFG=”clientcert”,0, ”client.crt”设置客户端证书

AT+SSLCFG=”clientkey”, 0,”client.key”设置客户端KEY

AT+SSLCFG=”seclevel”,0,2设置安全等级

AT+SSLCFG=”ciphersuite”,0,0X0035设置加密套件

AT+SSLCFG=”clientrandom”,0,101B12C3141516171F19202122232425262728293031323334353637 设置随机数

2.7 连接服务器

AT+CIPSTART=TCP,tcplab.openluat.com,57513 连接服务器,请使用自己服务器测试

AT+CIPSEND=10发送数据(确定长度)

AT+CIPSHUT关闭连接

AT+CIPSSL=0关闭SSL

3 指令报错的异常处理及示例说明

^MODE: 17,17

+E_UTRAN Service

+CGEV: ME PDN ACT 1

+NITZ: 24/07/23,08:35:01+32,0

//以上是模块开机后主动上报的数据 AT

OK

ATI

AirM2M_780EPV_V1007_LTE_AT

OK

AT+CPIN?

+CME ERROR: 10 //未检测到SIM卡,重新安装sim卡后,需要给模块复位重启才能识别到卡

AT+CPIN?

+CPIN: READY

OK

AT+CSQ

+CSQ: 20,0

OK

AT+CGATT?

+CGATT: 1

OK

AT+CEREG?

+CEREG: 0,1

OK //以上为主动查询模块的联网情况, 模块已经附着网络成功

AT+CIPMODE=0

OK //设置TCPIP 应用模式为非透明传输模式

AT+CIPMUX=0

OK //设置为单链接模式(默认是单路链接)

AT+CIPQSEND=1

OK //设置非透传数据为快发送模式

AT+CSTT

OK //启动任务并设置接入点 APN、用户名、密码(cat1模块内部有写APN,可以不需要设置,默认为空,专网卡、定向卡除外)

AT+CSTT

+CME ERROR: 3 //提示操作错误,相同的指令连续输入2次,会报这个错误,可以通过发

AT+CIPSHUT 关闭移动场景后,在输入此命令

AT+CIICRR

ERROR //激活移动场景 (出现这个指令错误,一般都是模块内部没有写这条指令或者指令输入错误)

AT+CIICR

+PDP: DEACT

+CME ERROR: 65535 //查询本地 IP 地址 (在模块附着网络失败后会出现此错误,可以通过AT+CGATT? 来查询,可以走断网异常流程来处理

AT+CIFSR

10.17.70.180

AT+CIPSTART=1,"TCP",”112.125.89.8“,37076

+CME ERROR: 3 //在单路链接的情况下,使用多路链接的指令会出现此错误

AT+CIPSTART="TCP",”112.125.89.8“,37076

OK

STATE: IP STATUS

CONNECT FAIL //在联网正常的情况下,一直无法链接服务器,可以检查一下指令的符号是否有输入错误,使用中文的符号会导致异常

AT+CIPSTART="TCP","112.125.89.8",37076

OK

CONNECT OK //链接成功

AT+CIPSEND >
//出现此符号后才能发送数据,没有出现时发送数据会异常

666888 //输出数据后,输入HEX格式的大写 1A发送数据 DATA ACCEPT:8

AT+CIPSTATUS

OK STATE: CONNECT OK //查询链路状态

AT+CIPSHUT

SHUT OK //关闭移动场景

5 常见问题

  • (1) 连接服务器失败
  • 服务器必须是公网地址
  • 使用PC上的TCP UDP测试工具客户端、或者mqtt.fx,连接服务器确认一下是否可以连接成功,排除 服务器故障
  • 检查下模块信号、网络注册、网络附着、PDP激活状态
  • 检查下SIM卡是否欠费

  • (2)最多同时支持多少个连接 AT版本最多8个连接

  • (3) 关于"TCP单/多链接时,刚开始发送数据成功,服务器能收到,间隔十几分钟,模块端AT+CIPSTATUS查询链接存在,AT+CIPSEND数据发送成功,但服务器却没收到数据"问题 用心跳包(HEARTCONFIG)来解决 详细解释和AT示例,可参考链接http://doc.openluat.com/shareArticle/9gI328ebaVFSr

  • (4)780EP 模块tcp联网成功 每次开机都需要重新下发AT指令连接吗? 是的,模块不保存已输入AT指令

  • (5)模块上报PDP: DEACT , 这个要怎么处理 4G模块会产生一个+PDP: DEACT的URC提示,出现此提示说明已经激活的PDP承载被网络端去激活了,此时仍然需要向4G模块发送AT+CIPSHUT命令主动关闭PDP,然后再重新激活,再重新连接TCP服务器。

  • (6)重试多次PDP一直激活失败 如果重试多次,PDP一直激活失败,则尝试使用如下手段恢复: 1、使用RESET引脚复位模块 2、极端情况下,直接给模块断电,再上电,POWER KEY引脚拉低开机

  • (7) 如何发送心跳包 cat1模块如何发送心跳包cat1模块如何发送心跳包

  • (8) 由数据透传状态转向命令状态,发+++切换不了 发送时不要勾选回车换行

  • (9) TCP调试网址 https://netlab.luatos.com/

  • (10) 当我连续发送几百个字节的数据的时候,在里面会夹杂0x0a0x0d这种,如何避免这个呢 通过AT+CIPRXF设置接收的数据末尾是否自动添加回车换行(网络连接前设置)

  • (11) 支持什么加密证书 支持证书配置,支持单向认证和双向认证 支持如下六种加密套件: 0X0035 TLS_RSA_WITH_AES_256_CBC_SHA 0X002F TLS_RSA_WITH_AES_128_CBC_SHA 0X0005 TLS_RSA_WITH_RC4_128_SHA 0X0004 TLS_RSA_WITH_RC4_128_MD5 0X000A TLS_RSA_WITH_3DES_EDE_CBC_SHA 0X003D TLS_RSA_WITH_AES_256_CBC_SHA256
  • (12)数据发送接收缓存问题 使用CIPSTART建立的socket连接,接收数据没有缓存机制,收到数据后,立即通过AT口输出,每包最多1460字节;例如服务器下发一个70KB的文件,模块会连续收到多个包,通过AT口连续多次输出,发送每包最多也为1460字节

  • 合宙支持AT功能的模组型号,除本文介绍的Air780EP外,
  • 还有Air780EPA、Air780E、Air780EX、Air724UG、Air201、Air780EQ、Air700ECQ、Air700EAQ、Air780EPT、Air780EPS等型号,
  • 本文介绍的TCP/UDP应用流程,同样也适用于这些型号。

选型手册简洁版01 选型手册简洁版02