陳景婷
(廣東省華立技師學(xué)院,廣東 廣州 511325)
火災(zāi),是人類(lèi)重大的災(zāi)難之一。每一次的火情都牽動(dòng)無(wú)數(shù)人的心,而火情最容易帶來(lái)人員的傷亡和財(cái)產(chǎn)的損失。據(jù)統(tǒng)計(jì),全世界每天發(fā)生大大小小的火災(zāi)約一萬(wàn)起,而我國(guó)在消防體系十分健全的情況下,每年火災(zāi)發(fā)生的數(shù)量達(dá)到十五萬(wàn)起,家庭起火導(dǎo)致的火災(zāi)約五萬(wàn)起,占三分之一。每年因火災(zāi)而失去生命的人約800人,每年因火災(zāi)造成的經(jīng)濟(jì)損失超10億元。家庭防火刻不容緩,特別是因缺乏安全意識(shí)玩火、家庭線路老化、天然氣泄漏等需要引起注意。如今,很多重要的公共場(chǎng)合已在關(guān)鍵地方安裝了煙霧報(bào)警器,能在第一時(shí)間發(fā)現(xiàn)可能存在的火情威脅。但家庭是我們極度容易忽視的地方。
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,智能家居作為物聯(lián)網(wǎng)最典型的應(yīng)用之一,越來(lái)越多的設(shè)備接入物聯(lián)網(wǎng)中,給人們的生活帶來(lái)了很多便利。本系統(tǒng)利用物聯(lián)網(wǎng)技術(shù)完成了簡(jiǎn)易的智能家庭監(jiān)測(cè)和控制系統(tǒng)。利用開(kāi)源的機(jī)智云平臺(tái)實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)交互,通過(guò)智能云平臺(tái)對(duì)家庭傳感器實(shí)現(xiàn)遠(yuǎn)程控制,對(duì)家庭中潛在的火源威脅進(jìn)行監(jiān)控。采用煙霧傳感器、溫濕度傳感器、人體光學(xué)傳感器等,對(duì)嵌入式系統(tǒng)在中間層進(jìn)行深度開(kāi)發(fā),實(shí)現(xiàn)基本的功能原理,完成原理圖、PCB的設(shè)計(jì),以及嵌入式系統(tǒng)軟件實(shí)現(xiàn)課題的目標(biāo)功能。
本系統(tǒng)基于ARM M3系列控制器,考慮外設(shè)中需要較大的驅(qū)動(dòng)能力和較大的內(nèi)存存儲(chǔ)空間才能實(shí)現(xiàn)系統(tǒng)運(yùn)算,故結(jié)合本設(shè)計(jì)的需求,使用WiFi模塊作為單片機(jī)與上位機(jī)系統(tǒng)間的通信模塊。單片機(jī)采集外部的溫濕度信息、空氣中煙霧的濃度信息等,通過(guò)WiFi模塊連接云平臺(tái),借助云平臺(tái)與手機(jī)終端APP將信息傳遞給用戶。用戶通過(guò)手機(jī)終端APP按鍵,向云平臺(tái)傳輸字符信號(hào),云平臺(tái)通過(guò)WiFi模塊向單片機(jī)系統(tǒng)傳遞控制指令,單片機(jī)接收到指令后,執(zhí)行相應(yīng)的操作。系統(tǒng)框架如圖1所示。
圖1 系統(tǒng)框架
本系統(tǒng)的硬件模塊主要包括:嵌入式微控制器STM32F103C8模塊、GPS/北斗模塊、OV7670攝像頭模塊和GPRS模塊。其中,STM32F103C8為主控制器,負(fù)責(zé)信息的處理與控制;GPS/北斗模塊和OV7670攝像頭模塊負(fù)責(zé)采集環(huán)境圖片信息和當(dāng)前的位置信息;GPRS模塊負(fù)責(zé)嵌入組建網(wǎng)絡(luò)并與Internet服務(wù)器通信。
本系統(tǒng)采用12 V的DC作為供電電源,用線性穩(wěn)壓芯片和DC調(diào)壓芯片作為嵌入式系統(tǒng)為各外設(shè)供電。由于本系統(tǒng)中有較多的應(yīng)用外設(shè),因此需要多個(gè)穩(wěn)壓芯片穩(wěn)定系統(tǒng)的電壓,以確保外設(shè)和CPU不受電壓影響,正常工作。有些負(fù)載比較大的外設(shè),如電機(jī)和舵機(jī)等,在使用時(shí)需要較大電流,如果共用同一個(gè)電源系統(tǒng),在外設(shè)驅(qū)動(dòng)時(shí),電壓和電流波動(dòng)較大,會(huì)影響其他外設(shè)的正常使用,而嵌入式系統(tǒng)也可能會(huì)因?yàn)殡妷汉碗娏鞯牟环€(wěn)定造成復(fù)位現(xiàn)象,極大影響系統(tǒng)的穩(wěn)定運(yùn)行。因此在選擇系統(tǒng)電源時(shí),選擇多電源分開(kāi)供電的方案,如圖2所示。
圖2 系統(tǒng)電源分配方案
嵌入式開(kāi)發(fā)系統(tǒng)采用STM32F103RCT6核心板模塊。模塊資源包括STM32RCT6集成的32位SOC、SWD程序調(diào)試接口、復(fù)位按鍵電路、通用I/O口、時(shí)鐘振蕩電路、FLASH存儲(chǔ)電路、OLED接口、按鍵電路以及LED電路。
ESP8266作為一款性能強(qiáng)大的無(wú)線射頻模塊,內(nèi)部定義了豐富的管腳。ESP8266通過(guò)串口與單片機(jī)相連,根據(jù)數(shù)據(jù)手冊(cè)可知,單片機(jī)的USART1在PA9和PA10引腳上,其中,ESP8266的RX與單片機(jī)的TX相連,ESP8266的TX與單片機(jī)的RX相連。ESP826作為本系統(tǒng)的主要通信載體,連接了MCU和云服務(wù)平臺(tái),通過(guò)串口1的串口協(xié)議與MCU實(shí)現(xiàn)數(shù)據(jù)交互,通過(guò)與局域網(wǎng)的連接,把串口協(xié)議傳輸?shù)男畔⑸蟼鞯皆品?wù)平臺(tái)。同樣,用戶操作上位機(jī)平臺(tái),經(jīng)云平臺(tái)和ESP8266將控制信號(hào)通過(guò)串口協(xié)議傳輸給MCU,MCU在接收到串口數(shù)據(jù)后,執(zhí)行相應(yīng)的指令。
L298N模塊是一款集成的驅(qū)動(dòng)電路,其具有驅(qū)動(dòng)能力強(qiáng)、發(fā)熱量低、抗干擾能力強(qiáng)等特性。L298N可輸出電流為2 A,最大可輸出4 A電流,最高可驅(qū)動(dòng)50 V工作電壓,可用于中小型直流電機(jī)的控制。L298N使用單片機(jī)的TTL邏輯電平控制電機(jī)的正反轉(zhuǎn),軟件上只需改變輸入端邏輯電平的脈沖寬度即可控制電機(jī)的轉(zhuǎn)速。通過(guò)控制輸入端邏輯電平的輸入端正轉(zhuǎn)或反轉(zhuǎn),就能相應(yīng)控制電機(jī)的正反轉(zhuǎn)。L298N的正常工作電壓為5 V。L298N內(nèi)部集成了L298N驅(qū)動(dòng)和8個(gè)續(xù)流二極管,構(gòu)成H橋驅(qū)動(dòng)電路。
SG90使用5 V直流電壓,控制信號(hào)接單片機(jī)的PA11。PA11為定時(shí)器的通道4,通過(guò)PWM信號(hào)控制舵機(jī)的正反轉(zhuǎn),通過(guò)PWM輸出的脈沖寬度來(lái)控制舵機(jī)的轉(zhuǎn)速和角度。
MQ135煙霧傳感器為5 V供電,通過(guò)PA1的ADC引腳采集MQ135信號(hào)。MQ135煙霧傳感器可以輸出數(shù)字信號(hào)和模擬信號(hào),本系統(tǒng)采集模擬信號(hào)。
本系統(tǒng)使用OLED顯示電路顯示本系統(tǒng)的外設(shè)狀態(tài),如煙霧傳感器ADC采集的值,溫濕度的值,以及電機(jī)、舵機(jī)、LED、風(fēng)扇的狀態(tài)。OLED顯示電路采用3.3 V電壓供電,使用IC協(xié)議通信。
本系統(tǒng)的軟件設(shè)計(jì)模塊主要包含ESP8266固件燒錄、云平臺(tái)接入、云平臺(tái)創(chuàng)建節(jié)點(diǎn)、STM32固件開(kāi)發(fā)四部分。借助ESP8266與SOC的云平臺(tái)開(kāi)發(fā)需要完成以下4步:
(1)ESP8266模塊燒錄GAgent開(kāi)發(fā)固件;
(2)機(jī)智云創(chuàng)作者開(kāi)發(fā)中心創(chuàng)建產(chǎn)品以及定義數(shù)據(jù)點(diǎn);
(3)下載機(jī)智云開(kāi)發(fā)平臺(tái)生成的通信協(xié)議并對(duì)協(xié)議進(jìn)行移植;
(4)使用機(jī)智云APP對(duì)設(shè)備進(jìn)行遠(yuǎn)程測(cè)試。
初始化各模塊的函數(shù)后,在軟件的主函數(shù)中寫(xiě)入系統(tǒng)的總體服務(wù)函數(shù),系統(tǒng)在OLED顯示屏上顯示溫濕度、煙霧、門(mén)、窗以及人體紅外等傳感器狀態(tài)。當(dāng)按鍵按下時(shí),OLED顯示為安防狀態(tài),然后系統(tǒng)掃描MQ135煙霧傳感器及溫濕度傳感器,當(dāng)傳感器的數(shù)值大于閾值時(shí),系統(tǒng)報(bào)警。當(dāng)上位機(jī)執(zhí)行控制指令時(shí),觸發(fā)串口中斷,接收來(lái)自上位機(jī)的字符指令,把相應(yīng)的標(biāo)志置位后,執(zhí)行控制指令??刂浦髁鞒倘鐖D3所示。
圖3 控制主流程
本系統(tǒng)基于STM32固件庫(kù)開(kāi)發(fā),在軟件開(kāi)發(fā)之前,需要對(duì)硬件系統(tǒng)的固件庫(kù)進(jìn)行初始化(GPIO初始化、串口初始化、IC協(xié)議初始化、定時(shí)器初始化),方便以后使用。
ESP8266模塊作為本系統(tǒng)的傳輸媒介,使用串口通信,初始化串口代碼后,需要撰寫(xiě)WiFi模塊的接收代碼和發(fā)送代碼。上位機(jī)APP按鈕按下后,通過(guò)WiFi模塊給單片機(jī)傳輸一個(gè)字符指令,單片機(jī)程序中設(shè)定接收相應(yīng)的字符后,將系統(tǒng)中標(biāo)志位的布爾值賦值,系統(tǒng)在運(yùn)行中不斷掃描標(biāo)志位布爾值的狀態(tài),執(zhí)行相應(yīng)的指令。
初始化完成后,通過(guò)OLED顯示函數(shù)向OLED顯示屏不斷傳送信息,通過(guò)sprintf()函數(shù)把字符和模塊采集的數(shù)據(jù)格式化并送入oled_buffer字符數(shù)組,通過(guò)判斷狀態(tài)標(biāo)志位的布爾值,不斷更新字符數(shù)組內(nèi)存放的值,然后通過(guò)OLED_ShowStr()函數(shù)向OLED傳送信息。OLED_ShowStr()包含4個(gè)入口參數(shù),分別為OLED的坐標(biāo),坐標(biāo),字符串和字符大小。
本系統(tǒng)中的門(mén)和窗使用舵機(jī)和電機(jī)控制,舵機(jī)和電機(jī)均依靠單片機(jī)的脈沖寬度調(diào)制來(lái)控制轉(zhuǎn)速和轉(zhuǎn)動(dòng)角度,電機(jī)和舵機(jī)分別使用系統(tǒng)的定時(shí)器3和定時(shí)器1。以電機(jī)控制為例,初始化結(jié)束后,系統(tǒng)WINDOW_TIM3_PWM_INIT(799,0)定時(shí)器設(shè)定一個(gè)時(shí)鐘周期為800 ms,在上位機(jī)執(zhí)行開(kāi)窗或者關(guān)窗指令時(shí),設(shè)定25%的脈沖寬度,延時(shí)1 s后停止。電機(jī)的控制引腳分別懸掛在定時(shí)器3的通道3和通道4上,通過(guò)控制不同通道上的脈沖寬度可以控制電機(jī)的正轉(zhuǎn)和反轉(zhuǎn),以實(shí)現(xiàn)開(kāi)窗和關(guān)窗的目的。
ESP8266接入機(jī)智云平臺(tái)需要將機(jī)智云開(kāi)發(fā)的固件燒錄至WiFi模塊的SOC中,在機(jī)智云官網(wǎng)上有已經(jīng)集成的固件包,以及燒錄的SDK軟件。固件燒錄時(shí),需要將ESP8266的串口和USB-TTL的串口下載工具對(duì)應(yīng)連接,在下載固件時(shí),需注意把ESP8266的GPIO0連接到地線上,使模塊進(jìn)入寫(xiě)入模式。燒錄完成后將GPIO0連接到VCC中,設(shè)置為工作模式。
本系統(tǒng)需要使用云服務(wù)平臺(tái)對(duì)系統(tǒng)進(jìn)行實(shí)時(shí)監(jiān)控,如果自主搭建云服務(wù)器的難度和成本太大,可以考慮接入機(jī)智云開(kāi)發(fā)平臺(tái)。接入機(jī)智云流程如圖4所示。
圖4 接入機(jī)智云流程
注冊(cè)開(kāi)發(fā)者賬號(hào)后,用戶賬號(hào)可以通過(guò)用戶的相關(guān)產(chǎn)品相互關(guān)聯(lián)。創(chuàng)建產(chǎn)品,根據(jù)用戶產(chǎn)品的類(lèi)型創(chuàng)建對(duì)應(yīng)的產(chǎn)品分類(lèi)以及產(chǎn)品名稱(chēng)。機(jī)智云平臺(tái)每個(gè)賬號(hào)可以接入10個(gè)開(kāi)發(fā)產(chǎn)品。創(chuàng)建產(chǎn)品之后,在產(chǎn)品中創(chuàng)建數(shù)據(jù)點(diǎn)。數(shù)據(jù)點(diǎn)即為系統(tǒng)的功能及參數(shù)。在云平臺(tái)創(chuàng)建數(shù)據(jù)節(jié)點(diǎn),本系統(tǒng)中,移動(dòng)終端和SOC模塊以控制和顯示為主,數(shù)據(jù)類(lèi)型分為可寫(xiě)和只讀兩種。可寫(xiě)類(lèi)型:用戶控制家庭的設(shè)備數(shù)據(jù)類(lèi)型,如,LED、門(mén)、窗、空調(diào)等;只讀類(lèi)型:溫濕度模塊、煙霧傳感器、人體紅外傳感器通過(guò)SOC上傳的數(shù)據(jù)。創(chuàng)建節(jié)點(diǎn)后生成可移植的平臺(tái),將其移植到SOC后,設(shè)備能與云端實(shí)時(shí)通信,進(jìn)行數(shù)據(jù)交互。
搭建系統(tǒng)后,對(duì)系統(tǒng)的穩(wěn)定性進(jìn)行測(cè)試,對(duì)系統(tǒng)的功能進(jìn)行必要性測(cè)試。系統(tǒng)上電自動(dòng)復(fù)位時(shí),各模塊正常運(yùn)行,LED、電機(jī)、舵機(jī)、風(fēng)扇均處于停止?fàn)顟B(tài),OLED顯示屏循環(huán)顯示模塊狀態(tài),紅外檢測(cè)狀態(tài)為無(wú)人狀態(tài),溫濕度檢測(cè)正常顯示,煙霧傳感器數(shù)據(jù)正常顯示。
本設(shè)計(jì)以STM32F103RCT6為核心,通過(guò)串口協(xié)議與本系統(tǒng)的主要通信模塊ESP8266相連,單片機(jī)可通過(guò)串口協(xié)議完成對(duì)模塊數(shù)據(jù)和ESP8266的WiFi模塊通信,ESP8266在燒錄機(jī)智云提供的固件后可連接到局域網(wǎng),與機(jī)智云服務(wù)云平臺(tái)進(jìn)行實(shí)時(shí)數(shù)據(jù)交互。
云平臺(tái)可以在線調(diào)試系統(tǒng)的外設(shè)虛擬狀態(tài),在云平臺(tái)的在線虛擬設(shè)備狀態(tài)下,系統(tǒng)外設(shè)控制狀態(tài)為布爾值,可以通過(guò)布爾值控制設(shè)備的狀態(tài)標(biāo)志位。系統(tǒng)在服務(wù)器的虛擬狀態(tài)位如圖5所示。
圖5 云平臺(tái)控制界面
系統(tǒng)通過(guò)ESP8266與云平臺(tái)上傳系統(tǒng)狀態(tài)標(biāo)志以及溫濕度和煙霧傳感器采集的數(shù)據(jù)。系統(tǒng)向上位機(jī)上傳數(shù)據(jù)示意圖如圖6所示。
圖6 系統(tǒng)向上位機(jī)上傳數(shù)據(jù)
當(dāng)溫濕度和煙霧的值大于STM32F103RCT6單片機(jī)設(shè)定的閾值時(shí),單片機(jī)發(fā)出警報(bào),并通過(guò)串口將預(yù)警信號(hào)發(fā)送給上位機(jī)APP。人體光學(xué)傳感器HCSR-501采集人員闖入信息??梢栽谕獬鰰r(shí)通過(guò)按鍵將單片機(jī)設(shè)定為安防模式,單片機(jī)通過(guò)不斷掃描人體光學(xué)傳感器HCSR-501的電平判斷是否有人闖入。