關(guān)鍵詞:森林火災(zāi);報(bào)警系統(tǒng);STM32;北斗定位;無線傳輸
0 前言
森林火災(zāi)是全球最嚴(yán)重的自然災(zāi)害之一,不僅破壞生態(tài)環(huán)境,還會(huì)危及社會(huì),使人的生命無法得到安全保障。2020年全國(guó)發(fā)生森林火災(zāi)有1 153起,直接減少了八千多公頃森林覆蓋面積[1-2],2024年3月15日17時(shí),四川省甘孜州雅江縣呷拉鎮(zhèn)白孜村發(fā)生森林火災(zāi),這些事故的發(fā)生都在時(shí)刻警醒著人們要把握森林防火安全。近年來由于全球氣溫異常,生態(tài)環(huán)境惡化,在非防火期內(nèi)森林火災(zāi)也時(shí)有發(fā)生,做好森林火災(zāi)的預(yù)防及報(bào)警刻不容緩。
1 設(shè)計(jì)方案
基于北斗定位的森林火災(zāi)報(bào)警系統(tǒng)要求以微處理器為控制核心,完成火災(zāi)報(bào)警有兩個(gè)關(guān)鍵因素,即火災(zāi)發(fā)生地的信息參數(shù)采集以及實(shí)現(xiàn)遠(yuǎn)程報(bào)警。系統(tǒng)框圖如圖1所示。
1.2 設(shè)計(jì)方案選擇
選用STM32F103C8T6芯片作為基于北斗定位的森林火災(zāi)報(bào)警系統(tǒng)的主控制器。選擇DS18B20溫度傳感器來測(cè)量森林環(huán)境中的溫度。MQ-2半導(dǎo)體氣體傳感器對(duì)煙霧氣體敏感,探測(cè)效果良好,性價(jià)比高,使用它來完成森林中煙霧濃度的探測(cè)。當(dāng)探測(cè)到有火災(zāi)時(shí)需要通過GSM模塊來把火災(zāi)發(fā)生的地點(diǎn)信息發(fā)送到管理員的手機(jī)中。SIM900A模塊工作頻段是四頻的,支持藍(lán)牙串口,支持TTS功能,體積小[3],適合作為系統(tǒng)的無線通信模塊。使用OLED12864模塊實(shí)時(shí)顯示森林中的溫度以及經(jīng)緯度信息。北斗定位系統(tǒng)是我國(guó)自主建設(shè)和運(yùn)行的,定位精度達(dá)10米,測(cè)速精度0.2m/s,數(shù)據(jù)安全可靠,因此使用北斗+GPS雙模衛(wèi)星定位GY-GPS6MV1 模塊來確定火災(zāi)發(fā)生的地點(diǎn)位置。
2 硬件電路設(shè)計(jì)
2.1 STM32單片機(jī)最小系統(tǒng)電路設(shè)計(jì)
STM32F103C8T6內(nèi)存容處量理以器及的1 M內(nèi)B核的是閃存cor,te2x個(gè)-M132, 位,1us模數(shù)轉(zhuǎn)化器,可以映射到16個(gè)模數(shù)轉(zhuǎn)化通道,3個(gè)異步串行通信通道[4]。STM32F103C8T6單片機(jī)芯片原理圖如圖2所示。
2.2 煙霧采集電路設(shè)計(jì)
當(dāng)森林中環(huán)境中煙霧濃度大于300PPM時(shí),表示有火災(zāi)發(fā)生,此時(shí)處理器將控制系統(tǒng)報(bào)警,并執(zhí)行發(fā)報(bào)警短信的動(dòng)作。本系統(tǒng)選用性價(jià)比較高的煙霧探測(cè)模塊MQ-2來采集環(huán)境中的煙霧濃度。煙霧檢測(cè)模塊MQ-2上設(shè)計(jì)電路把電導(dǎo)率的變化轉(zhuǎn)化為電壓的變化,因此只需要采集模塊引腳輸出的電壓值[5-6]。然后利用電壓和煙霧濃度之間的關(guān)系就可以計(jì)算出環(huán)境中具體的煙霧濃度值。煙霧檢測(cè)模塊MQ-2和處理器的連接電路如圖3所示。
2.3 溫度采集電路設(shè)計(jì)
溫度傳感器DS18B20一共只有3個(gè)引腳,其中兩個(gè)引腳是電源引腳,使用正5伏直流供電。溫度傳感器DS18B20內(nèi)部已經(jīng)把溫度轉(zhuǎn)化為數(shù)值,然后通過中間的2號(hào)引腳把溫度值傳出來,處理器需要按照一定的單總線協(xié)議從DQ引腳中把溫度讀取出來,然后把數(shù)據(jù)處理,最后把溫度顯示在顯示屏上。當(dāng)溫度大于60度時(shí),單片機(jī)發(fā)出控制命令,同時(shí)控制蜂鳴器報(bào)警,并發(fā)送報(bào)警短信。因此,在讀取溫度之前需要詳細(xì)地了解單總線通信協(xié)議,并通過PB5引腳利用單總線通信協(xié)議把溫度值讀取出來。DS18B20和處理器的連接電路如圖4所示。
2.4 定位電路設(shè)計(jì)
為了快速準(zhǔn)確定位到火災(zāi)發(fā)生的地址,使用北斗全球定位模塊來獲取火災(zāi)目標(biāo)的位置信息(經(jīng)度和緯度)。北斗模塊的信號(hào)接收模塊為GY-GPS6MV1,核心是U-BLOX NEO-6M模組,它能快速準(zhǔn)確地連接到衛(wèi)星,并從衛(wèi)星上連續(xù)不斷地獲取數(shù)據(jù)信息。此時(shí)獲取的數(shù)據(jù)信息是帶有起始位和結(jié)束位的一幀一幀的信息,每幀信息中包含了12個(gè)數(shù)據(jù)信息分別是:時(shí)間、緯度、緯度半球、經(jīng)度、經(jīng)度半球、GPS3toS+OkMZdH+87uWKGhr1f7xBuhAdNEFnsUvMahQ4Pg=狀態(tài)、正在使用解算位置的衛(wèi)星數(shù)量、HDOP水平精度因子、海拔高度、地球橢球面相對(duì)大地水準(zhǔn)面的高度、差分時(shí)間、差分站ID號(hào)[7-8]。GY-GPS6MV1模塊和處理器的電路連接圖如圖5所示。
2.5 短信報(bào)警電路設(shè)計(jì)
當(dāng)火災(zāi)發(fā)生地的環(huán)境溫度超過60度,或者煙霧濃度超過300PPM時(shí),此時(shí)就通過GSM模塊發(fā)送經(jīng)度和緯度的定位短信到管理員手機(jī)上。SIM900A模塊為5 伏直流供電,由于模塊在發(fā)送短信時(shí)的功耗較大,功耗高達(dá)10W,因此整個(gè)系統(tǒng)供電功率應(yīng)該10W以上。為此,這里將使用5伏2.1A的電源適配器給整個(gè)系統(tǒng)供電。在使用SIM900A模塊時(shí),應(yīng)該先把手機(jī)卡插入到模塊的卡槽中,當(dāng)模塊識(shí)別到移動(dòng)網(wǎng)絡(luò)之后,此時(shí)模塊上的信號(hào)指示燈就會(huì)由快速閃爍變成,每間隔3 秒閃爍一次。此時(shí)模塊就處于正常工作狀態(tài)。系統(tǒng)處理器處理所有的數(shù)據(jù),當(dāng)系統(tǒng)滿足了報(bào)警條件,處理器就可以把字符串型的信息通過串口通信協(xié)議發(fā)送給手機(jī)模塊,手機(jī)模塊接收到信息就會(huì)自動(dòng)觸發(fā)電信網(wǎng)絡(luò),把數(shù)據(jù)信息發(fā)送出去。
手機(jī)GSM模塊SIM900A和處理器的連接電路如圖6所示。
2.6 蜂鳴器報(bào)警電路設(shè)計(jì)
基于北斗定位的森林火災(zāi)報(bào)警系統(tǒng)中當(dāng)環(huán)境溫度超過60度,或者煙霧濃度超過300PPM的值時(shí),需要提醒用戶參數(shù)超標(biāo),這里使用有源蜂鳴器聲音來實(shí)現(xiàn)報(bào)警功能。蜂鳴器報(bào)警電路如圖7所示。
使用PNP三極管SS8550放大電流驅(qū)動(dòng)蜂鳴器。溫度超過60度,或者煙霧濃度超過300PPM的值時(shí),此時(shí)處理器通過PB11引腳給蜂鳴器報(bào)警電路一個(gè)低電平,此時(shí)SS8550三極管導(dǎo)通,有電流通過蜂鳴器,蜂鳴器響。當(dāng)參數(shù)正常時(shí),此時(shí)處理器通過PB11引腳給蜂鳴器報(bào)警電路一個(gè)高電平,此時(shí)SS8550三極管截止,沒有電流通過蜂鳴器,蜂鳴器停止發(fā)聲。
2.7 顯示電路設(shè)計(jì)
為了方便用戶實(shí)時(shí)直觀地看到整個(gè)系統(tǒng)所有采集的溫度和煙霧濃度等數(shù)據(jù)信息,這里將采用面積小且節(jié)能的OLED12864 作為系統(tǒng)的顯示屏。顯示屏OLED12864和處理器的接口電路如圖8所示。
本系統(tǒng)使用OLED12864字符顯示模塊一共有7 個(gè)引腳,使用3.3伏供電,供電引腳為1號(hào)引腳和2號(hào)引腳,1號(hào)引腳連接到電源地,2號(hào)引腳連接到3.3伏正電源[9-10]。3號(hào)引腳是SPI數(shù)據(jù)通信的時(shí)鐘線連接到處理器的PA5引腳,4號(hào)引腳是SPI數(shù)據(jù)通信的數(shù)據(jù)線連接到處理器的PA7引腳。6號(hào)引腳是SPI數(shù)據(jù)通信的通信數(shù)據(jù)或者命令的選擇引腳,當(dāng)該引腳賦值為高電平,表示傳輸?shù)氖菙?shù)據(jù);當(dāng)該引腳賦值為低電平,表示傳輸?shù)氖敲頪11]。7號(hào)引腳是片選引腳,低電平有效。
本系統(tǒng)使用的OLED12864是一個(gè)字符型的顯示器件,只能顯示英文、數(shù)字以及特殊字符等等。單片機(jī)處理使用SPI通信協(xié)議把需要顯示的數(shù)據(jù)傳送給OLED12864,單片機(jī)在處理顯示的字符時(shí),需要把字符轉(zhuǎn)化為ASCII碼,然后再把字符傳送給OLED12864 內(nèi)部的控制器
3 軟件設(shè)計(jì)
3.1 總軟件流程設(shè)計(jì)
總軟件 設(shè)計(jì)流程圖如圖9所示。
基于北斗定位的森林火災(zāi)報(bào)警系統(tǒng)在主函數(shù)中首先要把GSM短信報(bào)警模塊和北斗模塊使用的串口1和串口2初始化,完成了初始化之后,通過串口2從北斗模塊中獲取當(dāng)前的經(jīng)度值和緯度值并把數(shù)據(jù)顯示在顯示屏上,再通過ADC采集模塊從煙霧傳感器中采集煙霧值并把數(shù)據(jù)顯示在顯示屏上。接著采集溫度值,并把溫度值顯示在顯示屏上。最后進(jìn)行比較判斷,如果煙霧濃度大于300PPM,或者溫度大于60度則表示森林中有發(fā)生火災(zāi),此時(shí)處理器控制蜂鳴器啟動(dòng)報(bào)警,同時(shí)啟動(dòng)串口1 通過GSM 模塊發(fā)送報(bào)警短信[12-13]。
3.2 溫度采集程序設(shè)計(jì)
本設(shè)計(jì)使用數(shù)字量輸出的溫度傳感器DS18B20 采集森林中環(huán)境的溫度。處理器連接溫度傳感器的數(shù)字信息輸出引腳,編寫代碼從該引腳中獲取數(shù)字量值,溫度傳感器中自帶有寄存器,不管處理器有沒有讀數(shù)據(jù),溫度信息都保存在寄存器中。處理器通過總線協(xié)議可以從寄存器中讀取數(shù)值[14]。具體的讀取數(shù)據(jù)的流程如圖10所示。
首先把溫度數(shù)值信號(hào)初始化,然后處理器發(fā)送啟動(dòng)指令給DS18B20的寄存器,然后再發(fā)送復(fù)位的指令給DS18B20,DS18B20寄存器接收到以上指令之后檢查寄存器是否做好數(shù)據(jù)輸出的準(zhǔn)備。然后再進(jìn)行跳過ROM操作,寄存器啟動(dòng)轉(zhuǎn)換,輸出數(shù)值。此時(shí)處理器從寄存器中連續(xù)獲取高8位和低8位的數(shù)據(jù),然后把數(shù)據(jù)合成為16位的數(shù),但是此時(shí)的數(shù)據(jù)值并不是具體的溫度值,還需要把數(shù)值乘以0.0625,最終把數(shù)值換算成溫度值。
3.3 煙霧濃度采集程序設(shè)計(jì)
為了提高測(cè)量的準(zhǔn)確度,本設(shè)計(jì)使用STM32F103 C8T6處理器自帶的12位ADC轉(zhuǎn)換器從煙霧傳感器的信號(hào)輸出引腳獲取數(shù)值。STM32F103C8T6處理器中12位的ADC轉(zhuǎn)換器是使用逐次比較的方式把傳感器輸入的電壓值以數(shù)值的形式輸出。電壓采集流程圖如圖11所示。
3.4 顯示軟件程序設(shè)計(jì)
顯示程序是對(duì)OLED12864顯示器件進(jìn)行程序設(shè)計(jì),程序中完成顯示屏的初始化以及顯示具體內(nèi)容的設(shè)計(jì),在顯示程序的初始化中對(duì)顯示屏的使能有效位進(jìn)行控制,使其開啟顯示功能,之后設(shè)定字體大小、設(shè)定顯示位置以及清空顯示屏等內(nèi)容進(jìn)行程序設(shè)計(jì),在具體的顯示內(nèi)容中,通過顯示屏的數(shù)據(jù)引腳接收單片機(jī)傳送的具體數(shù)據(jù),并按照具體顯示位置將數(shù)據(jù)顯示出來[15-16]。顯示函數(shù)運(yùn)行時(shí),首先使用SPI協(xié)議發(fā)送命令使顯示屏進(jìn)行初始化,包括開啟屏幕、字體大小和位置確定。之后等待具體的顯示內(nèi)容,收到顯示內(nèi)容后,按照初始化的設(shè)定命令完成顯示。顯示流程圖如圖12所示。
3.5 遠(yuǎn)程短信報(bào)警程序設(shè)計(jì)
GSM 模塊使用的是SIM900A 模塊,本次設(shè)計(jì)中STM32F103C8T6單片機(jī)為控制模塊,通過串口通信的方式發(fā)送AI指令來控制SIM900A模塊進(jìn)行發(fā)短信的操作。GSM模塊程序流程圖如圖13所示。
4 系統(tǒng)調(diào)試
4.1 軟件調(diào)試
按照系統(tǒng)的整體功能,通過調(diào)用函數(shù)的方式,編寫邏輯控制代碼,全部代碼調(diào)試運(yùn)行成功。
4.2 實(shí)物測(cè)試
使用電壓為5伏輸出電流為2A的適配器給系統(tǒng)供電。在手機(jī)模塊的卡槽中插入一張移動(dòng)卡,然后再接通電源。通電后北斗模塊和手機(jī)模塊開始初始化操作。當(dāng)手機(jī)模塊上的信號(hào)指示燈變成慢閃,且北斗模塊上的信號(hào)指示燈變亮,表示這兩個(gè)模塊都初始化成功。此時(shí)顯示屏上顯示當(dāng)前的北斗模塊獲取的當(dāng)前的經(jīng)度和緯度信息,以及當(dāng)前的溫度和煙霧濃度值。開機(jī)初始化成功后顯示界面如圖14所示。
接下來測(cè)試煙霧濃度過高報(bào)警。人為制造煙霧,并把煙霧對(duì)著煙霧傳感器的探頭,此時(shí)煙霧濃度升高,當(dāng)煙霧濃度高于300PPM的時(shí)候,此時(shí)蜂鳴器開始響,同時(shí)管理員的手機(jī)上接收到一條報(bào)警短信。報(bào)警信息的內(nèi)容如圖15所示。最后測(cè)試溫度過高報(bào)警。人為提高環(huán)境溫度,此時(shí)溫度升高,當(dāng)溫度高于60度的時(shí)候,此時(shí)蜂鳴器開始報(bào)警,同時(shí)管理員的手機(jī)上接收到一條報(bào)警短信。報(bào)警信息的內(nèi)容如圖16所示。
當(dāng)管理員收到報(bào)警短信后,立即打開奧維互動(dòng)地圖App(奧維互動(dòng)地圖是由北京元生華網(wǎng)公司開發(fā)的跨平臺(tái)地圖瀏覽器,擁有強(qiáng)大的設(shè)計(jì)功能與地理信息展現(xiàn)技術(shù),也可實(shí)現(xiàn)經(jīng)緯度轉(zhuǎn)化為地點(diǎn)坐標(biāo),滿足人們的需求,因此可以選擇此軟件),選擇搜索輸入經(jīng)緯度信息,如圖17所示:
輸入完成以后點(diǎn)擊確定,點(diǎn)擊地圖導(dǎo)航功能從我的位置到地圖中心點(diǎn)(火災(zāi)發(fā)生地),點(diǎn)擊搜索,直接導(dǎo)航前往火災(zāi)地進(jìn)行救火。通過觀察奧維地圖App,地圖上顯示的經(jīng)緯度與實(shí)際火災(zāi)發(fā)生地的經(jīng)緯度有一定的偏差,大概在15米左右,但這不完全是由定位模塊決定的,也有可能與地圖軟件本身的精確度有關(guān),總體來說,該設(shè)計(jì)達(dá)到預(yù)期要求。中心點(diǎn)導(dǎo)航界面如圖18所示。
5 結(jié)論
基于北斗定位的森林火災(zāi)報(bào)警系統(tǒng)在單片機(jī)和傳感器的共同作用下,實(shí)現(xiàn)了預(yù)期的溫度和煙霧濃度智能監(jiān)測(cè)與顯示、火災(zāi)發(fā)生地的實(shí)時(shí)定位和遠(yuǎn)程報(bào)警功能。運(yùn)行的結(jié)果可以明確地表明該設(shè)計(jì)從數(shù)據(jù)的智能采集到執(zhí)行器件的自動(dòng)控制均符合預(yù)期的目標(biāo),數(shù)據(jù)的采集過程中,數(shù)據(jù)穩(wěn)定并準(zhǔn)確,沒有發(fā)生錯(cuò)誤,執(zhí)行器件的控制中,執(zhí)行器件穩(wěn)定運(yùn)行,沒有出現(xiàn)控制的邏輯錯(cuò)誤。最終成功地實(shí)現(xiàn)了森林火災(zāi)的遠(yuǎn)程監(jiān)控和報(bào)警功能。