新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 手勢識(shí)別器終端的設(shè)計(jì)

手勢識(shí)別器終端的設(shè)計(jì)

作者: 時(shí)間:2015-03-31 來源:網(wǎng)絡(luò) 收藏

  根據(jù)type_action的值,在手機(jī)界面上產(chǎn)生相應(yīng)的動(dòng)作,手機(jī)界面發(fā)送不同的變化。演示終端的具體實(shí)現(xiàn)在下面的內(nèi)容詳細(xì)介紹。

本文引用地址:http://2s4d.com/article/271880.htm

  硬件描述

  系統(tǒng)硬件分為兩個(gè)部分:CT-298和MM-2860。

  CT-298是由單片機(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上的8單片機(jī)的PTB5端口來控制的,當(dāng)PTB5端口為L時(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ī)系統(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;i<3;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è)定采樣率

  }

  動(dòng)作檢測

  動(dòng)作檢測主要是用獲得的三組數(shù)據(jù)值x_data[N]、y_data[N]、z_data[N]來判定當(dāng)前動(dòng)作是系統(tǒng)設(shè)定動(dòng)作中的哪一個(gè),如果符合,則發(fā)送這個(gè)動(dòng)作對(duì)應(yīng)的預(yù)定義值給演示終端,否則發(fā)送NO_ACTION。type_dectction()用來實(shí)現(xiàn)動(dòng)作檢測,其中type_move為函數(shù)內(nèi)部變量,用于記錄動(dòng)作代碼。type_dectction()進(jìn)行動(dòng)作檢測的流程如圖8所示。

  

 

  演示終端

  J2ME平臺(tái)開發(fā)環(huán)境配置

  進(jìn)行J2ME的開發(fā)需要從網(wǎng)絡(luò)上下載免費(fèi)的開發(fā)環(huán)境。運(yùn)行Eclipse后進(jìn)行最后的配置:Window->preferences->J2ME->Platform Component然后右鍵選擇 Wireless Toolkil,再選擇彈出菜單中的 Add Wireless Toolkil,選擇剛剛安裝的J2ME Toolkit的安裝路徑: C:WTK22,這樣基本配置就完成了。

  J2ME的WTK開發(fā)包是專門針對(duì)移動(dòng)無線設(shè)備而設(shè)計(jì)的開發(fā)包,并提供了一個(gè)統(tǒng)一的平臺(tái)。在WTK的框架下開發(fā)出來的java程序可以被眾多的移動(dòng)設(shè)備所支持,能夠有效解決兼容性的問題。

  程序分為主進(jìn)程、串口監(jiān)視模塊和定制化用戶界面三大部分,分別基于J2ME不同的類庫派生而成,三部分之間通過消息機(jī)制相互聯(lián)系,共同構(gòu)成整個(gè)程序的運(yùn)行周期。具體每個(gè)模塊所實(shí)現(xiàn)的功能參考下節(jié)內(nèi)容。

  軟件應(yīng)用程序的組織結(jié)構(gòu)

  本軟件應(yīng)用程序在WTK的手機(jī)仿真器下進(jìn)行設(shè)計(jì),分為Base和display兩個(gè)package。在Base Package中包含MainRoutine.java和RS232Port.java兩個(gè)java文件;在display Package中的文件較多,主要實(shí)現(xiàn)了UI和基本的key響應(yīng)。下面介紹軟件部分的實(shí)現(xiàn)方法:

  ·MainRoutine類

  MainRoutine為程序的入口類,它整合了程序中的所有的對(duì)象。MainRoutine派生于MIDlet類,重載實(shí)現(xiàn)了MIDlet中的startApp、pauseApp、destroyApp等方法,并且在constructor中加入了exitCommand命令,從而實(shí)現(xiàn)了手機(jī)的關(guān)機(jī)功能。

  可以看出MainRoutine實(shí)現(xiàn)了程序的入口和退出,并同時(shí)標(biāo)志了程序的基本框架,給具體的功能應(yīng)用打下了堅(jiān)實(shí)的基礎(chǔ)。

  ·vCanvas類

  vCanvas繼承了Canvas類,并增加了externalMsg方法。之所以在其中增加externalMsg方法,是因?yàn)槠涑怌anvas不能動(dòng)態(tài)地響應(yīng)key,而我們對(duì)Canvas的要求是能夠通過對(duì)串口導(dǎo)入的數(shù)據(jù)(或按鍵)得到的keyCode做出相應(yīng)的動(dòng)作,比如圖片的翻轉(zhuǎn)、文本的滾動(dòng)等等。于是,我們可以通過vCanvas派生出一系列的子類,實(shí)現(xiàn)我們的具體要求,為將來的開發(fā)提供了方便。

  ·DisplayItem類

  DisplayItem是基礎(chǔ)類,提供了通用的string數(shù)據(jù)組合。該類的構(gòu)造方法中需要輸入shortText、longText和extra三個(gè)string參數(shù),這樣就保證了每個(gè)DisplayItem都可以返回三個(gè)不同長度的文本信息,在不同的場合使用。其中shortText用于UI中的標(biāo)題顯示,longText為Item的主體內(nèi)容,extra為Item的附加信息。 DisplayItem類在本系統(tǒng)中會(huì)被例化來描述菜單和子功能的內(nèi)容,是應(yīng)用廣泛的一個(gè)基礎(chǔ)類。

  ·ImageCanvas類

  ImageCanvas同樣繼承于基礎(chǔ)類vCanvas,它的主要功能是實(shí)現(xiàn)了對(duì)圖片的瀏覽及旋轉(zhuǎn)、鏡像等基本操作。

  考慮到目前使用手機(jī)瀏覽圖片、拍攝圖片的多方向性,如果能夠通過加速度傳感器自動(dòng)校正圖片的方向,使它自動(dòng)滿足我們想要的方向,那么我們就免除了很多不必要的麻煩。于是我們對(duì)圖片的瀏覽功能模塊增加了向左或者向右旋轉(zhuǎn)90°的功能。這樣用戶就會(huì)驚喜地發(fā)現(xiàn)無論他的手機(jī)怎樣擺放,顯示的圖片將永遠(yuǎn)保持與地面垂直。

  ·ListCanvas類

  ListCanvas提供了主畫面的顯示能力,并將用戶操作派生到內(nèi)部聚合成員上面去。具體功能的Item將包含在ListCanvas之中,每一個(gè)Item擁有顯示在屏幕上的ShortItem,顯示在detail screen中的LongText,還有不被顯示的ExtraText,當(dāng)然其信息我們也是可以得到的。在ListCanvas中,我們可以用“右鍵”顯示Item的詳細(xì)信息,也可以用SELECT鍵來標(biāo)記每個(gè)Item。

  ·ItemListCanvas類:

  ItemListCanvas同樣繼承了vCanvas類,實(shí)現(xiàn)了多條目文本瀏覽的功能,構(gòu)造方法的輸入依次為Display、Displayable、Font、Title和ItemVector。將多條String構(gòu)造為一個(gè)Vector傳遞給ItemListCanvas后,該類能夠提供一個(gè)多條目文本實(shí)現(xiàn)的用戶界面。本系統(tǒng)的“關(guān)于本系統(tǒng)”子功能就是通過實(shí)例化該類得到的。

  結(jié)論

  本系統(tǒng)采用Freescale的單片機(jī)和加速度傳感器MMA7260Q實(shí)現(xiàn)了便攜式手持設(shè)備的手勢控制,并采用了開放的J2ME平臺(tái)實(shí)現(xiàn)了終端應(yīng)用程序。系統(tǒng)完整,實(shí)用性強(qiáng),成本低廉,在滿足用戶基本操作需要的同時(shí),增加了移動(dòng)設(shè)備操作的趣味性和靈活性。同時(shí),加速度傳感器MMA7260Q較小的體積和獨(dú)特的節(jié)電模式更使其在移動(dòng)設(shè)備的應(yīng)用中有著極大的優(yōu)勢。可以預(yù)見,在未來的手持設(shè)備系統(tǒng)中會(huì)大量采用類似的功能,因此具有廣闊的市場應(yīng)用前景。

萬能遙控器相關(guān)文章:萬能遙控器代碼


塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理
加速度計(jì)相關(guān)文章:加速度計(jì)原理

上一頁 1 2 下一頁

關(guān)鍵詞: MC9S08QG 手勢識(shí)別

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉