详细介绍一下中移m5310 nbiot开发板对接onenet云平台的全过程,简单实现了温湿度的采集,及数据上报与可视化显示。
我在这里使用的是的CM1719_v2.1板子,介绍如下:
开发板简介
OneNET NB-IoT开发板v2.1采用高性能ARM Cortex-M3 32位微处理器STM32F103RET6,搭载中移物联网公司自主研发的M5310 NB模组(内嵌OneNET接入协议:CoAP+LwM2M协议),外围配备温湿度传感器、光照强度、气压、三轴加速度、蜂鸣器及按键等丰富的外设资源,并将STM32F103RET6的引脚全部引出,方便开发者和用户进行二次开发,由于使用了内置OneNET协议的NB模组M5310,用户使用简单AT命令即可完成开发板和OneNET的互联互通,硬件实物图如图所示。
必须要准备的配件:
(1)与onenet平台连接——必备中国移动的NB卡(插在板子后面的卡槽),注意不是普通的电话卡,是专门的nb卡。淘宝上有卖,几块钱可以买到一年套餐的。(卡欠费不可以用&&卡在其他设备激活过会被锁定)
(2)stlink下载器——默认是带着的,不知道现在买还送不送
(3)USB-TTL串口——用来与上位机调试通信的。注意他和stlink长的很想,不要搞混了
也可以用上面那个没包装的模块,一个道理。
(4)自带的那根usb—type的线——他好像只能用来接收板子返回的数据,但usb-ttl的串口应该收发都可以的。
如果不知道如何用杜邦线连接,可以看看。
(1)板子就不用说了,连上电源,插上卡就可以。
(2)下载器的话,连接板子的J6,也就是这里,按照上面标识的,一一对应连接即可。
(3)usb-ttl的连接
连接板子的NB通信串口3,也就是这里,看不懂的可以按照颜色连接。板子因为有独立电源,所以就不需要连接模块的3.3v了。
(4)usb直接连接就行了
(1)使用过程中为了实现了MCU和NB模组的串口通信,需要将J12引脚对和J14引脚对分别用跳帽短接;为了实现NB模组的自上电,需要将J10引脚对短接(也就是在上电自行传输数据时,需要这样短接)
(2)如果想要通过PC机调试M5310,则需要将M5310的串口单独接到上位机上,按照我上面的连接就可以。
(1)登录 https://open.iot.10086.cn/
(2)点击控制台,这里我使用的是旧版(新旧数据不通的),我不知道为啥新版我调试不好,建议还是用旧版吧
(3)因为我们用的移动自家的板子,所以直接选择产品,nbiot套件。
(4)点击添加产品,产品信息随便填,下面的选择nbiot,LWM2M协议,移动
(5)创建了产品之后,我们还要创建设备。设备名称自己起。
IMEI:可以查看M5310模块,上面有标,也可以通过下面AT指令查询
IMSI:需要通过下面的AT指令来查(可以看了后面的再来创建设备)
自动订阅:选择开启
上面的两个码,决定了能否成功的连接onenet!!!
(6)至此,创建成功
(1)首先试用usb-ttl模块连接到上位机,打开串口调试助手,设置波特率(115200还是9600自己看,没乱码就行)
(2)连接好,上电后,会输出m5310的型号与ok,说明连接成功
(3)初始化,下面的都没有问题说明成功
AT:模块正常开机启动测试,正常返回OK。
AT+CIMI:查询NBcard卡号
AT+CSQ:查询信号质量,返回“+CSQ:信号,99”,如“+CSQ:14,99”;
注意:若显示“99,99”,则表示无信号,可能为卡被异常锁定或天线等原因。越大说明信号越好
AT+CEREG? :判断PS域附着状态,返回+CEREG:0,1
注意:该模组不支持常规电话通讯卡,电话卡返回”+CEREG:0,2“,后续是无法连上OneNet的,只有正常NB卡才能正确返回并通信。
AT+CGATT?:查询模组PS附着状态,正常返回+CGATT:1
AT+CIMI:识别 SIM 卡的IMSI(这里可以获得上面需要的imsi)
AT+CSCON=1 //打开信号提示自动上报
AT+CEREG=1 //打开注册信息自动上报
(4)生成模组侧设备注册码,用于告诉onenet你是谁你要连接哪个设备
模组侧设备创建使用 AT+MIPLCONF 指令,其使用格式为:
AT+MIPLCONF=,,,
其中,
指示部分总数据长度,按照ASCII计数;
具体的设备配置数据,满足配置结构体规范;
配置数据分片参数;
配置数据流结束符。
使用OneNET平台的专用配置工具OneNET_config_v1.2.exe进行注册码生成,用DOS命令串口打开OneNET_config_v1.2.exe工具并按如下格式填写数据:
按回车键生成对应的数据:
(5)将生成的注册码发送到M5310:
AT+MIPLCONF=71,10000000B80B00001900636F61703A2F2F3138332E3233302E34302E33393A353638331F003836323031383130323931353232303B343630303430323336373039313232050501,1,1
0
OK
0为
(6)订阅Object 组 配置
命令格式:AT+MIPLADDOBJ=ref,objectid,instanceid
objectid代表的类型可参考IPSO 资源模型http://www.openmobilealliance.org/wp/OMNA/LwM2M/LwM2MRegistry.html
如发送:AT+MIPLADDOBJ=0,3303,0(温湿度传感器)
(7)模组侧发起登录
AT+MIPLOPEN=0,15
上述指令中,30 代表登录超时时间;如果超过该时间,模组还未接收到平台的登录响应,模组则会上报登录失败的通知。
登录结果上报:
模组上报登录请求,服务器收到登录请求数据之后,会根据数据内容,返回本次登录结果;如果登录失败,或者登录超时,模组都会上报登录失败的响应。
登录成功上报打印如下:
+MIPLOPEN:0,1
登录失败上报打印如下:
+MIPLOPEN:0,0
需要注意的是, 如果在注册码中的 debug参数设置为非0,则在登录过程中,除了上报登录信息之外,还会应显示对应debug 等级的数据内容。
登录成功后,onenet会显示在线:
(8)、向OneNET平台发送数据
这里使用不带ackid方法上报:
AT+MIPLNOTIFY=0,3303,0,5700,4,“24.5”
OK
至此,onenet平台即可收到数据(但这个数据是自行指定的,是假的)
1、上电检查流程
(1) AT //判断模组是否上电开机成功
(2) AT+CSQ //信号质量检查
(3) AT+CEREG? //判断 PS 域附着状态,标识位返回 1 或 5 表示附着正常
(4) AT+CGATT? //检查模组 PS 附着状态
2、模组侧设备创建及资源订阅,登录流程
(1) AT+MIPLCONF=72,1003000………. 3033393639050501,1,1//设置模组侧设备注册码
(2) AT+MIPLADDOBJ=0,3200,0 //订阅 Object 3200 资源设置
(3) AT+MIPLNOTIFY=0,3200,0,5505,6," E309C82FE6 ",1 //订阅 Resource 5500 资源设置
(4) AT+MIPLOPEN=0,30 //设备登录到 OneNET 平台
3、OneNET 数据收发流程
(1) AT+MIPLNOTIFY=0,3200,0,5505,6," E309C82FE6 “,1 //数据上传
(2) AT+MIPLREAD=0,60204,3200,0,5505,” E309C82FE6 ",1 //Read 操作回复流程
(3) AT+MIPLWRITE=0,62069,1 //Write 操作回复流程
(4) AT+MIPLEXECUTE=0,46081,1 //Execute 操作回复流程
4、模组侧设备注销流程
(1) AT+MIPLCLOSE=0 //登录注销流程
(2) AT+MIPLDELOBJ=0,3200,0 //模组侧订阅资源列表释放
(3) AT+MIPLDEL=0 //模组侧通信实例删除
(1)这里用到这个例程,sp3说明适用于sp3的m5310固件,如何升级,文档中有。
(2)keil导入项目,设置一下target,debug识别到stlink说明正常
修改示例中的参数,这里的conf是用程序生成的,和用config.exe生成的一样
(3)烧录之后,上电,打开串口,启动成功,这时平台显示在线,并且可以接收到数据,说明成功!
自己摸索了几天,遇到了挺多的问题,最后也解决了,在这过程中参考了一些教程,如下:
(1)onenet官方教程
(2)csdn博客1
(3)csdn博客2、
(4)csdn博客3