王凱鵬,姚凱學(xué),任 莎,李路里,田旭飛
(貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽(yáng) 550025)
路燈是一個(gè)城市基礎(chǔ)設(shè)施的重要組成部分,也是人類生活中必不可少的工具。但目前國(guó)內(nèi)的路燈設(shè)備基本上處于人工監(jiān)控的狀態(tài),需要大量的人力資源進(jìn)行維護(hù)和維修,其次,路燈往往不能在光線發(fā)生變化時(shí)及時(shí)調(diào)整開關(guān)狀態(tài),從而造成了巨大的能源浪費(fèi)[1-6]。此外,由于路燈的布設(shè)環(huán)境復(fù)雜,布設(shè)地域廣,在發(fā)生故障時(shí)往往難以被路燈巡檢人員及時(shí)發(fā)現(xiàn)[7],這就造成了故障路燈難以及時(shí)得到修復(fù),為人們的夜間出行帶來(lái)了安全隱患[8]。
隨著物聯(lián)網(wǎng)的發(fā)展,越來(lái)越多的物聯(lián)網(wǎng)技術(shù)被運(yùn)用到各行各業(yè)之中[9]。路燈作為城市照明的基礎(chǔ),直接影響著人們的生活質(zhì)量,所以,使用物聯(lián)網(wǎng)技術(shù)設(shè)計(jì)一種智能化路燈,在智慧城市的推進(jìn)過(guò)程中有著重要的作用[10-12]。為了解決目前路燈設(shè)備存在的智能化程度低、人力資源需求高、能源浪費(fèi)大、檢修效率低等問(wèn)題,文中設(shè)計(jì)了一種基于STM32的路燈智能監(jiān)測(cè)控制系統(tǒng)。該系統(tǒng)能夠?qū)崿F(xiàn)光照強(qiáng)度、PM2.5等環(huán)境數(shù)據(jù)的采集,根據(jù)光照強(qiáng)度和時(shí)間進(jìn)行自動(dòng)開關(guān)路燈操作,并實(shí)時(shí)監(jiān)測(cè)路燈的工作狀態(tài)。此外,該系統(tǒng)能夠通過(guò)4G無(wú)線傳輸方式與上位機(jī)進(jìn)行信息交互,實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)傳輸及遠(yuǎn)程控制。
路燈智能監(jiān)測(cè)控制系統(tǒng)主要由六個(gè)部分組成,分別是MCU、環(huán)境信息采集模塊、路燈控制模塊、故障檢測(cè)模塊、無(wú)線通信模塊和上位機(jī)管理模塊。其中,MCU為主控制器,是系統(tǒng)的核心模塊,環(huán)境信息采集模塊負(fù)責(zé)采集各類環(huán)境數(shù)據(jù),路燈控制模塊負(fù)責(zé)控制路燈的開關(guān),故障檢測(cè)模塊負(fù)責(zé)對(duì)路燈運(yùn)行狀態(tài)進(jìn)行監(jiān)測(cè),無(wú)線通信模塊負(fù)責(zé)實(shí)現(xiàn)上位機(jī)與下位機(jī)之間的數(shù)據(jù)通信,上位機(jī)管理模塊是用戶可視化的展示與控制界面。系統(tǒng)總體設(shè)計(jì)框圖如圖1所示。
圖1 系統(tǒng)總體框圖
在系統(tǒng)工作時(shí),環(huán)境信息采集模塊將采集到的環(huán)境信息上傳到MCU中進(jìn)行分析處理,然后MCU根據(jù)當(dāng)前的環(huán)境參數(shù)對(duì)是否需要打開或關(guān)閉路燈進(jìn)行判斷,并通過(guò)路燈控制模塊對(duì)路燈執(zhí)行相應(yīng)的控制操作。故障檢測(cè)模塊對(duì)路燈的工作狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測(cè),在監(jiān)測(cè)到故障時(shí)及時(shí)向MCU發(fā)送故障信息。MCU將各模塊上傳的信息進(jìn)行打包封裝后通過(guò)無(wú)線通信模塊上傳到上位機(jī)端。同時(shí),上位機(jī)也可向下位機(jī)發(fā)送控制指令使下位機(jī)完成參數(shù)的設(shè)置或執(zhí)行相應(yīng)的控制操作。
系統(tǒng)以STM32F103ZET6單片機(jī)作為系統(tǒng)的MCU,外圍模塊包括環(huán)境信息采集模塊、路燈控制模塊、故障檢測(cè)模塊及無(wú)線通信模塊。該硬件系統(tǒng)可直接嵌入現(xiàn)有路燈系統(tǒng),對(duì)已有的路燈設(shè)備進(jìn)行升級(jí)改造。路燈監(jiān)測(cè)系統(tǒng)實(shí)物如圖2所示。
圖2 系統(tǒng)硬件實(shí)物圖
環(huán)境參數(shù)采集模塊包括光照強(qiáng)度傳感器和PM2.5傳感器。光照強(qiáng)度傳感器使用的是BH1750FVI數(shù)字光度計(jì),PM2.5傳感器使用的是SDS011激光型PM2.5傳感器。由于傳感器的放置位置與MCU的距離較遠(yuǎn),普通的TTL信號(hào)容易出現(xiàn)衰減和干擾,為了保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性及穩(wěn)定性,系統(tǒng)中對(duì)這兩種傳感器進(jìn)行了二次開發(fā),即在傳感器上設(shè)計(jì)了數(shù)據(jù)信號(hào)處理模塊。
光照傳感器的數(shù)據(jù)信號(hào)處理模塊的處理器使用的是STC15W404AS,在該模塊中使用單片機(jī)的串口1進(jìn)行下載和仿真,串口2通過(guò)RS485總線接收STM32所發(fā)送的采集指令,并將封裝好的傳感器數(shù)據(jù)幀發(fā)送給數(shù)據(jù)處理模塊,串口3通過(guò)IIC總線接收BH1750傳感器采集的光照強(qiáng)度數(shù)據(jù)。
PM2.5的數(shù)據(jù)信號(hào)處理模塊設(shè)計(jì)與光照類似,主要功能是通過(guò)RS485總線接收MCU的采集指令,并對(duì)傳感器采集的TTL信號(hào)進(jìn)行打包處理后轉(zhuǎn)換為RS485信號(hào)發(fā)送給MCU。
路燈控制模塊通過(guò)MCU的IO口控制固態(tài)繼電器的通斷來(lái)實(shí)現(xiàn)路燈的開關(guān)操作。因?yàn)槟壳按蠖鄶?shù)路燈使用電源為220 V的交流電,工作電流在3 A以內(nèi),所以該系統(tǒng)選取了控制電壓為3~32 VDC,控制電流為5~20 mA,負(fù)載電壓為12~480 VAC,輸出電流為10 A的直流控交流固態(tài)繼電器作為控制器,經(jīng)測(cè)試,該固態(tài)繼電器能夠滿足實(shí)際應(yīng)用場(chǎng)景的要求。
由于單片機(jī)引腳輸出電流的限制,直接輸出電平“1”時(shí)無(wú)法正常驅(qū)動(dòng)固態(tài)繼電器,所以系統(tǒng)使用一個(gè)5 V電源引腳和一個(gè)STM32F103ZET6的PD12引腳作為固態(tài)繼電器的輸入引腳。當(dāng)PD12引腳輸出高電平時(shí),固態(tài)繼電器控制端的兩個(gè)引腳都為高電平,無(wú)電流通過(guò),繼電器負(fù)載端斷開,路燈供電電路形成斷路,路燈處于關(guān)閉狀態(tài);反之,PD12輸出低電平時(shí),繼電器負(fù)載端連通,路燈供電電路閉合,路燈開啟。
故障檢測(cè)模塊的主要功能為檢測(cè)路燈是否能夠正常打開或關(guān)閉,并在路燈出現(xiàn)故障時(shí),及時(shí)將故障信息上傳到上位機(jī)端,以便檢修人員及時(shí)進(jìn)行修復(fù)。當(dāng)路燈正常點(diǎn)亮?xí)r,路燈供電電路的電流在2 A~3 A之間,所以該模塊使用了電流互感器和電磁繼電器對(duì)路燈電路中的電流是否達(dá)到了正常范圍進(jìn)行檢測(cè)。電流互感器感應(yīng)到路燈電路中的電流后,經(jīng)過(guò)1 000倍的縮小后驅(qū)動(dòng)電磁繼電器閉合,從而使電磁繼電器負(fù)載端輸出一個(gè)5 V高電平,STM32的PD13引腳只需檢測(cè)該電平的高低狀態(tài)即可判定當(dāng)前路燈的開關(guān)狀態(tài)。通過(guò)系統(tǒng)軟件中的路燈開關(guān)燈標(biāo)志與實(shí)際路燈開關(guān)狀態(tài)的比較,即可對(duì)路燈設(shè)備是否出現(xiàn)故障進(jìn)行準(zhǔn)確的判斷。
數(shù)據(jù)通信模塊采用了4G無(wú)線通信方式來(lái)保證路燈設(shè)備下位機(jī)與上位機(jī)的數(shù)據(jù)通信,4G模塊選取了USR-G770 DTU,MCU與4G DTU之間設(shè)計(jì)了數(shù)據(jù)通信接口電路,用以進(jìn)行不同信號(hào)類型之間的轉(zhuǎn)換。MCU在與4G DTU進(jìn)行通信時(shí),首先通過(guò)SP3232芯片將串口的TTL信號(hào)轉(zhuǎn)換為RS232信號(hào),然后發(fā)送給4G DTU,最后由4G DTU將數(shù)據(jù)轉(zhuǎn)發(fā)到上位機(jī)端。4G DTU在工作時(shí)使用透?jìng)髂J?,傳輸遵循TCP協(xié)議。數(shù)據(jù)通信接口電路原理如圖3所示。
圖3 數(shù)據(jù)通信接口原理
處理器模塊采用基于Cortex-M3內(nèi)核的STM32F103ZET6單片機(jī)作為MCU,它的最高工作頻率為72 MHz,SRAM可達(dá)64 KB,有5個(gè)串口、4個(gè)通用定時(shí)器、2個(gè)IIC、3個(gè)ADC(12位)、3個(gè)SPI、2個(gè)DMA控制器等資源[13-15]。
該模塊作為路燈故障監(jiān)測(cè)及智能控制系統(tǒng)的核心,主要用來(lái)實(shí)現(xiàn)任務(wù)調(diào)度、接收與傳輸數(shù)據(jù)、發(fā)送控制指令等操作。該模塊設(shè)計(jì)時(shí)使用了一個(gè)64K的非易失性鐵電隨機(jī)存儲(chǔ)器FM24CL64,該芯片可以用總線速度進(jìn)行讀寫,用于保存用戶設(shè)置的參數(shù)數(shù)據(jù),以便在重啟后能夠快速自動(dòng)恢復(fù)斷電之前的工作狀態(tài)。另外,在與傳感器連接的接口電路中,使用了MAX485芯片進(jìn)行TTL信號(hào)到RS485信號(hào)的轉(zhuǎn)換,然后通過(guò)RS485總線與光照強(qiáng)度傳感器和PM2.5傳感器的數(shù)據(jù)信號(hào)處理模塊相連接,用于發(fā)送采集指令和獲取傳感器返回的數(shù)據(jù)。
文中路燈智能監(jiān)測(cè)控制系統(tǒng)軟件設(shè)計(jì)主要以下位機(jī)的軟件設(shè)計(jì)為主,其中包括環(huán)境參數(shù)采集程序、路燈智能控制程序、故障檢測(cè)程序和數(shù)據(jù)通信程序四部分。
系統(tǒng)上電后,進(jìn)行初始化操作,讀取鐵電存儲(chǔ)器的特定地址,檢測(cè)用戶是否已經(jīng)設(shè)置了起止時(shí)間、光照閾值等參數(shù),若未檢測(cè)到參數(shù)信息,則將系統(tǒng)默認(rèn)參數(shù)寫入鐵電存儲(chǔ)器的相應(yīng)地址中。若系統(tǒng)已經(jīng)設(shè)置了預(yù)設(shè)參數(shù)并處于自動(dòng)工作模式時(shí),系統(tǒng)等待到達(dá)采集時(shí)間的時(shí)鐘信號(hào),當(dāng)?shù)竭_(dá)采集時(shí)間時(shí),MCU向光照強(qiáng)度傳感器和PM2.5傳感器發(fā)送采集指令,并將傳感器返回的數(shù)據(jù)進(jìn)行解析和存儲(chǔ),之后系統(tǒng)進(jìn)入休眠狀態(tài),等待下一次時(shí)鐘中斷喚醒。為了能夠得到更加準(zhǔn)確的環(huán)境信息,系統(tǒng)在采集完12次信息之后,對(duì)本組數(shù)據(jù)進(jìn)行平均值、最大值、最小值和總值的計(jì)算,并以光照的平均值作為本組光照數(shù)據(jù)的代表值與之前設(shè)置的光照閾值進(jìn)行比較,當(dāng)光照均值小于光照閾值時(shí),系統(tǒng)認(rèn)為光照度不足,隨后將PD12引腳置為0,使繼電器負(fù)載端導(dǎo)通,從而打開路燈,當(dāng)光照均值大于光照閾值時(shí),系統(tǒng)認(rèn)為光照度充足,隨后將PD12引腳置為1,使繼電器負(fù)載端斷開,從而關(guān)閉路燈。在12組數(shù)據(jù)采集完畢后,最后將計(jì)算處理后本組環(huán)境數(shù)據(jù)與路燈開關(guān)狀態(tài)標(biāo)志通過(guò)4G DTU上傳到上位機(jī)端,然后等待下一次的時(shí)鐘中斷喚醒。自動(dòng)控制程序流程如圖4所示。
圖4 自動(dòng)控制程序流程
在故障檢測(cè)方面,當(dāng)MCU控制路燈的開關(guān)狀態(tài)發(fā)生變化后或達(dá)到數(shù)據(jù)發(fā)送時(shí)間時(shí),系統(tǒng)都會(huì)讀取與電流互感器相連接的PD13的引腳狀態(tài),若為高電平時(shí)則代表路燈電路中存在足夠的電流,路燈處于正常打開狀態(tài),反之,則路燈處于熄滅狀態(tài)。用該引腳的高低電平狀態(tài)與系統(tǒng)的設(shè)置狀態(tài)相比較,即可判斷出路燈是否出現(xiàn)了故障,若出現(xiàn)故障,則將故障標(biāo)志置為1,隨后將路燈電路狀態(tài)及是否有故障標(biāo)志發(fā)送到上位機(jī)端。故障檢測(cè)程序流程如圖5所示。
圖5 故障檢測(cè)程序流程
當(dāng)系統(tǒng)處于手動(dòng)工作模式時(shí),系統(tǒng)工作流程與自動(dòng)模式大致相同,不同點(diǎn)在于手動(dòng)模式下系統(tǒng)不會(huì)根據(jù)環(huán)境數(shù)據(jù)自動(dòng)打開和關(guān)閉路燈,而是一直等待上位機(jī)的指令,按照上位機(jī)所發(fā)送的指令進(jìn)行開關(guān)路燈的操作。
路燈智能監(jiān)測(cè)控制系統(tǒng)中通信協(xié)議涉及到前端數(shù)據(jù)采集控制器與上位機(jī)的通信。采集的環(huán)境參數(shù)有光照強(qiáng)度和PM2.5兩種,設(shè)置操作包括模式選擇、手動(dòng)開關(guān)控制、光照閾值設(shè)置、時(shí)間段設(shè)置等,讀取操作包括當(dāng)前傳感器數(shù)據(jù)讀取、工作模式讀取、已設(shè)置光照閾值讀取、已設(shè)置時(shí)間段讀取、當(dāng)前路燈實(shí)際狀態(tài)(路燈開關(guān))等。
字節(jié)的串行傳送格式:1位起始位;8位數(shù)據(jù)位;1位停止位,無(wú)奇偶校驗(yàn)。字節(jié)存放順序采用小端模式,即低字節(jié)存放于低位地址,低字節(jié)在前,高字節(jié)在后。
幀是傳送信息的基本單元,在該系統(tǒng)中,每幀由幀起始符、地址域、控制域、數(shù)據(jù)長(zhǎng)度域、數(shù)據(jù)域、幀信息校驗(yàn)域及幀結(jié)束符等7個(gè)域組成。幀格式如表1所示。
表1 通信協(xié)議中的幀格式
STA表示幀起始符,用作標(biāo)識(shí)一幀信息的開始。AD表示地址域,標(biāo)識(shí)當(dāng)前收(發(fā))設(shè)備的地址。C表示控制域,代表要求執(zhí)行的操作。LEN表示長(zhǎng)度,代表數(shù)據(jù)域中的字節(jié)總數(shù)。DATA表示數(shù)據(jù)域,代表需要傳輸?shù)臄?shù)據(jù)。CRC表示校驗(yàn)碼,采用CRC-16循環(huán)冗余校驗(yàn),校驗(yàn)內(nèi)容為AD、C、LEN和DATA。END表示幀結(jié)束符,標(biāo)識(shí)一幀信息的結(jié)束。
經(jīng)試驗(yàn),系統(tǒng)采集數(shù)據(jù)準(zhǔn)確,路燈控制及時(shí)有效,未出現(xiàn)誤操作現(xiàn)象,所以系統(tǒng)具有良好的穩(wěn)定性。上位機(jī)光照數(shù)據(jù)查詢界面如圖6所示。
圖6 光照強(qiáng)度查詢界面
重點(diǎn)介紹了基于STM32的路燈智能監(jiān)測(cè)控制系統(tǒng)的下位機(jī)部分,該系統(tǒng)以STM32F103ZET6單片機(jī)作為核心處理器,功能模塊主要包括環(huán)境參數(shù)采集模塊、路燈智能控制模塊、故障檢測(cè)模塊和數(shù)據(jù)通模塊四個(gè)部分,可以實(shí)時(shí)采集光照強(qiáng)度和PM2.5數(shù)據(jù),并根據(jù)光照強(qiáng)度的強(qiáng)弱來(lái)自動(dòng)開關(guān)路燈,此外,在路燈發(fā)生故障時(shí)能夠及時(shí)向上位機(jī)端自動(dòng)發(fā)送故障報(bào)警信號(hào)。系統(tǒng)實(shí)現(xiàn)了路燈的智能化控制,節(jié)省了大量的人力資源和電力資源,具有良好的實(shí)用價(jià)值。