陸玲霞,彭勇剛,賀東星
(浙江大學(xué) 電氣工程學(xué)院,杭州 310027)
?
基于安卓頻譜分析儀的探究性實(shí)驗(yàn)設(shè)計(jì)
陸玲霞,彭勇剛,賀東星
(浙江大學(xué)電氣工程學(xué)院,杭州310027)
該文針對(duì)目前市場(chǎng)上頻譜分析儀價(jià)格昂貴,且開(kāi)源性和便攜性差等問(wèn)題,基于ARM芯片和目前流行的Google移動(dòng)平臺(tái)Android操作系統(tǒng)進(jìn)行了應(yīng)用研究,在智能手機(jī)上設(shè)計(jì)一款頻譜分析軟件。該軟件通過(guò)設(shè)計(jì)FFT算法實(shí)現(xiàn)對(duì)音頻信號(hào)的實(shí)時(shí)處理,在手機(jī)屏幕實(shí)時(shí)顯示出頻譜圖,實(shí)現(xiàn)頻譜分析儀的功能,該設(shè)計(jì)是將Android操作系統(tǒng)用于工業(yè)自動(dòng)化控制平臺(tái)的一個(gè)創(chuàng)新。該頻譜分析儀簡(jiǎn)單方便,并具備良好的人機(jī)界面,同時(shí)也滿足時(shí)延、性能和無(wú)縫等實(shí)際要求,為嵌入式課程開(kāi)展探究性實(shí)驗(yàn)提供良好的實(shí)驗(yàn)素材。
安卓;頻譜分析;FFT;智能手機(jī);軟件設(shè)計(jì);探究性實(shí)驗(yàn)
嵌入式技術(shù)更新快,安卓操作系統(tǒng)和移動(dòng)終端更是風(fēng)靡全球,而市場(chǎng)上現(xiàn)有的嵌入式教儀主要還是以ARM9為主,更高端的相關(guān)教儀價(jià)格非常昂貴,且設(shè)備選擇性小,基本面向企業(yè)客戶,往往不具備明確的控制對(duì)象,無(wú)法深層次地去理解系統(tǒng)特性,不適合開(kāi)展自動(dòng)化系統(tǒng)等相關(guān)專業(yè)的探究性實(shí)驗(yàn)教學(xué)。為了更好地將移動(dòng)終端和安卓操作系統(tǒng)結(jié)合到課堂實(shí)驗(yàn)中,本文結(jié)合智能手機(jī),設(shè)計(jì)一款基于Android的頻譜分析儀作為探究性實(shí)驗(yàn)內(nèi)容,使學(xué)生充分掌握安卓平臺(tái)的App軟件設(shè)計(jì)方法。更重要的是結(jié)合專業(yè)特點(diǎn),嘗試將移動(dòng)終端結(jié)合到工控領(lǐng)域中,充分發(fā)揮移動(dòng)終端的低功耗、便攜性、低成本和開(kāi)源性等特點(diǎn),使其充分替代傳統(tǒng)的控制方式和測(cè)量方法。
頻譜分析作為近代的信號(hào)分析方法在各個(gè)學(xué)科研究領(lǐng)域中已經(jīng)被廣泛應(yīng)用,是從事各種電子產(chǎn)品研發(fā)、生產(chǎn)、檢驗(yàn)的重要依據(jù)。高分辨率、寬頻帶的數(shù)字頻譜分析的實(shí)現(xiàn)一直是該領(lǐng)域的研究熱點(diǎn)。模擬頻譜分析儀實(shí)時(shí)性強(qiáng),但存在復(fù)雜性、封閉性、對(duì)硬件依賴性強(qiáng)和價(jià)格昂貴的缺點(diǎn)。而目前數(shù)字頻譜分析儀在實(shí)現(xiàn)方式上主要有基于計(jì)算機(jī)處理的實(shí)時(shí)頻譜分析、基于通用微處理器的實(shí)時(shí)頻譜分析[1]和基于專用FFT處理芯片(ASIC)的頻譜分析系統(tǒng)?;谟?jì)算機(jī)處理的實(shí)時(shí)頻譜分析由于采用軟件處理,實(shí)時(shí)性差,且系統(tǒng)成本高,不適合工程實(shí)際;基于通用處理器的實(shí)現(xiàn)方案,雖然在實(shí)時(shí)性上遠(yuǎn)高于基于計(jì)算機(jī)處理的實(shí)時(shí)頻譜分析,但在高速場(chǎng)合需多片并行應(yīng)用,同時(shí)系統(tǒng)的編程難度較大;基于專用FFT處理芯片(ASIC)的頻譜分析系統(tǒng),通過(guò)選用不同的器件,可滿足高速實(shí)時(shí)的要求,但成本也較高。
綜上所述,本文實(shí)驗(yàn)鼓勵(lì)學(xué)生探究使用ARM系列Cortex-A8芯片和目前流行的Google移動(dòng)平臺(tái)Android操作系統(tǒng)[2-3],設(shè)計(jì)一款嵌入式頻譜分析儀,將Android操作系統(tǒng)用于工業(yè)自動(dòng)化控制領(lǐng)域,同時(shí)該頻譜分析儀將滿足時(shí)延、性能和無(wú)縫等實(shí)際要求。硬件儀器軟件化的實(shí)現(xiàn)將對(duì)以后的生活、工作產(chǎn)生深遠(yuǎn)的影響。
首先,需安裝JDK(Java Development Kit),JDK是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境、Java工具和Java基礎(chǔ)類庫(kù)[4-5]。其次,安裝Java開(kāi)發(fā)環(huán)境Eclipse,它開(kāi)放源碼、是基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,只是一個(gè)框架和一個(gè)服務(wù),通過(guò)插件構(gòu)建開(kāi)發(fā)環(huán)境。最后,在此基礎(chǔ)上安裝Android SDK(Software Development Kit)便可進(jìn)行安卓應(yīng)用開(kāi)發(fā)[6-7]。
本文處理器采用基于ARM系列的Cortex-A8芯片。Cortex-A8處理器的速率可在600 MHz ~ 1 GHz的范圍內(nèi)調(diào)節(jié),能滿足需工作在300 MW以下的功耗優(yōu)化的移動(dòng)設(shè)備和需2 000 Dhrystone MIPS的性能優(yōu)化的消費(fèi)類應(yīng)用[8]。該頻譜分析儀的系統(tǒng)框圖如圖1所示[9-10]。
圖1 頻譜分析儀系統(tǒng)框圖
輸入的音頻信號(hào)經(jīng)采集過(guò)濾后,系統(tǒng)對(duì)其進(jìn)行模數(shù)轉(zhuǎn)換,微處理器讀入得到的離散信號(hào)后進(jìn)行快速傅里葉變換,輸出數(shù)據(jù)存入緩存區(qū),系統(tǒng)讀出數(shù)據(jù)并將數(shù)據(jù)進(jìn)行顯示和繪圖。為了使AD轉(zhuǎn)換得到的信號(hào)不會(huì)因?yàn)橄到y(tǒng)處理的暫時(shí)延遲或中斷而失去連續(xù)性,需將AD轉(zhuǎn)換后的數(shù)據(jù)送入緩沖區(qū)。這部分通過(guò)軟件編程構(gòu)造循環(huán)鏈表,不斷地接收數(shù)據(jù),進(jìn)行FFT處理。系統(tǒng)工作時(shí)鐘均由安卓?jī)?nèi)核提供。離散數(shù)據(jù)信號(hào)送入存儲(chǔ)器時(shí),要按亂序輸入,才能使輸出數(shù)據(jù)按順序存入緩存中,亂序輸入遵從碼位倒讀規(guī)則。
在安卓系統(tǒng)的API函數(shù)中與音頻有關(guān)的包是android.media,其中MediaRecorder和AudioRecord這兩個(gè)類與音頻采集有關(guān)。MediaRecorder采集的音頻信號(hào)是壓縮編碼后變成的聲音數(shù)據(jù),因?yàn)閿?shù)據(jù)是被壓縮的,所以在讀取數(shù)據(jù)時(shí),要面臨解壓縮的問(wèn)題。而用AudioRecord采集的音頻信號(hào)可以直接獲得無(wú)壓縮的脈沖編碼調(diào)制PCM數(shù)據(jù)?;诖耍疚牟捎肁udioRecord來(lái)采集音頻信號(hào)[11-12]。
聲音先經(jīng)過(guò)手機(jī)話筒,轉(zhuǎn)換成一系列電壓變化信號(hào),通過(guò)設(shè)置聲道數(shù)、采樣位數(shù)和采樣頻率3個(gè)參數(shù)轉(zhuǎn)換成PCM格式。在編程中,要對(duì)這3個(gè)參數(shù)進(jìn)行初始化,在本文中表示為channel、encoding和samplerate。系統(tǒng)中采用的采樣頻率初始化為8 kHz,設(shè)計(jì)為可調(diào)模式,同時(shí)為單聲道16位進(jìn)行采樣。其核心代碼如下[13]:
public Looper() {
minBytes=AudioRecord.getMinBufferSize(
sampleRate,AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT);
minBytes=Math.max(minBytes, fftBins);
record=new AudioRecord(AGC_OFF, sampleRate,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT,minBytes);
Log.d(TAG, "Buffer size:"+minBytes+"("+record.getSampleRate()+"="+sampleRate+")");
}
FFT即快速傅里葉變換,其基本原理是把長(zhǎng)序列的DFT逐次分解為較短序列的DFT。按照抽取方式的不同可分為DIT-FFT(按時(shí)間抽取)和DIF-FFT(按頻率抽取)兩種算法。按照蝶形運(yùn)算的構(gòu)成不同可分為基2、基4、基8以及任意因子(2n,n為大于1的整數(shù)),但基2、基4算法較為常用。DIT(按時(shí)間抽取)算法與DIF(按頻率抽取)算法沒(méi)有本質(zhì)上的區(qū)別,只是復(fù)數(shù)加減法與旋轉(zhuǎn)因子乘法的次序有區(qū)別,兩種方法的運(yùn)算量是一樣的。在基2算法中,每個(gè)蝶形運(yùn)算單元都包括1次復(fù)數(shù)乘法和2次復(fù)數(shù)加法。N(N= 2M)點(diǎn)序列的運(yùn)算流圖應(yīng)有M級(jí)蝶形,每一級(jí)都由N/2個(gè)蝶形運(yùn)算組成,所以N點(diǎn)序列的基序列的基2 FFT算法,總的運(yùn)算量為N/(2log2N)次復(fù)數(shù)乘法和Nlog2N次復(fù)數(shù)加法。直接DFT運(yùn)算量為N2次復(fù)數(shù)乘法和N(N-1)次復(fù)數(shù)加法??梢?jiàn),F(xiàn)FT算法大大減少了運(yùn)算量,當(dāng)N越大時(shí),F(xiàn)FT算法的優(yōu)越性越明顯[14-15]。
本次設(shè)計(jì)中采集點(diǎn)數(shù)N有4個(gè)選項(xiàng)值,分別為256(28)、512(29)、1 024(210)和2 048(211),每一個(gè)采集點(diǎn)數(shù)對(duì)應(yīng)一個(gè)FFT算法,下面列舉N=1 024時(shí)的FFT函數(shù)核心代碼:
void rfftf1(intn, doublec[], final double wtable[], int offset, double[] ch)
{
inti;
intk1,l1,l2, na, kh, nf, ip, iw, ido, idl1;
System.arraycopy(wtable, offset, ch, 0,n);
nf=(int)wtable[1+2*n+offset];
na=1;
l2=n;
iw=n-1+n+offset;
for(k1=1;k1<=nf;++k1) {
kh=nf-k1;
ip=(int)wtable[kh+2+2*n+offset];
l1=l2 / ip;
ido=n/l2;
idl1=ido*l1;
iw-=(ip-1)*ido;
na=1-na;
if(ip==4)
{
if(na==0)
{
radf4(ido,l1,c, ch, wtable, iw);
}
else
{
radf4(ido,l1, ch,c, wtable, iw);
}
}
}
軟件界面設(shè)計(jì)如圖2所示。設(shè)計(jì)界面包括標(biāo)題、橫縱坐標(biāo)軸單位、6個(gè)復(fù)選按鈕、坐標(biāo)圖和菜單等,其中6個(gè)復(fù)選按鈕功能如下:第一行3個(gè)復(fù)選按鈕從左到右分別是橫軸坐標(biāo)調(diào)節(jié)按鈕、采集點(diǎn)數(shù)調(diào)節(jié)按鈕和縱軸坐標(biāo)調(diào)節(jié)按鈕,其中頻率范圍選項(xiàng)有8 000、11 025、16 000、22 050、32 000和44 100,涵蓋了人耳所能聽(tīng)到的聲音頻率范圍;采集點(diǎn)數(shù)選項(xiàng)有256、512、1 024和2 048,分辨率可以得到保障;幅值上限選項(xiàng)為-65、-40、-20和-10,通過(guò)調(diào)節(jié)可以使所測(cè)頻段曲線突出,方便讀取。
第二行3個(gè)復(fù)選按鈕都是功能性按鈕,從左到右分別是光標(biāo)按鈕、開(kāi)(關(guān))按鈕和測(cè)試按鈕。其中光標(biāo)按鈕提供一個(gè)可移動(dòng)的藍(lán)色光標(biāo),用來(lái)讀取坐標(biāo)值;運(yùn)行(停止)按鈕用來(lái)截取所測(cè)頻譜圖;測(cè)試按鈕用來(lái)檢驗(yàn)儀器正常與否,如圖3所示。
圖2 軟件界面簡(jiǎn)圖
圖3 按鈕和坐標(biāo)圖界面
圖4 菜單界面
菜單則提供兩個(gè)選項(xiàng)info和settings,如圖4所示,info用來(lái)提供軟件的基本介紹,settings提供不同坐標(biāo)圖界面風(fēng)格。
本文設(shè)計(jì)實(shí)驗(yàn)聲源采用虛擬正弦波音頻信號(hào)發(fā)生器,由于正弦波周期固定,便于直觀測(cè)試軟件的優(yōu)劣。
在虛擬音頻信號(hào)發(fā)生器輸入正弦音頻信號(hào)頻率f=1 000 Hz時(shí),軟件分析的頻譜圖如圖5所示。
圖5 輸入頻率為1 000 Hz的頻譜圖
在虛擬音頻信號(hào)發(fā)生器輸入正弦音頻信號(hào)頻率f=2 000 Hz時(shí),軟件分析的頻譜圖如圖6所示。從測(cè)試結(jié)果來(lái)看,頻譜儀的測(cè)量是準(zhǔn)確的,并且基本無(wú)延遲,實(shí)時(shí)顯示了頻譜曲線。
圖6 輸入頻率為2 000 Hz的頻譜圖
本文在安卓移動(dòng)終端上,通過(guò)FFT算法,設(shè)計(jì)出一款頻譜分析的App軟件。該軟件可修改性強(qiáng),開(kāi)發(fā)周期比全硬件更有優(yōu)勢(shì),且方便用戶根據(jù)個(gè)人喜好定制儀器的使用范圍和界面。同時(shí),成本費(fèi)和占用空間上也遠(yuǎn)低于硬件實(shí)現(xiàn)或軟硬件實(shí)現(xiàn)的方式。這是繼手機(jī)通訊后的又一大進(jìn)步,將智能手機(jī)、電腦功能更加多樣化和功能化,測(cè)試人員不再需要帶上大而沉重的儀器,僅用隨身攜帶的手機(jī)即可完成測(cè)量和維修,生活和工作更加便捷與舒適。將安卓移動(dòng)終端引入到行業(yè)應(yīng)用,意義非凡。
因此,將該系統(tǒng)設(shè)計(jì)作為嵌入式系統(tǒng)課程的探究性實(shí)驗(yàn)教學(xué)內(nèi)容,能較好地將相關(guān)課程的教學(xué)內(nèi)容與實(shí)際需求相結(jié)合,拓寬學(xué)生的視野,提高學(xué)生實(shí)際分析問(wèn)題和解決問(wèn)題的能力。展示了新一代高性能的嵌入式綜合實(shí)驗(yàn)系統(tǒng),使學(xué)生更好地了解目前較為流行的嵌入式技術(shù),更好地培養(yǎng)新一代嵌入式人才。
[1]白譜偉,胡慶龍.基于FPGA的信號(hào)頻譜分析系統(tǒng)[J].電子科技, 2012,25(4):74-80.
[2]周聰.基于Android的移動(dòng)終端應(yīng)用程序開(kāi)發(fā)與研究[J].計(jì)算機(jī)與現(xiàn)代化,2008(8):86-89.
[3]張仕成.基于Google Android 平臺(tái)的應(yīng)用程序開(kāi)發(fā)與研究[J].電腦知識(shí)與技術(shù),2009,5(10):7959-7962.
[4]趙亮,張維.基于Android技術(shù)的界面設(shè)計(jì)與研究[J].電腦知識(shí)與技術(shù),2009,5(29):8183-8185.
[5]王志國(guó),侯銀濤,石榮剛.Android智能手機(jī)系統(tǒng)的文件實(shí)時(shí)監(jiān)控技術(shù)[J].計(jì)算機(jī)安全,2009(12):43-44.
[6]蘇亞光, 呂實(shí)誠(chéng), 于復(fù)興.Android 手機(jī)平臺(tái)下Google天氣預(yù)報(bào)客戶端的開(kāi)發(fā)[J].電腦編程技巧與維護(hù),2012(3):60-65.
[7]陳瞰, 陸玲霞, 陳志遠(yuǎn).基于智能手機(jī)的實(shí)時(shí)體重健康管理系統(tǒng)軟件設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2013,9(6):1370-1373.
[8]李敏, 董志學(xué).基于Android的嵌入式機(jī)器聲音故障檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(7):301-304.
[9] SHETE P, KURUDE A, BHOLE M, et al.Android based spectrum analyzer[J].International Journal of Scientific & Technology Research, 2013,2(10):303-305.
[10]GOMEZ-TEJEDOR J A, CASTRO-PALACIO J C, MONSORIU J A.Frequency analyser:a new android application for high precision frequency measurement[J].Computer Applications in Engineering Education,2015,23(3):471-476.
[11]陳江波, 黃建忠.基于Android平臺(tái)下電機(jī)振動(dòng)信號(hào)檢測(cè)系統(tǒng)的設(shè)計(jì)[J].通信電源設(shè)計(jì),2014,31(1):15-17,22.
[12]蘇維嘉, 楊靜, 唐宇.手機(jī)麥克端的數(shù)據(jù)采集與顯示[J].嵌入式技術(shù),2012,38(7):30-32.
[13]陸玲霞, 嚴(yán)明貴.一種新型的實(shí)驗(yàn)室安防監(jiān)控系統(tǒng)[J].實(shí)驗(yàn)技術(shù)與管理,2012,29(12):207-211,220.
[14]程帥.基于Android平臺(tái)的數(shù)字示波器軟件設(shè)計(jì)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2011.
[15]李靜梅, 鄭超峰, 金玉蘋.基于FPGA的FFT算法時(shí)間[J].應(yīng)用科技,2009,36(2):38-40.
Design of Inquiry Experiment of Spectrum Analyzer Based on Android
LU Lingxia, PENG Yonggang, HE Dongxing
(College of Electrical Engineering, Zhejiang University, Hangzhou 310027, China)
According to the problems of the spectrum analyzer expensive and with poor open source and portability, based on the ARM series of architecture A8 and popular mobile platform of Android OS recently, a piece of spectrum analysis software was designed in the smart phone through the FFT algorithm in order to real-time process the audio signal, and also the spectrum was real-time displayed through the mobile phone screen to realize the function of spectrum analyzer.This way is a kind of pioneering work which the Android OS is used in the field of industrial automation and control platform.The spectrum analyzer will satisfy the delay performance and actual requirement of seamless, and have good man-machine interface, and also meet practical requirements such as delays, performance and seamless which can provide good experimental material for the inquiry experiment of the embedded curriculum.
Android; spectrum analysis; FFT; intelligent mobile phone; software design; inquiry experiment
2015-06-01;修改日期: 2016-06-21
陸玲霞(1982-),女,碩士,工程師,主要從事智能控制與嵌入式系統(tǒng)設(shè)計(jì)方面的工作。
10.3969/j.issn.1672-4550.2016.04.012