网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务
文档首页/ 设备接入 IoTDA/ 最佳实践/ 设备接入/ 基于NB-IoT小熊派开发智慧路灯

基于NB-IoT小熊派开发智慧路灯

更新时间:2024-12-30 GMT+08:00
分享

场景说明

智慧路灯是城市智能化道路上重要一环,智慧路灯的实施具有节约公共照明能耗、减少因照明引起的交通事故等多种社会意义。路灯也是大家在日常生活中可以强烈感知到的公共设施,更易理解其智能化的场景。

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

开发环境

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

整体流程

智慧路灯案例的端到端整体流程如下图所示。

该场景主要描述的是设备可以通过LWM2M协议(NB卡)与物联网平台进行交互,应用侧可以查看设备侧属性变化,也可以给设备侧下发命令。

小熊派开发板简介

开发板在物联网系统架构中属于感知设备,该类设备通常由传感器、通信模组、芯片以及操作系统组成。为增加开发板的可扩展性,小熊派开发板没有采用传统的板载设计,而是使用了可更换传感器扩展板以及可更换通信模组扩展板设计,通信模组是数据传输的出入口,常用的通信模组包括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,然后单击安装。

    图5 安装

  4. 首次启动配置。

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

    说明:

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

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

    图6 SDK下载失败
    图7 SDK存放目录

配置IoT link Studio工程

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

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

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

    图8 IoT Link设置
    图9 交叉编译工具链
    说明:

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

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

    • 工程名称:自定义,如QuickStart。
    • 工程目录:可以使用工具安装的默认路径,也可以选择系统盘以外的其他盘,如D:\。
    • 硬件平台:当前提供的demo只适配STM32L431_BearPI硬件平台,请选择STM32L431_BearPI。
    • 示例工程:本示例中,我们以智慧路灯为例,请选择oc_streetlight_template,否则烧录的demo样例和在控制台定义的产品模型不匹配,无法上报数据。如果您需要适配智慧烟感等其他场景,请选择对应的oc_smoke_template 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设备管理器可查看对应的驱动是否安装成功。若下图所示,表明驱动安装成功。

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

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

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

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

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

    说明:

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

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

  5. “AT+CSQ<CR>”指令用于检查网络信号强度和SIM卡情况。输入“AT+CSQ<CR>”,然后单击“发送”,返回 “+CSQ:**,##” 。其中**应在 10 到 31 之间,数值越大表明信号质量越好,##为误码率,值在 0 到 99 之间。若返回的值不在这个范围,应检查天线或 SIM 卡是否正确安装。

注:本文仅列举两个通用的AT指令,用于检测模组的网络状况。更多AT指令,您可以参考小熊派模组的说明书,进行调测。

控制台操作概览

在完成实体设备硬件连接和代码编译烧录之后,我们需要在设备接入服务控制台创建产品、定义产品模型、开发编解码插件和注册设备。

  • 创建产品:在物联网平台上规定好某一款产品的协议类型、数据格式、厂商名称、设备类型。此处我们需要按照智慧路灯的特征,在控制台创建智慧路灯的产品。
  • 定义产品模型:产品模型是用来描述设备能力的文件,通过JSON的格式定义了设备的基本属性、上报数据和下发命令的消息格式。定义产品模型,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的属性信息。此处,我们需要在控制台上,定义开关灯控制、光照强度、信号质量等。
  • 编解插件开发:编解码插件是供物联网平台调用,完成二进制格式和JSON格式相互转换的。它将设备上报的二进制数据解码为JSON格式供应用服务器“阅读”,将应用服务器下行的JSON格式命令编码为二进制格式数据供终端设备(UE)“理解执行”。智慧路灯的数据格式是二进制,因此我们需要开发编解码插件,让物联网能够理解智慧路灯上报的数据,智慧路灯也能理解物联网平台下发的命令。
  • 注册设备:将小熊派智慧路灯注册到物联网平台。

创建产品

某一类具有相同能力或特征的设备的集合称为一款产品。除了设备实体,产品还包含该类设备在物联网能力建设中产生的产品信息、产品模型(Product Model)、编解码插件等资源。下面,我们按照小熊派智慧路灯的基本特征,在控制台上创建智慧路灯产品。

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

    图10 产品-创建产品

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

    图11 创建产品-CoAP

上传产品模型

产品模型是用来描述设备能力的文件,通过JSON的格式定义了设备的基本属性、上报数据和下发命令的消息格式。定义产品模型,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备的功能。我们已提供开发好的产品模型,帮助您快速体验上云流程,如果您想体验产品模型的开发流程,可参考开发产品模型

操作步骤

  1. 找到新增的产品,单击产品进入产品界面。
  2. 在产品详情“基本信息”页面,单击“上传模型文件”。

    图12 上传产品模型-CoAP

  3. 在弹出的页面中,上传提供的产品模型(本示例的产品模型),然后单击“确定”。

    图13 上传模型文件-CoAP

注册设备

本文介绍集成NB模组设备的注册方法,将小熊派智慧路灯在物联网平台注册。

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

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

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

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

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

数据上报

平台和开发板建立连接后,根据烧录至开发板的代码,小熊派智慧路灯每隔2秒(上报频率可根据业务需要在demo中自行设置)上报光照传感器数据。您可以通过用手遮挡光线改变光照强度,查看设备上报给平台的光照强度数据的实时变化。

注:先检查确认开发板的拨测开关是“AT-MCU”模式

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

    图15 NB设备数据上报-查看数据

命令下发

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

    图16 命令下发调试-SmokeDetector

  4. 小熊派板子灯被点亮,下发OFF命令后,灯熄灭。

至此,基于NB-IoT小熊派开发智慧路灯的最佳实践,端到端流程就全部体验完成了。

更多参考

  • 开发产品模型

    在产品详情“基本信息”页面,单击“自定义模型”,配置产品的服务。

    产品模型设计思路:

    表1 设备服务列表

    服务类型(ServiceID)

    服务描述

    Button

    实时按键检测

    LED

    LED灯控制

    Sensor

    实时检测光照强度

    Connectivity

    实时检测信号质量

    服务能力如下表所示。

    表2 Button

    能力描述

    属性名称

    数据类型

    数据范围

    属性列表

    toggle

    int

    0 ~ 65535

    表3 LED命令列表

    能力描述

    命令名称

    命令字段

    字段名称

    类型

    数据长度

    枚举

    命令列表

    Set_LED

    下发命令

    LED

    string

    3

    ON、OFF

    响应命令

    Light_state

    string

    3

    ON、OFF

    表4 Sensor

    能力描述

    属性名称

    数据类型

    数据范围

    属性列表

    luminance

    int

    0 ~ 65535

    表5 Connectivity

    能力描述

    属性名称

    数据类型

    数据范围

    属性列表

    SignalPower

    int

    -140 ~ -44

    ECL

    int

    0 ~ 2

    SNR

    int

    -20 ~ 30

    CellID

    int

    0 ~ 65535

提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容