拿到中移物联网的4G通用开发板许久了,上面搭载的是中移最新推出的LTE Cat.1模组ML302,本文经过AT命令操做ML302模组接入OneNet平台,使用MQTT协议进行数据收发,将整个流程摸索测试一遍,为后续程序开发作准备。html
1. ML302及开发板硬件介绍
ML302是LTE Cat.1模组,内部集成了丰富的网络协议和行业标准接口及功能,外设接口也蛮丰富,具体的软硬件资料能够从官网下载。json
4G通用开发板上的功能模块以下图所示:服务器
在开发板上电以前,须要使用跳线帽短接一下相关的插针进行配置:网络
将J一、J2处排针短接,J3根据使用的USB转串口模块电平进行选择。串口模块链接J4的UART0_TX、UART0_RX和GND,安装主天线,安装4G SIM卡,链接Micro USB接口给开发板供电。全部配置以下图所示:工具
2.模组上电初始化流程
打开串口助手,选择对应端口号,串口配置115200-N-8-1,打开板载电源开关,会看到串口调试助手有数据返回:post
ML302开机默认手动PDP激活方式,上电初始化流程以下图所示:学习
更多AT指令参考官方资料。测试
当模块初始化完成,就能够配置TCP/UDP跟服务器进行通信了。模组内部集成了AT扩展指令集,支持MQTT协议通信,包括MQTT参数设置、MQTT链接、订阅、发布、消息接收等。spa
具体请参考「ML302_MQTT用户手册」。3d
3. OneNet平台添加设备
登陆注册好的OneNet平台,进入开发者中心,点击所有产品,选择基础服务中的MQTT物联网套件:
点击添加产品,根据实际填写信息,设备接入协议选择MQTTS:
接着点击添加设备,给设备取个名字:
如今平台设备已经建立好了,后面就能够配置模组上线,进行数据收发了。不过在此以前,须要下载token生成工具,根据产品id等信息生成token,这在后续设备进行MQTT配置时须要用到。
在开发文档中下载软件到PC机,根据实际填写对应参数,而后点击Generate生成token:
产品ID能够在平台的产品概况中找到,access_key须要点击查看,而后平台会给注册手机发送验证码,填写验证码后可获取到key。这里的离线时间戳,表示设备通过多长时间会被平台强制下线。这里经过在线转换工具设置一年时间:
4.MQTT数据收发
1. 配置MQTT参数
平台的MQTT服务器IP为183.230.40.96,端口号为1883,id字段填写设备名称ML302,用户名和密码分别是产品id和前面根据产品id生成的token,以下为测试时发送的数据,返回OK,配置信息已经存储到模组:
AT+MQTTCFG="183.230.40.96",1883,"ML302",60,"364992","version=2018-10-31&res=products%2F364992&et=1628214414&method=md5&sign=eQlNK67QznJA0Grs5HhQ5A%3D%3D",1,"",0
2.链接服务器
模组返回"+MQTTOPEN:OK",表示链接成功,这时候平台显示设备在线状态。
咱们能够看到,模组每间隔1分钟会收到心跳包,这里跟前面配置的「keepAlive」字段一致。
3.订阅主题
OneNet平台定义了系统topic簇,包括数据点、设备命令、设备镜像,都以“$sys/{pid}/{device-name}”开头,其中参数为产品id和设备名称。
经过「$sys/364992/ML302/#」来订阅全部系统topic,后续就能够接收系统全部topic相关信息:
4. 发布消息到平台
平台定义的数据点topic以下所示:
其中数据内容仅支持json格式,而且规定了相关参数名称,具体可查阅开发文档。
以下为测试时发送的数据:
AT+MQTTPUB="$sys/364992/ML302/dp/post/json",1,0,0,"{\"id\":123,\"dp\":{\"temperatrue\":[{\"v\":28.5}]}}"
在平台的设备列表中,点击设备后面的数据流,可看到数据已经上传,打开实时刷新,每发送一次,数据都会自动显示出来。
5. 平台下发数据
点击设备后面的更多操做,而后点击下发命令:
填写命令内容及超时时间,点击发送,这时候模组会收到平台发送的消息,因为模组没有应答,超时后平台显示超时错误:
平台定义的设备命令相关topic以下:
设备在回复命令应答时,须要将平台下发的cmid字段做为应答消息的一部分发回平台。这里将超时时间设置为最长的30秒,以便有时间拷贝出cmid字段进行发送:
设备在应答中能够携带数据,平台能够收到,如上图中的“test”。
6. 断开链接
虽然使用MQTT必然是想保持长链接的,但也少不了主动断开链接和销毁参数配置的操做。
ML302接入OneNet平台经过MQTT收发数据的整个流程仍是挺顺畅的,后面能够经过MCU进行程序控制来完成整个通信流程,固然更期待ML302的OpenCPU版本及资料。
关注公众号「TonyCode」,后台回复“提升”,获取文中代码。