文獻標(biāo)識碼: A
農(nóng)作物除受到氣象災(zāi)害和常規(guī)病蟲害影響外,,田鼠、麻雀,、野兔,、野雞、野豬等動物的危害也十分巨大,。直接利用有害動物天敵的叫聲或其受到捕捉時發(fā)出的慘叫聲對農(nóng)作物有害動物進行驅(qū)趕(以下簡稱聲防),,能避免投放化學(xué)藥物對水土環(huán)境造成污染和可能對人畜的誤傷,且相對于超聲波驅(qū)趕,、噴水恐嚇等其他驅(qū)趕手段更易于實現(xiàn),,驅(qū)趕效果更好。國內(nèi)現(xiàn)有的商品化聲防裝置普遍存在控制模式簡單,、聲防音質(zhì)不好,、存儲器容量小、聲防音頻文件不便于升級擴展等缺點,。應(yīng)用嵌入式技術(shù)改進和提高聲防裝置多方面性能已成為聲防技術(shù)發(fā)展的趨勢之一,。筆者所在課題組提出一種農(nóng)業(yè)有害動物智能聲防系統(tǒng),并為確保該系統(tǒng)設(shè)計的可靠性和性能最優(yōu),,在其音頻控制子系統(tǒng)的構(gòu)建上采用兩種設(shè)計方案,,實現(xiàn)了帶大容量可熱插拔存儲器、高保真音頻輸出和多模式播放的音頻控制,,并且對基于不同硬件平臺的嵌入式解決方案的性能,、實現(xiàn)難度及成本等進行了對比。
1 智能聲防系統(tǒng)原理
如圖1所示,智能聲防系統(tǒng)的結(jié)構(gòu)分為3層,,底層是帶有熱釋電傳感器的探測節(jié)點,,負(fù)責(zé)探測有害動物在農(nóng)田中出沒的位置;中間層為執(zhí)行器節(jié)點,,負(fù)責(zé)存儲,、播放聲防音頻文件;上層是總控制器,,負(fù)責(zé)監(jiān)控整個系統(tǒng)的運行,。系統(tǒng)的各層之間以無線方式進行通信??偪刂破鞫〞r采集環(huán)境信息(如溫度,、光照),結(jié)合農(nóng)田地理位置,、作物種類等信息,,并通過查詢內(nèi)部數(shù)據(jù)庫,以當(dāng)時最有可能出沒的2種有害動物作為聲防目標(biāo),,然后定時發(fā)送給執(zhí)行器節(jié)點,。執(zhí)行器節(jié)點有觸發(fā)、隨機2種工作模式,。觸發(fā)模式下,,探測節(jié)點探測到有害動物后,向相距最近的執(zhí)行器節(jié)點發(fā)出命令,。執(zhí)行器節(jié)點根據(jù)最近更新的聲防目標(biāo)播放對應(yīng)的音頻文件,。隨機模式下,執(zhí)行器節(jié)點根據(jù)定時更新的聲防目標(biāo)自動播放聲防音頻文件,。每次播放前,,都會在工作參數(shù)確定的時間范圍內(nèi)隨機產(chǎn)生一個間隔時間,并按其進行延時,,以使聲防系統(tǒng)中不同執(zhí)行器節(jié)點在執(zhí)行聲防時具有隨機性,,從而降低有害動物對聲防系統(tǒng)的適應(yīng)性。
執(zhí)行器節(jié)點由無線通信模塊,、音頻控制子系統(tǒng),、揚聲器以及供電模塊等組成。除音頻控制子系統(tǒng)外,,其他功能模塊均采用成熟產(chǎn)品,。
執(zhí)行器節(jié)點的主要功能由音頻控制子系統(tǒng)完成,按實現(xiàn)功能考慮,,其應(yīng)包括大容量高保真數(shù)字音頻信號存儲,、解碼輸出及多種播放模式選控等,。為達到高保真的音質(zhì)要求,聲防音頻信號的采樣率選為44 kHz,,采樣位數(shù)確定為16 bit,,其存儲格式采用能較好兼顧壓縮比和音質(zhì)的MP3格式;為方便聲防音頻文件的升級,,存儲器選用了方便熱插拔的SD卡或U盤。
現(xiàn)有的音頻解碼方案有硬件解碼和軟件解碼2類,。常用的硬件解碼芯片有ST公司的ST016,、SANYO公司的LC82310G等,使用時常配以單片機實現(xiàn)控制功能,。為方便開發(fā),,已有廠商研制出將硬件解碼器和單片機以及其他外圍器件集成在一起的SoC芯片,如ATMEL公司的AT89C51SND1,。
軟件解碼方案主要基于DSP平臺和ARM平臺構(gòu)建,,其中ARM平臺可搭配嵌入式操作系統(tǒng),能較好地管理和支持底層硬件設(shè)備,,且有大量開源解碼軟件可供選擇,,軟件移植比DSP平臺相對容易。
2 方案1的構(gòu)建及實現(xiàn)
2.1 方案1的硬件構(gòu)成及實現(xiàn)
音頻控制子系統(tǒng)的“單片機+硬件解碼”構(gòu)建與使用單獨的硬件解碼芯片配合其他控制芯片相比,,SoC芯片在電路結(jié)構(gòu)和開發(fā)成本上均有較大優(yōu)勢,。AT89C51SND1是MP3解碼應(yīng)用中使用最多的SoC芯片之一。它實質(zhì)上是一款集成了DSP硬件解碼器的C51單片機,,提供有USB DEVICE,、SPI等設(shè)備接口,且有54個I/O口供用戶使用,?;贏T89C51SND1構(gòu)成音頻控制子系統(tǒng)的硬件結(jié)構(gòu)見圖2。
由圖2可見,,AT89C51SND1通過RS-232串口與無線通信模塊相連,,采用自定義協(xié)議與其進行通信,以實現(xiàn)執(zhí)行器節(jié)點與探測節(jié)點,、總控制器之間的無線通信,。因AT89C51SND1沒有集成USB HOST接口,故選擇USB接口芯片CH375讀寫U盤,。而實際測試中發(fā)現(xiàn),,CH375不能識別有些廠家生產(chǎn)的U盤。故為確保存儲的可靠性,,選用SD卡作存儲介質(zhì),。SD卡的讀寫分為SD和SPI方式,,而AT89C51SND1只提供MMC接口,無法兼容SD方式,,故采用SPI方式讀寫SD卡,。AT89C51SND1上集成了音頻輸出接口,可將解碼后的音頻數(shù)據(jù)以PCM格式或I2S格式輸出到后級的低功耗音頻數(shù)模轉(zhuǎn)換芯片PCM1770,。AT89C51SND1通過USB DEVICE接口作為USB從設(shè)備與計算機相連,,用于燒寫應(yīng)用程序。AT89C51SND1還可通過I/O口與點陣式LCD相連,,以輸出相關(guān)信息,。
2.2 方案1的軟件設(shè)計
圖3是音頻控制子系統(tǒng)構(gòu)建方案1的軟件流程。上電后,,音頻控制子系統(tǒng)先完成各種外圍設(shè)備(包括SD卡,、DAC芯片以及LCD等)的檢測和初始化,隨后進入工作循環(huán),。首先對工作模式變量進行判斷,,若是觸發(fā)模式,則返回重做判斷,;若為隨機模式,,則調(diào)用隨機數(shù)生成子程序,隨機生成一個等待時間并延時等待,,然后從存儲器中讀取聲防目標(biāo)變量指定的音頻文件并解碼播放,。在整個工作循環(huán)過程中,音頻控制子系統(tǒng)開放串口中斷,。當(dāng)串口接收到來自無線通信模塊的信息時,,即產(chǎn)生串口中斷。中斷處理程序?qū)邮盏降男畔⑦M行判斷,,若是來自探測節(jié)點的聲防命令,,且當(dāng)前處于觸發(fā)工作模式,則根據(jù)最近更新的聲防目標(biāo)播放對應(yīng)的音頻文件,,然后通過無線通信模塊向總控制器返回一個執(zhí)行記錄,,用于統(tǒng)計該地區(qū)有害動物的出沒規(guī)律;如果不是聲防命令,,而是來自總控制器的信息,,則更新對應(yīng)的控制變量,例如工作模式,、間隔時間范圍,、聲防目標(biāo)文件、音量大小等,。
音頻控制子系統(tǒng)構(gòu)建方案1的軟件,,從功能上主要分為隨機數(shù)生成,、SD卡驅(qū)動、FAT文件管理,、串口通信以及解碼控制等5部分,。
隨機數(shù)生成子程序通過調(diào)用庫函數(shù)rand(),在間隔時間變量確定的范圍內(nèi)生成一個隨機數(shù)并執(zhí)行延時,。
SD卡驅(qū)動實現(xiàn)在SPI方式下以扇區(qū)(512 B)為單位對SD卡上數(shù)據(jù)的讀寫,。
由于存儲器上一般使用FAT文件格式存放和管理文件,F(xiàn)AT文件管理子程序可實現(xiàn)對存儲器上文件目錄,、數(shù)據(jù)存放位置的管理,,以及在SD卡驅(qū)動下讀取指定文件的數(shù)據(jù)。
串口通信子程序?qū)崿F(xiàn)串口初始化和以字節(jié)為單位的數(shù)據(jù)收發(fā),,并在此基礎(chǔ)上實現(xiàn)以幀為單位且?guī)в袛?shù)據(jù)校驗的串口通信。在本方案的串口協(xié)議中,,1幀數(shù)據(jù)包括8個字節(jié),。其中,第1字節(jié)是約定起始標(biāo)志,;第2字節(jié)為發(fā)送者地址,;第3字節(jié)是消息種類(如“更新聲防目標(biāo)”、“改變音量大小”等),;第4~7字節(jié)是消息參數(shù),;第8字節(jié)為前7個字節(jié)的和,用于校驗數(shù)據(jù)傳輸?shù)恼_性,,以保證通信的可靠性,。
解碼控制子程序是音頻控制子系統(tǒng)軟件的重要部分,由于單片機上集成了MP3硬件解碼器,,用戶無需關(guān)心解碼的具體過程,,只要設(shè)置好解碼器參數(shù)并及時將數(shù)據(jù)送入解碼緩沖區(qū)即可。MP3音頻文件內(nèi)容分3部分,,首,、尾2部分用于記錄音頻文件名稱、制作者等信息,;中間部分以幀為單位存放壓縮音頻數(shù)據(jù),,幀頭中包含有音頻文件的文件類型、采樣率,、比特率,、聲道數(shù)等信息。在播放指定的MP3音頻文件時,,單片機先通過FAT文件管理子程序讀取指定文件一個扇區(qū)的數(shù)據(jù),,并以此設(shè)置好硬件解碼器相關(guān)參數(shù),;然后,將音頻數(shù)據(jù)依次寫入解碼器緩沖區(qū),,解碼器自動對MP3數(shù)據(jù)解碼,,并將解碼后的數(shù)據(jù)送入DAC。為實現(xiàn)連續(xù)播放,,解碼控制子程序需要保證在解碼數(shù)據(jù)緩沖區(qū)空閑時及時寫入待解碼的數(shù)據(jù),。
3 方案2的構(gòu)建及實現(xiàn)
3.1 方案二的硬件結(jié)構(gòu)及實現(xiàn)
方案2為音頻控制子系統(tǒng)的“ARM微處理器+軟件解碼”構(gòu)建,該方案的硬件結(jié)構(gòu)如圖4所示,。ARM微處理器選用了三星公司生產(chǎn)的S3C2440芯片,,并擴展了64 MB FLASH,用于存儲引導(dǎo)程序和操作系統(tǒng)內(nèi)核等,,同時,,還擴展了64 MB SDRAM作為程序的運行空間。S3C2440基于ARM920T內(nèi)核,,工作頻率達400 MHz,,集成有SD、USB Host,、LCD,、音頻、視頻等豐富的外設(shè)接口,,并提供有130個I/O口,,是一款高性能、低功耗微處理器芯片[3],。無線通信模塊通過RS-232串口與微處理器相連,。由于S3C2440上的USB HOST接口只支持USB1.1協(xié)議,考慮到兼容性,,該方案中仍選擇SD卡作為存儲器,,并以SD方式對其進行讀寫。S3C2440集成有LCD和觸摸屏控制器,,可根據(jù)需要選擇相應(yīng)的人機交互設(shè)備,,例如點陣式LCD。S3C2440通過I2S音頻接口與具有A/D和D/A功能的低功耗音頻處理芯片UDA1341相連,,實現(xiàn)音頻信號的采集和輸出,。該系統(tǒng)經(jīng)以太網(wǎng)控制芯片DM9000A接入以太網(wǎng),用于與微機相連進行開發(fā)調(diào)試,。為提高系統(tǒng)硬件的電磁兼容性能及可擴展性,,硬件設(shè)計上采用了核心板+擴展板的模塊化結(jié)構(gòu)。核心板上包括S3C2440,、FLASH和SDRAM芯片,,其借助插針與擴展板相連,。擴展板集成了各種外圍芯片和接口,可據(jù)實際需求更改設(shè)計方案,,方便系統(tǒng)硬件的擴展升級,。
3.2 方案2的軟件設(shè)計
方案2的軟件結(jié)構(gòu)分為3層,見圖5,。軟件開發(fā)平臺采用了嵌入式Linux操作系統(tǒng),。Linux是一種穩(wěn)定、高效,、免費的開源操作系統(tǒng),,不僅支持多種體系結(jié)構(gòu)和大量硬件設(shè)備,而且其內(nèi)核可據(jù)實際需求裁剪,。
Linux環(huán)境下,,應(yīng)用程序?qū)τ布O(shè)備的訪問,需依靠運行在內(nèi)核中的驅(qū)動程序作橋梁——軟件底層的驅(qū)動層提供了系統(tǒng)中所有硬件設(shè)備的操作接口,,包括RS-232串口驅(qū)動,、SD方式的SD卡驅(qū)動、兼容UDA1341音頻芯片的OSS(Open Sound System)音頻驅(qū)動及LCD驅(qū)動等,;且?guī)缀跛序?qū)動程序均由Linux直接提供,無需研發(fā)者自己編寫,。
軟件的中間層是應(yīng)用程序?qū)?,包括音頻解碼子程序、串口通信子程序,、隨機數(shù)生成子程序等,。在嵌入式Linux環(huán)境下,有更豐富的系統(tǒng)函數(shù)和開源軟件作支持,,使應(yīng)用程序的實現(xiàn)更容易,。例如,其中的MP3解碼子程序采用音頻解碼庫libmad提供的高級API編寫,。libmad是一個開源的高精度MPEG音頻解碼庫,,它支持MPEG-1標(biāo)準(zhǔn)中Layer I、Layer II和LayerIII(即MP3)格式的音頻解碼,,且解碼過程使用定點計算,,非常適合沒有浮點運算支持的平臺(如ARM平臺)。使用libmad提供的高級API,,很容易實現(xiàn)MP3數(shù)據(jù)的解碼,,其過程只需打開對應(yīng)的音頻設(shè)備文件,并將SD卡上待解碼的音頻文件映射到內(nèi)存中,,然后調(diào)用libmad的解碼函數(shù)即可,。在方案1的實現(xiàn)上,,研發(fā)者需自己編程實現(xiàn)的FAT文件格式處理、音頻參數(shù)提取和設(shè)置,、解碼數(shù)據(jù)讀寫控制等功能,,在本方案中均是由操作系統(tǒng)驅(qū)動程序以及l(fā)ibmad解碼庫中的庫函數(shù)自動完成的。另外,,在OSS音頻驅(qū)動和SD卡驅(qū)動的支持下,,可方便地實現(xiàn)對WAV音頻文件播放子程序的編制。WAV音頻文件由于直接存儲了PCM編碼的音頻數(shù)據(jù),,雖文件較大,,但沒有壓縮失真,其音質(zhì)也優(yōu)于MP3,。
軟件的上層是流程控制層,。由于方案2與方案1所實現(xiàn)的功能基本相同,故其軟件的流程并無本質(zhì)差異,,具體功能仍可參見圖3,。嵌入式Linux具備多任務(wù)管理功能,即能以分時復(fù)用方式“同時”處理多個進程,,并提供有多種進程間的通信協(xié)調(diào)機制,,例如信號機制等。信號機制用于多任務(wù)間的通信,,其實質(zhì)是在軟件層次上對中斷機制的一種模擬,。與方案1不同的是,在嵌入式Linux環(huán)境中,,使用信號機制能方便地實現(xiàn)中斷控制,。在程序中設(shè)置為當(dāng)串口收到數(shù)據(jù)時,向系統(tǒng)進程發(fā)出信號,,系統(tǒng)進程收到信號后轉(zhuǎn)向執(zhí)行事先指定的處理程序,,從而實現(xiàn)中斷控制。
4 兩種實現(xiàn)方案的實驗測試和對比
按上述兩方案構(gòu)建了實現(xiàn)農(nóng)作物有害動物智能化聲防系統(tǒng)用的音頻控制子系統(tǒng),。實驗測試結(jié)果表明,,以兩種方案研發(fā)的音頻控制子系統(tǒng)均達到了預(yù)期目標(biāo),能準(zhǔn)確,、可靠地與無線通信模塊通信,,在總控制器控制下實時調(diào)整各種工作參數(shù)。音頻控制子系統(tǒng)在觸發(fā),、隨機2種工作模式下,,均能準(zhǔn)確、清晰地播放當(dāng)前聲防目標(biāo)對應(yīng)的音頻文件。采用可熱插拔的SD卡確保了聲防音頻文件更新方便,。而且基于所采用的FAT16文件格式,,該子系統(tǒng)能支持最高容量為2 GB的SD卡,實現(xiàn)了大容量音頻文件的可靠存儲,。
由于采用不同的硬件平臺而構(gòu)建,,2種音頻控制子系統(tǒng)實現(xiàn)方案在功能、開發(fā)難度以及構(gòu)建成本等方面有所不同,。
在功能方面,,方案1能對比特率在192 kb/s及以下的MP3文件做流暢的解碼播放,但播放更高比特率的文件時,,受AT89C51SND1處理速度以及現(xiàn)有程序的數(shù)據(jù)讀寫效率限制,,不能保證寫入解碼緩沖區(qū)數(shù)據(jù)的連續(xù)性,從而導(dǎo)致輸出聲音有間斷,。而且由于硬件解碼的限制,,不能對其他格式的音頻文件進行解碼播放。方案2由于采用軟件解碼,,且所選用微處理器S3C2440的主頻達400 MHz,,理論上只要移植對應(yīng)的解碼子程序,便可對任何格式的音頻文件進行解碼播放,。對方案2的測試發(fā)現(xiàn),,其確實能對任意比特率的MP3、WAV格式的音頻文件進行解碼播放,。而且方案2中,,系統(tǒng)完全有能力在完成音頻解碼任務(wù)之同時,還處理更多復(fù)雜的任務(wù)(MP3解碼程序只占用了S3C2440處理能力的7%左右),,具有很強的擴展性。例如,,音頻控制子系統(tǒng)可在探測器節(jié)點發(fā)現(xiàn)有害動物后進行聲音采集或視頻采集,,并運行語音識別子程序或經(jīng)視覺檢測對探測到的有害動物種類進行判斷,從而使整個聲防系統(tǒng)的聲防目標(biāo)更準(zhǔn)確,,達到更好的聲防效果,。另外,由于嵌入式操作系統(tǒng)對硬件的屏蔽性,,實現(xiàn)方案2的軟件很容易在其他硬件平臺上移植,。
在軟件開發(fā)過程中,方案1需要關(guān)注每個硬件設(shè)備的操作細(xì)節(jié),,其軟件的編程量較大,。而方案2由于所選用的Linux操作系統(tǒng)直接提供硬件驅(qū)動程序,且也有大量開源軟件資源可供應(yīng)用程序編程所利用,,故其軟件的開發(fā)相對容易,。但方案2需移植嵌入式操作系統(tǒng)作為軟件開發(fā)平臺,,包括建立BootLoader引導(dǎo)程序,配置,、編譯并移植操作系統(tǒng)內(nèi)核和文件系統(tǒng)等,,這與采用向單片機直接燒寫程序的方案1相比,開發(fā)難度稍大,。在軟件調(diào)試方面,,方案1中單片機程序的每次變更都需重新寫入ROM。而方案2可利用Linux的網(wǎng)絡(luò)功能,,將微機上的編程目錄以NFS方式掛載在嵌入式Linux文件系統(tǒng)中,,從而實現(xiàn)在微機端編寫、修改程序,,在嵌入式Linux系統(tǒng)上直接“遠(yuǎn)程”運行修改后的程序,,調(diào)試較為方便。
從構(gòu)建成本上比較,,方案1的硬件成本更低一些,。但隨著制造工藝的不斷進步,32 bit微處理器的成本會進一步降低,,再考慮外圍器件的成本,,以方案2構(gòu)建音頻控制子系統(tǒng)的性價比,與基于方案1構(gòu)建的相比已有優(yōu)勢,。
數(shù)字化,、智能化是農(nóng)業(yè)現(xiàn)代化發(fā)展的必然趨勢。為確??煽啃院托阅茏顑?yōu),,本文利用嵌入式技術(shù)、采用兩種技術(shù)方案研發(fā)實現(xiàn)了農(nóng)作物有害動物智能化聲防系統(tǒng)中起重要作用的音頻控制子系統(tǒng),。實驗測試發(fā)現(xiàn),,“單片機+硬件解碼”構(gòu)建方案能基本滿足功能需求,但其系統(tǒng)性能和升級擴展能力受到硬件限制,;而“ARM微處理器+軟件解碼”構(gòu)建方案能完全滿足功能需求,,而且具有很強的擴展性和可移植性。
參考文獻
[1] 楊水清,,張劍,,施云飛,等.ARM嵌入式Linux系統(tǒng)開發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,,2008.
[2] 楊心懷,,周潔.便攜式MP3播放器的設(shè)計[J].電子技術(shù)應(yīng)用,2003(2):55-57.
[3] Samsung Electronics.S3C2440A 32 Bit CMOS Microcontroller User′s Manual[Z].2004.
[4] Atmel Co.Ltd.AT8XC51SND1C Datasheet[Z].2005.