文/徐國(guó)保 洪展文 葉昌鑫 陳陸成 朱浩
近年來(lái)隨著科學(xué)技術(shù)的不斷推動(dòng),國(guó)內(nèi)外智能家居的市場(chǎng)漸漸打開(kāi),智能家居作為物聯(lián)網(wǎng)的一部分,很多產(chǎn)品從概念走向現(xiàn)實(shí)。國(guó)外如蘋果公司推出的Homekit 平臺(tái)能通過(guò)智能終端控制家庭場(chǎng)景;亞馬遜基于Alexa 語(yǔ)音助手推出Echo 智能音箱;谷歌采用人工智能技術(shù)驅(qū)動(dòng),實(shí)現(xiàn)了Google Home 控制生活場(chǎng)景。國(guó)內(nèi)也掀起了智能家居熱潮,如以 BAT 為首的互聯(lián)網(wǎng)巨頭相繼進(jìn)入智能家居,開(kāi)啟了中國(guó)智能家居的高速發(fā)展期;百度推出了DuerOS對(duì)話式人工智能操作系統(tǒng);阿里云的天貓精靈智能音箱可語(yǔ)音控制家電設(shè)備;騰訊的叮當(dāng)語(yǔ)音助手和智能音箱等產(chǎn)品實(shí)現(xiàn)了家庭場(chǎng)景智能化。其它如小米、京東、美的等企業(yè)也通過(guò)開(kāi)放物聯(lián)網(wǎng)平臺(tái),加速實(shí)現(xiàn)智能家居市場(chǎng)化。
我們的穿衣打扮離不開(kāi)鏡子,它是我們?nèi)粘I畹谋匦杵贰T谶@個(gè)物聯(lián)網(wǎng)極速發(fā)展的智能家居時(shí)代,人們對(duì)智能化的生活愈加渴望,在你穿衣打扮或者刷牙的時(shí)候,如果使用的是一面智能鏡子,將更能感受到科技的魅力和樂(lè)趣。在家居智能化時(shí)代的你,已經(jīng)厭煩一邊刷牙一邊拿著手機(jī)查看時(shí)間日期、天氣預(yù)報(bào)和新聞等等,這個(gè)時(shí)候沒(méi)有比擁有一款與你對(duì)話交互的智能鏡子更為方便的了。
雖然智能家居已有基本發(fā)展,但對(duì)于智能鏡子這一領(lǐng)域的研究,國(guó)內(nèi)外研究還處于初步階段。最早的是日本科技展會(huì)上出現(xiàn)的基于安卓系統(tǒng)的智能鏡,能顯示日常的天氣、感知手勢(shì)操作等等;后來(lái)美國(guó)經(jīng)典廚衛(wèi)品牌科勒推出了 Verdera 智能防水鏡子,鏡子能語(yǔ)音交互;Hi Mirror 推出的智能鏡子能評(píng)估皮膚狀況,提供相應(yīng)的護(hù)膚建議,同時(shí)能通過(guò)語(yǔ)音進(jìn)行聊天或者播放音樂(lè);Viio 的智能鏡子能通過(guò)與智能手機(jī)連接后直接用來(lái)?yè)艽螂娫?,?nèi)置了揚(yáng)聲器可以用來(lái)播放音樂(lè)或音頻文件;智能鏡子的研究在持續(xù)進(jìn)行,現(xiàn)有的智能鏡子還存在軟件拓展性差、市場(chǎng)需求欠缺、功能使用不完善、價(jià)格高昂等問(wèn)題,在智能家居領(lǐng)域仍然是沒(méi)有商業(yè)化起來(lái)。
圖1:智能鏡子整體設(shè)計(jì)圖
圖2:時(shí)間天氣功能結(jié)構(gòu)圖
圖3:新聞功能結(jié)構(gòu)圖
圖4:郵件提醒功能結(jié)構(gòu)圖
圖5:微信提醒功能結(jié)構(gòu)圖
圖6:音樂(lè)播放器功能原理圖
文章主要闡述了如何基于Raspberry Pi 開(kāi)發(fā)一面智能鏡子的內(nèi)容。針對(duì)軟件拓展性差、功能不夠完善以及降低成本的問(wèn)題,本文設(shè)計(jì)的智能鏡子實(shí)現(xiàn)了鏡子里顯示實(shí)時(shí)的天氣狀況、溫度和濕度,同時(shí)也可以提供貼心的用戶提示與用戶交互,顯示新聞熱點(diǎn),還能交互語(yǔ)音對(duì)話,智能鏡上有溫馨的問(wèn)候內(nèi)容,郵件、微信的智能提醒,還能在閑暇的刷牙時(shí)間播放音樂(lè)。從而讓人們?cè)谏铧c(diǎn)滴中感到科技的樂(lè)趣,達(dá)到滿足住戶生活的舒適性、便利性要求,改善住戶的居住環(huán)境和提高住戶的生活水平,改變住戶的生活方式。
鏡子選用的是單面鏡,根據(jù)單面鏡子的單面透光性,我們讓貼在后面的液晶顯示屏背景為黑時(shí),它是一面鏡子,而液晶顯示屏的相關(guān)信息也能在黑背景下透過(guò)鏡子顯示出來(lái),把液晶顯示屏和單面鏡緊密結(jié)合起來(lái)。把樹(shù)莓派系統(tǒng)的界面UI 背景設(shè)置為黑色,天氣、溫度、濕度、新聞資訊等信息則可設(shè)置為高亮,并對(duì)各功能模塊設(shè)計(jì)合理的位置坐標(biāo),裝上鏡框,一面多功能的智能鏡子便完成了。智能鏡子整體設(shè)計(jì)圖如圖1所示。
顯示界面是基于html、javescript 和PHP多種網(wǎng)頁(yè)語(yǔ)言開(kāi)發(fā)的MagicMirror 網(wǎng)頁(yè)系統(tǒng)。在Linux 環(huán)境下安裝chromium 瀏覽器,并搭建一個(gè)本地服務(wù)器,瀏覽器設(shè)置開(kāi)機(jī)全屏自啟,并自動(dòng)訪問(wèn)搭建好的網(wǎng)頁(yè)http://localhost 本地主機(jī)。
智能鏡子的控制核心是Raspberry Pi,價(jià)格便宜;系統(tǒng)是基于免費(fèi)的開(kāi)源的Linux 系統(tǒng),提供了可行的開(kāi)發(fā)環(huán)境。鏡子物聯(lián)網(wǎng)的實(shí)現(xiàn),是通過(guò)樹(shù)莓派主控Wi-Fi 的連接,實(shí)現(xiàn)用戶對(duì)鏡子的數(shù)據(jù)傳輸以及控制。由于樹(shù)莓派3 代具有強(qiáng)大的性能,再加上Linux 開(kāi)源的系統(tǒng)以及無(wú)線通信Wi-Fi 的輔助,完全滿足控制智能鏡需求。
智能鏡所用的控制芯片是樹(shù)莓派第三代,其在控制運(yùn)行上強(qiáng)大以外,并且集成有穩(wěn)定的Wi-Fi 功能模塊,Wi-Fi 連上家庭網(wǎng)絡(luò)后,實(shí)現(xiàn)時(shí)間日期、天氣信息、新聞資訊等信息的更新和使用,十分便捷。
智能鏡子的顯示中,不可缺的是問(wèn)候語(yǔ),好的問(wèn)候語(yǔ)能帶給人們好的心情。使用javescript 代碼實(shí)現(xiàn),問(wèn)候語(yǔ)設(shè)置為早上、中午和晚上不同時(shí)間段,定義多種不同的溫馨問(wèn)候。
智能鏡子具備顯示時(shí)間、日期和天氣預(yù)報(bào)功能,時(shí)間、天氣功能的實(shí)現(xiàn),是通過(guò)連接openweathermap 來(lái)完成,這是一個(gè)免費(fèi)的天氣預(yù)報(bào)接口,在openweathermap 官網(wǎng)注冊(cè)個(gè)人的賬號(hào)APPID,地理位置獲取到Zhanjiang,CN,實(shí)現(xiàn)接口的正常使用,時(shí)間、天氣就能實(shí)現(xiàn)實(shí)時(shí)顯示了。時(shí)間天氣功能結(jié)構(gòu)圖如圖2所示。
圖7:人臉檢測(cè)功能原理圖
新聞資訊的顯示實(shí)現(xiàn)主要是調(diào)用新聞?dòng)嗛喸唇涌冢ㄟ^(guò)Wi-Fi 網(wǎng)絡(luò)通信的條件下,下載數(shù)據(jù)再顯示輸出,新聞?dòng)嗛喸春芏?,可以根?jù)用戶自身實(shí)際情況修改,下面以極客公園的新聞?dòng)嗛喸礊槔?。下面是部分核心代碼。用jQuery 提供的ajax 方法發(fā)送GET 請(qǐng)求到url 地址 獲取jsonp 數(shù)據(jù),獲取到數(shù)據(jù)后,判斷一下數(shù)據(jù)長(zhǎng)度,如果數(shù)據(jù)長(zhǎng)度大于0,就進(jìn)行下一步的解析parse,否則就打印出錯(cuò)誤信息提醒沒(méi)有獲取到數(shù)據(jù),從而獲得新聞資訊。新聞功能結(jié)構(gòu)圖如圖3所示。
智能鏡子含有郵件提醒功能,通過(guò)開(kāi)啟郵箱賬戶的STMP 功能,可以爬取郵件的信息,從而提醒用戶是否有新郵件。主要通過(guò)python 的開(kāi)源函數(shù)庫(kù)imaplib 實(shí)現(xiàn),在已經(jīng)開(kāi)啟了STMP 功能的郵件上,連接郵件的服務(wù)器,分析提取郵件的信息。imaplib.IMAP4_SSL()函數(shù)實(shí)現(xiàn)連接到郵箱服務(wù)器,爬取郵箱信息,并把信息寫入.txt 文件,通過(guò)對(duì)比檢測(cè)是否有新郵件,從而在智能鏡子上提醒用戶。郵件提醒功能結(jié)構(gòu)圖如圖4所示。
微信提醒具有更好的交互性,調(diào)用了wxpy 的庫(kù),實(shí)現(xiàn)了把天氣預(yù)報(bào)、穿衣指數(shù)、新聞熱點(diǎn)等多種信息自動(dòng)發(fā)到手機(jī)微信,新聞熱點(diǎn)等信息可根據(jù)個(gè)人喜好自定義爬取的網(wǎng)站。通過(guò)requests.get 請(qǐng)求,后進(jìn)行解析,爬取需要的信息。微信提醒功能結(jié)構(gòu)圖如圖5所示。
智能鏡子也帶有音樂(lè)播放功能,主要使用了python 中的wx、pygame 開(kāi)源庫(kù)實(shí)現(xiàn),當(dāng)你對(duì)著智能鏡子刷牙或者梳妝時(shí),有一個(gè)會(huì)“唱歌”的鏡子更是一番新的體驗(yàn)。播放器的實(shí)現(xiàn)主要調(diào)用的函數(shù)主要是pygame.mixer.music.play()、pygame.mixer.music.load()、pygame.mixer.music.pause()等基本的開(kāi)始播放,載入播放、暫停和結(jié)束等音樂(lè)控制函數(shù),控制音樂(lè)流上穩(wěn)定。wx 庫(kù)則用于實(shí)現(xiàn)播放器的基本界面和控制按鈕。音樂(lè)播放器功能原理圖如圖6所示。
智能鏡子調(diào)用opencv 的庫(kù)進(jìn)行人臉的檢測(cè),主要依賴于cv2.CascadeClassifier 的級(jí)聯(lián)分類器,基于機(jī)器學(xué)習(xí)的PCA 算法,實(shí)現(xiàn)人臉和非人臉的檢測(cè),提前做好了訓(xùn)練集的訓(xùn)練得出模型,就可以調(diào)用opencv 的庫(kù)進(jìn)行人臉的檢測(cè)了。PCA 算法是用于特征維度過(guò)多時(shí)的降維,通過(guò)向量的線性變換,提取數(shù)據(jù)的主要特征分量,簡(jiǎn)化數(shù)據(jù),保留最大貢獻(xiàn)的數(shù)據(jù)。首先需要訓(xùn)練出人臉模型,在訓(xùn)練出模型后進(jìn)行預(yù)測(cè)。在這里調(diào)用了開(kāi)源的Haar 特征分類器.xml 文件,是被不同的部位有不同的xml,這里用的是臉部的xml 文件進(jìn)行預(yù)測(cè)。從攝像頭捉取一幀圖片并且轉(zhuǎn)換成灰度圖片,每一個(gè)像素點(diǎn)就為0-255 的灰度值,從而可以通過(guò)矩陣運(yùn)算檢測(cè)灰度圖片幀的人臉,經(jīng)過(guò)處理臉部照片,即可實(shí)現(xiàn)人們?cè)诿鎸?duì)智能鏡子時(shí)能檢測(cè)出人臉的功能。人臉檢測(cè)功能原理圖如圖7所示。
智能鏡溫濕度顯示的實(shí)現(xiàn)是通過(guò)DHT11模塊,且集成了溫度傳感器和濕度傳感器,輕薄性能穩(wěn)定,抗干擾能力強(qiáng),適合使用在智能鏡上。
智能鏡子具備語(yǔ)音交互功能,設(shè)定關(guān)鍵詞喚醒語(yǔ)音助手,語(yǔ)音模塊在硬件上用的是Arduino Micro:bit,功能高度模塊化,適合在Raspberry Pi 上進(jìn)行開(kāi)發(fā),接口則是調(diào)用了dingdang-robot。
Dingdang-robot 高度集成了諸多特性,可用于語(yǔ)音識(shí)別、語(yǔ)音合成、全局監(jiān)聽(tīng)、還可以接入微信,dingdang-robot 被喚醒后,指令先經(jīng)過(guò)在線 STT 引擎進(jìn)行 ASR 識(shí)別成文本,然后去處理,得出結(jié)果再交給 TTS 引擎合成成語(yǔ)音,播放給用戶。
語(yǔ)音模塊接受到我們的聲音信號(hào)后,通過(guò)樹(shù)莓派主控發(fā)送到云端進(jìn)行識(shí)別處理,并給出合理的反饋,樹(shù)莓派再根據(jù)反饋?zhàn)龀鱿鄳?yīng)的處理。
在室內(nèi),利用樹(shù)莓派主控連接了Wi-Fi 無(wú)線網(wǎng)絡(luò),在智能鏡子上進(jìn)行了測(cè)試。軟件上,爬蟲(chóng)、時(shí)間、天氣、新聞等信息捉取流暢;硬件上,DHT11 溫濕度模塊獲取實(shí)時(shí)溫濕度正常,采集數(shù)據(jù)過(guò)程如圖8所示。語(yǔ)音模塊略有延遲,但正常使用。整體來(lái)說(shuō),智能鏡子系統(tǒng)功能使用流暢,時(shí)間、天氣、溫濕度等信息顯示清晰,能穩(wěn)定運(yùn)行。
為了增加功能和交互性,本系統(tǒng)設(shè)計(jì)了軟件功能拓展界面,如圖9所示,主要實(shí)現(xiàn)了音樂(lè)播放器、人臉眼睛檢測(cè)、郵件提醒功能和微信提醒功能等。
智能鏡子實(shí)物演示結(jié)果如圖10所示,該系統(tǒng)能實(shí)時(shí)顯示時(shí)間,日期,天氣情況,還有當(dāng)前室內(nèi)環(huán)境的溫度和濕度等信息功能。
圖8:DHT11 溫濕度傳感器采集數(shù)據(jù)過(guò)程
圖10:智能鏡子實(shí)物演示圖
本文圍繞智能鏡子可行性分析、交互式界面軟件和硬件的實(shí)現(xiàn)方法、以及系統(tǒng)測(cè)試進(jìn)行敘述,智能鏡子以Raspberry Pi 為主控制器,以Linux 為系統(tǒng)環(huán)境,通過(guò)網(wǎng)頁(yè)的開(kāi)發(fā)、一些傳感器的使用,實(shí)現(xiàn)了智能鏡子問(wèn)候語(yǔ)、天氣時(shí)間、新聞資訊、音樂(lè)播放、郵件提醒、微信提醒、溫度濕度顯示、人臉檢測(cè)和交互式語(yǔ)音控制的功能。基于Raspberry Pi 設(shè)計(jì)的智能鏡子經(jīng)濟(jì)新穎,科技感強(qiáng),軟件拓展功能豐富,可用于家庭洗手間、客廳等裝飾,在智能化高速發(fā)展的時(shí)代,未來(lái)有望發(fā)展到窗戶等其它玻璃,深入推動(dòng)智能家居的發(fā)展,具有廣闊的市場(chǎng)需求和極高的價(jià)值。