王凱鵬,姚凱學,任 莎,李路里,田旭飛
(貴州大學 計算機科學與技術學院,貴州 貴陽 550025)
路燈是一個城市基礎設施的重要組成部分,也是人類生活中必不可少的工具。但目前國內(nèi)的路燈設備基本上處于人工監(jiān)控的狀態(tài),需要大量的人力資源進行維護和維修,其次,路燈往往不能在光線發(fā)生變化時及時調(diào)整開關狀態(tài),從而造成了巨大的能源浪費[1-6]。此外,由于路燈的布設環(huán)境復雜,布設地域廣,在發(fā)生故障時往往難以被路燈巡檢人員及時發(fā)現(xiàn)[7],這就造成了故障路燈難以及時得到修復,為人們的夜間出行帶來了安全隱患[8]。
隨著物聯(lián)網(wǎng)的發(fā)展,越來越多的物聯(lián)網(wǎng)技術被運用到各行各業(yè)之中[9]。路燈作為城市照明的基礎,直接影響著人們的生活質(zhì)量,所以,使用物聯(lián)網(wǎng)技術設計一種智能化路燈,在智慧城市的推進過程中有著重要的作用[10-12]。為了解決目前路燈設備存在的智能化程度低、人力資源需求高、能源浪費大、檢修效率低等問題,文中設計了一種基于STM32的路燈智能監(jiān)測控制系統(tǒng)。該系統(tǒng)能夠?qū)崿F(xiàn)光照強度、PM2.5等環(huán)境數(shù)據(jù)的采集,根據(jù)光照強度和時間進行自動開關路燈操作,并實時監(jiān)測路燈的工作狀態(tài)。此外,該系統(tǒng)能夠通過4G無線傳輸方式與上位機進行信息交互,實現(xiàn)遠程數(shù)據(jù)傳輸及遠程控制。
路燈智能監(jiān)測控制系統(tǒng)主要由六個部分組成,分別是MCU、環(huán)境信息采集模塊、路燈控制模塊、故障檢測模塊、無線通信模塊和上位機管理模塊。其中,MCU為主控制器,是系統(tǒng)的核心模塊,環(huán)境信息采集模塊負責采集各類環(huán)境數(shù)據(jù),路燈控制模塊負責控制路燈的開關,故障檢測模塊負責對路燈運行狀態(tài)進行監(jiān)測,無線通信模塊負責實現(xiàn)上位機與下位機之間的數(shù)據(jù)通信,上位機管理模塊是用戶可視化的展示與控制界面。系統(tǒng)總體設計框圖如圖1所示。

圖1 系統(tǒng)總體框圖
在系統(tǒng)工作時,環(huán)境信息采集模塊將采集到的環(huán)境信息上傳到MCU中進行分析處理,然后MCU根據(jù)當前的環(huán)境參數(shù)對是否需要打開或關閉路燈進行判斷,并通過路燈控制模塊對路燈執(zhí)行相應的控制操作。故障檢測模塊對路燈的工作狀態(tài)進行實時監(jiān)測,在監(jiān)測到故障時及時向MCU發(fā)送故障信息。MCU將各模塊上傳的信息進行打包封裝后通過無線通信模塊上傳到上位機端。同時,上位機也可向下位機發(fā)送控制指令使下位機完成參數(shù)的設置或執(zhí)行相應的控制操作。
系統(tǒng)以STM32F103ZET6單片機作為系統(tǒng)的MCU,外圍模塊包括環(huán)境信息采集模塊、路燈控制模塊、故障檢測模塊及無線通信模塊。該硬件系統(tǒng)可直接嵌入現(xiàn)有路燈系統(tǒng),對已有的路燈設備進行升級改造。路燈監(jiān)測系統(tǒng)實物如圖2所示。

圖2 系統(tǒng)硬件實物圖
環(huán)境參數(shù)采集模塊包括光照強度傳感器和PM2.5傳感器。光照強度傳感器使用的是BH1750FVI數(shù)字光度計,PM2.5傳感器使用的是SDS011激光型PM2.5傳感器。由于傳感器的放置位置與MCU的距離較遠,普通的TTL信號容易出現(xiàn)衰減和干擾,為了保證數(shù)據(jù)傳輸?shù)臏蚀_性及穩(wěn)定性,系統(tǒng)中對這兩種傳感器進行了二次開發(fā),即在傳感器上設計了數(shù)據(jù)信號處理模塊。
光照傳感器的數(shù)據(jù)信號處理模塊的處理器使用的是STC15W404AS,在該模塊中使用單片機的串口1進行下載和仿真,串口2通過RS485總線接收STM32所發(fā)送的采集指令,并將封裝好的傳感器數(shù)據(jù)幀發(fā)送給數(shù)據(jù)處理模塊,串口3通過IIC總線接收BH1750傳感器采集的光照強度數(shù)據(jù)。
PM2.5的數(shù)據(jù)信號處理模塊設計與光照類似,主要功能是通過RS485總線接收MCU的采集指令,并對傳感器采集的TTL信號進行打包處理后轉換為RS485信號發(fā)送給MCU。
路燈控制模塊通過MCU的IO口控制固態(tài)繼電器的通斷來實現(xiàn)路燈的開關操作。因為目前大多數(shù)路燈使用電源為220 V的交流電,工作電流在3 A以內(nèi),所以該系統(tǒng)選取了控制電壓為3~32 VDC,控制電流為5~20 mA,負載電壓為12~480 VAC,輸出電流為10 A的直流控交流固態(tài)繼電器作為控制器,經(jīng)測試,該固態(tài)繼電器能夠滿足實際應用場景的要求。
由于單片機引腳輸出電流的限制,直接輸出電平“1”時無法正常驅(qū)動固態(tài)繼電器,所以系統(tǒng)使用一個5 V電源引腳和一個STM32F103ZET6的PD12引腳作為固態(tài)繼電器的輸入引腳。當PD12引腳輸出高電平時,固態(tài)繼電器控制端的兩個引腳都為高電平,無電流通過,繼電器負載端斷開,路燈供電電路形成斷路,路燈處于關閉狀態(tài);反之,PD12輸出低電平時,繼電器負載端連通,路燈供電電路閉合,路燈開啟。
故障檢測模塊的主要功能為檢測路燈是否能夠正常打開或關閉,并在路燈出現(xiàn)故障時,及時將故障信息上傳到上位機端,以便檢修人員及時進行修復。當路燈正常點亮時,路燈供電電路的電流在2 A~3 A之間,所以該模塊使用了電流互感器和電磁繼電器對路燈電路中的電流是否達到了正常范圍進行檢測。電流互感器感應到路燈電路中的電流后,經(jīng)過1 000倍的縮小后驅(qū)動電磁繼電器閉合,從而使電磁繼電器負載端輸出一個5 V高電平,STM32的PD13引腳只需檢測該電平的高低狀態(tài)即可判定當前路燈的開關狀態(tài)。通過系統(tǒng)軟件中的路燈開關燈標志與實際路燈開關狀態(tài)的比較,即可對路燈設備是否出現(xiàn)故障進行準確的判斷。
數(shù)據(jù)通信模塊采用了4G無線通信方式來保證路燈設備下位機與上位機的數(shù)據(jù)通信,4G模塊選取了USR-G770 DTU,MCU與4G DTU之間設計了數(shù)據(jù)通信接口電路,用以進行不同信號類型之間的轉換。MCU在與4G DTU進行通信時,首先通過SP3232芯片將串口的TTL信號轉換為RS232信號,然后發(fā)送給4G DTU,最后由4G DTU將數(shù)據(jù)轉發(fā)到上位機端。4G DTU在工作時使用透傳模式,傳輸遵循TCP協(xié)議。數(shù)據(jù)通信接口電路原理如圖3所示。

圖3 數(shù)據(jù)通信接口原理
處理器模塊采用基于Cortex-M3內(nèi)核的STM32F103ZET6單片機作為MCU,它的最高工作頻率為72 MHz,SRAM可達64 KB,有5個串口、4個通用定時器、2個IIC、3個ADC(12位)、3個SPI、2個DMA控制器等資源[13-15]。
該模塊作為路燈故障監(jiān)測及智能控制系統(tǒng)的核心,主要用來實現(xiàn)任務調(diào)度、接收與傳輸數(shù)據(jù)、發(fā)送控制指令等操作。該模塊設計時使用了一個64K的非易失性鐵電隨機存儲器FM24CL64,該芯片可以用總線速度進行讀寫,用于保存用戶設置的參數(shù)數(shù)據(jù),以便在重啟后能夠快速自動恢復斷電之前的工作狀態(tài)。另外,在與傳感器連接的接口電路中,使用了MAX485芯片進行TTL信號到RS485信號的轉換,然后通過RS485總線與光照強度傳感器和PM2.5傳感器的數(shù)據(jù)信號處理模塊相連接,用于發(fā)送采集指令和獲取傳感器返回的數(shù)據(jù)。
文中路燈智能監(jiān)測控制系統(tǒng)軟件設計主要以下位機的軟件設計為主,其中包括環(huán)境參數(shù)采集程序、路燈智能控制程序、故障檢測程序和數(shù)據(jù)通信程序四部分。
系統(tǒng)上電后,進行初始化操作,讀取鐵電存儲器的特定地址,檢測用戶是否已經(jīng)設置了起止時間、光照閾值等參數(shù),若未檢測到參數(shù)信息,則將系統(tǒng)默認參數(shù)寫入鐵電存儲器的相應地址中。若系統(tǒng)已經(jīng)設置了預設參數(shù)并處于自動工作模式時,系統(tǒng)等待到達采集時間的時鐘信號,當?shù)竭_采集時間時,MCU向光照強度傳感器和PM2.5傳感器發(fā)送采集指令,并將傳感器返回的數(shù)據(jù)進行解析和存儲,之后系統(tǒng)進入休眠狀態(tài),等待下一次時鐘中斷喚醒。為了能夠得到更加準確的環(huán)境信息,系統(tǒng)在采集完12次信息之后,對本組數(shù)據(jù)進行平均值、最大值、最小值和總值的計算,并以光照的平均值作為本組光照數(shù)據(jù)的代表值與之前設置的光照閾值進行比較,當光照均值小于光照閾值時,系統(tǒng)認為光照度不足,隨后將PD12引腳置為0,使繼電器負載端導通,從而打開路燈,當光照均值大于光照閾值時,系統(tǒng)認為光照度充足,隨后將PD12引腳置為1,使繼電器負載端斷開,從而關閉路燈。在12組數(shù)據(jù)采集完畢后,最后將計算處理后本組環(huán)境數(shù)據(jù)與路燈開關狀態(tài)標志通過4G DTU上傳到上位機端,然后等待下一次的時鐘中斷喚醒。自動控制程序流程如圖4所示。

圖4 自動控制程序流程
在故障檢測方面,當MCU控制路燈的開關狀態(tài)發(fā)生變化后或達到數(shù)據(jù)發(fā)送時間時,系統(tǒng)都會讀取與電流互感器相連接的PD13的引腳狀態(tài),若為高電平時則代表路燈電路中存在足夠的電流,路燈處于正常打開狀態(tài),反之,則路燈處于熄滅狀態(tài)。用該引腳的高低電平狀態(tài)與系統(tǒng)的設置狀態(tài)相比較,即可判斷出路燈是否出現(xiàn)了故障,若出現(xiàn)故障,則將故障標志置為1,隨后將路燈電路狀態(tài)及是否有故障標志發(fā)送到上位機端。故障檢測程序流程如圖5所示。

圖5 故障檢測程序流程
當系統(tǒng)處于手動工作模式時,系統(tǒng)工作流程與自動模式大致相同,不同點在于手動模式下系統(tǒng)不會根據(jù)環(huán)境數(shù)據(jù)自動打開和關閉路燈,而是一直等待上位機的指令,按照上位機所發(fā)送的指令進行開關路燈的操作。
路燈智能監(jiān)測控制系統(tǒng)中通信協(xié)議涉及到前端數(shù)據(jù)采集控制器與上位機的通信。采集的環(huán)境參數(shù)有光照強度和PM2.5兩種,設置操作包括模式選擇、手動開關控制、光照閾值設置、時間段設置等,讀取操作包括當前傳感器數(shù)據(jù)讀取、工作模式讀取、已設置光照閾值讀取、已設置時間段讀取、當前路燈實際狀態(tài)(路燈開關)等。
字節(jié)的串行傳送格式:1位起始位;8位數(shù)據(jù)位;1位停止位,無奇偶校驗。字節(jié)存放順序采用小端模式,即低字節(jié)存放于低位地址,低字節(jié)在前,高字節(jié)在后。
幀是傳送信息的基本單元,在該系統(tǒng)中,每幀由幀起始符、地址域、控制域、數(shù)據(jù)長度域、數(shù)據(jù)域、幀信息校驗域及幀結束符等7個域組成。幀格式如表1所示。

表1 通信協(xié)議中的幀格式
STA表示幀起始符,用作標識一幀信息的開始。AD表示地址域,標識當前收(發(fā))設備的地址。C表示控制域,代表要求執(zhí)行的操作。LEN表示長度,代表數(shù)據(jù)域中的字節(jié)總數(shù)。DATA表示數(shù)據(jù)域,代表需要傳輸?shù)臄?shù)據(jù)。CRC表示校驗碼,采用CRC-16循環(huán)冗余校驗,校驗內(nèi)容為AD、C、LEN和DATA。END表示幀結束符,標識一幀信息的結束。
經(jīng)試驗,系統(tǒng)采集數(shù)據(jù)準確,路燈控制及時有效,未出現(xiàn)誤操作現(xiàn)象,所以系統(tǒng)具有良好的穩(wěn)定性。上位機光照數(shù)據(jù)查詢界面如圖6所示。

圖6 光照強度查詢界面
重點介紹了基于STM32的路燈智能監(jiān)測控制系統(tǒng)的下位機部分,該系統(tǒng)以STM32F103ZET6單片機作為核心處理器,功能模塊主要包括環(huán)境參數(shù)采集模塊、路燈智能控制模塊、故障檢測模塊和數(shù)據(jù)通模塊四個部分,可以實時采集光照強度和PM2.5數(shù)據(jù),并根據(jù)光照強度的強弱來自動開關路燈,此外,在路燈發(fā)生故障時能夠及時向上位機端自動發(fā)送故障報警信號。系統(tǒng)實現(xiàn)了路燈的智能化控制,節(jié)省了大量的人力資源和電力資源,具有良好的實用價值。