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