劉凱多,陳振宇,袁洪喜,李靜宜
(湖南科技大學(xué),湖南湘潭,411100)
隨著人們生活節(jié)奏的加快,工作或?qū)W習(xí)的時長有增無減,而由其所處環(huán)境與自身的狀態(tài)所引發(fā)的問題卻常常被忽視。例如在過低溫度的室內(nèi)學(xué)習(xí),容易生病感冒;不良的光照環(huán)境對視力有著不可逆的影響,而長時間處于視覺疲勞狀態(tài)下學(xué)習(xí)或不正確的坐姿都更容易導(dǎo)致近視和含胸駝背甚至更為嚴重的脊椎問題。此外,研究表明在二氧化碳濃度較高的場合,學(xué)習(xí)效率會隨之降低[1]。但人體是無法本能判斷出室內(nèi)二氧化碳濃度是否高于理論參考值,會對人的思考和注意力產(chǎn)生影響,從而決定是否需要開窗通風(fēng)透氣。
基于上述問題,我們提出了一種基于機器視覺的學(xué)習(xí)環(huán)境及狀態(tài)檢測裝置,該裝置可以有效改善此類現(xiàn)狀對學(xué)習(xí)帶來的不良影響。
本作品通過物聯(lián)網(wǎng)技術(shù)與電子技術(shù)解決方案,形成一套針對工作學(xué)習(xí)環(huán)境與狀態(tài)進行檢測,并做出提醒和改善的智能家居設(shè)備。該裝置由學(xué)習(xí)環(huán)境監(jiān)測和學(xué)習(xí)狀態(tài)監(jiān)測兩大部分組成。實時監(jiān)測環(huán)境溫濕度、光強、空氣質(zhì)量、二氧化碳濃度等,將環(huán)境數(shù)據(jù)上傳至云端,在移動端對數(shù)據(jù)進行輸出整合,生成可視化的圖形,同時針對檢測到的不良環(huán)境狀況通過樹莓派搭載智能家居網(wǎng)關(guān)控制家電予以改善[2];通過攝像頭獲取用戶視頻圖像,監(jiān)測學(xué)習(xí)狀態(tài)、坐姿與學(xué)習(xí)時長,并對視疲勞及不良坐姿等現(xiàn)象通過屏幕交互的方式進行提醒。
圖1 裝置整體架構(gòu)
本作品的軟件程序分為學(xué)習(xí)環(huán)境監(jiān)測和學(xué)習(xí)狀態(tài)監(jiān)測兩個部分,數(shù)據(jù)獲取、數(shù)據(jù)處理、計算判斷和輸出執(zhí)行共四個模塊。硬件主體采用“樹莓派–Arduino”架構(gòu)設(shè)計[3],以機器視覺和模式識別結(jié)合的方法,對溫濕度、光強、空氣質(zhì)量、二氧化碳濃度、坐姿好壞、視疲勞等進行檢測,并針對檢測的結(jié)果與用戶進行交互式提醒,智能聯(lián)動家電改良當(dāng)前環(huán)境,形成一套科學(xué)、完整的智能家居系統(tǒng)。
采用“樹莓派–Arduino”架構(gòu)設(shè)計,由Arduino UNO R3通過引腳端口連接DHT11溫濕度模塊、BH1750光照傳感器模塊、粉塵傳感器、VOC傳感器和MH–Z16二氧化碳氣體傳感器等傳感器模塊負責(zé)數(shù)據(jù)采集,通過ESP8266模塊將數(shù)據(jù)發(fā)送至云端。通過USB數(shù)據(jù)線連接樹莓派4b。由樹莓派4b負責(zé)視頻圖像采集與神經(jīng)網(wǎng)絡(luò)學(xué)習(xí),通過type–C接5V1A電源給樹莓派4b供電,通過HDMI轉(zhuǎn)micro–USB線連接顯示屏,直接連接CMOS攝像頭,在樹莓派4b中通過Arduino IDE及Geany進行代碼開發(fā)。在移動端對云端數(shù)據(jù)進行輸出整合處理,生成直觀簡潔的可視化圖形,分析測試者所處環(huán)境及自身情況,給出相關(guān)建議。
本部分軟件設(shè)計在Arduino IDE開發(fā)環(huán)境中完成編程,主要分為溫濕度檢測、光照強度檢測、PM2.5濃度檢測、TVOC與二氧化碳濃度檢測、ESP8266 WiFi模塊五個部分。通過主程序調(diào)用每一模塊所對應(yīng)的子程序,即可完成學(xué)習(xí)環(huán)境所有指標的檢測以及檢測數(shù)據(jù)上傳云端的功能。其中溫濕度檢測部分是通過調(diào)用DHT.h庫,然后在loop()函數(shù)中使用dht.readTemperature ()與dht.readHumidity()便可進行溫濕度的數(shù)據(jù)讀?。还庹諒姸炔糠滞ㄟ^Wire.h庫,即IIC庫操作IIC獲取從BH1750寄存器字節(jié)的數(shù)據(jù),將這兩個字節(jié)合并后得到寄存器值,最后由光照強度計算公式:光照強度=(寄存器值* 分辨率) / 1.2 即可計算出光照強度的數(shù)值;PM2.5檢測部分只需在loop()函數(shù)中利用analogRead()函數(shù)獲取粉塵傳感器模擬電壓值,再根據(jù)模擬電壓值與PM2.5濃度關(guān)系式即可得出PM2.5的濃度值;二氧化碳濃度檢測采用的是調(diào)用SparkFunCCS811.h庫,在loop()函數(shù)中使用mySensor.readAlgorithmResults()進行總的數(shù)據(jù)獲取,再使用mySensor.getCO2即可得到空氣中二氧化碳的具體數(shù)值;ESP8266WiFi模塊部分即采用ESP8266.h程序庫,通過WiFi連接子函數(shù)輸入SSID與密碼即可連接WiFi,并與Arduino進行串口通信即可將各傳感器模塊所獲取的學(xué)習(xí)環(huán)境檢測的數(shù)據(jù)上傳至云端。
2.2.1 溫濕度檢測
本部分采用Arduino搭載DHT11溫濕度檢測模塊對環(huán)境的溫度與空氣相對濕度進行檢測。其中,DHT11數(shù)字溫濕度傳感器是一款經(jīng)過極其嚴格精確地校準的溫濕度復(fù)合傳感器,包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。由數(shù)字信號進行輸出,濕度測量范圍為20–95%RH,溫度測量范圍為0–50℃,測量精度為:濕度±5%RH,溫度±2℃。只需1個I/O口即可對溫度和濕度的同時測量并傳輸數(shù)據(jù),具有高性價比、穩(wěn)定性好等優(yōu)點,在此裝置中可為當(dāng)前環(huán)境溫濕度檢測提供十分科學(xué)可靠的檢測數(shù)據(jù)。
2.2.2 光照環(huán)境檢測本部分采用Arduino連接BH1750光照傳感器模塊對環(huán)境光強進行檢測。其中,BH1750光照傳感器模塊為兩線式串行總線IIC的數(shù)字型光強傳感器,測量范圍為1–65535Lx,內(nèi)部有16位模數(shù)轉(zhuǎn)換器,將采集到的光信號表現(xiàn)為電流,再轉(zhuǎn)換為PD電壓,最后通過AD轉(zhuǎn)換器將模擬信號轉(zhuǎn)化為數(shù)字信號。具有測量范圍廣、靈敏度高、穩(wěn)定性強、抗干擾性好等特點,可為裝置檢測提供準確的環(huán)境光強度值。
2.2.3 空氣質(zhì)量檢測
本部分采用Arduino連接GP2Y1014AU粉塵傳感器對環(huán)境空氣中PM2.5濃度進行檢測。其中,該粉塵傳感器的工作溫度為–10~65℃,最小粒子檢出值為0.8微米,靈敏度為0.5V/(0.1mg/m3),存儲溫度為–20~80℃,利用該傳感器測量用戶所處環(huán)境空氣中PM2.5濃度,具有體積小、穩(wěn)定性高、靈敏性好等優(yōu)點,可為空氣質(zhì)量的檢測提供十分可靠的數(shù)據(jù)。
2.2.4 二氧化碳濃度檢測
本部分采用Arduino連接高分辨率CSS811空氣質(zhì)量傳感器,實現(xiàn)對用戶所處環(huán)境中二氧化碳濃度進行實時檢測的目的。其中,CCS811空氣質(zhì)量傳感器是一款超低功耗數(shù)字氣體傳感器,集成了MOX(金屬氧化物)氣體傳感器,可通過集成的MCU(微控制器單元)檢測各種VOC(揮發(fā)性有機化合物),用于室內(nèi)空氣質(zhì)量監(jiān)測。MCU由ADC(模數(shù)轉(zhuǎn)換器)和I2C接口組成。它基于ams獨特的微型熱板技術(shù),為低功耗的氣體傳感器提供高度可靠的解決方案。此傳感器功耗較低,性能高,受空氣中氧氣、溫度的影響較小,在空氣質(zhì)量監(jiān)測、安全防護監(jiān)測等方面應(yīng)用廣泛,可作為此裝置中檢測環(huán)境二氧化碳濃度的有力數(shù)據(jù)來源。
本部分檢測采用樹莓派4b連接一個CMOS攝像頭獲取用戶臉部及坐姿圖像,其中CMOS攝像頭像素為200W,最高分辨率和幀率分別為1920×1080與30fp。
視疲勞檢測部分采用基于Dlib人臉識別的68特征點檢測,分別獲取左右眼面部標志的索引,通過OpenCV對視頻流進行灰度化處理,檢測出人眼的位置信息,通過計算當(dāng)前幀兩雙眼睛寬高比與前一幀的差值的絕對值(EAR)檢測眨眼,通過計算眨眼的頻率判斷用戶是否屬于視疲勞情況。
坐姿識別部分采用基于OpenPose的人體骨架關(guān)鍵點識別,通過CMOS攝像頭獲取人體坐姿圖像,將所述人體坐姿圖像輸入至人體骨架關(guān)鍵點識別模型,得到人體骨架關(guān)鍵點特征信息;其中,所述人體骨架關(guān)鍵點識別模型是預(yù)先訓(xùn)練得到;根據(jù)所述人體骨架關(guān)鍵點特征信息構(gòu)建包含關(guān)鍵點特征信息的圖像;將所述包含關(guān)鍵點特征信息的圖像輸入至人體坐姿識別模型,得到人體坐姿識別結(jié)果;其中,所述人體坐姿識別模型是預(yù)先訓(xùn)練得到[4]。
本部分由樹莓派顯示屏、移動端數(shù)據(jù)顯示及智能聯(lián)動家居等部分組成。其中,樹莓派顯示屏通過HDMI轉(zhuǎn)micro–USB線連接樹莓派4b,通過由C++開發(fā)的圖形用戶界面顯示視疲勞及不良坐姿檢測的結(jié)果。通過ESP8266模塊將數(shù)據(jù)發(fā)送至云端儲存,可以實現(xiàn)在移動端對數(shù)據(jù)進行輸出整合并生成可視化圖形,使所有數(shù)據(jù)都可以在移動端上直觀呈現(xiàn),可方便用戶在同一局域網(wǎng)下的任何時間、地點,了解到實時所處的環(huán)境情況。智能聯(lián)動家居部分采用樹莓派搭載智能家居網(wǎng)關(guān)對家居進行調(diào)控。設(shè)備之間的通信協(xié)議采用基于發(fā)布/訂閱模式的輕量級物聯(lián)網(wǎng)消息傳輸?shù)腗QTT協(xié)議,可以用極少的代碼和帶寬為聯(lián)網(wǎng)設(shè)備提供實時可靠的消息服務(wù),適用于硬件資源有限的設(shè)備及帶寬有限的網(wǎng)絡(luò)環(huán)境。此外,由于智能家居設(shè)備之間數(shù)據(jù)傳輸格式不同,并且數(shù)據(jù)存在波動性,采用由EMQ開源的EMQ X Kuiper對智能家居設(shè)備數(shù)據(jù)進行邊緣化處理,其中,EMQ X Kuiper是基于SQL的輕量級邊緣流式消息處理引擎,可以運行在資源受限的邊緣設(shè)備上。MQTT broker采用輕量級的物聯(lián)網(wǎng)邊緣計算消息中間件EMQ X Edge,其支持部署在資源受限的物聯(lián)網(wǎng)邊緣硬件。EMQ X Kuiper為網(wǎng)關(guān)提供設(shè)備數(shù)據(jù)處理以及分析功能。
基于機器視覺的學(xué)習(xí)環(huán)境及狀態(tài)監(jiān)測裝置用于實現(xiàn)對人們所處環(huán)境及自身狀態(tài)的有效監(jiān)測,引導(dǎo)人們及時休息或正確調(diào)整坐姿,以降低因環(huán)境不佳、視疲勞或不正確的坐姿等帶來的不良影響,滿足未來智能化生活及人體健康領(lǐng)域的需要。