潘 麗,馬樹文,梁語涵
(1.蘭州職業技術學院 電子信息工程系,蘭州 730050;2.蘭州市第一中學,蘭州 730050)
電子信息技術的飛速發展推動了家居智能化的進程,越來越多的智能家居不斷在市場上涌現。抽柜作為常見的一種家具,對其進行智能化的設計研究必不可少。傳統抽屜設計用手推拉進行開合,未考慮到殘疾人士或行動受限人士的使用不便。本文介紹的這款智能抽柜應用電子信息技術,融合多種傳感器對普通抽屜進行了智能優化設計,可以方便目標人群日常使用。
截至2022年,中國各類殘疾人總數已達8500萬[1],語盲障礙人數量約為830萬人,每年新增語盲障礙人數量已經達到40萬以上,此外還有大量老年人、孕婦、兒童等行動受限的社會成員。因此,為殘障人士及行動受限人群服務,設計智能家居已經是刻不容緩的事情。
本文研究不同類型殘障人士的需求,設計了一種基于多傳感器融合的無接觸智能抽柜,其可通過手勢、紅外傳感以及語音三種開合方式進行操作,同時可通過手機APP控制藍牙上鎖。
文中的抽柜設計以方便殘障人士生活為主旨。考慮到不同殘障類型人群的需求,設計與殘障類型相對應的開柜形式,對應關系見表1。

表1 不同開柜設計與不同殘障類型對應關系
本設計由Arduino UNO R3主控板融合LD3320語音模塊、紅外傳感器、藍牙模塊、手勢識別傳感器構成。整體設計及指令、數據流向見圖1。
在機械方面,本產品以萬向輪和普通滑輪為承重輪,金屬鋁片作為滑動軌道來實現抽柜的開合功能,舵機通過識別藍牙信號將柜子上鎖。不同開柜方式通過不同傳感器來實現,傳感器收到命令后由電機驅動滑輪帶動柜子抽出或關閉。在外觀設計上,本產品采用透明的外殼設計以彰顯機械美感,機械結構設計如圖2所示。

圖2 機械結構三維設計圖
本設計所采用的Arduino UNO R3是一款基于Atmega328的單片機開發板,其包含硬件(Arduino板)和軟件(Arduino IDE)[2],板載14個數字IO端口,其中6個端口可以作為PWM信號輸出功能使用;6個模擬輸入、輸出端口(A0-A5)可做數字信號輸入和輸出功能使用。在此設計中,將2號、3號作為語音模塊接口,4號作為手勢模塊接口,5號、6號作為直流電機模塊接口,7號、8號作為紅外檢測模塊接口,11號作為舵機接口,藍牙模塊接在arduino專用接口。
藍牙模塊用于實現上位機APP遠程遙控上鎖功能。該功能通過藍牙傳輸協議與自研APP的方式實現,藍牙模塊自研APP界面如圖3所示。

圖3 自研APP界面圖
本設計采用電機驅動板和脈寬調速(PWM調速)來控制直流減速電機,以此來帶動抽柜的運行。當使能端處于高電平時,可通過改變輸入引腳的電平來控制電機的運動狀態。脈寬調速是通過改變PWM脈沖高電平的占空比來使抽柜運行速度發生改變的,占空比越大,運行速度越快,反之越慢。抽柜采用PWM來控制電機運行速度,因此選擇高效、可靠、可控的驅動電路及方式至關重要[3]。在ARDUINO UNO R3板上,具有脈寬調速(PWM調速)功能的端口分別為3、5、6、9、10、11口,本設計使用5、6口。ARDUINO UNO R3占空比100%用邏輯值255表示,占空比0%用邏輯值0表示。本研究通過調試將邏輯值設為190,抽柜速度運行適宜。
語音開柜模式采用LD3320語音模塊來實現。通過設置喚醒詞與命令詞來實現語音開柜功能,該模塊供電電壓為5 V,可識別50句詞條,該模塊通過特定的語音編程平臺進行程序設計。本設計采用語音錄制,將指令語句錄入語音模塊后,當開合模式切換至語音模式并檢測到錄制好的指令語句時,抽柜按指令完成抽柜開合。
人體感應開柜模式采用兩個紅外模塊來實現,紅外模塊安裝在抽柜正面與側面,紅外模塊功能見表2,其中“1”表示檢測到人體,“0”表示未檢測到人體。兩個紅外模塊配合檢測,完成人體紅外感應開合抽柜功能。

表2 紅外模塊設計功能表
手勢識別開柜模式采用PAJ7620U2傳感器模塊來實現。該模塊內部自帶 LED 驅動器(可發射紅外線信號),內置有傳感器感應陣列、目標信息提取陣列和手勢識別陣列。另外,PAJ7620U2作為一種光學數組式傳感器,其內置LED驅動器集成了環境光和光源抑制濾波器,模塊基本不受環境光干擾。
主控程序負責系統流程執行,主要包括以下四個并行程序執行模塊,分別為語音判斷、紅外判斷、藍牙信號判斷、手勢信號判斷模塊。語音控制模塊先判斷語音輸入是否合法,如果合法再與語音庫中存儲的信息進行比對,符合條件即驅動舵機模塊,完成開鎖或關鎖的功能。紅外判斷、藍牙信號判斷、手勢信號判斷模塊分別對串口接收到的數據進行判斷,并根據判斷結果執行抽柜抽出或關閉的動作。程序流程圖見圖4。

圖4 程序流程圖
Arduino主控板與各模塊采用串口通信,串口通信[4]以位(bit)為單位發送和接收字節。盡管比以字節(byte)為單位的并行通信慢,但它具有同線異輸的特點,且支持遠距離數據輸送,最大傳輸距離可達1000 m左右,符合智能抽柜家居環境下通信傳輸的距離要求。
手勢識別功能的實現基于手勢識別算法,Ojala等[5]人在原始局部二值模式(LBP)手勢識別算法的基礎上采用了圓形區域改進算法,并通過改變該區域的半徑決定區域范圍的大小,以獲得適宜的圓形鄰域。若LBP(P,R)表示半徑為R的圓形區域內有P個像素點,則常見的LBP有 LBP(4,1.0)、LBP(8,1.0)、LBP(12,1.5),如圖5所示:

圖5 LBP圓形區域算法
定義中心像素點gc所在圓周上分布的P個鄰域像素的灰度值為:
T=t(gc,g0…gP-1)
(1)
其中,gc為中心像素的灰度值,gp為半徑為R的圓形對稱領域P等分的像素灰度。若以gc為圓心,則gp的坐標為:
gp=(-Rsin(2πp/P),-Rcos(2πp/P))
(2)
此圓形區域上的LBP計算公式為(3)和(4),且未在圓心點位置的區域像素灰度值采用雙線性差值,公式如下:
其中s(x)為符號函數[6]。
改進算法實現了對原始的LBP模式進行信息降維,像素由原來的2P種減少為 P ( P-1)+2種,在數據量減少的前提下,保證了效果最優的圖像信息。
本產品選用的PAJ7620U2傳感器模塊采用了LBP改進算法,在Auduino UNO R3的算力范圍內,實現了手勢識別開柜功能。其中手勢識別開柜功能相關代碼如下:
/*******************
手勢識別模塊
*******************/
uint8_t error = 0;
Serial.begin(9600);
Serial.println(" Gesture TEST DEMO:Recognize 9 gestures.");
error = GestureInit();
while (error &&(temp_error<10)){
error = GestureInit();
Serial.print("INIT ERROR,CODE:");
Serial.println(error);
temp_error++;
delay(100);
}
temp_error = 0;
Serial.println("INIT OK");
Serial.println("Please input your gestures: ");
}
/******************
手勢識別開柜
******************/
uint8_t data = 0,data1 = 0,error;
error = GestureReadReg(0x43,1,&data); //Read Bank_0_Reg_0x43/0x44 for gesture result.
if (!error){
if(data == GES_CLOCKWISE_FLAG)
{
analogWrite(5,190);
analogWrite(6,0);
delay(1300);
analogWrite(5,0);
analogWrite(6,0);
}
if(data ==GES_COUNT_CLOCKWISE_FLAG)
{
analogWrite(5,0);
analogWrite(6,190);
delay(1600);
analogWrite(5,0);
analogWrite(6,0);
}
}
delay(100);
在調試階段,除了測試各功能模塊外,還要測試各功能模塊的協同工作情況。本設計中將16個數字數據端口及6個模擬端口合理分配,并把各傳感器驅動模塊程序分別定義為子程序,在主程序中按照圖4流程圖所示,協同調用子程序,完成主程序功能。
程序通過數據線燒錄至Arduino主控板,進入軟硬件聯調階段。通過主程序融合各個傳感器模塊,調用子程序,驅動硬件工作。調試者發出不同指令驅動不同傳感器,智能抽柜協調運行,所有模塊功能均正常,機械結構平穩工作,達到設計預期效果,設計成品的抽柜正視圖如圖6所示。

圖6 智能抽柜成品圖
本設計在傳統抽屜的基礎上,采用Arduino作為主控模塊,用APP藍牙控制開關鎖,創新地融合使用多種傳感器相關技術,輪式省力開合取代傳統人力開合抽柜,為殘障人士提供了便利的家居環境,具備一定的實用性,符合設計要求,實現設計預期。該抽柜的設計,最大限度的方便了殘障人士的使用,對于特殊需求的智能家居設計有重要的啟發意義。