LTE-CAT1模组 ML302使用

一张图片看LTE CAT1在这里插入图片描述

LTE CAT1,大家可以理解一个为低配版的4G通信技术。它的速率比我们手机使用的4G慢,但是成本也低;它完全使用现有的4G网络即可,运营商无需新建基站,网络覆盖可以说是最好的了,仅中国移动在全国就有450W座4G基站;相比与NB,它的成本还是高,但是网络覆盖要优于NB;拥有跟LTE Cat.4相同的毫秒级传输时延,以及支持100KM/H以上的移动速度。

ML302是中国移动物联网推出的一款LTE CAT1模组,笔者有幸拿到了样品并实际进行了简单测试,讲使用方式分享如下。

ML302初始化

ML302 AT命令串口波特率是自适应的。

ML302 默认开启回显,可以通过ATE0关闭.

0.关闭回显

ATE0

如需关闭回显,则每次开机都需要执行(状态不保存)。

1.激活方式(手动\自动)

通过AT+VERCTRL设置激活方式

AT+VERCTRL?     //查询激活方式。0-手动  1-自动
AT+VERCTRL=0,0  //关闭开机自动 PDP 激活,重启生效
AT+VERCTRL=0,1  //开启自动 PDP 激活,CID 是 5, APN 是和卡 plmn 自动匹配,重启生效

说明:若为手动方式,需要用户手动设置PDP并激活;若为自动方式,用户只需要判断CGACT即可.

2.激活

  • 手动激活
    //0.循环发送AT 判断模块是否开机正常
    AT   
    OK 
    //1.查询SIM卡状态
    AT+CPIN?
    +CPIN:READY
    OK
    //2. 查询协议栈是否打开.1-打开 0-否
    AT+CFUN?   
    +CFUN: 1   //协议栈已打开
    OK 
    //3. 打开全功能协议栈,若已打开则不必执行该步
    AT+CFUN=1
    //4.查询信号质量
    AT+CSQ
    +CSQ: 21,99
    
    OK
    //5. 设置APN(第一个参数1表示cid是1)
    AT+CGDCONT=1,"IP","CMIOT"
    OK
    //6.激活PDP
    AT+CGACT=1,1  //第1个参数表示激活,第2个参数1表示cid
    +CGACT: 1, 1  //激活成功,返回
    
    OK
    
  • 自动激活
    //0.循环发送AT 判断模块是否开机正常
    AT   
    OK 
    //1.查询SIM卡状态
    AT+CPIN?
    +CPIN:READY
    OK
    //2. 查询协议栈是否打开.1-打开 0-否
    AT+CFUN?   
    +CFUN: 1   //协议栈已打开
    OK 
    //3.查询信号质量
    AT+CSQ
    +CSQ: 21,99
    
    OK
    
    说明: 以上查询指令只为了辅助判断模组是否正常,非必做
    //4.判断激活状态
    AT+CGACT?
    +CGACT: 5, 1 //若激活,则返回激活成功.第1个5表示cid,第2个1表示激活成功
    
    OK
    

ML302 TCP使用

1.建立连接

AT+MIPOPEN=<n>,<mode>,<IP address/ domainname >,<port>[,<timeout>[,<access_mode>[,<keep_alive>[,<context_id>[,<local_port>]]]]]
//n   : 连接id,0~5共6路
//mode: TCP/UDP,字符串
//IP address : 服务器IP,字符串
//port :服务器端口
//timeout:连接超时时间
//access_mode:连接类型
//      0-普通类型(自动接收下行)
//      1-透传模式(连接id必须为0且只能有这一路连接)
//      2-缓存类型(模组上报提示,需手动读取缓存数据)
//keep_alive: 1-自动保持长连接,1分钟发一次心跳(TCP协议层探测包心跳,应用不会收到该心跳数据)
//            0-不打开
  • 正常连接
AT+MIPOPEN=1,"TCP","121.36.7.137",22

OK

1,CONNECT OK  //连接成功,返回CONNECT OK,用户需根据该返回值判断连接状态

说明 :不指定连接方式,默认创建的是非透传连接,自动接收下行数据。模组收到下行数据时主动上报。

主动上报接收数据的格式如下:

+MIPURC: "recv",1,4 //提示收到数据
dafs    //服务器下行数据.(两行之间接收无延时)
  • 透传连接
AT+MIPOPEN=0,"TCP","121.36.7.137",22,100,1,1
OK

CONNECT
//或
//设置透传
AT+MIPMODE=0,1

OK
//打开连接0
AT+MIPOPEN=0,"TCP","121.36.7.137",22
OK

CONNECT

//注意:连接成功,模组返回CONNECT,不是CONNECT OK

退出透传模式

+++  //没有回车换行
OK   //返回OK,表明退出了透传

重新进入透传

扫描二维码关注公众号,回复: 11578514 查看本文章
ATO

CONNECT   //返回CONNECT,说明进入了透传

2.发送数据(非透传)

AT+MIPSEND=<n>[,<length>[,<timeout>]]
//n:连接id
//length:长度.发送指定长度的值,无需发送1a 1b; 若没有携带该值,则通过0x1a 0x1b结束输入并发送

指定长度发送,如:

AT+MIPSEND=1,10
> 1234567890 //出现‘>’后输入10个数据,自动发送
1,SEND OK

3.透传发送

注意:透传模式只能使用连接0,且不能有其他连接;
建立透传连接时,返回CONNECT,不是CONNECT OK;

+++: 退出透传,没有回车换行

ATO: 重新进入透传

4.读取缓存数据

AT+MIPRD=<connect_id>,<reqlength>
//connect_id :连接id(只带了该值,表示查询缓存了多少数据)
//reqlength:读取数据的长度

正常读取上报数据

+MIPURC: "recv",0,9 //模组上报提示收到数据

AT+MIPRD=0,9        //主动读取数据

987654321           //返回数据

OK

注意: 模组收到的数据没有分帧,放在一个缓存里。读取时根据实际URC上报的帧大小进行读取,否则读到数据可能不完整;若将长度设置为最大,则会读取缓存中所有的数据,可能是多个数据帧合在一起的。(2020-4-21)

读取时两帧拼在一起的示例如下:

//上报收到了两帧数据
+MIPURC: "recv",0,3

+MIPURC: "recv",0,3
//使用最大长度读取缓存
AT+MIPRD=0,255

abc123   //返回缓存所有数据,两帧拼在了一起

OK

5.关闭连接

AT+MIPCLOSE=<n>
//n: 连接id

如:AT+MIPCLOSE=1

6.服务器断开连接

服务器断开连接,模组会主动上报断开连接指示

以下示例为连接id为0的连接断开指示

+MIPURC: "STATE",0,1

0,CLOSED

猜你喜欢

转载自blog.csdn.net/llb19900510/article/details/105763146