前言:尋找寫作靈感?中文期刊網(wǎng)用心挑選的遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)探析,希望能為您的閱讀和創(chuàng)作帶來(lái)靈感,歡迎大家閱讀并分享。
摘要:為了解決行動(dòng)不便人群的一些日常問(wèn)題,設(shè)計(jì)了一種基于PAJ7620的遠(yuǎn)程控制系統(tǒng),該控制系統(tǒng)采用PAJ7620手勢(shì)傳感器為數(shù)據(jù)采集器,經(jīng)Arduino處理后控制房間中照明燈的亮滅、房門的自動(dòng)開(kāi)啟和關(guān)閉、同時(shí)在液晶顯示器顯示各終端的工作狀態(tài)。經(jīng)實(shí)測(cè)運(yùn)行效果良好,該控制系統(tǒng)可以應(yīng)用于智能家居,醫(yī)院等場(chǎng)合。
關(guān)鍵詞:Arduino;手勢(shì)識(shí)別;遠(yuǎn)程控制
0引言
在日常生活中,癱瘓、臥床、行動(dòng)不便的患者獨(dú)自一人在家時(shí),當(dāng)有客人到訪,他們無(wú)法快速地開(kāi)門,日常照明燈的點(diǎn)亮和熄滅也是需要幫助患者解決的實(shí)際問(wèn)題。針對(duì)這些問(wèn)題,設(shè)計(jì)了一款可遠(yuǎn)程控制房門和照明燈的智能遠(yuǎn)程控制系統(tǒng),由手勢(shì)識(shí)別數(shù)據(jù)采集器和智能終端的結(jié)合制作的智能控制系統(tǒng)可以很好地解決疾病患者的生活困難,無(wú)形中保護(hù)他們的身體健康。
1系統(tǒng)總體方案
本設(shè)計(jì)選用ArduinoMEGA2560電路板作為主控芯片,使用者通過(guò)手勢(shì)識(shí)別傳感器來(lái)采集數(shù)據(jù)信息,將采集到的數(shù)據(jù)經(jīng)Arduino處理后確定將要執(zhí)行的操作。例如當(dāng)聽(tīng)到有人來(lái)訪時(shí)通過(guò)手勢(shì)識(shí)別傳感器傳輸信號(hào)給控制系統(tǒng),最后通過(guò)步進(jìn)電機(jī)來(lái)控制房門開(kāi)啟和關(guān)閉,顯示器則實(shí)時(shí)顯示當(dāng)前手勢(shì)識(shí)別的狀態(tài)。
2系統(tǒng)硬件電路設(shè)計(jì)
2.1ArduinoMEGA2560電路板
ArduinoMEGA2560電路板的處理器核心是ATmega2560,它具有4路UART端口、6路外部中斷、16路模擬端口、54路數(shù)字端口、可自動(dòng)選擇三種供電方式。串口通信引腳中RXD和TXD是用于數(shù)據(jù)的發(fā)送和數(shù)據(jù)的接收,四路串行數(shù)據(jù)的串行引腳分別為:串口0—引腳0和引腳1、串口1—引腳19和引腳18、串口2—引腳17和引腳16、串口3—引腳15和引腳14。數(shù)字端口的工作電壓為5V,每一個(gè)端口通過(guò)的最大電流為40mA,同時(shí)每一個(gè)端口都連接一個(gè)上拉電阻。6路外部中斷依次端口為:引腳2、引腳3、引腳21、引腳20、引腳19、引腳18。這六種中斷引腳都是可以通過(guò)多種方式產(chǎn)生中斷,即為中斷引腳提供低電平、下降沿、上升沿、改變值。16路模擬端口:分別標(biāo)記為A0-A15,這部分引腳也可以作為數(shù)字I/O引腳,每個(gè)引腳分別率為0到1024,可以通過(guò)AREF和analogReference()函數(shù)更改分辨率的上限值,通過(guò)的電壓為0到5V。
2.2數(shù)據(jù)采集模塊
2.2.1手勢(shì)識(shí)別的概述
如今計(jì)算機(jī)已經(jīng)完全融入了這個(gè)社會(huì),各行各業(yè)都涉及到了計(jì)算機(jī)的使用,而人與計(jì)算機(jī)的交流將是未來(lái)的必然趨勢(shì),傳統(tǒng)的交流方式已經(jīng)無(wú)法繼續(xù)滿足人們的生活需求。人機(jī)交互的屏幕由黑白二色發(fā)展到了還原度極高的的彩色屏幕,計(jì)算機(jī)的功能也從當(dāng)初簡(jiǎn)單的數(shù)學(xué)運(yùn)算發(fā)展到了如今各種線上貿(mào)易。作為人機(jī)交互主流的鼠標(biāo)鍵盤已經(jīng)漸漸地開(kāi)始限制人們的應(yīng)用體驗(yàn),所以我們需要新一代的交互方式,我們需要一種自由,體驗(yàn)感超強(qiáng)的交流方式,所以手勢(shì)識(shí)別的研究開(kāi)始登上當(dāng)今社會(huì)的舞臺(tái)?;趥鞲衅鞯氖謩?shì)識(shí)別主要分為兩大類,接觸式和非接觸式。接觸式的實(shí)現(xiàn)方法主要是手掌與多種傳感器相連接的識(shí)別方式,如基于慣性傳感器的手勢(shì)識(shí)別方式。非接觸式的實(shí)現(xiàn)方法主要是基于視覺(jué)、超聲波、電磁波和紅外線等識(shí)別方式。目前為止手勢(shì)識(shí)別的熱點(diǎn)算法則是基于圖像處理的動(dòng)態(tài)手勢(shì)識(shí)別,該類算法需要高精度的檢測(cè)和需要擁有強(qiáng)大計(jì)算能力的圖形處理處理器,所以普通的智能玩具、智能家居并不適合這類算法,實(shí)用性太低。本設(shè)計(jì)采用基于紅外傳感器的PAJ7620手勢(shì)檢測(cè)算法,識(shí)別錯(cuò)誤率低、實(shí)用性較強(qiáng)、同時(shí)價(jià)格適中。
2.2.2PAJ7620的工作原理
紅外傳感器LED陣列如圖3所示,紅外傳感器四周分別放置一個(gè)紅外發(fā)光二極管,分別記為D1、D2、D3、D4,紅外接收器位于二極管的正中心,采用這種方式是為了避免識(shí)別過(guò)程中出現(xiàn)檢測(cè)死角。當(dāng)無(wú)手勢(shì)進(jìn)入檢測(cè)區(qū)域時(shí),紅外接收器則不會(huì)接收到任何的輸入信號(hào),此時(shí)的輸出電壓的幅值為±0�002V。當(dāng)有手勢(shì)進(jìn)入可檢測(cè)范圍時(shí),紅外發(fā)光二極管發(fā)出的紅外光將會(huì)反射到紅外接收器,從而形成光強(qiáng)反差,經(jīng)過(guò)ADC的轉(zhuǎn)換將光強(qiáng)信號(hào)轉(zhuǎn)換為電信號(hào),隨后將數(shù)據(jù)存入指定的寄存器。以D1為例,手掌越靠近光源,紅外接收器檢測(cè)到的光信號(hào)越強(qiáng),即輸出的電信號(hào)越強(qiáng),反之電信號(hào)即為減弱。
2.2.3PAJ7620的測(cè)試結(jié)果
為了測(cè)試LED陣列識(shí)別手勢(shì)的可靠性,所以對(duì)定義的九種手勢(shì)進(jìn)行重復(fù)性測(cè)試,計(jì)算識(shí)別的準(zhǔn)確率。基于檢測(cè)思路的方法,將檢測(cè)同樣進(jìn)行分類識(shí)別,接近類(靠近和遠(yuǎn)離)、揮動(dòng)類(上、下、左、右、波動(dòng))、旋轉(zhuǎn)類(順時(shí)針和逆時(shí)針)。實(shí)驗(yàn)測(cè)試時(shí)每種手勢(shì)測(cè)量次數(shù)為100次,測(cè)試的最終結(jié)果如表1所示。九種手勢(shì)的平均識(shí)別率為92�9%,從表1可得知該數(shù)據(jù)采集方式的準(zhǔn)確率和識(shí)別效率都比較高,但是單個(gè)分析可得出對(duì)于旋轉(zhuǎn)類的檢測(cè)誤差相對(duì)最大。因?yàn)樾D(zhuǎn)類的手勢(shì)檢測(cè)時(shí)手指和手掌以及手臂之間的有較大面積,導(dǎo)致檢測(cè)時(shí)對(duì)于距離的檢測(cè)具有較大的誤差,進(jìn)而為識(shí)別的準(zhǔn)確性帶來(lái)更大的難度。
3系統(tǒng)軟件設(shè)計(jì)
3.1主程序的設(shè)計(jì)
手勢(shì)識(shí)別函數(shù)首先要確定手勢(shì)的進(jìn)入時(shí)間、退出時(shí)間、以及識(shí)別時(shí)間,設(shè)置時(shí)單位統(tǒng)一采用ms,識(shí)別時(shí)間和進(jìn)入時(shí)間與系統(tǒng)識(shí)別的反應(yīng)速度是成反比的,時(shí)間越短反應(yīng)速度就越快,同時(shí)識(shí)別速度和準(zhǔn)確率也是成反比。通過(guò)大量的實(shí)驗(yàn)測(cè)試,最終確定進(jìn)入時(shí)間和識(shí)別時(shí)間為800ms,退出時(shí)間為1000ms。流程圖如圖4所示,Arduino程序首先進(jìn)入的是Setup()函數(shù),該函數(shù)的目的是進(jìn)行Arduino的初始化,如庫(kù)函數(shù)的調(diào)用,配置串口,波特率設(shè)置等,Setup()函數(shù)只會(huì)執(zhí)行一次。接著就是執(zhí)行l(wèi)oop()函數(shù),該函數(shù)會(huì)不停地循環(huán)執(zhí)行,也可看做Arduino自帶的循環(huán)函數(shù)。如果沒(méi)有l(wèi)oop函數(shù)和Setup函數(shù),Arduino也是無(wú)法通過(guò)編譯的。手勢(shì)識(shí)別傳感器會(huì)有九種輸出,所以選擇switch()語(yǔ)句比較合適,函數(shù)中使用到的PAJ7620ReadReg函數(shù)為傳感器頭文件里面已經(jīng)定義好的函數(shù),該函數(shù)是用來(lái)讀取傳感器返回的數(shù)據(jù)。傳感器庫(kù)函數(shù)內(nèi)部已經(jīng)定義了將會(huì)使用到的各種函數(shù),使用時(shí)只需要調(diào)用就可以完成使用,PAJ7620中主要定義的函數(shù)為ReadReg函數(shù)(讀取函數(shù))與WriteReg函數(shù)(寫入函數(shù))。檢測(cè)靠近手勢(shì)或者遠(yuǎn)離手勢(shì)時(shí),有很大的可能性首先檢測(cè)到的手勢(shì)會(huì)是來(lái)自上、下、左、右四個(gè)方向其中的一個(gè),因此當(dāng)檢測(cè)到上、下、左、右這四種手勢(shì)時(shí)應(yīng)進(jìn)行進(jìn)一步的檢測(cè),判斷是否為靠近或者遠(yuǎn)離手勢(shì)。例如:手掌從左側(cè)向進(jìn)入檢測(cè)區(qū)域,此時(shí)第一個(gè)檢測(cè)結(jié)果將是“右”,此時(shí)系統(tǒng)進(jìn)入檢測(cè)等待延時(shí),在800ms中如果檢測(cè)到靠近手勢(shì),則證明使用者需要輸入的指令為“靠近”指令,同理;如果800ms的檢測(cè)時(shí)間內(nèi)檢測(cè)到遠(yuǎn)離手勢(shì)則證明使用者需要輸入的指令為“遠(yuǎn)離”指令。在檢測(cè)時(shí)間內(nèi)如果沒(méi)有靠近手勢(shì)或者遠(yuǎn)離手勢(shì)則最終輸出“右”手勢(shì)。同理“上”、“下”、“左”三種手勢(shì)都是如“右”手勢(shì)一樣的檢測(cè)思路。
3.2相關(guān)子程序的設(shè)計(jì)
當(dāng)Arduino通過(guò)分析確認(rèn)使用者的手勢(shì)后將進(jìn)入相應(yīng)的子程序,在程序里已經(jīng)定義了照明燈與步進(jìn)電機(jī)的子程序,在子程序進(jìn)行使用者想要的操作。表2所示為本設(shè)計(jì)通過(guò)手勢(shì)識(shí)別控制的終端以及控制方法。電機(jī)轉(zhuǎn)動(dòng)子程序中定義當(dāng)檢測(cè)到靠近手勢(shì),電機(jī)開(kāi)始正轉(zhuǎn)固定圈數(shù),代表房門開(kāi)啟,等待固定時(shí)間,電機(jī)開(kāi)始反轉(zhuǎn),代表房門自動(dòng)關(guān)閉。照明燈子程序中定義,以LED1為例,當(dāng)?shù)谝淮螜z測(cè)到“左”時(shí),判斷指定變量為奇數(shù)還是偶數(shù),因變量初始值設(shè)置為0,所以判斷為偶數(shù),即LED1點(diǎn)亮,此時(shí)指定變量自加1變?yōu)槠鏀?shù),當(dāng)再次檢測(cè)到“左”,判斷變量為奇數(shù)控制LED1熄滅。同理LED2和LED3的控制方式也為如此。當(dāng)檢測(cè)到有控制終端時(shí)顯示器同樣會(huì)有相應(yīng)的顯示,當(dāng)LED燈點(diǎn)亮?xí)r,顯示器顯示點(diǎn)亮結(jié)果,當(dāng)LED燈熄滅時(shí)同樣顯示熄滅結(jié)果,當(dāng)需要控制房門時(shí)顯示開(kāi)啟和關(guān)閉。檢測(cè)到?jīng)]有控制終端時(shí),顯示器顯示指令無(wú)效,同時(shí)空指令也為未來(lái)系統(tǒng)的擴(kuò)展留下空間,用于為疾病患者提供更好的幫助。
4結(jié)論
通過(guò)一系列的仿真調(diào)試,最后組裝實(shí)物進(jìn)行測(cè)試達(dá)到設(shè)計(jì)要求,可以用手勢(shì)控制房門的開(kāi)啟和照明燈的亮滅,從而解決了行動(dòng)不便人群的一些實(shí)際問(wèn)題,同時(shí)該系統(tǒng)也可用于我們?nèi)粘<揖拥葓?chǎng)合。
作者:李娣娜 劉強(qiáng) 馬惠鋮 單位:延安大學(xué)西安創(chuàng)新學(xué)院 西北工業(yè)集團(tuán)有限公司