1 引言 無(wú)線(xiàn)傳感網(wǎng)絡(luò )廣泛應用于軍事偵察、環(huán)境監測、目標定位等領(lǐng)域。一般來(lái)說(shuō),無(wú)線(xiàn)傳感網(wǎng)絡(luò )節點(diǎn)的設計要求具有功耗低、成本低、壽命長(cháng)等特點(diǎn)。本文以ATmega16 AVR單片機為核心元件,以常見(jiàn)的315射頻模塊作為無(wú)線(xiàn)收發(fā)模塊設計了一種無(wú)線(xiàn)傳感網(wǎng)絡(luò )節點(diǎn)。該系統充分利用了ATmega16單片機豐富的片上資源和315模塊較好的抗干擾特性,并可在達到設計要求的前提下,有效地降低硬件成本,具有較高的實(shí)用價(jià)值。 2 無(wú)線(xiàn)傳感網(wǎng)絡(luò )節點(diǎn)系統結構 無(wú)線(xiàn)傳感網(wǎng)絡(luò )節點(diǎn)通常由4個(gè)子系統構成。 2.1 計算子系統 計算子系統通常是由一個(gè)微處理器和相應的通信協(xié)議、數據采集等程序組成。為了降低節點(diǎn)的功耗,要求微處理器以一種突發(fā)式的發(fā)送方案將采集到的數據發(fā)送出去,以便盡快轉入低功耗模式,延長(cháng)能量子系統的工作時(shí)問(wèn)。 設計選用了Atmel公司推出的ATmega16型單片機。ATmega16是一款基于A(yíng)VR RISC結構的高級Flash型8位CMOS單片機,其數據吞吐量高達1MI/s/MHz,能有效緩解系統在功耗和處理速度之間的矛盾。同時(shí),ATmega16集成了豐富的片上資源:16 KB的可編程Flash、512字節EEPROM、l KBSRAM,滿(mǎn)足了絕大多數應用程序的開(kāi)發(fā)要求,其內部Flash可重復擦寫(xiě)次數在10 000次以上,極大地方便了產(chǎn)品開(kāi)發(fā)和軟件修改:8路10位具有可選差分輸入級可編程增益的ADC可以外接多個(gè)不同種類(lèi)的傳感器件:支持6種睡眠模式,其中掉電模式和省電模式的耗電僅為lμA~2.5μA,可有效降低節點(diǎn)功耗;3個(gè)靈活的定時(shí)器/計數器(T/C)除具有常見(jiàn)的定時(shí)計數功能外,還具有輸入脈沖捕捉、脈沖寬度調制輸出功能:高度靈活的可編程串行US-ART可以完成與其他串行設備的通信。 2.2 通信子系統 通信子系統由一個(gè)無(wú)線(xiàn)收發(fā)器組成,用于節點(diǎn)之間的通信。當無(wú)線(xiàn)收發(fā)器處于空閑狀態(tài)時(shí),應將其關(guān)閉,以便降低節點(diǎn)功耗。 設計采用了常見(jiàn)的315無(wú)線(xiàn)收發(fā)模塊作為長(cháng)距離無(wú)線(xiàn)收發(fā)器(因收發(fā)頻率為315 MHz而得名)。315無(wú)線(xiàn)發(fā)射模塊電路,它是由聲表諧振器(SAW)和高頻三極管組成的三點(diǎn)式振蕩電路。TXD輸入引腳通過(guò)三極管Q2控制高頻振蕩器。當TXD為高電平時(shí),02導通,高頻振蕩器起振;當TXD為低電平時(shí),Q2截止,高頻振蕩器停振。將ATmegal6的OC0引腳與TXD連接,即可完成OC0輸出數據的OOK調制發(fā)射。 315無(wú)線(xiàn)超再生式接收電路由選頻電路、高頻放大電路、超再生檢波電路和低頻放大電路組成。它具有電路簡(jiǎn)單、靈敏度高等優(yōu)點(diǎn)。發(fā)送調制信號經(jīng)過(guò)選頻電路選頻后,送人超再生檢波電路解調.再由低頻放大電路放大后由輸出引腳輸出高電平。若無(wú)信號收到,則輸出低電平。由超再生檢波電路的特性可知,超再生式接收模塊在沒(méi)有收到信號的幾毫秒后輸出大量白噪聲,直到再次接收到信號。 315無(wú)線(xiàn)收發(fā)模塊的最大傳輸距離可以達到700 m~800 m。它在星形混合傳感網(wǎng)絡(luò )設計中可作為遠距離傳輸節點(diǎn),可以直接同匯聚節點(diǎn)通信,避免了短距離無(wú)線(xiàn)傳感節點(diǎn)同匯聚節點(diǎn)多跳式的通信方式。延長(cháng)了傳感器網(wǎng)絡(luò )的壽命。同時(shí)它還具有成本低廉、接口簡(jiǎn)單、抗干擾能力強等優(yōu)點(diǎn),因而廣泛應用在報警器、遙控器、工業(yè)數據采集系統中。 2.3 能量子系統 能量子系統通常是由電池組成。它在很大程度上決定了無(wú)線(xiàn)傳感節點(diǎn)的壽命。降低無(wú)線(xiàn)傳感節點(diǎn)的功耗是無(wú)線(xiàn)傳感網(wǎng)絡(luò )設計成功的一個(gè)關(guān)鍵因素。 3 基帶脈沖帶編碼方案 315超再生式接收模塊在沒(méi)有收到信號的幾毫秒后將產(chǎn)生白噪聲,這一特性決定了基帶脈沖編碼方案不能采用非歸零編碼,否則在連續發(fā)送0的情況下,接收模塊將輸出白噪聲。本文采用了一種類(lèi)曼徹斯特編碼。用占空比為50%的完整方波表示信息符號和特殊控制符號。以不同的方波周期區分信息位中的0和l,以及其他符號位。 當信號到達時(shí),接收數據幀的第一位會(huì )受到接收模塊產(chǎn)生的白噪聲影響,為了消除白噪聲,需在數據幀前加入一定數量的前導碼。前導碼的數量同無(wú)線(xiàn)傳輸環(huán)境和315模塊元件參數有關(guān)。一般來(lái)說(shuō),十幾個(gè)前導碼就可以達到較好的接收效果。前導碼后緊跟的起始位表示接收數據序列的開(kāi)始。 4 軟件設計 無(wú)線(xiàn)傳感節點(diǎn)采用了AVRX嵌入式操作系統。AVRX是一款源碼公開(kāi)的、專(zhuān)門(mén)針對AVR系列單片機的嵌入式操作系統。雖然AVRX很難移植到其他微處理器上,但其自身占用程序空間小(包含所有功能的版本僅占用l 000字節),消耗SRAM少,有利于應用程序的開(kāi)發(fā)。因此,設計中放棄了可移植性好,但自身對SRAM消耗大的μCOS-Ⅱ嵌入式操作系統。 4.1 發(fā)射子模塊的軟件設計 要將數據發(fā)送出去,首先要將數據符號和控制符號轉變?yōu)榭勺兠}寬的方波。其方法有三種: (1)將PB3引腳作為通用輸出引腳,利用AvrXDelay產(chǎn)生與脈寬相對應的延時(shí),控制OC0產(chǎn)生可變脈寬的方波。這種方法的缺點(diǎn)是不能產(chǎn)生脈寬足夠精確的方波,這是由于RTOS任務(wù)調度開(kāi)銷(xiāo)的不同所產(chǎn)生的。 (2)將PB3引腳作為通用輸出引腳,利用編寫(xiě)的延時(shí)50μs的子程序實(shí)現。在延時(shí)子程序里關(guān)閉全局中斷IE,停止AVRX的任務(wù)調度和ATmega16對中斷的響應。這種方法可以產(chǎn)生脈寬精確的方波,但系統在發(fā)射數據期間不能處理其他事件,降低了系統的靈活性。 (3)利用T/C0的CTC模式產(chǎn)生脈沖,這時(shí)PB3引腳作為比較匹配輸出引腳OC0。當T/C0工作在CTC模式下時(shí),設置TCCR0中的COM01:0=l,則每當計數器的數值TCNTO=OCR0時(shí),TCNT0清零,比較匹配中斷標志置位,同時(shí)輸出引腳OC0的邏輯電平自動(dòng)翻轉。在比較匹配中斷中修改OCR0的數值,就可以產(chǎn)生脈寬精確的方波。這種方法利用硬件計數器產(chǎn)生延時(shí),具有延時(shí)精確,占用系統資源少的優(yōu)點(diǎn)。因此在設計中采用第三種方法。 4.2 接收子模塊的軟件設計 ASK調制的信號首先被315超再生接收模塊轉換為脈沖方波,從數據輸出引腳引人到ATmega16的ICP引腳。將TCCR1B的ICES1置l后,每當一個(gè)電平上升沿到達引腳ICP時(shí).T/C1的計數值將被拷貝到捕獲寄存器ICR1并產(chǎn)生捕獲中斷。在捕獲中斷服務(wù)子程序里將相鄰上升沿發(fā)生的時(shí)間相減即可得到符號周期T。實(shí)際上,由于捕獲中斷服務(wù)子程序在結束時(shí)總會(huì )將ICR1清零,因此中斷發(fā)生時(shí)捕獲的ICR1值就是相應的符號周期T。 315超再生接收模塊在沒(méi)有信號時(shí)會(huì )產(chǎn)生白噪聲,不斷地引發(fā)ICP中斷,增加了系統的開(kāi)銷(xiāo)。設計中,接收模塊沒(méi)有一直處于工作狀態(tài),而是采取了休眠-監聽(tīng)-接收(如果有數據)-休眠的工作方式,以降低系統開(kāi)銷(xiāo)。 5 結束語(yǔ) 試驗利用接入網(wǎng)絡(luò )的PC機產(chǎn)生周?chē)h(huán)境數據,通過(guò)有線(xiàn)網(wǎng)絡(luò )和無(wú)線(xiàn)傳感節點(diǎn)發(fā)送/接收數據。結果表明,采用ATmega16單片機和無(wú)線(xiàn)315通信模塊設計的無(wú)線(xiàn)網(wǎng)絡(luò )傳感節點(diǎn)具有功耗低、傳輸距離遠、抗干擾能力強等優(yōu)點(diǎn),是組建無(wú)線(xiàn)傳感網(wǎng)絡(luò )的一種較好的解決方案。 |