用加速度傳感器來進(jìn)行手勢(shì)識(shí)別器的設(shè)計(jì)
仿真器的外觀和操作類似一部移動(dòng)電話,但是并不代表某個(gè)特定的設(shè)備,而是提供對(duì)其所支持的API 的正確實(shí)現(xiàn),每個(gè)命令按鈕對(duì)應(yīng)著相應(yīng)的API函數(shù)。從圖6中可以看到手機(jī)的導(dǎo)航鍵,我們更改了導(dǎo)航鍵的API函數(shù),使其從鼠標(biāo)單擊觸發(fā)的方式轉(zhuǎn)換為串口動(dòng)作代碼控制。首先,我們編寫了J2ME的串口接收程序,用于接收從單片機(jī)傳來的單字節(jié)的type_action值;然后將type_action以參數(shù)的形式傳給API,手機(jī)根據(jù)不同的type_action值執(zhí)行不同的動(dòng)作,包括菜單上下翻、進(jìn)出二級(jí)子菜單、圖片翻轉(zhuǎn)等。手機(jī)動(dòng)作與type_action的對(duì)應(yīng)關(guān)系如表3。
根據(jù)type_action的值,在手機(jī)界面上產(chǎn)生相應(yīng)的動(dòng)作,手機(jī)界面發(fā)送不同的變化。演示終端的具體實(shí)現(xiàn)在下面的內(nèi)容詳細(xì)介紹。
硬件描述
系統(tǒng)硬件分為兩個(gè)部分:CT-298和MM-2860。
CT-298是由MC9S08QG單片機(jī)構(gòu)成、由USB總線電源供電的小型評(píng)估板。CT-298上安裝有按鈕開關(guān)、LED燈、蜂鳴器等作為開發(fā)的輸入輸出器件。同時(shí),USB-COM轉(zhuǎn)換電路采用了FTDI公司制造的FT232R,容許單片機(jī)與電腦之間通過USB接口進(jìn)行串行通信。BDM用于代碼的燒寫及系統(tǒng)的調(diào)試。
MM-2860是含有Freescale公司制造的MMA7260Q型三軸小量程加速度傳感器的模塊,它可以直接安裝在CT-298為其設(shè)計(jì)的插口上。MM-2860的電源是由CT-298上的MC9S08QG8單片機(jī)的PTB5端口來控制的,當(dāng)PTB5端口為L(zhǎng)時(shí)電源接通。此外,g-SELECT開關(guān)是選擇傳感器靈敏度的開關(guān),使用時(shí)將MM-2860插入到CT-298的接口中即可。本系統(tǒng)采用加速度傳感器的靈敏度選擇為800 mV/g。
軟件描述
單片機(jī)主程序的流程如圖7所示。
系統(tǒng)上電后,首先要對(duì)單片機(jī)的硬件系統(tǒng)進(jìn)行初始化、配置寄存器等操作,之后才可以進(jìn)行數(shù)據(jù)采集,將加速度的值進(jìn)行A/D轉(zhuǎn)換,得到量化的值。圖片菜單是二級(jí)菜單,如果沒有接到演示系統(tǒng)傳給單片機(jī)進(jìn)入二級(jí)菜單的指令,則單片機(jī)一直在主程序運(yùn)行,不斷地采集A/D值、進(jìn)行動(dòng)作判定,并向演示系統(tǒng)發(fā)送type_action的指令。演示系統(tǒng)可根據(jù)接收到的type_action的類型采取相應(yīng)的動(dòng)作。如果單片機(jī)接收到進(jìn)入二級(jí)菜單的命令,則進(jìn)入圖片菜單,同時(shí)也執(zhí)行類似于主程序的動(dòng)作判定程序,并不斷更新A/D采樣值,發(fā)送type_action,直到接收到退出二級(jí)菜單指令才退出。下面詳細(xì)介紹一下各個(gè)功能模塊的具體設(shè)置。
單片機(jī)硬件初始化
單片機(jī)系統(tǒng)主要的工作有:將加速度傳感器的模擬數(shù)據(jù)進(jìn)行A/D轉(zhuǎn)換、向演示系統(tǒng)發(fā)送type_action的動(dòng)作類型、接收演示系統(tǒng)發(fā)來的進(jìn)出二級(jí)菜單的指令、設(shè)置采樣值,除此之外還需要對(duì)系統(tǒng)時(shí)鐘、外部設(shè)備(燈,buzzer)進(jìn)行配置。根據(jù)單片機(jī)的主要工作內(nèi)容選擇單片機(jī)內(nèi)部的功能設(shè)備,包括A/D轉(zhuǎn)換器、模定時(shí)器、串行通信模塊(SCI)、內(nèi)部時(shí)鐘源模塊。
數(shù)據(jù)采集
系統(tǒng)設(shè)置的采樣頻率為200Hz,每秒鐘分別對(duì)X、Y、Z 三軸采樣200個(gè)數(shù)據(jù),因此定義了三個(gè)大小為N的數(shù)組對(duì)數(shù)據(jù)進(jìn)行緩存,他們是:
char x_data[N];
char y_data[N];
char z_data[N];
這里N取50,每0.25s存取一次,1s鐘可以存取4次,保證采樣率為200。函數(shù)void acce_meas(void) 負(fù)責(zé)將采樣的數(shù)據(jù)分別放到這三個(gè)數(shù)組中,下面是程序的具體實(shí)現(xiàn):
for(j=0;j
{
for(i=0;i3;i++)
{
if(i==0)
{
adc_go(0); //選擇A/D信道0
x_data[j]= ADC_val_L; //X軸
}
else if(i==1 )
{
adc_go(6); //選擇A/D信道6
y_data[j]= ADC_val_L; //Y軸
}
else
{
adc_go(7); //選擇A/D信道7
z_data[j]= ADC_val_L; //Z軸
}
}
delay(); //延時(shí)函數(shù),用來設(shè)定采樣率
}
傳感器相關(guān)文章:傳感器工作原理
風(fēng)速傳感器相關(guān)文章:風(fēng)速傳感器原理 蜂鳴器相關(guān)文章:蜂鳴器原理 加速度計(jì)相關(guān)文章:加速度計(jì)原理
評(píng)論