本系列博文将系统性讲解物联网模组系列的实际使用和调试指南,以移远4G模组EC20为例(其他厂家模组的调试方法大同小异),加快嵌入式软、硬件工程师对物联网模组调试和使用的上手速度。

一、准备工作

1、软件:串口调试助手(推荐官方的QCOM,可以讲命令保存为脚本,方便后续多次的调用)

2、硬件:EC20硬件套件、USB转串口线及SIM卡

3、文档:《Quectel_EC20_R2.1_AT_Commands_Manual》、《Quectel_EC2x&EG9x&EM05_TCP(IP)_AT_Commands_Manual_V1.0》

4、硬件环境搭建:模组正常开机,将模组的串口通过USB转串口正常连接到电脑并且打开QCOM,正常识别到模组对应串口;

5、网络服务器:因为设计到数据和网络服务器两者间的通讯,所以需要一个网络服务器实现数据下发到模组(模组数据的上传需要得知服务器的IP地址和端口号);

二、针对TCP/IP协议:

针对初次接触到蜂窝式通讯模组的同学而言,TCP/IP的连接流程相比会比较陌生,本博文开始讲系统性的讲解关于模组在网络通讯部分的知识;关于TCP/IP部分,建议大家参考文档《Quectel_EC2x&EG9x&EM05_TCP(IP)_AT_Commands_Manual_V1.0》,关于TCP/IP的链接逻辑部分还是很值得大家的参考,可以提高大家对整体的TCP连接的感性认识(因为自己走了很多的弯路,所以分享此文档给大家)。

移远模块用python发AT指令 移远em05-ce模块_TCP/IP

关于AT指令部分:下图中将关于TCP/IP的重要AT指令做了标出,个人认为红色框框中是比较重要的部分,需要完全进行掌握;

移远模块用python发AT指令 移远em05-ce模块_移远模块用python发AT指令_02

AT指令发送:由于AT指令比较多,串口助手的窗口显示不全,我已经将AT指令的Log保存为“.txt”文件,大家可以在文档末尾给出的链接中进行免费下载,进行学习和分析;

移远模块用python发AT指令 移远em05-ce模块_TCP/IP_03

关于TCP/IP协议操作的AT指令解释:

1、AT+CGATT?/AT+CGREG?命令:PS域的注册,命令主要是检测模组是否注册到了基站的PS域,简言之就是模组和基站的数据通讯是否建立(注意:CS域主要负责通话部分,PS主要负责数据通讯部分);

2、AT+QICSGP=1,1,"CMNET","","",1:关于APN的设置问题,大家在使用手机的时候或者支持蜂窝的PAD的时候都没有进行过APN的设置,网络也可以正常连接,为什么需要设置APN?之前我也很困惑这个问题,后面有请教到移动内部的一位技术大佬,大佬是这样回答的:国内所有运营商网络在一开始的时候并没有让设备的使用者去操作输入APN,基站侧检测到未携带正确APN的设备时,基站会进行自动纠错PAN,以达到让客户正常上网的目的,随着国内用户的增加和物联网设备的爆发式增长,目前基站的纠错能力存在纠错的风险,所以如果可能的话还是建议设备携带正确APN进行上网。所以最终建议用户还是需要设置正确的APN,避免设备在SIM卡正常,模组正常,APN不正确的情况下造成PS域链接网络失败的情况。(其中中国联通的APN为:UNINET,中国移动为:CMNET);

3、AT+QIACT=1:激活PDP 的连接,为下一步的TCP/IP的连接做准备;

4、AT+QIOPEN=1,0,"TCP","119.xxx.xxx.29",xxxx2,0,1:此命令用来创建TCP/IP的连接;此时需要再服务器上先建立好服务器端口,否则发送此命令会出现创建失败的提示;模块支持创建多个contextID和connectID/socket,默认的序号开始分别为1和0;支持TCP、UDP、TCP LISTENER和UDP SERVICE、我们今天讲解TCP,所以这个参数为TCP;然后为服务器的IP地址和端口号,根据自己的实际地址和端口号进行填写即可;最后一个参数为数据接收的模式;我们这里选择1,即Direct push mode;

关于access_mode:

Buffer access mode:此模式下模组收到服务器下发的数据是会进行提示“+QIURC: “recv”,<connectID>”.然后可以根据接收到的数据长度和connectID进行读取数据;

Direct push mode:此模式下模组收到服务器下发的数据是会进行直接显示,如下图中串口助手上红色框中的提示(服务器我选择的是收到什么信息回复什么信息,所以接收到的和发送的数据一样)

Transparent access mode:此模式是透传模式,特别适合大数据的给服务器发送数据;在此模式下发送的所有信息都会被发送到服务器,包括AT命令;退出时需要发送特殊指令“+++”退出;

5、AT+QISEND=1;发送数据开始的命令,发送此指令后,模组会回复“>”,等待接受串口数据的到来;然后可以发送数据到串口;注意单次发送的数据量应该小于等于1460Byte,否则多余的数据会被忽略;

6、1A[HEX]:1A的格式需要再HEX模式下进行发送,此特殊字符为模组判断用户将数据发送到串口完成的标志;发送此命令后,模组会将数据发送到服务器;

模组和服务器的数据交互如下所示:

移远模块用python发AT指令 移远em05-ce模块_TCP/IP_04

7、AT+QIDEACT=1:此命令用于去激活PDP的连接,简单理解就是和服务器断开连接;

8、AT+QICLOSE=1:此命令为关闭connectID/socket的连接,把之前的connectID/socket资源进行回收;否则下次创建同样序号的connectID/socket时会出现创建失败的情况;

9、AT+QPOWD=1:如果需要低功耗,可以将模组正常关机;

模组的TCP/IP链接的创建和数据发送相对简单,主要特别注意每次AT指令发送完毕需要等待模组回复是否正常,建议大家详细阅读AT指令手册中相关的命令,否则会出现错误或者失败的现象。

关于出现错误或者失败的处理策略,应该遵循手册中给出的流程图,避免暴力操作引起模组的损坏。

 

 

以上就是针对移远4G通讯CAT4模组EC20关于TCP/IP模块的AT指令简单介绍,希望大家能够对模组AT命令调试方面有一些更加深刻的认识,下一节会针对模组的UDP连接流程和命令进行详细介绍,敬请期待。

------------------------------------------------------------------------------------------------------------------------------------------

因为小编自己能力水平有限,文中难免有错误或表达不到的信息,还望广大阅读者留言批评指正,谢谢。