本文首發(fā)于DF創(chuàng)客社區(qū),作者:不脫發(fā)的程序猿
【腦洞大賽】基于NB-IoT的智慧路燈監(jiān)控系統(tǒng)(項目簡介)
項目背景
每當夜幕降臨,城市中各種各樣、色彩繽紛的路燈亮起,為城市披上了一層絢麗的外衣。但在這絢麗的外表下則隱藏著巨大缺點:
1)能源浪費:由于城市的夜晚進入后半夜后,人們已經開始休息,街上人流量開始減少,有些地段在特殊時段根本不需要過多的路燈照明,導致能源浪費,增加了不必要的成本;
2)維護困難:由于使用人工巡檢,需要大量人力,而路燈數量龐大,路燈實時狀態(tài)不能及時獲取,導致路燈故障維護、排查效率極低。
需求分析
路燈管理平臺的建設,是智慧城市的一個重要組成部分,不僅能夠實現城市及市政服務能力提升,也是智慧城市的一個重要入口,可促進“智慧市政”和“智慧城市”在城市照明業(yè)務方面的落地。以往在路燈管理上存在著很多問題,例如路燈開關、巡查、維護基本靠人力,重點地段晚上需要派人巡視,以保證設備的齊備率;路燈發(fā)生故障時,檢修人員無法確定路燈精確位置;管理人員對路燈無法進行分時段控制、無法監(jiān)控路燈整體狀態(tài);路燈保持常亮狀態(tài)效率低、不節(jié)能。針對以上問題,本系統(tǒng)設計的智慧路燈監(jiān)控系統(tǒng)結構圖如下所示:
具體功能如下:
1)路燈節(jié)點支持自定義控制方式,可支持自定義時間控制策略和多樣化控制(兩側路燈全亮、全關、隔桿高亮等)兩種方式。
2)根據所在環(huán)境光照強度,自動調節(jié)路燈亮度,低功耗節(jié)能減排。
3)斷電保護,電壓電流超過安全閾值,路燈自動斷電。
4)路燈故障自動報警,GPS精確定位,可從手機APP、微信小程序、PC端和Web平臺可視化監(jiān)控路燈信息,隨時可調取任何一處路燈信息。
5)實時采集路燈節(jié)點工作狀態(tài)、電壓、電流、功率、功率因數、耗電量、產生二氧化碳、頻率、環(huán)境光照度和路燈狀態(tài)數據,實現統(tǒng)計分析和歷史查詢。
6)根據路燈節(jié)點歷史數據,使用機器學習算法,分析路燈使用狀況,構建精準城市路燈畫像。
總之,基于NB-IoT技術的城市道路智慧路燈監(jiān)控系統(tǒng)有著廣闊的前景和寬廣的需求。
功能設計
基于NB-IoT技術的城市道路智慧路燈監(jiān)控系統(tǒng),在每個照明節(jié)點上安裝一個集成了NB-IoT模組的單燈控制器,單燈控制器再經運營商的網絡,與路燈控制平臺實現雙向通信,路燈控制平臺直接對每個燈進行控制,包括開關燈控制、光照檢測、自動調節(jié)明暗、電耗分析等操作。智慧路燈實物圖如下所示:
與傳統(tǒng)“兩跳”方案不同,基于NB-IoT技術的解決方案不需要網關,每個NB-IoT路燈控制器直接接入運營商的NB-IoT網絡,即可與控制平臺通信,如下圖所示。
基于NB-IoT技術的城市道路智能路燈監(jiān)控系統(tǒng)包括感知層、網絡層和應用層。
感知層由單獨的路燈控制模塊和NB-IoT終端構成。道路上的每個路燈都安裝1個路燈控制模塊,路燈控制模塊管理路燈的開關、負責數據信息的采集和監(jiān)控路燈的運行狀態(tài),它通過NB-IoT網絡與NB-IoT終端進行無線通信;NB-IoT終端將路燈控制模塊采集的數據信息上傳到NB-IoT基站,將應用層中的手機或監(jiān)控中心的管理命令下達到路燈控制模塊,對感知層的路燈進行管理和監(jiān)控,使用AI技術賦能,構建精準城市路燈使用狀況畫像分析。網路層由NB-IoT基站和Internet網絡構成。Internet網絡主要應用4G的LTE平臺,將感知層的數據信息實時地傳送到應用層,同時將應用層的控制命令傳送到感知層。智能路燈監(jiān)控系統(tǒng)網絡架構如下圖所示。
本系統(tǒng)設計方案具有以下優(yōu)勢:
1)對路燈的控制上,采用分時段的3種控制策略,可以實現分時間段控制道路兩側路燈全亮模式、自動調整模式(根據環(huán)境光照強弱或電壓電流閾值)、終端聯控模式,在滿足照度需求的情況下,實現對電能的節(jié)省。
2)通信方式所采用的是中國電信的NB-IoT網絡,拓撲簡單、部署成本低,NB-IoT采用DRX模式,實現終端的實時在線,這種通信方式更適合靜止的和低移動性且需要下發(fā)指令的場景。
3)利用GPS地理信息管理系統(tǒng),可以在手機APP、微信小程序PC應用和Web平臺界面上直觀定位每個路燈的位置,便于維修人員確定故障路燈地址、及時維修。
4)高精度數據采集與通信技術,可采集路燈節(jié)點工作狀態(tài)、電壓、電流、功率、功率因數、耗電量、產生二氧化碳、頻率、環(huán)境光照度和路燈狀態(tài)數據,數據精度達到小數點后兩位。
5)智能化設計,使用機器學習算法,實現對路燈使用狀態(tài)的分析和評估。
本項目目前已經完全實現,演示視頻如下所示:
基于NB-IoT的智慧路燈監(jiān)控系統(tǒng)(設備選型)
基于NB-IoT的智慧路燈監(jiān)管系統(tǒng)在感知層可實現實時采集路燈節(jié)點的工作狀態(tài)(亮滅狀態(tài))、電壓、電流、功率、功率因數、耗電量、產生二氧化碳、頻率、環(huán)境光照度、路燈亮度、路燈故障地理位置11種傳感數據信息。
路燈控制終端節(jié)點主要由主控制器、NB-IoT無線通信模塊、GPS模塊、光強檢測模塊、電能檢測模塊以及輸出控制模塊組成,路燈控制節(jié)點模塊硬件實物如下圖所示:
1、主控制器
主控制器選用STM32L432KC超低功耗單片機作為微控制器,NUCLEO-L432KC 開發(fā)板是首個集成一款QFN32微型封裝微控制器的Nucleo-32開發(fā)板,板載一顆STM32L432KCU6 微控制器(UFQFPN32),允許用戶直接使用ARM在線開發(fā)工具,板載Arduino Nano針腳布局可簡化功能擴展,集成的ST-Link調試器/編程器支持大容量存儲器和無探針調試,可以完全滿足智慧路燈節(jié)點數據處理的基本要求。
2、NB-IoT無線通信模塊和GPS模塊
NB-IoT通信模塊采用功耗極低的上海移遠BC20通信模組,以及SIM卡座、串口電路、濾波天線、復位電路組成,由電源模塊供電。BC20支持GNSS,內置GNSS模塊,支持GPS定位,北斗雙模定位,實現衛(wèi)星對路燈節(jié)點定位,極大方便用戶使用。本模塊接收來自主控制器的路燈實時狀態(tài)、路燈節(jié)點功耗傳感數據以及模塊獲取的GPS數據等信息,通過Internet將數據發(fā)送給華為IoT云平臺,并接收用戶通過Intemet發(fā)送來的控制命令。
3、光照檢測模塊
光強檢測模塊利用光照模塊檢測外界光照強度,并將信號通過ADC方式傳入主控制器,根據環(huán)境光照強弱自動調節(jié)路燈節(jié)點亮度。
5、電能檢測模塊
電能檢測模塊采用UART接口和RS485接口,支持與PLC通信,刷新速度500MS,可讀取電壓、電流、功率、電能和頻率因數參數通過RS485或UART口輸出16進制數據。設計有繼電器模塊,結合路燈節(jié)點耗能情況和閾值報警,用戶設置多種模式(分時間段控制道路兩側路燈全亮模式、自動調整模式、隔桿亮燈模式和深夜模式)實現路燈智能管理。
電能檢測模塊采用UART接口和RS485接口,支持與PLC通信,刷新速度500MS,可讀取電壓、電流、功率、電能和頻率因數參數通過RS485或UART口輸出16進制數據。模塊設計有繼電器模塊,結合路燈節(jié)點耗能情況和閾值報警,用戶自定義設置多種模式(例如:分時間段控制道路兩側路燈全亮模式、自動調整模式、隔桿亮燈模式、深夜模式等)實現路燈智能管理。
基于NB-IoT的智慧路燈監(jiān)控系統(tǒng)(硬件開發(fā))
本節(jié)將進行嵌入式硬件編程開發(fā),通過電能檢測模塊實現實時采集路燈節(jié)點電壓、電流、功率、總耗電量、功率因子、路燈開關狀態(tài)、耗能產生二氧化碳、光照度、路燈亮度、環(huán)境光照度、GPS位置11種傳感數據,通過NB-IoT模組實現對華為云物聯網平臺數據上傳及下發(fā)獲取,達到聯動控制效果。
1、開發(fā)軟件
嵌入式硬件開發(fā)使用STM32CubeMX和Keil5實現,STM32CubeMX搭建NUCLEO-L432KC開發(fā)板GPIO底層配置,Keil5實現NUCLEO-L432KC開發(fā)板編程開發(fā)。
STM32CubeMX 是 ST 意法半導體近幾年來大力推薦的STM32 芯片圖形化配置工具,也是配置和初始化 C 代碼生成器(STM32 configuration and initialization C code generation),也就是自動生成開發(fā)初期關于芯片相關的一些初始化代碼。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語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調試器等在內的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(μVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調試工具也會令你事半功倍。
Keil5簡介、下載、安裝及破解參見:https://blog.csdn.net/m0_38106923/article/details/89492257
2、STM32CubeMX底層環(huán)境搭建
使用STM32CubeMX搭建NUCLEO-L432KC開發(fā)板GPIO底層配置,主要配置微控制器晶振、定時器、PWM接口、UART1、UART2、ADC接口和LED狀態(tài)指示燈接口,具體實現如下:
3、Keil5編寫控制模塊實現代碼
在Keil5開發(fā)環(huán)境中需要編寫硬件基礎底層配置功能、電能電耗檢測功能、GPS定位功能、環(huán)境光照檢測功能、NB-IoT模組通信功能和云端交互功能。
NB-IoT模組配置實現代碼可至原文查看:
更多點擊鏈接查看:基于NB-IoT的智慧路燈監(jiān)控系統(tǒng)(硬件開發(fā))
基于NB-IoT的智慧路燈監(jiān)控系統(tǒng)(云端部署及訓練)
物聯網平臺包括數據管理、設備管理和運營管理等能力,可以實現統(tǒng)一安全的網絡接入、各種終端的靈活適配、海量數據的采集分析,從而實現新價值的創(chuàng)造。物聯網平臺向各行業(yè)提供強大的API開放能力,支撐各行業(yè)伙伴快速實現各種物聯網業(yè)務應用,滿足各行業(yè)客戶的個性化業(yè)務需求;同時,物聯網平臺支持無線、有線等多種接入方式,可以實現海量化、多樣化的設備接入。
本系統(tǒng)采用華為的OceanConnect物聯網聯接管理平臺,OceanConnect是華為云核心網推出的以IoT聯接管理平臺為核心的IoT生態(tài)圈。該平臺具有豐富的協(xié)議適配能力,支持海量多樣化終端設備接人,而且還提供數據存儲、數據顯示、數據分析、歷史查詢等功能。
硬件設備接入華為云物聯網平臺,具體操作可參見:NB-IoT使用CoAP協(xié)議接入華為IoT平臺、NB-IoT BC20模組使用LWM2M協(xié)議接入華為IoT平臺
本博文將簡要介紹NB-IoT智慧路燈系統(tǒng)云端部署和機器學習訓練模型云端搭建的實現過程。
1、華為云端部署
第一步:定義Profile
第二步:編解碼插件開發(fā)
第三步:設備連接后在線測調,查看數據是否正確。
2、華為云端Web開發(fā)
通過拖控件方式開發(fā)獨具特色和風格的Web應用,這里我原配置基礎上增加設備狀態(tài)功能、傳感器監(jiān)控功能和規(guī)則功能三個界面。
設備狀態(tài)功能如下所示:
傳感器監(jiān)控功能如下所示:
規(guī)則功能如下所示:
3、機器學習訓練模型云端搭建
基于NB-IoT的智慧路燈監(jiān)控系統(tǒng)(PC應用開發(fā))
作為IoT云平臺的數據交互PC客戶端,對平臺的數據進行展示,實現本地與遠程終端的數據交互,進而展現出依賴云平臺的應用使用的具體場景,進一步展現云品臺的優(yōu)勢。
1、項目結構
整個使用常規(guī)的傳統(tǒng)的三層架構,同時引入MVVM架構模式,屬于混合型架構設計,將各個層次之間實現理論解耦,提高了系統(tǒng)各個層次之間的獨立性和可拓展性。
結構說明如下:
HandyC.HW:項目實際入口,表現層,實際用戶操作邏輯的輸入輸出部分。
HandyC.HW.ViewModels:與表現層與之對應的視圖實體類部分,對用戶交互邏輯的主要實現處理模塊,同時在該項目中進行相關數據實體和視圖實體的相互轉換工作。
HandyC.HW.Data:用于處理來自于IoT平臺的數據源,為業(yè)務層提供需求的數據結果。
HandyC.HW.Service:項目的實際業(yè)務邏輯處理,組織數據層提供的數據。
HandyC.HW.Tools:項目整體結構中需要使用到的基礎輔助類集合,包括網絡請求相關類,緩存,數據序列化和反序列化,特殊數據格式處理等。
對應測試項目與之對應,前綴為Test.*,此處忽略
2、系統(tǒng)組織架構
系統(tǒng)組織架構分為兩個大的功能模塊,平臺監(jiān)管以及數據采集兩個模塊,平臺監(jiān)管主要是對設備實時動態(tài)進行監(jiān)管,數據采集,處理來自IOT云平臺的歷史相關數據并展示。
3、使用技術
- 網絡通信相關技術(數據接口請求)
- WPF(UI框架)
- MvvmLight(MVVM框架)
- 依賴注入
- 簡單緩存
- LiveCharts(圖標框架)
- HandyControl(WPF組件框架)
- 非對稱雙向認證(Https)
- AutoMapper(DTO轉換框架)
4、開發(fā)環(huán)境與工具
- 開發(fā)環(huán)境:Windows7 sp1、.Net Framework 4.7.2
- 開發(fā)語言:C#
- 開發(fā)工具:MicrosoftVisual Studio professional 2019(VS 2019)
5、功能介紹
設備管理頁面的主頁面,紅框區(qū)域內為設備統(tǒng)計,包含了對當前設備的設備類型、設備狀態(tài)、設備的協(xié)議類型的相關統(tǒng)計信息,屬于設備總體的一個統(tǒng)計信息。設備列表中展示的是當前的存在的設備,以卡片的方式展示出來,包括設備的名稱、設備的型號、設備的編號等預覽。
顯示設備的詳細信息。
設備的實時數據顯示頁面,能夠動態(tài)實時請求道IoT平臺上的設備下發(fā)的最近歷史信息。
云平臺聯動主頁中的卡片為一卡片一設備,點擊設備卡片,可以對設備進行聯動模式控制,可支持三種聯動模式,終端聯控模式、自動調光模式和分段定時模式。
默認手動模式,可以通過手動直接下發(fā)指令到IoT平臺,通過平臺將命令通知對應的設備執(zhí)行,點擊控制按鈕進行云平臺掛載設備的開啟和關閉。
用戶可以通過點擊切換至定時模式,設定時間后,將點擊發(fā)送定時設備,等待設定的命令發(fā)送至IoT平臺。
命令下發(fā)成功是接收到的反饋信息。
自動模式與手動模式的操作類似,用戶通過開啟和關閉實現對IoT平臺上掛載的設備的執(zhí)行模式的設定,關閉時,設備默認執(zhí)行,為上一次的模式運行狀態(tài),開啟時,變更為根據實際的自動條件進行自身狀態(tài)的控制。
設備歷史數據顯示頁面,主要功能為查詢功能,用于顯示從IoT平臺獲取到的當前設備對應的歷史記錄信息,可通過查詢條件進行更加細致數據查找。
點擊每條記錄的操作列按鈕,能夠獲取到該條記錄的詳細信息。
下圖的頁面為命令歷史數據的主頁面,默認顯示第一個設備的相關歷史數據,能夠查詢到多端給設備發(fā)送的相關命令指令歷史信息。
通過點擊每條記錄末尾的數據明細,可以查看到當前命令記錄的具體信息。
6、核心代碼
PC端主要分為兩個部分,一個是通過https請求雙向認證獲取到來自于IoT平臺提供的相關Api接口的目標數據,將數據進行處理根據View的需求進行相關的ViewModel處理之后展示到頁面中;一個是需要PC端與IoT平臺上的掛載設備進行數據交互時,實現本地命令的發(fā)送,進而間接控制設備的數據響應。
鑒定權限代碼至原文查看:基于NB-IoT的智慧路燈監(jiān)控系統(tǒng)(PC應用開發(fā))
基于NB-IoT的智慧路燈監(jiān)控系統(tǒng)(手機應用開發(fā))
通過與華為云平臺進行數據對接及聯動控制,為此開發(fā)智慧路燈APP控制系統(tǒng)。
1、系統(tǒng)總體描述
本系統(tǒng)共分為九個模塊:系統(tǒng)導航、用戶登錄、掃碼綁定、設備定位、設備狀態(tài)、歷史查詢、設備控制、畫像分析和系統(tǒng)設置。每個模塊對應其各自的功能,通過設備的定位、設備的實時狀態(tài)及設備控制能夠全方位監(jiān)控路燈的耗能量及使用情況。畫像分析也可對某地方或某用戶進行大數據AI分析得到監(jiān)測數據,并且能夠實時向用戶推送用電情況,并為其用戶進行合理的用電安排及方案。
2、使用技術
2.1、基礎技術
- 系統(tǒng)總體使用java語言進行開發(fā);
- 在界面設計及展示部分使用HTML搭配CSS技術使其界面美觀大方;
- 框架設計使用MVP模式進行設計使其系統(tǒng)結構清晰明了;
- 數據對接使用HTTP和OkHttp3協(xié)議,大大降低數據處理難度;且提高了數據的完整性和實時性。
2.2、核心技術
- 登錄界面使用視屏背景技術將登錄界面進行高度美化;
- 在設備定位模塊中使用第三方高德地圖SDK進行開發(fā);
- 在云平臺對接時使用華為云平臺相關模塊接口進行開發(fā);
- 使用Clendar相關類進行日期選擇設計;
- 使用Zxing二維碼掃描分析技術進行掃碼分析;
- 使用Echart技術進行數據實時顯示圖表分析;
- 在畫像分析模塊使用AI大數據分析獲取數據實例。
2.3技術亮點
- 對第三方技術的合理運用;
- 對MVP開發(fā)框架的組合設計;
- 對API接口的清晰掌握;
- 對各種相關工具類的開發(fā)及調用;
- 結合大數據AI分析進行功能設計。
3、開發(fā)軟件
- 系統(tǒng)環(huán)境:Windows 10
- 開發(fā)環(huán)境:Android Studio 3.0,JDK 8.0
- 運行環(huán)境:Android 5.0級以上
- 接口測試軟件:Postman 6.5版本
- 控制軟件:Git
- 打包發(fā)布軟件:Android Studio (Generate Signed APK)
- 軟件簽名:iot_project.jks
4、功能概述
4.1、系統(tǒng)導航
首次進入APP當進入導航界面,導航界面中介紹APP的Logo、簡單描述、路燈模型、路燈功能分類及路燈運行方式。
4.2、用戶登錄
用戶登錄界面使用視屏作為頁面背景,通過輸入用戶名及密碼進行系統(tǒng)登錄。系統(tǒng)的用戶名及密碼在系統(tǒng)后臺統(tǒng)一進行注冊。
4.3、掃碼綁定
用戶登錄成功后將自動跳轉至掃碼界面,跳轉界面后會對該移動設備進行權限訪問,用戶需要同意所有權限才能正常使用該系統(tǒng)。授權后進行二維碼掃描。此時需要對路燈上的二維碼進行掃碼,通過掃碼得到該路燈的設備信息,從而在主界面中可查看該路燈的其他信息。
4.4、設備定位
此模塊中將對該掃描設備進行設備定位,觀察其設備所在的具體位置,并能夠查看當前地方的天氣環(huán)境。此處的設計也是為后來的管理方便,對每一個路燈設備能夠全方位的進行查看。
4.5、設備狀態(tài)
此模塊將對所在設備的所有信息進行實時查看,有電壓、電流、功率、功率因子、總耗電量、光照度、路燈開光狀態(tài)及路燈耗能所產生的二氧化碳量。
4.6、歷史查詢
此模塊是對該路燈所有數據的歷史查詢,通過對歷史數據的查詢可分析出該設備在本周、本月及本年的所有用電量情況。這樣就能夠合理的對路燈用電量進行管理。
4.7、設備控制
此模塊是對路燈的遠程控制,共分為三個模式分別為:終端聯控模式、分段定時模式及自動調光模式。三種模式分別對應三種不同的路燈控制,可遠程也可自動,充分達到了用電量的控制。
4.8、畫像分析
此模塊涉及了大數據AI分析功能,將華為云機器學習服務分析的數據結果下發(fā)至該系統(tǒng),系統(tǒng)對其數據進行圖文的可視化展示,清晰的可以查看到城市區(qū)域日常用電情況及地方用電情況(由于數據量較少,所以設計的是本人七月份的個人用電畫像)。
4.9、系統(tǒng)設置
系統(tǒng)設置功能共分為以下幾點:系統(tǒng)設置、修改密碼、關于我們、系統(tǒng)更新及退出登錄。
5、核心代碼
數據獲取核心代碼至原文查看:基于NB-IoT的智慧路燈監(jiān)控系統(tǒng)(手機應用開發(fā))