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