黃興 李文金 蘇凱雄



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