基于S3C2440處理器拳擊娛樂系統設計
引? 言??
拳擊娛樂系統是為滿足廣大群眾的需要而設計,目前市場上還沒有模擬真人的對抗性的拳擊娛樂設備,該系統的出現使人們從枯燥的鍛煉中擺脫出來,能夠主動地投入到娛樂中。在人形靶的頭部正面和胸部正面各安裝一個擊打氣袋和壓力傳感器,當語音提示可以開始擊打時,使用者可以全力擊打頭、胸部,同時ARM9處理器采集相應的擊打數據,在人形靶上安裝有自動出擊拳裝置。
該系統選用了Samsung公司的16/32位RISC處理器S3C2440,由于該處理器價格低、功耗小、性能高,從而降低了整個系統的成本,便于市場的推廣。
在用戶界面的設計上,采用目前流行的Qt/Embedded,使顯示界面更直觀,操作更方便。Qt/Embedded豐富的控件資源和較好的可移植性給界面的設計以及今后的進一步完善帶來了極大的方便。
1?拳擊健身娛樂系統簡介
拳擊娛樂系統主要由人形靶、用戶操作界面、語音播報、數據采集處理、自動出拳五部分組成。使用者擊打氣袋時,該系統采集壓力傳感器數據,并進行相應的處理,計算出使用者的出拳力量。語音播報用來提示、問候使用者并播報結果數據。自動出拳可以根據前方是否有遮擋物而隨機出拳還擊。語音播報和自動出拳的結合更豐富了該系統的互動性。
2 人形靶部分
人形靶高度可以根據使用者的高度進行調整,以適應不同人群的使用。該系統針對娛樂的要求設計了兩個擊打有效區:頭部、胸部。每個擊打有效區都由擊打氣袋、開關觸發裝置和壓力傳感器三部分組成。
在人形靶的頭部裝有反射式光電開關,用來判斷前方是否有遮擋物,為自動出拳設備提供輸入信號。
3 用戶操作部分
用戶操作Qt/Embedded設計開發,界面更加人性化,簡單化,使不同人群快速學會使用。Qt/Embedded是專門為嵌入式設備上的圖形用戶接口和應用開發設計的開發包,可以跨平臺運行在ARM處理器上的嵌入式Linux操作系統上。Qt/Embedded具有較好的移植性,從而使得今后該部分的進一步開發更加方便。采用標準PDA大小的觸摸屏,所以操作非常方便。
Qt/Embedded的底層圖形引擎基于Framebuffer。Framebuffer是在Linux內核架構版本2.2以后推出的標準顯示設備驅動接口。采用mmap系統調用,可以將Framebuffer的顯示緩存映射為可連續訪問的一段內存儲針。Framebuffer驅動程序的實現分為兩個方面:一方面是對LCD及其相關部分的初始化,包括畫面在緩沖區的創建和對DMA通道的設置;另外一方面是對畫面緩沖區的讀寫,具體到代碼為read,write,lseek等系統調用接口。Qt/Embedded延續了Qt在桌面系統的所有功能,豐富的API接口和基于組件的編程模型,使得嵌入式Linux系統中的應用程序更加方便于該系統的開發。
該部分分為娛樂和結果回放兩部分。主界面如圖1所示。
娛樂部分有三種模式:壓力測試、力量模式、速度模式。壓力測試用來測試頭、胸氣袋壓力是否在合適范圍內,壓力過高、過低進行語音提示;壓力模式用來測試使用者力氣大小;速度模式用來測試使用者在一定時間內擊打的有效拳數。
結果回放用來回放前段時間該系統使用情況,包括擊打位置和擊打力量兩部分信息。
4 語音播報部分
該部分負責播報使用提示、問候語和使用者的擊打結果。播報結果包括有效拳重、有效拳數。當使用者擊打到有效區域時,會發出仿真的擊打聲音;壓力測試時,壓力過高、過低的報警提示音;在開關機時,系統會播報問候語等。在模擬與真人的對抗性的娛樂環境,語音播報突出了趣味性,提高了娛樂效果。
該部分是由專用的語音芯片UDA1341來完成的。在Linux下完成此功能,首先需要編譯UDA1341的驅動,使用編譯工具為交叉編譯器arm-linux-gcc 3.4.1,然后移植到ARM開發板。最后再將madplay播放器使用同樣的方法編譯后移植到ARM開發板上。驅動和播放器都移植好后,在應用程序中實現語音播報功能。
5 數據采集處理部分
數據采集處理部分由S3C2440處理器控制實現。它通過判斷采集有效區中觸發裝置的觸發信號是否有效,控制壓力傳感器數據的采集。
5.1?采集擊打點觸發裝置的觸發信號
在運行力量或速度模式時,需要不斷的掃描頭、胸擊打按鍵的狀態,當擊打按鍵閉合時,開啟相應壓力傳感器采集數據,同時清除擊打按鍵的閉合狀態。
該部分在硬件上采用了CD4093來鎖存按鍵的狀態,并且使用芯片75452來清除擊打按鍵的鎖存狀態。
5.2?壓力傳感器的采集
該部分是系統設計的主要部分,由該部分采集到的數據可以計算出出拳力量。
采集氣壓需要壓力傳感器和S3C2410的ADC轉換器。壓力傳感器選用Motorola的MPX5100壓力傳感器。該傳感器需要5 V直流電源供電,量程為110 kPa,對應的輸出為0~5 V。
由于擊打氣袋時,氣袋內部不同位置壓力變化不同,造成壓力傳感器采集的壓力數據和其距離擊打位置有關。為了降低由此引起的測量誤差,在頭、胸部分別安裝兩個獨立氣袋和傳感器。實驗證明該方案在一定程度上減小了誤差,能滿足本娛樂拳擊系統對結果精度的要求。
由于硬件電路以及電源帶來的干擾,導致采集的電壓疊加了許多毛刺,對數據的處理帶來了很大的困難。并對大量數據進行分析后,在軟件上選定了中值濾波的方法減小其干擾,該方法具有編程簡單,濾波效果好的特點。
當擊打按鍵被擊中,這時記錄下規定時間內采集的電壓值,通過中值濾波去除毛刺,得到平滑的波形,從而取其峰值作為擊打按鍵的電壓值。
5.3 訓練數據的保存
娛樂結果數據保存到開發板NAND FLASH中,為結果回放提供數據。在開始使用該系統前,提示是否覆蓋已有數據結果,如此可以確保有充足的NANDFLASH空間保存當次結果數據。數據結果包括擊打位置、擊打力量。為了以后本系統更容易升級,采用數據庫SQLITE存放結果數據,以供結果回放時使用。
數據采集處理部分在軟件的實現上,分別編寫了按鍵驅動button.ko,ADC轉換驅動adc.ko,該驅動能通過設置,選擇采集兩路AD中那路。建立SQLITE數據庫,并對其進行數據存取。
6?自動出拳部分
自動出拳分為檢測是否有遮擋物和出拳控制兩部分。是否出拳、出左右拳完全是隨機的,這樣增加了隨機不定性,可以達到更好的娛樂效果。
檢測遮擋物部分采用反射式光電開關,當光電開關接收到遮擋物的反射信號,輸出高電平信號,否則輸出低電平信號,該信號通過隔離光耦傳人處理器S3C2440。S3C2440收到存在遮擋物的有效信號后,產生一個隨機信號控制出拳裝置。該隨機信號將決定是否出拳、出左拳還是右拳。
出拳控制部分采用兩個直流電機來帶動兩個機械臂完成出拳動作。為了確保每次出拳時,機械臂在收回狀態時終止,在機械臂安裝一個能產生反饋信號的裝置。自動出拳系統根據該反饋信號來確保完成一個出拳周期。
為了避免頻繁出拳,引起電機頻繁起停對電機本身的損害,同時不影響自動出拳的娛樂效果,自動出拳系統在連續出拳五次后,暫停隨后的兩次出拳,然后恢復自動出拳。
該部分軟件實現包括:控制電機驅動和光電開關信號采集驅動、產生隨機信號并控制電機的用戶態程序。
7?結? 語
該系統適用于各個年齡層的人群,可以比較準確地測量擊打力量,同時該系統本身的語音播報以及自動出拳的功能使機器人的互動性更加豐富,體現了該系統的娛樂性。該系統在Linux操作系統下開發,結果保存采用SQLITE數據庫,這給今后功能的擴展預留了很大空間。
評論
查看更多