LTE CAT1,大家可以理解一个为低配版的4G通信技术。它的速率比我们手机使用的4G慢,但是成本也低;它完全使用现有的4G网络即可,运营商无需新建基站,网络覆盖可以说是最好的了,仅中国移动在全国就有450W座4G基站;相比与NB,它的成本还是高,但是网络覆盖要优于NB;拥有跟LTE Cat.4相同的毫秒级传输时延,以及支持100KM/H以上的移动速度。
ML302是中国移动物联网推出的一款LTE CAT1模组,笔者有幸拿到了样品并实际进行了简单测试,讲使用方式分享如下。
ML302 AT命令串口波特率是自适应的。
ML302 默认开启回显,可以通过ATE0关闭.
ATE0
如需关闭回显,则每次开机都需要执行(状态不保存)。
通过AT+VERCTRL设置激活方式
AT+VERCTRL? //查询激活方式。0-手动 1-自动
AT+VERCTRL=0,0 //关闭开机自动 PDP 激活,重启生效
AT+VERCTRL=0,1 //开启自动 PDP 激活,CID 是 5, APN 是和卡 plmn 自动匹配,重启生效
说明:若为手动方式,需要用户手动设置PDP并激活;若为自动方式,用户只需要判断CGACT即可.
//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
AT+MIPOPEN=,,,[,[,[,[,[,]]]]]
//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,表明退出了透传
重新进入透传
ATO
CONNECT //返回CONNECT,说明进入了透传
AT+MIPSEND=[,[,]]
//n:连接id
//length:长度.发送指定长度的值,无需发送1a 1b; 若没有携带该值,则通过0x1a 0x1b结束输入并发送
指定长度发送,如:
AT+MIPSEND=1,10
> 1234567890 //出现‘>’后输入10个数据,自动发送
1,SEND OK
注意:透传模式只能使用连接0,且不能有其他连接;
建立透传连接时,返回CONNECT,不是CONNECT OK;
+++: 退出透传,没有回车换行
ATO: 重新进入透传
AT+MIPRD=,
//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
AT+MIPCLOSE=
//n: 连接id
如:AT+MIPCLOSE=1
服务器断开连接,模组会主动上报断开连接指示
以下示例为连接id为0的连接断开指示
+MIPURC: "STATE",0,1
0,CLOSED