鄧自寧,王寧
(北方民族大學(xué),寧夏銀川,750021)
隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,生活中各個(gè)行業(yè)都或多或少地因其發(fā)生改變,智能家居作為物聯(lián)網(wǎng)發(fā)展的一個(gè)重要領(lǐng)域,滿足了人們追求更高生活質(zhì)量的美好愿景,對(duì)人們生活方式的改變有著重要意義。智能家居是通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)、通信、自動(dòng)化控制等技術(shù)對(duì)傳統(tǒng)家居進(jìn)行改造,將家電、開關(guān)、照明、門窗、監(jiān)控和家庭安防等模塊連接在一起,方便用戶對(duì)家居環(huán)境進(jìn)行監(jiān)測(cè)和對(duì)家居設(shè)備進(jìn)行管理的控制系統(tǒng)。該文基于阿里云平臺(tái),采用STM32F103C8T6作為主控芯片和終端節(jié)點(diǎn)的控制芯片,結(jié)合溫濕度、光照、CO等環(huán)境數(shù)據(jù)傳感器和WiFi模塊構(gòu)建了能夠進(jìn)行遠(yuǎn)程操控的智能家居系統(tǒng)。它的出現(xiàn)無(wú)疑會(huì)給人提供一個(gè)舒適、安全、便利的生活環(huán)境。
基于云平臺(tái)的智能家居系統(tǒng)整體分為環(huán)境信息采集模塊、數(shù)據(jù)處理和通信模塊、設(shè)備控制模塊和云平臺(tái)設(shè)計(jì)四個(gè)部分、系統(tǒng)整體結(jié)構(gòu)見(jiàn)圖1。
(1)環(huán)境信息采集模塊:系統(tǒng)將若干終端節(jié)點(diǎn)部署在不同房間中,來(lái)采集各個(gè)房間內(nèi)傳感器收集的環(huán)境信息。通過(guò)溫濕度傳感器、光照傳感器獲取室內(nèi)溫度和濕度值,通過(guò)紅外傳感器來(lái)判斷室內(nèi)是否有人、通過(guò)煙霧濃度傳感器和CO濃度傳感器來(lái)檢測(cè)室內(nèi)是否發(fā)生火災(zāi)和煤氣泄漏。以上傳感器采集到的環(huán)境數(shù)據(jù)信息都將匯總在不同終端節(jié)點(diǎn)上,再發(fā)送至主控制器進(jìn)行處理。
(2)數(shù)據(jù)處理模塊和通信模塊:主控制器接收到終端節(jié)點(diǎn)發(fā)送的環(huán)境數(shù)據(jù)后對(duì)其中的CO濃度數(shù)據(jù)和煙霧濃度數(shù)據(jù)進(jìn)行分析,如果超出設(shè)置的閾值,將會(huì)通過(guò)SIM模塊給用戶發(fā)送報(bào)警信息并讓蜂鳴器報(bào)警,同時(shí)將收到的環(huán)境數(shù)據(jù)組成特定的數(shù)據(jù)幀格式,驅(qū)動(dòng)WiFi模塊使用MQTT報(bào)文協(xié)議與云平臺(tái)進(jìn)行通信。
(3)云平臺(tái)設(shè)計(jì):云平臺(tái)會(huì)將收到的報(bào)文進(jìn)行解析,通過(guò)報(bào)文中不同的標(biāo)識(shí)符與設(shè)備和環(huán)境信息一一對(duì)應(yīng),并將環(huán)境數(shù)據(jù)和電器設(shè)備狀態(tài)顯示在云平臺(tái)界面上,同時(shí)會(huì)將數(shù)據(jù)轉(zhuǎn)發(fā)至云智能手機(jī)APP上,方便用戶查看室內(nèi)信息。用戶也可以直接通過(guò)手機(jī)APP來(lái)下發(fā)電器設(shè)備控制指令。
(4)設(shè)備控制模塊:用戶通過(guò)手機(jī)APP下發(fā)控制指令時(shí),指令會(huì)先上傳至云平臺(tái),云平臺(tái)再將指令通過(guò)WiFi模塊下發(fā)到主控制器,主控制器將報(bào)文解析后發(fā)送至不同的終端節(jié)點(diǎn),使終端節(jié)點(diǎn)來(lái)控制相應(yīng)的電器設(shè)備。
系統(tǒng)采用STM32F103C8T6作為主控制器芯片,該芯片基于32位ARM核心,包含64K字節(jié)閃存,3個(gè)USART、2個(gè)SPI、2個(gè)I2C接口等多個(gè)通信接口。主控制器通過(guò)串口1調(diào)試程序、串口2驅(qū)動(dòng)WiFi模塊與云平臺(tái)通信、串口3驅(qū)動(dòng)SIM模塊在CO濃度和煙霧濃度超標(biāo)時(shí)給用戶發(fā)送報(bào)警短信,通過(guò) SPI1接口驅(qū)動(dòng)CC1101射頻通信模塊與終端節(jié)點(diǎn)進(jìn)行通信,以實(shí)現(xiàn)環(huán)境數(shù)據(jù)的上傳和設(shè)備控制指令的下發(fā)。主控制器原理圖見(jiàn)圖2。
系統(tǒng)采用ESP8266作為WiFi模塊實(shí)現(xiàn)主控制器與云平臺(tái)之間的通信,ESP8266 的芯片是基于無(wú)線通信協(xié)議的 UART-WiFi透?jìng)髂K芯片,支持802.11b/g/n的無(wú)線標(biāo)準(zhǔn),并帶Station、AP、Station+AP三種可選擇的工作模式。主控制通過(guò)串口2向WiFi模塊發(fā)送AT指令,將WiFi模塊設(shè)置為Station模式,使WiFi模塊通過(guò)路由器連接云平臺(tái)服務(wù)器,來(lái)實(shí)現(xiàn)主控制器與云平臺(tái)的通信功能。ESP8266原理圖見(jiàn)圖3。
系統(tǒng)采用STM32F103C8T6作為終端節(jié)點(diǎn)控制芯片,在節(jié)點(diǎn)搭載了溫濕度傳感器、光照傳感器、人體紅外傳感器、CO傳感器和煙霧傳感器來(lái)收集室內(nèi)各種環(huán)境數(shù)據(jù),將收集到的數(shù)據(jù)通過(guò)SPI接口驅(qū)動(dòng)CC1101射頻通信模塊發(fā)送至主控制器。同時(shí)在終端節(jié)點(diǎn)上還搭載著LED燈,繼電器、步進(jìn)電機(jī)等設(shè)備來(lái)模擬室內(nèi)電器設(shè)備,當(dāng)終端節(jié)點(diǎn)接收到主控制器發(fā)來(lái)的控制指令時(shí),將指令進(jìn)行解析后,對(duì)相應(yīng)的設(shè)備進(jìn)行控制。
系統(tǒng)采用DHT11傳感器來(lái)收集室內(nèi)溫濕度數(shù)據(jù)、BH1750來(lái)檢測(cè)室內(nèi)光照強(qiáng)度值、MQ-7可燃?xì)怏w傳感器和MQ-2煙霧檢測(cè)傳感器分別來(lái)檢測(cè)室內(nèi)CO濃度值和煙霧濃度值,采用LED燈管來(lái)模擬室內(nèi)燈光、MG90S舵機(jī)來(lái)模擬電動(dòng)窗簾、繼電器來(lái)模擬空調(diào)和插座等電器。DHT11原理圖見(jiàn)圖4,MQ-2原理圖見(jiàn)圖5。
系統(tǒng)軟件設(shè)計(jì)主要包括終端節(jié)點(diǎn)的軟件設(shè)計(jì),主控制器的軟件設(shè)計(jì)和終端界面設(shè)計(jì)3部分。
(1)傳感器數(shù)據(jù)采集和設(shè)備控制:系統(tǒng)共有四個(gè)終端節(jié)點(diǎn),每個(gè)終端節(jié)點(diǎn)代表不同的房間,不同的終端節(jié)點(diǎn)上掛載有不同傳感器和電器設(shè)備。例如在廚房終端節(jié)點(diǎn)掛載有煙霧傳感器和CO傳感器,在客廳和臥室掛載有溫濕度和光照傳感器。在對(duì)傳感器和電器設(shè)備進(jìn)行初化之后系統(tǒng)開始定時(shí)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。
(2)數(shù)據(jù)發(fā)送:終端節(jié)點(diǎn)上電后首先對(duì)串口、SPI等通信接口和定時(shí)器進(jìn)行初始化,緊接著對(duì)傳感器驅(qū)動(dòng)程序和電器設(shè)備驅(qū)動(dòng)程序進(jìn)行初始化。將采集到的環(huán)境數(shù)據(jù)和電器設(shè)備狀態(tài)信息按照特定的協(xié)議格式存放在字符數(shù)組中,配置定時(shí)器中斷服務(wù)函數(shù)每2分鐘通過(guò)射頻模塊給主控制器發(fā)送存放在數(shù)組中的信息。終端節(jié)點(diǎn)數(shù)據(jù)協(xié)議格式如圖6所示。
(3)數(shù)據(jù)接收:終端節(jié)點(diǎn)不斷的等待接收主控制器發(fā)送的控制命令,接收到命令后,首先判斷控制命令是否是發(fā)送給此節(jié)點(diǎn)的,如果是再按照數(shù)據(jù)協(xié)議格式解析要對(duì)哪些設(shè)備進(jìn)行什么操作。數(shù)據(jù)解析結(jié)束后向主控制器發(fā)送“OKX”字符,表示X號(hào)節(jié)點(diǎn)接收到數(shù)據(jù)。
第0位表示控制器表示,0表示設(shè)備為主控制器,1-3表示設(shè)備為終端節(jié)點(diǎn)1-3。
第1位表示數(shù)據(jù)傳輸方向,0表示主控制器向終端節(jié)點(diǎn)發(fā)送數(shù)據(jù),1表示終端節(jié)點(diǎn)向主控制器發(fā)送數(shù)據(jù)。
第2-5位表示溫度數(shù)據(jù),第2位為“T”,用來(lái)讓主控制器判斷數(shù)據(jù)是否正確,如果接收到第2位是“T”,將3-5位中的溫度數(shù)據(jù)取出。
第6-9位表示濕度數(shù)據(jù),主控制器如果接收到第6位是“H”,將7-9位中的濕度數(shù)據(jù)取出。
第10-14位表示光照數(shù)據(jù),主控制器如果接收到第10位是“G”,將11-14位中的光照數(shù)據(jù)取出。
第15-24位表示CO濃度和煙霧濃度數(shù)據(jù),主控制器如果接收到第15位是“C”,第20位為“M”,將16-19位中的CO濃度數(shù)據(jù)和21-24位中的煙霧濃度數(shù)據(jù)取出。
第25-26位表示LED燈的開關(guān)狀態(tài),在第26位中,0表示LED燈打開,1表示LED燈關(guān)閉。
第27-28位表示舵機(jī)的狀態(tài),在第28位中,0表示正轉(zhuǎn)720°,1表示反轉(zhuǎn)720°。
第29-31位表示繼電器的開關(guān)狀態(tài),在第30-31位中,00表示繼電器1和2關(guān)閉,11表示繼電器1和2打開。
(1)處理終端節(jié)點(diǎn)的數(shù)據(jù)
主控制器在接收到終端節(jié)點(diǎn)發(fā)送來(lái)的數(shù)據(jù)后,對(duì)數(shù)據(jù)進(jìn)行解析,提取出數(shù)據(jù)中的溫濕度、光照等環(huán)境信息并存在字符數(shù)組后,給發(fā)送信息的終端節(jié)點(diǎn)回應(yīng)“OKX”,表示接收到X號(hào)終端節(jié)點(diǎn)的信息。主控制器對(duì)提取出的數(shù)據(jù)進(jìn)行分析,如果CO濃度和煙霧濃度超過(guò)閾值,則通過(guò)串口2發(fā)送AT指令驅(qū)動(dòng)SIM模塊給用戶發(fā)送報(bào)警信息,同時(shí)將蜂鳴器打開發(fā)出警報(bào)。
(2)云平臺(tái)通信
主控制器上電后,會(huì)對(duì)通過(guò)AT指令將WiFi模塊設(shè)置為Station工作模式,并與云平臺(tái)連接,主控制器每隔3分鐘就將終端節(jié)點(diǎn)收集到的溫濕度等環(huán)境數(shù)據(jù)發(fā)送給云平臺(tái)。當(dāng)主控制器接收到云平臺(tái)發(fā)來(lái)的控制指令時(shí),將指令解析后發(fā)送給對(duì)應(yīng)的終端節(jié)點(diǎn)。主控制器與云平臺(tái)通信內(nèi)容如圖7所示。
(3)向終端節(jié)點(diǎn)下發(fā)控制指令
當(dāng)主控制器收到云平臺(tái)發(fā)送的控制指令后,將控制指令中的設(shè)備名稱與終端節(jié)點(diǎn)上搭載的設(shè)備名稱對(duì)應(yīng),并向匹配的終端節(jié)點(diǎn)發(fā)送控制指令。
本系統(tǒng)采用LittleVGL開發(fā)終端界面,LittleVGL是免費(fèi)的開放源代碼圖形庫(kù),它提供創(chuàng)建嵌入式GUI所需要的一切,具有易于使用的圖形元素,和低內(nèi)存占用,是由C語(yǔ)言實(shí)現(xiàn),可以輕松移植到不局限于嵌入式設(shè)備中的其他設(shè)備上。
系統(tǒng)共設(shè)計(jì)有主界面、臥室、廚房、客廳、陽(yáng)臺(tái)五個(gè)界面,每個(gè)界面顯示室內(nèi)不同房間的環(huán)境信息和電器設(shè)備信息。在主界面設(shè)計(jì)有房間選擇、當(dāng)前時(shí)間顯示、溫度顯示、和模式選擇四個(gè)模塊,再房間選擇模塊中,用戶點(diǎn)擊不同的房間會(huì)進(jìn)入不同的房間控制界面。在不同的房間控制界面會(huì)顯示不同的環(huán)境參數(shù)和設(shè)備狀態(tài)信息,在客廳顯示溫濕度信息,可以控制插座、燈光、電視等電器設(shè)備;在廚房顯示CO濃度、煙霧濃度等環(huán)境信息,可以控制燈光和煤氣閥門等開關(guān)。讓用戶可以通過(guò)LCD觸摸屏來(lái)查看室內(nèi)環(huán)境數(shù)據(jù)和設(shè)備狀態(tài),有效地提高了系統(tǒng)的交互性。系統(tǒng)開機(jī)界面如圖8所示。
為了方便用戶對(duì)環(huán)境數(shù)據(jù)進(jìn)行查看的同時(shí)對(duì)電器設(shè)備進(jìn)行操控,系統(tǒng)設(shè)計(jì)了手機(jī)APP控制界面和觸摸屏控制界面。其中手機(jī)APP控制界面是通過(guò)云智能APP進(jìn)行設(shè)計(jì),觸摸屏控制界面是通過(guò)LittleVGL進(jìn)行編寫,在兩種界面上用戶都可以或少地因其室內(nèi)環(huán)境數(shù)據(jù)和電器設(shè)備狀態(tài),當(dāng)用戶想要操控電器設(shè)備時(shí),只需在界面上對(duì)開關(guān)按鈕進(jìn)行操控,增強(qiáng)了智能家居系統(tǒng)的交互性。觸摸屏控制界面如圖9所示。
本文以STM32F103C8T6控制芯片、WiFi模塊和云平臺(tái)設(shè)計(jì)了一種基于云平臺(tái)的智能家居系統(tǒng),使用戶可以在手機(jī)APP上查看室內(nèi)溫濕度、光照、CO濃度等實(shí)時(shí)環(huán)境數(shù)據(jù),也可以對(duì)室內(nèi)窗簾、燈、插座等電器設(shè)備進(jìn)行遠(yuǎn)程操控。有效地提高了用戶居住環(huán)境的舒適性和邊界線。經(jīng)過(guò)測(cè)試后,表示結(jié)果良好,各個(gè)功能穩(wěn)定運(yùn)行,可靠性強(qiáng)。