文档首页/ 设备接入 IoTDA/ 最佳实践/ 设备接入/ 基于NB-IoT小熊派的智慧烟感
更新时间:2024-10-22 GMT+08:00

基于NB-IoT小熊派的智慧烟感

场景说明

近年来,火灾频发,造成很大的人员及财产损失,国家高度重视,陆续出台相关文件,明确相关要求,落实消防安全责任。同时,人民消防意识逐渐提高,独立烟感得到一定程度的普及,在防火减灾方面起到一定的作用。但由于独立烟感产品存在一定的局限,例如人不在场收不到报警信息,工作状态不能实时掌握,独立烟感没有完全解决这些问题。

NB-IoT智慧烟感解决了传统烟感器布线难、电池使用周期短、维护成本高、无法与业主及消防机构交互等缺点。智慧烟感采用无线通信,具备即插即用、无需布线、易于安装等特点。

在该文档中,我们基于华为一站式开发工具平台(VS code工具IoTlink插件),从设备(小熊派开发套件)、平台(IoTDA华为物联网平台)、端到端构建一款智慧烟感解决方案样例,带您体验十分钟快速上云。实现智慧烟感检测并上报烟雾浓度值,显示在IoTDA控制台,并在IoTDA控制台远程控制蜂鸣器开关的功能。

开发环境

  • 硬件:小熊派BearPi-IoT开发套件(包含NB卡、NB模组、智慧路灯功能模块、USB数据线等)。
  • 软件:VScode,IoT Link插件、华为云(已开通设备接入服务)、win7及以上版本的64位操作系统(本文以windows 10 64-bit系统调试)。

整体流程

小熊派开发板简介

开发板在物联网系统架构中属于感知设备,该类设备通常由传感器、通信模组、芯片以及操作系统组成。为增加开发板的可扩展性,小熊派开发板没有采用传统的板载设计,而是使用了可更换传感器扩展板以及可更换通信模组扩展板设计,通信模组是数据传输的出入口,常用的通信模组包括NB-IoT,Wifi以及4G等,芯片是设备的主控设备,该开发板内置了一个低功耗的STM32L431单片机作为主控芯片,即MCU。操作系统使用的是华为的LiteOS操作系统,其提供了丰富的端云互通组件。

为了便于开发调试,如图1所示,该开发板板载了2.1版本的ST-Link,它具有在线调试烧录,拖拽下载以及虚拟串口等功能。开发板中间板载一块分辨率为240 * 240的LCD屏幕,其主要用于显示传感器数据以及调试日志。LCD屏幕下方是主控芯片。

开发板右上角具有一个拨码开关,将其拨至左侧AT-PC模式,通过电脑端的串口助手,发送AT指令调试通信模组。右侧AT-MCU模式,通过MCU发送AT指令与通信模组进行交互,将采集到的传感器数据通过通信模组发送到云端。

图1 小熊派开发板

硬件连接

  1. 将NB卡插入到NB-IoT扩展板的SIM卡卡槽,确保插卡的时候卡的缺口朝外插入,如图2所示。

  2. 将烟雾浓度采集控制板和NB-IoT扩展板插入到开发板上,注意安装方向,然后用USB数据线将小熊派开发板与电脑连接起来。显示屏有显示,电源灯被点亮,说明开发板通电成功。

    图2 硬件连接

安装IoT Link Studio插件

IoT Link Studio是针对IoT物联网端侧开发的IDE环境,提供了编译、烧录、调试等一站式开发体验,支持 C、 C++、汇编等多种开发语言,让您快速、高效地进行物联网开发。

  1. 以win10为例,获取电脑的系统配置:在运行窗口中输入pc,然后单击“属性”,查看系统配置,因为后续安装软件要选择操作系统。

    图3 获取系统配置

  2. 访问 这里 ,根据您电脑系统配置,下载匹配的Visual Studio Code并安装。(本文以windows 10 64-bit系统Visual Studio Code为例。请下载1.49版本,其他版本不支持IoT Link)。

    图4 下载Visual Studio Code

    注:Visual Studio Code不支持苹果Mac系统。

  3. 安装成功后,打开VSCode 插件应用商店,搜索 IoT Link 找到IoT Link,然后单击安装。
  4. 首次启动配置。

    IoT Link Studio 首次启动时会自动从网络下载最新的SDK包以及gcc依赖环境,请确保您的网络可用。安装过程中请不要关闭窗口,耐心等待。安装完成后重启VSCode使插件生效。

    若您的网络需要配置代理,请在VSCode主页,选择左下角-设置-应用程序-代理服务器,在Proxy Support下拉框中选择“on”

  5. 假如下载SDK包及gcc依赖环境失败,请手动下载SDK包,放到C:\Users\${用户名}\.iotlink\sdk目录下,文件名修改为IoT_LINK。放置完后,重新打开VSCode即可。目录格式如下图:

配置IoT link Studio工程

  1. 单击VSCode底部工具栏的“Home”。

    • Home:管理IoT Link工程;
    • Serial:输入AT指令检查开发板状态;
    • Build:编译示例代码(步骤3后可见);
    • Download:把编译后的代码烧录到MCU(步骤3后可见)。

  2. 配置交叉编译工具链。在弹出界面中单击“IoT Link设置”,选择工具链,若GCC工具目录或文件不存在,单击下载安装

    小熊派STM32431下载的编译工具链版本为win32.zip。

  3. 在弹出界面中单击“创建 IoT 工程”,输入工程名称,工程目录,并选择开发板的硬件平台和示例工程模板。

    • 工程名称:自定义,如Smoke。
    • 工程目录:可以使用工具安装的默认路径,也可以选择系统盘以外的其他盘,如D:\。
    • 硬件平台:当前提供的demo只适配STM32L431_BearPI硬件平台,请选择STM32L431_BearPI。
    • 示例工程:本示例中,我们以智慧烟感为例,请选择oc_smoke_template demo,否则烧录的demo样例和在控制台定义的产品模型不匹配,无法上报数据。单击“确定”,导入完成。

  4. 单击“确定”,导入完成。

编译并烧录代码

由于提供的demo样例中已配置好和华为云物联网平台的对接信息,您可以直接编译(代码不用做任何修改),并烧录到小熊派开发板MCU,节省开发时间。

  1. 单击VSCode底部工具栏的“Build”,等待系统编译完成。编译成功后,界面显示“编译成功”

  2. 使用USB数据线,将小熊派开发与电脑连接,开发板右上角的拨测开关拨到右侧“AT-MCU模式”
  3. 单击VSCode底部工具栏的“Download”,等待系统烧录完成。烧录成功后,界面显示“烧录成功”

    如果显示烧录失败,可能是开发板没有驱动导致与电脑无法串口通信,请参考2检查ST-Link驱动是否安装成功,如果驱动未安装,则参考这里下载并安装ST-Link驱动。

  4. (可选)安装ST-Link驱动。

    1. 访问ST官网,下载ST-Link驱动,双击stlink_winusb_install.bat文件进行自动安装。(本文以Windows10-64bit ST-Link 2.0.1为例)。

      注:您也可以使用适配您系统版本的exe文件进行安装。

    2. 打开PC设备管理器可查看对应的驱动是否安装成功。若下图所示,表明驱动安装成功。

创建产品

某一类具有相同能力或特征的设备的集合称为一款产品。除了设备实体,产品还包含该类设备在物联网能力建设中产生的产品信息、产品模型(Product Model)、插件等资源。

  1. 登录管理控制台,选择您的实例,单击实例卡片进入。单击左侧导航栏“产品”,单击页面左侧的“创建产品”

    图5 产品-创建产品

  2. 创建一个协议类型为LwM2M/CoAP协议、设备类型为SmokeSensors的产品,参考页面提示填写参数后,单击“确定”

    图6 创建产品-CoAP

定义产品模型

在产品详情,“基本信息”页面,单击“自定义模型”,配置产品的服务。具体创建方法可见:

产品模型设计思路:

表1 设备服务列表

服务类型(ServiceID)

服务描述

Smoke

实时检测烟雾状况

服务能力如表2表3所示。

表2 Smoke

能力描述

属性名称

数据类型

数据范围

属性列表

Smoke value

int

0 ~ 65535

表3 Smoke命令列表

能力描述

命令名称

命令字段

字段名称

类型

数据长度

枚举

命令列表

Smoke control beep

下发命令

beep

string

3

ON、OFF

响应命令

beep_state

int

/

/

新增服务类型Smoke
  1. 进入“添加服务”页面,填写“服务ID”“服务类型”“服务描述”,单击“确定”。
    • “服务ID”:Smoke
    • “服务类型”:建议和服务ID保持一致
    • “服务描述”:实时检测烟雾状况
    图7 添加服务-Smoke
  2. 在“Smoke”的下拉菜单下单击“添加属性”,填写相关信息,单击“确定”。
    • 属性名称:Smoke_Value
    • “数据类型”:int(整型)
    • “访问权限”:可读、可写
    • “取值范围”:0~65535
    • “步长”:0
    • “单位”:不填写
    图8 新增属性-Smoke_value
  3. 在“Smoke”的下拉菜单下单击“添加命令”,填写命令名称“Smoke_Control_Beep”
    图9 新增命令-Smoke_Control_Beep
  4. 在“新增命令”弹框,分别单击“新增输入参数”“新增响应参数”,填写相关信息后,单击“确定”。
    图10 新增命令参数-Beep
    图11 新增命令参数-Beep_State

注册设备

本文介绍集成NB模组设备的注册方法。

  1. 在产品详情页面,选择“在线调试”,单击“新增测试设备”,此处新增的是非安全的NB-IoT设备。
  2. 在新增测试设备页面,选择“真实设备”,完成设备参数的填写后,单击“确定”

    图12 在线调试-新增测试设备
    • 设备名称:自定义。
    • 设备标识码:设备的IMEI号,用于设备在接入物联网平台时携带该标识信息完成接入鉴权,可在NB模组上查看。您也可以将拨测开关拨到AT-PC模式,选择STM的端口,波特率设置为9600,输入指令“AT+CGSN=1”获取IMEI号。

      注:获取IMEI注册完设备后,需要将开发板的拨测开关拨到“AT-MCU”模式,因为开发板在MCU模式下才会通过NB卡连接网络。

    • 设备注册方式:不加密。

  3. 设备创建成功,可在页面看到创建的设备。

数据上报

平台和开发板建立连接后,上报烟雾浓度值。

  1. 登录设备接入服务控制台,选择您的实例,单击实例卡片进入。选择 设备 > 所有设备
  2. 选择注册的设备,单击“详情”进入设备详情,查看上报到平台的数据。

    图13 NB设备数据上报-查看数据Smoke

命令下发

  1. 登录设备接入服务控制台,选择您的实例,单击实例卡片进入。选择创建的产品,单击产品进入产品详情页。
  2. 选择“在线调试”,单击设备对应的“调试”进入调试页面。
  3. 设置命令参数后,单击“发送”。

    图14 命令下发调试-Smoke

(可选)配置设备联动规则

  1. 选择左侧导航栏的规则 > 设备联动,单击“创建规则”
  2. 参考下表参数说明,创建设备联动规则。

    图15 新建联动规则-Smoke_Beep

    参数名称

    说明

    规则名称

    创建的规则名称,例如“Smoke_Beep”。

    激活规则

    勾选“激活规则”

    生效时间

    选择“一直生效”。

    描述

    对该规则的描述,如“烟雾浓度高于600时蜂鸣器鸣叫”。

    触发条件

    1. 单击“添加条件”;
    2. 在下拉框中选择“设备属性触发”,选择注册设备中添加的设备;
    3. “服务类型”选择“smoke”,“属性”选择“Smoke_Value”,“操作”选择“>”,“值”填写“600”,单击“触发机制”,“触发策略”选择“重复抑制”,数据时效”填写“300”,然后单击“确认”。

    执行动作

    1. 单击“添加动作;
    2. “动作类型”选择“下发命令”,下发设备选择注册设备创建的设备;
    3. “服务类型”选择“smoke”,“命令”选择“Smoke_Control_Beep”,单击“参数配置”,“Beap”的值选择“ON”,然后单击“确认”。

(可选)验证操作

将降温剂喷在烟雾传感器周围,模拟烟雾浓度。当烟雾浓度大于600时,蜂鸣器鸣叫。

使用AT指令定位模组通信问题

IoT Link在与物联网平台连接使用时,可使用AT指令快速定位模组与云端连通性问题,提高开发效率。本节将以“小熊派开发板”为例,介绍如何使用AT指令检测通信模组常见问题,如设备无法上线,数据上报不成功等。

  1. 小熊派开发板和电脑已正常连接(确保驱动已安装),并将开发板右上角的拨测开关切换到AT-PC模式。
  2. 单击VSCode底部工具栏的“Serial”。

  3. 选择4.b中查看的端口号,波特率设置为9600,然后单击“打开”。

  4. 输入“AT+CGATT?”,然后单击“发送”,若返回“+CGATT:1”,表示网络附着成功(附着成功代表NB-IoT联网正常),返回“+CGATT:0”表示网络附着失败(附着失败代表NB-IoT联网异常),请查看SIM卡是否插入正确,或联系运营商检查网络状态。

    使用AT指令检测完模组通信后,请将拨测开关拨到AT-MCU模式,以便完成控制台的开发后,将采集到的传感器数据通过通信模组发送到平台。

    PC模式是开发板与电脑串口通信,AT指令读写开发板的状态等数据;MCU模式是开发板通过模组上插的SIM连接网络,实现NB-IoT通信。