本文首发于DF创客社区,作者:不脱发的程序猿
项目背景
每当夜幕降临,城市中各种各样、色彩缤纷的路灯亮起,为城市披上了一层绚丽的外衣。但在这绚丽的外表下则隐藏着巨大缺点:
1)能源浪费:由于城市的夜晚进入后半夜后,人们已经开始休息,街上人流量开始减少,有些地段在特殊时段根本不需要过多的路灯照明,导致能源浪费,增加了不必要的成本;
2)维护困难:由于使用人工巡检,需要大量人力,而路灯数量庞大,路灯实时状态不能及时获取,导致路灯故障维护、排查效率极低。
需求分析
路灯管理平台的建设,是智慧城市的一个重要组成部分,不仅能够实现城市及市政服务能力提升,也是智慧城市的一个重要入口,可促进“智慧市政”和“智慧城市”在城市照明业务方面的落地。以往在路灯管理上存在着很多问题,例如路灯开关、巡查、维护基本靠人力,重点地段晚上需要派人巡视,以保证设备的齐备率;路灯发生故障时,检修人员无法确定路灯精确位置;管理人员对路灯无法进行分时段控制、无法监控路灯整体状态;路灯保持常亮状态效率低、不节能。针对以上问题,本系统设计的智慧路灯监控系统结构图如下所示:
具体功能如下:
1)路灯节点支持自定义控制方式,可支持自定义时间控制策略和多样化控制(两侧路灯全亮、全关、隔杆高亮等)两种方式。
2)根据所在环境光照强度,自动调节路灯亮度,低功耗节能减排。
3)断电保护,电压电流超过安全阈值,路灯自动断电。
4)路灯故障自动报警,GPS精确定位,可从手机APP、微信小程序、PC端和Web平台可视化监控路灯信息,随时可调取任何一处路灯信息。
5)实时采集路灯节点工作状态、电压、电流、功率、功率因数、耗电量、产生二氧化碳、频率、环境光照度和路灯状态数据,实现统计分析和历史查询。
6)根据路灯节点历史数据,使用机器学习算法,分析路灯使用状况,构建精准城市路灯画像。
总之,基于NB-IoT技术的城市道路智慧路灯监控系统有着广阔的前景和宽广的需求。
功能设计
基于NB-IoT技术的城市道路智慧路灯监控系统,在每个照明节点上安装一个集成了NB-IoT模组的单灯控制器,单灯控制器再经运营商的网络,与路灯控制平台实现双向通信,路灯控制平台直接对每个灯进行控制,包括开关灯控制、光照检测、自动调节明暗、电耗分析等操作。智慧路灯实物图如下所示:
与传统“两跳”方案不同,基于NB-IoT技术的解决方案不需要网关,每个NB-IoT路灯控制器直接接入运营商的NB-IoT网络,即可与控制平台通信,如下图所示。
基于NB-IoT技术的城市道路智能路灯监控系统包括感知层、网络层和应用层。
感知层由单独的路灯控制模块和NB-IoT终端构成。道路上的每个路灯都安装1个路灯控制模块,路灯控制模块管理路灯的开关、负责数据信息的采集和监控路灯的运行状态,它通过NB-IoT网络与NB-IoT终端进行无线通信;NB-IoT终端将路灯控制模块采集的数据信息上传到NB-IoT基站,将应用层中的手机或监控中心的管理命令下达到路灯控制模块,对感知层的路灯进行管理和监控,使用AI技术赋能,构建精准城市路灯使用状况画像分析。网路层由NB-IoT基站和Internet网络构成。Internet网络主要应用4G的LTE平台,将感知层的数据信息实时地传送到应用层,同时将应用层的控制命令传送到感知层。智能路灯监控系统网络架构如下图所示。
本系统设计方案具有以下优势:
1)对路灯的控制上,采用分时段的3种控制策略,可以实现分时间段控制道路两侧路灯全亮模式、自动调整模式(根据环境光照强弱或电压电流阈值)、终端联控模式,在满足照度需求的情况下,实现对电能的节省。
2)通信方式所采用的是中国电信的NB-IoT网络,拓扑简单、部署成本低,NB-IoT采用DRX模式,实现终端的实时在线,这种通信方式更适合静止的和低移动性且需要下发指令的场景。
3)利用GPS地理信息管理系统,可以在手机APP、微信小程序PC应用和Web平台界面上直观定位每个路灯的位置,便于维修人员确定故障路灯地址、及时维修。
4)高精度数据采集与通信技术,可采集路灯节点工作状态、电压、电流、功率、功率因数、耗电量、产生二氧化碳、频率、环境光照度和路灯状态数据,数据精度达到小数点后两位。
5)智能化设计,使用机器学习算法,实现对路灯使用状态的分析和评估。
本项目目前已经完全实现,演示视频如下所示:
基于NB-IoT的智慧路灯监控系统(设备选型)
基于NB-IoT的智慧路灯监管系统在感知层可实现实时采集路灯节点的工作状态(亮灭状态)、电压、电流、功率、功率因数、耗电量、产生二氧化碳、频率、环境光照度、路灯亮度、路灯故障地理位置11种传感数据信息。
路灯控制终端节点主要由主控制器、NB-IoT无线通信模块、GPS模块、光强检测模块、电能检测模块以及输出控制模块组成,路灯控制节点模块硬件实物如下图所示:
1、主控制器
主控制器选用STM32L432KC超低功耗单片机作为微控制器,NUCLEO-L432KC 开发板是首个集成一款QFN32微型封装微控制器的Nucleo-32开发板,板载一颗STM32L432KCU6 微控制器(UFQFPN32),允许用户直接使用ARM在线开发工具,板载Arduino Nano针脚布局可简化功能扩展,集成的ST-Link调试器/编程器支持大容量存储器和无探针调试,可以完全满足智慧路灯节点数据处理的基本要求。
2、NB-IoT无线通信模块和GPS模块
NB-IoT通信模块采用功耗极低的上海移远BC20通信模组,以及SIM卡座、串口电路、滤波天线、复位电路组成,由电源模块供电。BC20支持GNSS,内置GNSS模块,支持GPS定位,北斗双模定位,实现卫星对路灯节点定位,极大方便用户使用。本模块接收来自主控制器的路灯实时状态、路灯节点功耗传感数据以及模块获取的GPS数据等信息,通过Internet将数据发送给华为IoT云平台,并接收用户通过Intemet发送来的控制命令。
3、光照检测模块
光强检测模块利用光照模块检测外界光照强度,并将信号通过ADC方式传入主控制器,根据环境光照强弱自动调节路灯节点亮度。
5、电能检测模块
电能检测模块采用UART接口和RS485接口,支持与PLC通信,刷新速度500MS,可读取电压、电流、功率、电能和频率因数参数通过RS485或UART口输出16进制数据。设计有继电器模块,结合路灯节点耗能情况和阈值报警,用户设置多种模式(分时间段控制道路两侧路灯全亮模式、自动调整模式、隔杆亮灯模式和深夜模式)实现路灯智能管理。
电能检测模块采用UART接口和RS485接口,支持与PLC通信,刷新速度500MS,可读取电压、电流、功率、电能和频率因数参数通过RS485或UART口输出16进制数据。模块设计有继电器模块,结合路灯节点耗能情况和阈值报警,用户自定义设置多种模式(例如:分时间段控制道路两侧路灯全亮模式、自动调整模式、隔杆亮灯模式、深夜模式等)实现路灯智能管理。
基于NB-IoT的智慧路灯监控系统(硬件开发)
本节将进行嵌入式硬件编程开发,通过电能检测模块实现实时采集路灯节点电压、电流、功率、总耗电量、功率因子、路灯开关状态、耗能产生二氧化碳、光照度、路灯亮度、环境光照度、GPS位置11种传感数据,通过NB-IoT模组实现对华为云物联网平台数据上传及下发获取,达到联动控制效果。
1、开发软件
嵌入式硬件开发使用STM32CubeMX和Keil5实现,STM32CubeMX搭建NUCLEO-L432KC开发板GPIO底层配置,Keil5实现NUCLEO-L432KC开发板编程开发。
STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,也是配置和初始化 C 代码生成器(STM32 configuration and initialization C code generation),也就是自动生成开发初期关于芯片相关的一些初始化代码。STM32CubeMX 包含了 STM32 所有系列的芯片,包含示例和样本(Examples and demos)、中间组件(Middleware Components)、硬件抽象层(Hardwaree abstraction layer)。
STM32CubeMX简介、下载及安装参见:https://blog.csdn.net/m0_38106923/article/details/89458297
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
Keil5简介、下载、安装及破解参见:https://blog.csdn.net/m0_38106923/article/details/89492257
2、STM32CubeMX底层环境搭建
使用STM32CubeMX搭建NUCLEO-L432KC开发板GPIO底层配置,主要配置微控制器晶振、定时器、PWM接口、UART1、UART2、ADC接口和LED状态指示灯接口,具体实现如下:
3、Keil5编写控制模块实现代码
在Keil5开发环境中需要编写硬件基础底层配置功能、电能电耗检测功能、GPS定位功能、环境光照检测功能、NB-IoT模组通信功能和云端交互功能。
NB-IoT模组配置实现代码可至原文查看:
更多点击链接查看:基于NB-IoT的智慧路灯监控系统(硬件开发)
基于NB-IoT的智慧路灯监控系统(云端部署及训练)
物联网平台包括数据管理、设备管理和运营管理等能力,可以实现统一安全的网络接入、各种终端的灵活适配、海量数据的采集分析,从而实现新价值的创造。物联网平台向各行业提供强大的API开放能力,支撑各行业伙伴快速实现各种物联网业务应用,满足各行业客户的个性化业务需求;同时,物联网平台支持无线、有线等多种接入方式,可以实现海量化、多样化的设备接入。
本系统采用华为的OceanConnect物联网联接管理平台,OceanConnect是华为云核心网推出的以IoT联接管理平台为核心的IoT生态圈。该平台具有丰富的协议适配能力,支持海量多样化终端设备接人,而且还提供数据存储、数据显示、数据分析、历史查询等功能。
硬件设备接入华为云物联网平台,具体操作可参见:NB-IoT使用CoAP协议接入华为IoT平台、NB-IoT BC20模组使用LWM2M协议接入华为IoT平台
本博文将简要介绍NB-IoT智慧路灯系统云端部署和机器学习训练模型云端搭建的实现过程。
1、华为云端部署
第一步:定义Profile
第二步:编解码插件开发
第三步:设备连接后在线测调,查看数据是否正确。
2、华为云端Web开发
通过拖控件方式开发独具特色和风格的Web应用,这里我原配置基础上增加设备状态功能、传感器监控功能和规则功能三个界面。
设备状态功能如下所示:
传感器监控功能如下所示:
规则功能如下所示:
3、机器学习训练模型云端搭建
基于NB-IoT的智慧路灯监控系统(PC应用开发)
作为IoT云平台的数据交互PC客户端,对平台的数据进行展示,实现本地与远程终端的数据交互,进而展现出依赖云平台的应用使用的具体场景,进一步展现云品台的优势。
1、项目结构
整个使用常规的传统的三层架构,同时引入MVVM架构模式,属于混合型架构设计,将各个层次之间实现理论解耦,提高了系统各个层次之间的独立性和可拓展性。
结构说明如下:
HandyC.HW:项目实际入口,表现层,实际用户操作逻辑的输入输出部分。
HandyC.HW.ViewModels:与表现层与之对应的视图实体类部分,对用户交互逻辑的主要实现处理模块,同时在该项目中进行相关数据实体和视图实体的相互转换工作。
HandyC.HW.Data:用于处理来自于IoT平台的数据源,为业务层提供需求的数据结果。
HandyC.HW.Service:项目的实际业务逻辑处理,组织数据层提供的数据。
HandyC.HW.Tools:项目整体结构中需要使用到的基础辅助类集合,包括网络请求相关类,缓存,数据序列化和反序列化,特殊数据格式处理等。
对应测试项目与之对应,前缀为Test.*,此处忽略
2、系统组织架构
系统组织架构分为两个大的功能模块,平台监管以及数据采集两个模块,平台监管主要是对设备实时动态进行监管,数据采集,处理来自IOT云平台的历史相关数据并展示。
3、使用技术
- 网络通信相关技术(数据接口请求)
- WPF(UI框架)
- MvvmLight(MVVM框架)
- 依赖注入
- 简单缓存
- LiveCharts(图标框架)
- HandyControl(WPF组件框架)
- 非对称双向认证(Https)
- AutoMapper(DTO转换框架)
4、开发环境与工具
- 开发环境:Windows7 sp1、.Net Framework 4.7.2
- 开发语言:C#
- 开发工具:MicrosoftVisual Studio professional 2019(VS 2019)
5、功能介绍
设备管理页面的主页面,红框区域内为设备统计,包含了对当前设备的设备类型、设备状态、设备的协议类型的相关统计信息,属于设备总体的一个统计信息。设备列表中展示的是当前的存在的设备,以卡片的方式展示出来,包括设备的名称、设备的型号、设备的编号等预览。
显示设备的详细信息。
设备的实时数据显示页面,能够动态实时请求道IoT平台上的设备下发的最近历史信息。
云平台联动主页中的卡片为一卡片一设备,点击设备卡片,可以对设备进行联动模式控制,可支持三种联动模式,终端联控模式、自动调光模式和分段定时模式。
默认手动模式,可以通过手动直接下发指令到IoT平台,通过平台将命令通知对应的设备执行,点击控制按钮进行云平台挂载设备的开启和关闭。
用户可以通过点击切换至定时模式,设定时间后,将点击发送定时设备,等待设定的命令发送至IoT平台。
命令下发成功是接收到的反馈信息。
自动模式与手动模式的操作类似,用户通过开启和关闭实现对IoT平台上挂载的设备的执行模式的设定,关闭时,设备默认执行,为上一次的模式运行状态,开启时,变更为根据实际的自动条件进行自身状态的控制。
设备历史数据显示页面,主要功能为查询功能,用于显示从IoT平台获取到的当前设备对应的历史记录信息,可通过查询条件进行更加细致数据查找。
点击每条记录的操作列按钮,能够获取到该条记录的详细信息。
下图的页面为命令历史数据的主页面,默认显示第一个设备的相关历史数据,能够查询到多端给设备发送的相关命令指令历史信息。
通过点击每条记录末尾的数据明细,可以查看到当前命令记录的具体信息。
6、核心代码
PC端主要分为两个部分,一个是通过https请求双向认证获取到来自于IoT平台提供的相关Api接口的目标数据,将数据进行处理根据View的需求进行相关的ViewModel处理之后展示到页面中;一个是需要PC端与IoT平台上的挂载设备进行数据交互时,实现本地命令的发送,进而间接控制设备的数据响应。
鉴定权限代码至原文查看:基于NB-IoT的智慧路灯监控系统(PC应用开发)
基于NB-IoT的智慧路灯监控系统(手机应用开发)
通过与华为云平台进行数据对接及联动控制,为此开发智慧路灯APP控制系统。
1、系统总体描述
本系统共分为九个模块:系统导航、用户登录、扫码绑定、设备定位、设备状态、历史查询、设备控制、画像分析和系统设置。每个模块对应其各自的功能,通过设备的定位、设备的实时状态及设备控制能够全方位监控路灯的耗能量及使用情况。画像分析也可对某地方或某用户进行大数据AI分析得到监测数据,并且能够实时向用户推送用电情况,并为其用户进行合理的用电安排及方案。
2、使用技术
2.1、基础技术
- 系统总体使用java语言进行开发;
- 在界面设计及展示部分使用HTML搭配CSS技术使其界面美观大方;
- 框架设计使用MVP模式进行设计使其系统结构清晰明了;
- 数据对接使用HTTP和OkHttp3协议,大大降低数据处理难度;且提高了数据的完整性和实时性。
2.2、核心技术
- 登录界面使用视屏背景技术将登录界面进行高度美化;
- 在设备定位模块中使用第三方高德地图SDK进行开发;
- 在云平台对接时使用华为云平台相关模块接口进行开发;
- 使用Clendar相关类进行日期选择设计;
- 使用Zxing二维码扫描分析技术进行扫码分析;
- 使用Echart技术进行数据实时显示图表分析;
- 在画像分析模块使用AI大数据分析获取数据实例。
2.3技术亮点
- 对第三方技术的合理运用;
- 对MVP开发框架的组合设计;
- 对API接口的清晰掌握;
- 对各种相关工具类的开发及调用;
- 结合大数据AI分析进行功能设计。
3、开发软件
- 系统环境:Windows 10
- 开发环境:Android Studio 3.0,JDK 8.0
- 运行环境:Android 5.0级以上
- 接口测试软件:Postman 6.5版本
- 控制软件:Git
- 打包发布软件:Android Studio (Generate Signed APK)
- 软件签名:iot_project.jks
4、功能概述
4.1、系统导航
首次进入APP当进入导航界面,导航界面中介绍APP的Logo、简单描述、路灯模型、路灯功能分类及路灯运行方式。
4.2、用户登录
用户登录界面使用视屏作为页面背景,通过输入用户名及密码进行系统登录。系统的用户名及密码在系统后台统一进行注册。
4.3、扫码绑定
用户登录成功后将自动跳转至扫码界面,跳转界面后会对该移动设备进行权限访问,用户需要同意所有权限才能正常使用该系统。授权后进行二维码扫描。此时需要对路灯上的二维码进行扫码,通过扫码得到该路灯的设备信息,从而在主界面中可查看该路灯的其他信息。
4.4、设备定位
此模块中将对该扫描设备进行设备定位,观察其设备所在的具体位置,并能够查看当前地方的天气环境。此处的设计也是为后来的管理方便,对每一个路灯设备能够全方位的进行查看。
4.5、设备状态
此模块将对所在设备的所有信息进行实时查看,有电压、电流、功率、功率因子、总耗电量、光照度、路灯开光状态及路灯耗能所产生的二氧化碳量。
4.6、历史查询
此模块是对该路灯所有数据的历史查询,通过对历史数据的查询可分析出该设备在本周、本月及本年的所有用电量情况。这样就能够合理的对路灯用电量进行管理。
4.7、设备控制
此模块是对路灯的远程控制,共分为三个模式分别为:终端联控模式、分段定时模式及自动调光模式。三种模式分别对应三种不同的路灯控制,可远程也可自动,充分达到了用电量的控制。
4.8、画像分析
此模块涉及了大数据AI分析功能,将华为云机器学习服务分析的数据结果下发至该系统,系统对其数据进行图文的可视化展示,清晰的可以查看到城市区域日常用电情况及地方用电情况(由于数据量较少,所以设计的是本人七月份的个人用电画像)。
4.9、系统设置
系统设置功能共分为以下几点:系统设置、修改密码、关于我们、系统更新及退出登录。
5、核心代码
数据获取核心代码至原文查看:基于NB-IoT的智慧路灯监控系统(手机应用开发)