黃興 李文金 蘇凱雄



摘要:針對(duì)傳統(tǒng)智能家居系統(tǒng)安裝復(fù)雜、功能單一、攜帶性差等問(wèn)題,提出了一種基于安卓和云服務(wù)技術(shù)的智能家居系統(tǒng)設(shè)計(jì)方案。該系統(tǒng)以Arduino Mega2560控器作為硬件平臺(tái),實(shí)現(xiàn)對(duì)室內(nèi)各電器設(shè)備的控制和數(shù)據(jù)采集。手機(jī)App采用低功耗藍(lán)牙與硬件平臺(tái)進(jìn)行數(shù)據(jù)和指令交互,通過(guò)使用手機(jī)App可實(shí)現(xiàn)對(duì)室內(nèi)電器設(shè)備的智能控制。PC端云服務(wù)器將手機(jī)App上傳的室內(nèi)環(huán)境信息保存在數(shù)據(jù)庫(kù)中,以供查詢和管理。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)操作方便、攜帶性好,能較好地實(shí)現(xiàn)對(duì)室內(nèi)家居設(shè)備的智能控制。
關(guān)鍵詞:安卓;語(yǔ)音識(shí)別;人臉識(shí)別;低功耗藍(lán)牙;云服務(wù)
中圖分類號(hào):TP273? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)07-0005-04
Abstract: Aiming at the problems of traditional smart home system complex installation, single function, poor portability, etc. a smart home system design scheme based on Android and cloud service technology is proposed. The system uses the Arduino Mega2560 controller as the hardware platform to realize the control and data acquisition of various indoor electrical equipment. The mobile phone App uses low-power Bluetooth to interact with the hardware platform for data and instructions, and intelligent control of indoor electrical equipment can be realized by using the mobile phone App. The PC cloud server saves the indoor environment information uploaded by the mobile App in the database for query and management. The experimental results show that the system is easy to operate, portable, and can better realize the intelligent control of indoor household equipment.
Key words: Android; voice recognition; face recognition; Bluetooth low energy; cloud service
隨著科技的發(fā)展和人們生活水平的提高,用戶對(duì)于家居環(huán)境和生活質(zhì)量也有了更高的要求。目前,傳統(tǒng)[1]的智能家居控制系統(tǒng)一般通過(guò)有線方式組建并且通過(guò)PC控制,這種方式通常需要部署很多線纜,便攜性也很差。基于以上事實(shí),本文設(shè)計(jì)了一款基于安卓與云平臺(tái)的智能家居系統(tǒng)。該系統(tǒng)采用低功耗藍(lán)牙和4G網(wǎng)絡(luò)等無(wú)線通信技術(shù)進(jìn)行數(shù)據(jù)交互,這有效彌補(bǔ)了傳統(tǒng)家居系統(tǒng)布線復(fù)雜和攜帶性差這一弊端。另外,基于安卓系統(tǒng)開發(fā)的手機(jī)App集成了百度AI識(shí)別與訊飛語(yǔ)音識(shí)別模塊,通過(guò)使用該App不僅能夠?qū)崿F(xiàn)對(duì)室內(nèi)設(shè)備的智能控制,而且能夠?qū)⒉杉氖覂?nèi)環(huán)境信息實(shí)時(shí)上傳至云服務(wù)器,實(shí)現(xiàn)對(duì)室內(nèi)狀況的運(yùn)程監(jiān)測(cè)。
1 系統(tǒng)總體設(shè)計(jì)方案
本文智能家居系統(tǒng)總體框圖如圖1所示,該智能家居系統(tǒng)包括三大部分:室內(nèi)硬件控制終端、手機(jī)App、PC端云服務(wù)器。其中,室內(nèi)硬件控制終端主要完成對(duì)室內(nèi)各電器設(shè)備和傳感器模塊的控制和管理。手機(jī)App通過(guò)與硬件控制終端進(jìn)行藍(lán)牙連接可將用戶的按鍵指令、手勢(shì)指令、和人臉識(shí)別校驗(yàn)結(jié)果發(fā)送給主控終端。PC端云服務(wù)器通過(guò)HTTP協(xié)議與手機(jī)App進(jìn)行通信,并將手機(jī)上傳的數(shù)據(jù)展示在Web前端網(wǎng)頁(yè)以供查詢。
2 硬件系統(tǒng)設(shè)計(jì)方法
本文智能家居系統(tǒng)的硬件部分包括:ArduinoMega2560控制器、舵機(jī)門模塊、電燈模塊、MQ-135氣體傳感器模塊、DY-SWV17F語(yǔ)音播報(bào)模塊、DHT11溫濕度模塊、HC-08藍(lán)牙BLE 4.0模塊、OLED顯示模塊以及電源模塊。
2.1 硬件主控平臺(tái)設(shè)計(jì)
硬件主控板采用的是Arduino Mega2560[2]型,相較于其他型號(hào)的Arduino控制器,它提供了更多I/O口與更大運(yùn)算儲(chǔ)存空間。控制器的開發(fā)環(huán)境為Arduino IDE軟件,該軟件采用C語(yǔ)言進(jìn)行驅(qū)動(dòng)程序的開發(fā)并集成了豐富的系統(tǒng)類庫(kù),由于系統(tǒng)類庫(kù)采用C++語(yǔ)言進(jìn)行封裝,只需要在程序中添加相應(yīng)的頭文件即可調(diào)用庫(kù)函數(shù)來(lái)驅(qū)動(dòng)硬件模塊。
2.2溫濕度模塊設(shè)計(jì)
溫濕度模塊采用DHT11[3]溫濕度傳感器實(shí)時(shí)監(jiān)測(cè)室內(nèi)環(huán)境狀態(tài),并將采集的數(shù)據(jù)顯示在OLED液晶屏。DHT11具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)等優(yōu)點(diǎn),模塊數(shù)據(jù)通信方式采用單總線串行通信,信號(hào)傳輸距離可達(dá)20米,模塊原理圖如圖2所示:
2.3藍(lán)牙模塊設(shè)計(jì)
本系統(tǒng)藍(lán)牙通信采用HC-08藍(lán)牙4.0 串口模塊,該模塊基于Bluetooth Specification V4.0 藍(lán)牙低功耗(Bluetooth Low Energy,BLE)協(xié)議,它支持?jǐn)?shù)據(jù)透?jìng)鳎捎脧V播模式,通信距離可達(dá)80米。本模塊與手機(jī)透?jìng)鳠o(wú)需配對(duì)碼,只需手機(jī)上安裝有BLE藍(lán)牙模塊的App即可進(jìn)行數(shù)據(jù)收發(fā),模塊與手機(jī)通信連接如圖3所示:
2.4語(yǔ)音模塊設(shè)計(jì)
DY-SV17F語(yǔ)音模塊集成了IO分段觸發(fā)、串口控制和one-line單總線控制模式,它支持播放MP3等常見音頻格式文件。由于本模塊板載5瓦 D類功放,可直接驅(qū)動(dòng)4~8歐的小喇叭,并且該模塊集成了4Mbte flash 可以用來(lái)存儲(chǔ)音頻文件。本文采用了IO觸發(fā)方式進(jìn)行音頻的選曲播放,該方式通過(guò)單片機(jī)控制8個(gè)IO口可實(shí)現(xiàn)0-255首歌曲的選擇。由于IO觸發(fā)方式為低電平有效,為此本模塊通過(guò)上拉電阻把IO口電平默認(rèn)置高,模塊電路圖如圖4所示:
3 軟件系統(tǒng)設(shè)計(jì)方法
本系統(tǒng)的軟件設(shè)計(jì)主要包括:控制器驅(qū)動(dòng)程序設(shè)計(jì)、手機(jī)客戶端程序設(shè)計(jì)和PC端云服務(wù)器設(shè)計(jì)三個(gè)部分。
3.1 控制器驅(qū)動(dòng)程序設(shè)計(jì)
控制器驅(qū)動(dòng)程序采用C語(yǔ)言進(jìn)行開發(fā),它主要負(fù)責(zé)接收手機(jī)端的藍(lán)牙指令,并根據(jù)指令內(nèi)容驅(qū)動(dòng)相應(yīng)硬件設(shè)備進(jìn)行工作,程序流程圖如圖5所示:
3.2 手機(jī)客戶端程序設(shè)計(jì)
手機(jī)客戶端分為主界面和各模塊界面,軟件主界面如圖6所示:
主界面UI布局采用安卓GridView控件進(jìn)行布局內(nèi)容的顯示,該控件需在邏輯控制代碼文件中進(jìn)行獲取,然后創(chuàng)建一個(gè)HashMap列表對(duì)象存放鍵值對(duì)信息,再將該列表對(duì)象傳入SimpleAdapter對(duì)象中進(jìn)行顯示內(nèi)容的適配。
3.2.1風(fēng)扇和電燈控制模塊設(shè)計(jì)
本文風(fēng)扇控制模塊支持的功能有:一鍵開關(guān)、定時(shí)啟動(dòng)和關(guān)閉、手動(dòng)模式、自動(dòng)模式、休眠模式。其中,手動(dòng)模式下用戶通過(guò)軟件的數(shù)字擋位按鈕可以手動(dòng)調(diào)節(jié)風(fēng)扇轉(zhuǎn)速。在自動(dòng)模式下,手機(jī)App采用PID(Proportion Integration Differentiation)算法對(duì)風(fēng)扇轉(zhuǎn)速進(jìn)行調(diào)節(jié),該算法通過(guò)監(jiān)聽藍(lán)牙串口回傳的環(huán)境信息實(shí)時(shí)監(jiān)測(cè)當(dāng)前環(huán)境溫度,然后,再根據(jù)當(dāng)前溫度值大小自動(dòng)給風(fēng)扇模塊發(fā)送PWM(Pulse width modulation)數(shù)據(jù),實(shí)現(xiàn)自動(dòng)溫控。本文電燈控制模塊主要實(shí)現(xiàn)電燈的一鍵開關(guān)和模擬調(diào)光操作。其中,模擬調(diào)光操作實(shí)現(xiàn)原理為:當(dāng)用戶滑動(dòng)電燈界面滑動(dòng)條時(shí),會(huì)觸發(fā)控件的滑動(dòng)事件監(jiān)聽器,然后通過(guò)監(jiān)聽器回調(diào)函數(shù)給主控設(shè)備發(fā)送PWM占空比數(shù)據(jù),從而實(shí)現(xiàn)模擬調(diào)光操作。風(fēng)扇控制界面和電燈控制界面下圖所示:
3.2.2環(huán)境監(jiān)測(cè)模塊設(shè)計(jì)
安卓客戶端軟件環(huán)境監(jiān)測(cè)模塊實(shí)現(xiàn)原理如下:首先,軟件后臺(tái)線程會(huì)實(shí)時(shí)監(jiān)聽藍(lán)牙串口數(shù)據(jù)并將該數(shù)據(jù)送入串口緩沖區(qū)。然后,當(dāng)用戶點(diǎn)擊相應(yīng)按鈕后,該程序?qū)木彌_區(qū)中提取數(shù)據(jù)并判斷數(shù)據(jù)報(bào)文頭的類型。最后,程序根據(jù)數(shù)據(jù)報(bào)文頭的類型調(diào)用對(duì)應(yīng)環(huán)境數(shù)據(jù)的顯示函數(shù)并在控制界面上進(jìn)行顯示。由于用戶點(diǎn)擊事件去處理串口數(shù)據(jù)是在子線程中完成,而安卓系統(tǒng)的線程是不安全的[4],即子線程中不能更改UI線程內(nèi)容。為了實(shí)現(xiàn)環(huán)境數(shù)據(jù)的正確顯示,軟件控制代碼必須先創(chuàng)建一個(gè)Handler對(duì)象,再通過(guò)該對(duì)象獲取Message對(duì)象,最后把環(huán)境數(shù)據(jù)存入Message對(duì)象中發(fā)送出去,以達(dá)到間接更改UI線程內(nèi)容的效果。另外,本客戶端軟件除了可以在手機(jī)端查詢室內(nèi)環(huán)境數(shù)據(jù),它還能過(guò)通過(guò)HTTP協(xié)議給遠(yuǎn)程云服務(wù)器發(fā)送POST請(qǐng)求,遠(yuǎn)程服務(wù)器接受到手機(jī)端請(qǐng)求后可以將上傳的環(huán)境數(shù)據(jù)進(jìn)行保存以供用戶查詢。環(huán)境監(jiān)測(cè)模塊App界面如下圖所示:
3.2.3串口報(bào)文格式設(shè)計(jì)。
由于手機(jī)App與硬件主控平臺(tái)之間所有的控制指令和采集的環(huán)境數(shù)據(jù)都是通過(guò)藍(lán)牙串口進(jìn)行收發(fā),為此手機(jī)端和控制器模塊必須能夠識(shí)別自身所要的數(shù)據(jù)類型,然后再?gòu)拇诰彺鎱^(qū)中篩選所需數(shù)據(jù)。為了達(dá)到這一要求,App軟件為每個(gè)模塊的數(shù)據(jù)設(shè)置不同的數(shù)據(jù)頭[5],這些數(shù)據(jù)頭由“$”,“#”,“*”等符號(hào)構(gòu)成。接收器只需從所有串口數(shù)據(jù)中篩選出包含對(duì)應(yīng)數(shù)據(jù)頭的報(bào)文,然后再將報(bào)文頭信息和檢驗(yàn)信息進(jìn)行剔除后[6]即可得到報(bào)文內(nèi)容數(shù)據(jù)。串口數(shù)據(jù)處理流程如圖10:
3.2.4語(yǔ)音識(shí)別算法實(shí)現(xiàn)
語(yǔ)音識(shí)別技術(shù)是人機(jī)交互的新形式的體現(xiàn),通過(guò)對(duì)語(yǔ)音信號(hào)的加工處理、特征提取、模板匹配等步驟,最終轉(zhuǎn)化為機(jī)器語(yǔ)言,使被控設(shè)備能按照人的語(yǔ)音指令進(jìn)行操作。
本文App軟件語(yǔ)音識(shí)別算法采用訊飛語(yǔ)音[7]開發(fā)平臺(tái)提供的第三方軟件開發(fā)工具包(Software Development Kit,SDK),用戶根據(jù)需求選擇相應(yīng)的API(Application Program Interface)接口以實(shí)現(xiàn)用戶語(yǔ)音的識(shí)別。App軟件后臺(tái)線程可將識(shí)別的結(jié)果轉(zhuǎn)換為文本字符串,并采用UTF-8格式對(duì)字符串進(jìn)行編碼,最后將文本指令送入藍(lán)牙發(fā)送線程進(jìn)行發(fā)送。語(yǔ)音識(shí)別算法實(shí)現(xiàn)流程圖如圖11所示:
3.2.5人臉識(shí)別和手勢(shì)識(shí)別算法實(shí)現(xiàn)
在本客戶端軟件中,人臉識(shí)別算法[8]用于人臉門禁操作。當(dāng)用戶需進(jìn)入室內(nèi)時(shí),可以打開手機(jī)客戶端軟件在線拍攝一張人臉圖片也可以從手機(jī)相冊(cè)中選擇一張人臉圖片。如果該人臉信息之前未進(jìn)行注冊(cè),則手機(jī)端會(huì)提示該人臉信息錯(cuò)誤,此時(shí)門禁系統(tǒng)將不會(huì)打開大門。本文手勢(shì)識(shí)別算法[9]用于手勢(shì)指令控制,用戶可以把軟件默認(rèn)的24種手勢(shì)設(shè)置為控制指令,當(dāng)用戶需要進(jìn)行手勢(shì)控制時(shí),只需打開手機(jī)攝像頭獲取一張手勢(shì)圖片即可實(shí)現(xiàn)對(duì)各電器設(shè)備的手勢(shì)控制。算法程序流程圖如圖12所示:
3.3 PC端云服務(wù)器實(shí)現(xiàn)方法
本文系統(tǒng)服務(wù)器采用B/S架構(gòu)[10],并結(jié)合模型視圖控制器(model view controller,MVC)模型的構(gòu)建方案對(duì)系統(tǒng)進(jìn)行分層設(shè)計(jì)。整個(gè)服務(wù)器工程部署在阿里云服務(wù)器,用戶只需在瀏覽器輸入網(wǎng)頁(yè)地址即可訪問(wèn)。該服務(wù)器Web靜態(tài)頁(yè)面采用html5和ccs3技術(shù)進(jìn)行開發(fā),并結(jié)合當(dāng)前主流的Vue和bootstrap前端框架實(shí)現(xiàn)頁(yè)面的動(dòng)態(tài)響應(yīng)。該服務(wù)器系統(tǒng)可以同時(shí)在PC端、移動(dòng)端、i OS設(shè)備、安卓設(shè)備上運(yùn)行,即實(shí)現(xiàn)一套代碼跨平臺(tái)、跨設(shè)備和跨系統(tǒng)的操作,大大節(jié)約了開發(fā)和維護(hù)成本。
本文Web前端網(wǎng)頁(yè)管理界面設(shè)計(jì)分為三大主要模塊:用戶登錄、個(gè)人中心,數(shù)據(jù)統(tǒng)計(jì)。用戶登錄模塊主要完成用戶信息的鑒權(quán)操作,只有成功登錄的用戶才能對(duì)系統(tǒng)進(jìn)行管理。個(gè)人中心模塊的功能是查看和更改用戶個(gè)人信息。數(shù)據(jù)統(tǒng)計(jì)模塊完成的功能是對(duì)上報(bào)的環(huán)境數(shù)據(jù)進(jìn)行可視化展示,該模塊可以以折線圖、柱狀圖以及數(shù)據(jù)表的形式展示環(huán)境數(shù)據(jù)。
4結(jié)論
智能家居系統(tǒng)是人工智能應(yīng)用的一個(gè)分支,符合未來(lái)居家系統(tǒng)的發(fā)展趨勢(shì)。本文設(shè)計(jì)了一款基于安卓與云平臺(tái)的智能家居系統(tǒng),為用戶提供了人性化的交互應(yīng)用體驗(yàn)。該系統(tǒng)具有操作簡(jiǎn)單、方便攜帶等特點(diǎn)。其中,主控設(shè)備與安卓客戶端采用藍(lán)牙通信方式進(jìn)行交互,解決了傳統(tǒng)家居系統(tǒng)布線復(fù)雜、安裝困難等問(wèn)題。針對(duì)指令和回傳數(shù)據(jù)共用串口問(wèn)題,采用協(xié)議頭機(jī)制對(duì)報(bào)文進(jìn)行分發(fā)。另外,為了實(shí)現(xiàn)對(duì)室內(nèi)環(huán)境信息遠(yuǎn)程可視化管理,采用PC端云服務(wù)器對(duì)室內(nèi)環(huán)境信息進(jìn)行存儲(chǔ)和管理,用戶可以在PC端觀測(cè)室內(nèi)環(huán)境變化,也可以通過(guò)手機(jī)4G網(wǎng)絡(luò)訪問(wèn)服務(wù)器進(jìn)行查看。最后,針對(duì)傳統(tǒng)家居系統(tǒng)功能單一等問(wèn)題,通過(guò)在手機(jī)App上集成百度AI識(shí)別和訊飛語(yǔ)音識(shí)別技術(shù)豐富用戶的交互體驗(yàn)。
參考文獻(xiàn):
[1] 徐宏宇, 程武, 張博. 基于ARM和Android的智能家居控制系統(tǒng)設(shè)計(jì)[J]. 微型機(jī)與應(yīng)用,2017, 36(3):29-32.
[2] 崔陽(yáng), 張維華, 白云峰. 一種基于Arduino的智能家居控制系統(tǒng)[J]. 電子技術(shù)應(yīng)用, 2014, 40(4):123-125.
[3] 李長(zhǎng)有, 王文華. 基于DHT11溫濕度測(cè)控系統(tǒng)設(shè)計(jì)[J]. 機(jī)床與液壓, 2013, 41(13):107-108.
[4] 郭霖.第一行代碼[M].北京:人民郵電出版社,2014.
[5] 富新輝, 余之喜, 蘇凱雄. 基于BLE北斗便攜終端的安卓系統(tǒng)設(shè)計(jì)[J]. 微型機(jī)與應(yīng)用, 2017(7).
[6] 朱洪濤, 李江明, 王志勇. 一種基于藍(lán)牙串口模塊的數(shù)據(jù)處理算法[J]. 實(shí)驗(yàn)室研究與探索,2013, 32(11):93-96.
[7] 黃賢立, 羅冬梅. 基于訊飛語(yǔ)音技術(shù)的智能家居控制App設(shè)計(jì)[J]. 福建電腦, 2016, 32(8):112-112,145.
[8] 顧德喜, 李貴霖, 時(shí)祥凱,等. 基于百度AI開放平臺(tái)的人臉識(shí)別門禁系統(tǒng)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2019, 19(6):33-36.
[9] 劉長(zhǎng)坤,符志強(qiáng),李舒怡,等.基于手勢(shì)識(shí)別的智能控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2020,16(16):9-10.
【通聯(lián)編輯:梁書】