用加速度傳感器來進行手勢識別器的設計
仿真器的外觀和操作類似一部移動電話,但是并不代表某個特定的設備,而是提供對其所支持的API 的正確實現,每個命令按鈕對應著相應的API函數。從圖6中可以看到手機的導航鍵,我們更改了導航鍵的API函數,使其從鼠標單擊觸發的方式轉換為串口動作代碼控制。首先,我們編寫了J2ME的串口接收程序,用于接收從單片機傳來的單字節的type_action值;然后將type_action以參數的形式傳給API,手機根據不同的type_action值執行不同的動作,包括菜單上下翻、進出二級子菜單、圖片翻轉等。手機動作與type_action的對應關系如表3。

根據type_action的值,在手機界面上產生相應的動作,手機界面發送不同的變化。演示終端的具體實現在下面的內容詳細介紹。
硬件描述
系統硬件分為兩個部分:CT-298和MM-2860。
CT-298是由MC9S08QG單片機構成、由USB總線電源供電的小型評估板。CT-298上安裝有按鈕開關、LED燈、蜂鳴器等作為開發的輸入輸出器件。同時,USB-COM轉換電路采用了FTDI公司制造的FT232R,容許單片機與電腦之間通過USB接口進行串行通信。BDM用于代碼的燒寫及系統的調試。
MM-2860是含有Freescale公司制造的MMA7260Q型三軸小量程加速度傳感器的模塊,它可以直接安裝在CT-298為其設計的插口上。MM-2860的電源是由CT-298上的MC9S08QG8單片機的PTB5端口來控制的,當PTB5端口為L時電源接通。此外,g-SELECT開關是選擇傳感器靈敏度的開關,使用時將MM-2860插入到CT-298的接口中即可。本系統采用加速度傳感器的靈敏度選擇為800 mV/g。
軟件描述
單片機主程序的流程如圖7所示。

系統上電后,首先要對單片機的硬件系統進行初始化、配置寄存器等操作,之后才可以進行數據采集,將加速度的值進行A/D轉換,得到量化的值。圖片菜單是二級菜單,如果沒有接到演示系統傳給單片機進入二級菜單的指令,則單片機一直在主程序運行,不斷地采集A/D值、進行動作判定,并向演示系統發送type_action的指令。演示系統可根據接收到的type_action的類型采取相應的動作。如果單片機接收到進入二級菜單的命令,則進入圖片菜單,同時也執行類似于主程序的動作判定程序,并不斷更新A/D采樣值,發送type_action,直到接收到退出二級菜單指令才退出。下面詳細介紹一下各個功能模塊的具體設置。
單片機硬件初始化
單片機系統主要的工作有:將加速度傳感器的模擬數據進行A/D轉換、向演示系統發送type_action的動作類型、接收演示系統發來的進出二級菜單的指令、設置采樣值,除此之外還需要對系統時鐘、外部設備(燈,buzzer)進行配置。根據單片機的主要工作內容選擇單片機內部的功能設備,包括A/D轉換器、模定時器、串行通信模塊(SCI)、內部時鐘源模塊。
數據采集
系統設置的采樣頻率為200Hz,每秒鐘分別對X、Y、Z 三軸采樣200個數據,因此定義了三個大小為N的數組對數據進行緩存,他們是:
char x_data[N];
char y_data[N];
char z_data[N];
這里N取50,每0.25s存取一次,1s鐘可以存取4次,保證采樣率為200。函數void acce_meas(void) 負責將采樣的數據分別放到這三個數組中,下面是程序的具體實現:
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(); //延時函數,用來設定采樣率
}
傳感器相關文章:傳感器工作原理
風速傳感器相關文章:風速傳感器原理 蜂鳴器相關文章:蜂鳴器原理 加速度計相關文章:加速度計原理
評論