摘 要:本文提出一種新穎的用手的動(dòng)作來控制GUI輸入接口的思路和具體實(shí)現(xiàn)技術(shù)。在將CLinux和Microwindows移植到基于ARM的嵌入式系統(tǒng)中后,利用加速度傳感器ADXL105達(dá)到了用手的動(dòng)作對GUI菜單進(jìn)行控制的目的,從而實(shí)現(xiàn)了更自然的人機(jī)交互輸入。
關(guān)鍵詞:GUI;ARM;加速度傳感器;動(dòng)作控制
引言
嵌入式系統(tǒng)在消費(fèi)類電子產(chǎn)品中的應(yīng)用發(fā)展迅速,已經(jīng)滲透到生活的方方面面,包括手機(jī)、個(gè)人數(shù)字助理(PDA)等。圍繞各種消費(fèi)類電子產(chǎn)品的嵌入式應(yīng)用技術(shù)也不斷引起人們的關(guān)注。其中,除PC機(jī)中成熟的GUI(圖形用戶界面)在嵌入式系統(tǒng)中得到廣泛應(yīng)用外,一些新的用戶界面也初露端倪。
計(jì)算機(jī)用戶界面是指計(jì)算機(jī)與其操作者之間的人機(jī)交互接口。以GUI為基礎(chǔ)的人機(jī)交互方式的出現(xiàn),大大降低了計(jì)算機(jī)使用的門檻,促進(jìn)了計(jì)算機(jī)的普及和應(yīng)用。隨著計(jì)算機(jī)技術(shù),特別是嵌入式系統(tǒng)的飛速發(fā)展,人們對用戶界面又有更高要求,希望能夠出現(xiàn)更直觀自然的用戶界面。使用語音、自然語言、行為姿態(tài)、動(dòng)作等更簡便而高效的輸入方式一直是用戶界面所追求的目標(biāo),為此本文作了實(shí)驗(yàn)性的基礎(chǔ)研究,并在ARM嵌入式系統(tǒng)上實(shí)現(xiàn)了基于人手動(dòng)作的圖形界面菜單控制。

圖1 系統(tǒng)結(jié)構(gòu)框圖

圖2 ADXL105與LM339的硬件原理圖
用動(dòng)作控制GUI的工作原理
目前一些利用動(dòng)作進(jìn)行識(shí)別控制的方法都是基于傳統(tǒng)的圖像識(shí)別方法,通過攝像頭拍攝人體的行為姿態(tài)或動(dòng)作,對拍攝的圖像進(jìn)行分析處理,利用相應(yīng)的識(shí)別算法進(jìn)行識(shí)別控制,從而達(dá)到利用動(dòng)作控制GUI的目的。而本文介紹的是另一種基于人體行為姿態(tài)或動(dòng)作的直接識(shí)別技術(shù),其中最基本和最簡單的就是基于人體的肢體動(dòng)作,特別是人手動(dòng)作的識(shí)別方法。本文設(shè)計(jì)了利用加速度傳感器來識(shí)別人手動(dòng)作的輸入方式。
用人手動(dòng)作控制GUI是指利用加速度傳感器判斷手腕上下翻動(dòng)的方向,從而控制GUI中菜單的上下翻動(dòng),實(shí)現(xiàn)手動(dòng)控制菜單。當(dāng)手腕靜止時(shí),此時(shí)加速度是0 g,輸出值為加速度為0 g時(shí)的輸出電壓;當(dāng)手腕向上翻動(dòng)90°時(shí),加速度認(rèn)為是1 g;而向下翻動(dòng)90°時(shí),加速度就為-1 g。利用加速度傳感器測量手腕在上下翻動(dòng)時(shí)加速度的數(shù)值變化,就可對手腕翻動(dòng)的方向做出判斷,實(shí)現(xiàn)用手腕動(dòng)作控制菜單的功能。
本文將介紹利用加速度傳感器ADXL105,在以基于ARM7TDMI內(nèi)核的S3C44B0X為處理器的嵌入式系統(tǒng)中,通過手腕動(dòng)作對菜單進(jìn)行識(shí)別控制的實(shí)現(xiàn)。
在ARM嵌入式系統(tǒng)中的實(shí)現(xiàn)
系統(tǒng)結(jié)構(gòu)
本研究采用S3C44B0X作為主控芯片,在開發(fā)板上移植了CLinux和Microwindows,利用ADXL105加速度傳感器實(shí)現(xiàn)了用手腕動(dòng)作控制菜單的功能。該系統(tǒng)的系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
ARM微處理器S3C44B0X
隨著嵌入式產(chǎn)品對高處理速度、網(wǎng)絡(luò)通信、實(shí)時(shí)多任務(wù)、超低功耗等需求的增長,高端嵌入式處理器已經(jīng)得到了普遍認(rèn)可和廣泛應(yīng)用。目前比較流行的嵌入式微處理器包括ARM、MIPS、Power PC、68K等系列。其中ARM微處理器由于體積小、功耗低、高性能、低成本等特點(diǎn),得到了廣泛應(yīng)用。本文采用的S3C44B0X是三星推出的基于ARM7TDMI內(nèi)核,為手持設(shè)備和一般應(yīng)用提供高性價(jià)比的16/32位微處理器。
加速度傳感器ADXL105
用于測量加速度和傾斜角度位置的傳感器采用ADI公司的集成單軸加速度芯片ADXL105。這是一種利用微電子機(jī)械(MEMS)加工技術(shù)開發(fā)的高性能、高準(zhǔn)確度的變間隙差動(dòng)式結(jié)構(gòu)的差容式力平衡加速度傳感器。它具有結(jié)構(gòu)簡單、動(dòng)態(tài)響應(yīng)好、高帶寬、能實(shí)現(xiàn)無接觸式測量、靈敏度好、分辨率高和0g偏差,以及溫度漂移較低的特點(diǎn)。
系統(tǒng)軟件移植
CLinux是目前廣泛應(yīng)用的一種面向控制的嵌入式操作系統(tǒng),它符合GNU/GPL公約,完全開放源代碼。CLinux針對嵌入式應(yīng)用的特點(diǎn),對Linux 2.0/Linux 2.4內(nèi)核進(jìn)行了重新修改和編譯,包含常用的API,內(nèi)核小于512 KB,且保留了原來Linux操作系統(tǒng)的高穩(wěn)定性、網(wǎng)絡(luò)功能和對各種文件系統(tǒng)的支持。它專門針對沒有內(nèi)存管理單元(MMU)的CPU而設(shè)計(jì),并為此專門做了許多小型化的工作。
Microwindows是一個(gè)開放源碼的圖形用戶接口,其目標(biāo)是在嵌入式Linux平臺(tái)上提供與普通個(gè)人電腦類似的GUI。它可提供與X_Windows類似的功能,但占用的內(nèi)存資源只有100K~600KB左右。本系統(tǒng)中已經(jīng)成功地將C/OS和Microwindows移植到了開發(fā)板上。由于篇幅所限,這里就不作詳細(xì)論述。
實(shí)現(xiàn)方案
對于本應(yīng)用的具體實(shí)現(xiàn)可以采用兩種方法,下面就這兩種實(shí)現(xiàn)方案作分別介紹。
利用LM339電壓比較器
由于ADXL105是單軸加速度傳感器,輸出為模擬量,因此可以通過采集ADXL105的輸出值與LM339電壓比較器做比較,從而對方向進(jìn)行判斷。ADXL105與LM339連接的硬件原理圖如圖2所示。
ADXL105在0 g時(shí)的理論輸出值為2.5 V(當(dāng)VDD = 5 V),本應(yīng)用采用的比例因子為250 mV/g,即當(dāng)加速度傳感器在-1~+1g變化時(shí),輸出電壓的變化范圍為2.5 V ± 0.25 V,即2.25 ~2.75V。為了判斷手腕上下翻動(dòng)的方向,假定當(dāng)手腕向上翻動(dòng)45°時(shí),即判斷為向上翻動(dòng),同理當(dāng)向下翻動(dòng)45°時(shí),即判斷為向下翻動(dòng)。通過將加速度傳感器的輸出電壓值與電壓比較器的閾值進(jìn)行比較,即可判斷翻動(dòng)的方向。設(shè)加速度傳感器水平放置時(shí)電壓輸出值為V0,傾角為時(shí)的電壓輸出值為V,則:
V = 250 mV/g × sin × 1 g+ V0
因此,當(dāng) = +45°時(shí),V = 250 mV/g × sin × 1 g + V0 = 2.68 V;當(dāng) =-45°時(shí),V = 250mV/g × sin × 1g + V0 = 1.54V。也就是說,當(dāng)V>2.68 V時(shí),即認(rèn)為向上翻動(dòng);當(dāng)V< 1.54 V時(shí),即認(rèn)為向下翻動(dòng)。由此,可以設(shè)定電壓比較器的閾值,將電壓比較器的輸出接至S3C44B0X的引腳,通過輪詢或者中斷的方法,對比較的結(jié)果進(jìn)行處理,從而在GUI上實(shí)現(xiàn)菜單的上下滾動(dòng)選擇功能。
利用S3C44B0X的ADC
S3C44B0X具有8路模擬信號(hào)輸入的10位逐次逼近型的ADC,它由模擬輸入多路復(fù)用、自動(dòng)調(diào)零比較器、時(shí)鐘發(fā)生器、10位逐次逼近寄存器(SAR)構(gòu)成。利用S3C44B0X的ADC對ADXL105的輸出值進(jìn)行A/D轉(zhuǎn)換,然后根據(jù)轉(zhuǎn)換后的數(shù)字量就可確定手動(dòng)翻轉(zhuǎn)的角度和方向。
S3C44B0X中與ADC相關(guān)的寄存器包括A/D轉(zhuǎn)換控制寄存器(ADCCON)、A/D轉(zhuǎn)換預(yù)分頻寄存器和A/D轉(zhuǎn)換數(shù)據(jù)寄存器。通過ADCCON 對A/D轉(zhuǎn)換和通道選擇進(jìn)行控制,A/D轉(zhuǎn)換控制寄存器的定義如表1所示。
AD轉(zhuǎn)換的程序如下:
{
……
rADCCON | =0x01; //啟動(dòng)A/D轉(zhuǎn)換
while (rADCCON&0x01); //檢查A/D是否已啟動(dòng)
while (!(rADCCON&0x40)); //檢查FLAG,等待直到轉(zhuǎn)換結(jié)束
tem = (0x3ff&rADCDAT); //讀取轉(zhuǎn)換值10位
……
}
A/D轉(zhuǎn)換的目的與利用LM339電壓比較器的目的是一樣的,都是為了判斷手腕翻動(dòng)方向。如上所述,當(dāng)手腕向上翻動(dòng)一定角度時(shí),即認(rèn)為向上翻動(dòng);當(dāng)手腕向下翻動(dòng)一定角度時(shí),即認(rèn)為向下翻動(dòng)。通過判斷A/D轉(zhuǎn)換后的數(shù)字量,即可判斷手腕翻動(dòng)的方向,從而實(shí)現(xiàn)更精確的手動(dòng)控制菜單的功能。
結(jié)語
本研究在基于ARM的嵌入式系統(tǒng)中,移植了μCLinux和Microwindows,利用加速度傳感器ADXL105實(shí)現(xiàn)了用手腕動(dòng)作對GUI中的菜單進(jìn)行控制的功能。該項(xiàng)課題的研究和實(shí)現(xiàn),提出一種用戶界面輸入接口的新思路、新方法,改變了人們傳統(tǒng)的輸入方式,為今后人機(jī)交互接口的發(fā)展探索出一條新的途徑。





