一、All-in-one技术大礼包,第三代5G NB-IoT模组来了 NB-IoT(Narrow Band Internet of Things)是一种基于蜂窝的窄带物联网技术,也是低功耗广域物联(LPWA)的最佳联接技术,是5G 时代下的基础联接技术之一。2020年NB-IoT全球连接数超1亿。根据预测,NB-IoT将在未来五年实现10亿级连接,推动物联网设备实现爆发性成长。 2021年2月20日,移远通信正式推出其第三代5G NB-IoT系列模组BC95-CNV和BC28-CNV。这两款模组基于海思Boudica 200平台,在大幅提升集成度、性价比、安全性和降低功耗的同时,新增了蓝牙、OpenCPU、GNSS定位等能力,为智能表计、烟感、智能停车、智慧路灯等百万级成熟NB-IoT应用提供了更优选择,也使更多创新的物联网应用成为可能。 All-in-one技术优势:
高集成度架构 |
Boudica 200在一颗SOC芯片上创新集成了上MODEM、MCU、PA、电源管理器件、Memory子系统等,极大减少了模组面积,典型频段配置的模组面积可以减少到10mm*10mm |
5G加持 |
支持3GPP R14、R15以及R16标准的持续演进,功耗更低 |
超大连接 |
单小区最大的接入数量50K,能够支持更多数量设备接入 |
超强覆盖 |
覆盖等级比GPRS提升20dB,具备更强的信号穿透力 |
超低功耗 |
典型应用功耗降低50%,支持PSM/eDRX/长周期TAU,水表场景下寿命高达10年 |
超低成本 |
芯片设计简化,外围电路精简,极大程度降低成本 |
安全加固 |
采用独立安全CPU和硬件安全机制,可支持安全启动、加载、执行、FOTA升级等功能 |
蓝牙BLE5.0 |
支持BLE5.0,长短距结合,方便表计和烟感等设备近场配置和维护 |
GNSS定位 |
包括GPS和北斗,支持物流跟踪、资产管理、老人及小孩定位等场景需求 |
轻量级iSIM |
集成轻量级SIM功能,可免去SIM卡槽,也进一步降低了终端的设计成本和体积 |
OpenCPU开发 |
增强OpenCPU开发能力,用户空间达256KB+64KB,且提供丰富的API接口及范例,开发更加友好 |
网络协议 |
支持包括MQTT、LwM2M等更多网络协议,方便用户应用 |
低工作电压 |
支持低压供电,最低工作电压2.1V(推荐2.1V ~ 4.2V) |
封装设计 |
管脚兼容,集成度更高,性能更优,产品无缝升级 |
用一张图来感受下: 二、All-in-one系列技术文章预告 由于技术点比较多,需要拆分为多个教程,包括但不限于: (1) 三步上云,NB-IoT使用LwM2M上华为云【完结】
(2) 三步上云,NB-IoT使用MQTT上华为云【本帖进行中】 (3) 上电即上华为云,NB-IoT基于openCPU开发智慧农业项目 (4) 上电即上华为云,NB-IoT基于openCPU驱动X传感器(六轴姿态、光感等) (5) 上电即上华为云,smart智联NB-IoT + PLC无线网关 (6) 上电即上华为云,NB-IoT + lvgl 智能显示屏(猫眼、广告分发屏等) (7) 未完待续… 三、三步上云,NB-IoT使用MQTT上华为云 为了快速验证NB-IoT开发板是否可用,建议开发者先完成本教程。基于NB-IoT模组的默认原厂固件,利用串口调试助手,向模组发送AT指令,实现快速上华为云。 一个新NB-IoT模组最少需要3步对接到华为云,AT命令如下表:
三步上云 |
行为 |
AT命令 |
第一步 设置IP |
开启MQTT客户端网络 |
AT+QMTOPEN=0,"华为云IoT平台IP地址",端口号 OK +QMTOPEN: 0,0 //经过较短时间,模组报告MQTT客户端网络开启成功 |
第二步 模组连接 |
连接客户端到MQTT服务器 |
AT+QMTCONN=0,”ClientId”,”Username”,”Password” OK +QMTCONN: 0,0,0 //已成功将客户端连接到MQTT服务器 |
第三步 上云 |
向华为云发数据 |
AT+QMTPUB=0,0,0,0,"hwcloud_topic" > { JSON_data} OK +QMTPUB: 0,0,0 //MQTT数据发送完成 |
注意:蓝色内容为执行AT命令。黑色内容为模组打印信息。 四、使用步骤
硬件连接 |
(1)硬件环境说明: 使用移远公司BC95-CNV开发板,插上NB-IoT SIM卡,usb口连接到电脑。 注意:开发板上的拨码开关,拨到 MAIN UART TO USB。不要选择MAIN UART TO MCU。 |
串口调试 |
(1)打开串口调试助手QCOM,显示有4个COM口。 COM25:AT调试串口。波特率9600。 COM27:NB-IoT模组运行LOG串口。 注意:具体COM口请根据实际情况来判断。 (2)打开串口,按开发板的Reset按键,提示“Neul OK”表示模组已经进入工作状态。 (3)在命令窗口输入AT指令后,点击Send Command发送。观察窗口显示AT指令执行的结果。 |
模组上手 |
(1)请参考AT指令手册《Quectel_BC95-CNV&BC28-CNV_AT命令手册》,内容非常详细。若需要精确控制NB-IoT模组的入网行为,请参考手册用例。 模组处于自动入网模式时,请输入下表AT查询命令:
行为 |
AT命令 |
|
REBOOT_CAUSE_SECURITY_PMU_POWER_ON_RESET Neul OK //模组上电开机 |
查询UE开启情况 |
AT+CFUN? +CFUN:1 //CFUN为1表示UE开启全部功能 OK |
查询信号强度 |
AT+CSQ +CSQ:22,99 //信号强度RSSI为22 OK |
查询IMSI 号 |
AT+CIMI 460111174590523 //国际移动用户识别码IMSI号 OK |
查询IMEI 号 |
AT+CGSN=1 +CGSN:86961905000xxxx //国际移动设备识别码IMEI号 OK |
查询网络注册状态 |
AT+CEREG? +CEREG:0,1 //<stat>=1表示EPS已注册本地网络 OK |
查询网络附着状态 |
AT+CGATT? +CGATT:1 //网络附着成功,入网时间与NB-IoT信号有关 OK |
查询模块的IP 地址 |
AT+CGPADDR +CGPADDR:0,100.96.14.32 //返回设备IP地址 OK |
注意:如果模组不是自动入网模式,执行AT+NCONFIG=AUTOCONNECT,TRUE后,执行AT+NRB 重启模块后生效,模块自动尝试附着网络。 |
华为云设置 |
(1)云端的配置。选择产品:设备接入 IoTDA。 https://www.huaweicloud.com/product/iothub.html (2)选择北京四。 (3)创建产品。注意协议类型,选择MQTT。 (5)模型定义,直接使用平台定义好的WaterMeter。 (6)oc_water_meter_mqtt产品创建成功。 (7)注册设备。 (8)设备创建成功。 注意:设备ID需要保存,代码中需要用到。
设备ID 5fed97874f04b003098ac371_MQTT_BC95-CNV_BC28-CNV 设备密钥 12345678 |
(9)在设备列表中,可以看到设备未激活。 |
MQTT上华为云 |
(1)AT+QREGSWT命令用于设置模组重启后的注册模式,默认是自动注册IoT平台模式。 由于本次需要使用MQTT协议接入华为云IoT平台,所以执行AT+QREGSWT=2禁用注册功能。更详细的说明,请参考《Quectel_BC95-CNV&BC28-CNV_MQTT》,内容非常详细。 执行AT+NRB,模组重启后,设置参数生效。 如果需要使用UDP或者TCP的Socket通讯方式,请参考AT手册范例。
行为 |
AT命令 |
查询注册模式 |
AT+QREGSWT? +QREGSWT:1 //自动注册IoT平台模式(默认模式) OK |
设置禁用注册 |
AT+QREGSWT=2 OK //禁用IoT平台的注册功能 |
重启模块 |
AT+NRB REBOOTING REBOOT_CAUSE_APPLICATION_AT //重启原因 Neul OK |
(2)现在需要给模组设置华为云IoT平台的IP地址和端口号(MQTT协议)。 进入华为云平台接入地址列表,根据MQTT (1883),复制iot-mqtts.cn-north-4.myhuaweicloud.com,打开windows的CMD窗口,ping一下,就可以看到此域名对应的IP地址121.36.42.100。(注意:IP地址根据实际情况来定) 获取华为云IoT平台的IP地址后,请执行下表AT指令,模组重启后设置生效。
行为 |
AT命令 |
查询网络附着状态 |
AT+CGATT? +CGATT:1 //网络附着成功,入网时间与NB-IoT信号有关 OK |
查询模块的IP 地址 |
AT+CGPADDR +CGPADDR:0,100.97.42.68 //返回设备IP地址 OK |
开启MQTT客户端网络 |
AT+QMTOPEN=0,"121.36.42.100",1883 OK +QMTOPEN: 0,0 //经过较短时间,模组报告MQTT客户端网络开启成功 |
查询命令 |
AT+QMTOPEN? +QMTOPEN: 0,"121.36.42.100",1883 |
(3)现在需要执行AT+QMTCONN连接客户端到MQTT服务器。但是执行这条命令之前,开发者需要获得设备的ClientId、Username、Password三个重要参数。 (4)登陆https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/ 输入注册设备时,获得的设备ID(DeviceId)和设备密钥(DeviceSecret)。 点Generate,生成ClientId、Username、Password。
ClientId 5fed97874f04b003098ac371_MQTT_BC95-CNV_BC28-CNV_0_0_2021031811 |
Username 5fed97874f04b003098ac371_MQTT_BC95-CNV_BC28-CNV |
Password 6f3dc5b484b6a45edc1a2652457fa3fdcb8a37e18210de5cb7d41d2cc5e20fb2 |
(5)执行AT+QMTCONN命令,格式是AT+QMTCONN=0,”ClientId”,”Username”,”Password” 注意三个参数都有冒号。
行为 |
AT命令 |
连接客户端到MQTT服务器 |
AT+QMTCONN=0,"5fed97874f04b003098ac371_MQTT_BC95-CNV_BC28-CNV_0_0_2021031811","5fed97874f04b003098ac371_MQTT_BC95-CNV_BC28-CNV","6f3dc5b484b6a45edc1a2652457fa3fdcb8a37e18210de5cb7d41d2cc5e20fb2" OK +QMTCONN: 0,0,0 //已成功将客户端连接到MQTT服务器 |
(6)此时,在华为云可以看到设备在线,设备成功激活。 (7)现在执行AT+QMTPUB,可以通过MQTT协议往华为云IoT发数据。格式是AT+QMTPUB=0,0,0,0,"$oc/devices/{device_id}/sys/properties/report" 其中{device_id}就是设备注册时,返回的设备ID。 由于产品模型采用华为云标准模型WaterMeter,根据水表profile的定义,上报的数据格式为JSON数据,现在提供一个例子: (8)执行AT+QMTPUB命令和发JSON数据,有点考验个人手法,必要时大家多尝试几遍。先看一下我贴的图解步骤。 【1】在QCOM串口调试助手中,执行AT+QMTPUB命令。 【2】显示窗口出现 > 提示符 【3】(最好提前把JSON数据复制到命令框)点击Send Command。 【4】鼠标点一下图中红圈的位置,把光标放在这,输入CTRL + Z组合键。 【5】出现OK +QMTPUB: 0,0,0 就表示MQTT数据发送完成。
行为 |
AT命令 |
向华为云发数据 |
AT+QMTPUB=0,0,0,0,"$oc/devices/5fed97874f04b003098ac371_MQTT_BC95-CNV_BC28-CNV/sys/properties/report" > |
JSON数据 |
{"services":[{"service_id":"Connectivity","properties":{"dailyActivityTime":88},"event_time":"20210318T121212Z"},{"service_id":"Battery","properties":{"batteryLevel":99},"event_time":"20210318T121212Z"}]} |
|
OK +QMTPUB: 0,0,0 //MQTT数据发送完成 |
(9)设备详情可以看到上报的设备参数。 |
接收华为云命令下发 |
(1)现在使用AT+QMTSUB订阅命令下发主题。格式是AT+QMTSUB=0,1,"$oc/devices/{device_id}/sys/commands/#",0
行为 |
AT命令 |
订阅MQTT主题 |
AT+QMTSUB=0,1,"$oc/devices/5fed97874f04b003098ac371_MQTT_BC95-CNV_BC28-CNV/sys/commands/#",0 OK +QMTSUB: 0,1,0,0 //订阅成功 |
(2)进入华为云API Explorer。 https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=IoTDA&api=CreateCommand (3)选择CreateCommand 下发设备命令。 (4)填入设备ID等参数。参数区写入{"cmd_value":"hi2021MQTT"}。点击调试。 (4)页面显示调试成功。 (5)模组的串口调试助手,显示收到hi2021MQTT的命令。 |
完成 |
ok。 |
源码获取 |
weixin关注公众号gugongbei,或者扫描下方二维码。 回复NB-IoT_BC95-CNV_BC28-CNV,获取源码下载链接。 |
相关 |
【上电即上华为云】华为云openCPU智联模组_wifi_8720_MQTT https://bbs.huaweicloud.com/blogs/233458 |
|
【上电即上华为云】华为云openCPU智联模组_wifi_8720_LwM2M https://bbs.huaweicloud.com/blogs/236198 |
|
【上电即上华为云】华为云openCPU智联模组_wifi_BL602(RISC-V)_MQTT https://bbs.huaweicloud.com/blogs/238212 |
|
【上电即上华为云】华为云openCPU智联模组_wifi_BL602(RISC-V)_LwM2M https://bbs.huaweicloud.com/blogs/238213 |
|
【上电即上华为云】华为云openCPU智联模组_wifi_BL602(RISC-V)_CoAP https://bbs.huaweicloud.com/blogs/238214 |
|
【上电即上华为云】华为云AIoT智联开发板_mcu_HK32F103Vx https://bbs.huaweicloud.com/blogs/244682 |
|
【上电即上华为云】华为云smart智联PLC无线网关_plc_3121N-H(3121N-IED) https://bbs.huaweicloud.com/blogs/245850 |
|
【上电即上华为云】华为云openCPU智联模组_wifi_HF-LPX70_RISC-V_LwM2M https://bbs.huaweicloud.com/blogs/246215 |
|
【上电即上华为云】华为云openCPU智联模组_wifi_HF-LPX70_RISC-V_CoAP https://bbs.huaweicloud.com/blogs/247263 |
|
【上电即上华为云】华为云all-in-one智联模组_NB-IoT_BC95-CNV(BC28-CNV)_LwM2M_at https://bbs.huaweicloud.com/blogs/249241 |
|
【上电即上华为云】华为云all-in-one智联模组_NB-IoT_BC95-CNV(BC28-CNV)_MQTT_at 本帖地址 |
|
评论(0)