《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > 無(wú)線傳感器開(kāi)發(fā)系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)

無(wú)線傳感器開(kāi)發(fā)系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)

2008-04-24
作者:王慶華,屈玉貴,趙保華,,洪 飛

  摘 要: 設(shè)計(jì)并實(shí)現(xiàn)了一種低功耗、通用性好的無(wú)線傳感器節(jié)點(diǎn)" title="傳感器節(jié)點(diǎn)">傳感器節(jié)點(diǎn),,重點(diǎn)介紹了開(kāi)發(fā)板" title="開(kāi)發(fā)板">開(kāi)發(fā)板的軟,、硬件設(shè)計(jì),充分考慮了節(jié)能和擴(kuò)展性的需求,。系統(tǒng)支持多種目標(biāo)文件格式,。
  關(guān)鍵詞: 傳感器節(jié)點(diǎn) 開(kāi)發(fā)板 FLASH SPI編程


  微電子和無(wú)線通信技術(shù)的飛速發(fā)展,使得低功耗,、低成本,、體積微小的傳感器網(wǎng)絡(luò)的研制成為可能[1]。這種網(wǎng)絡(luò)的節(jié)點(diǎn)被放置在目標(biāo)區(qū)域中,,自組網(wǎng)絡(luò),,采集數(shù)據(jù),通過(guò)無(wú)線通信設(shè)備將數(shù)據(jù)經(jīng)多跳傳送到基站,,由Internet或其他有線網(wǎng)絡(luò)傳到用戶終端,。傳感器網(wǎng)絡(luò)的應(yīng)用非常廣泛,可用于環(huán)境檢測(cè),、軍事探測(cè),、醫(yī)療保健等各個(gè)部門[3]。它的應(yīng)用將對(duì)人們的生活方式產(chǎn)生深遠(yuǎn)的影響,,該技術(shù)被美國(guó)《商業(yè)周刊》評(píng)為未來(lái)四大高技術(shù)產(chǎn)業(yè)之一,。
  本文介紹了一種無(wú)線傳感器開(kāi)發(fā)系統(tǒng)的設(shè)計(jì)方法,,包括節(jié)點(diǎn)和開(kāi)發(fā)板。節(jié)點(diǎn)具有功耗低" title="功耗低">功耗低,、通用性好的特點(diǎn),,帶有多種傳感器,可以感知溫度,、濕度和光等,,并帶有擴(kuò)展口。開(kāi)發(fā)板用于配置節(jié)點(diǎn)和下載程序,。開(kāi)發(fā)板具有友好的上位機(jī)" title="上位機(jī)">上位機(jī)用戶界面,,并支持多種編譯系統(tǒng)生成的不同目標(biāo)文件格式。
1 節(jié)點(diǎn)的硬件設(shè)計(jì)
  傳感器節(jié)點(diǎn)的硬件結(jié)構(gòu)主要由傳感模塊,、處理模塊,、通信模塊和電源模塊組成[4]。傳感器節(jié)點(diǎn)一般采用電池供電,,由于節(jié)點(diǎn)放置在危險(xiǎn)或不易到達(dá)的區(qū)域,,更換電池幾乎是不可能,因此節(jié)能成為設(shè)計(jì)的關(guān)鍵技術(shù),,此外,,還要控制成本和體積。設(shè)計(jì)的節(jié)點(diǎn)硬件框圖如圖1所示,。


1.1 微處理器模塊
  微處理器選用ATMEL公司的ATMELGA128L,。該芯片功耗低,且有多種睡眠模式,;多個(gè)中斷源,,53個(gè)IO口,可以連接多個(gè)傳感器擴(kuò)展口,;內(nèi)帶8路10位A/D轉(zhuǎn)換器,,可以將傳感器送來(lái)的模擬信號(hào)轉(zhuǎn)換為數(shù)據(jù)信號(hào);雙向I2C串行總線接口,;主/從SPI串行接口,;可編程串行通信接口;JTAG和SPI在線編程方式等,。該芯片的豐富資源可以滿足節(jié)點(diǎn)數(shù)據(jù)處理和傳輸?shù)囊?,尤其是六種不同的睡眠模式,特別適合有能量限制的應(yīng)用,。


  存儲(chǔ)器存放待處理或接收的數(shù)據(jù),,選用Microchip公司的25AA1024。該芯片的存儲(chǔ)量為1 024KB,,功耗低,,讀寫(xiě)方式為SPI,,占用IO口少。節(jié)點(diǎn)索引號(hào)產(chǎn)生器選用MAXIM公司的DS2411,,用來(lái)產(chǎn)生48位隨機(jī)數(shù),,作為節(jié)點(diǎn)的惟一標(biāo)識(shí)號(hào)[1]
1.2 射頻模塊
  射頻芯片的選取直接影響節(jié)點(diǎn)的功耗,,因?yàn)楣?jié)點(diǎn)消耗能量的近2/3都用于無(wú)線收發(fā)[5],。選用的射頻芯片為NORDIC公司的nRF24L01。該芯片功耗低,,在相同工作模式下,,比Chipcon 公司的CC2420芯片節(jié)省近1/3的能量;工作于2.4G~2.5GHz ISM頻段,;支持高速跳頻,;體積很小,;外圍器件少,配置簡(jiǎn)單,,且使用兩層PCB板,,節(jié)省成本。nRF24L01配置框圖如圖2所示,。
  nRF24L01與微處理器相連只需6根信號(hào)線,,其中4根是SPI信號(hào)線,與ATMELGA128L的SPI口相連,;其余一根為片選,,另一根用于中斷請(qǐng)求。
  射頻電路要取得好的RF性能,,PCB設(shè)計(jì)必須合理,。 nRF24L01的供電電源必須經(jīng)過(guò)良好的濾波,并且與數(shù)字電路分開(kāi),;避免長(zhǎng)距離走線,;在射頻信號(hào)輸出部分,根據(jù)發(fā)送功率設(shè)置濾波網(wǎng)絡(luò),,以實(shí)現(xiàn)阻抗匹配,,使到達(dá)天線的信號(hào)最強(qiáng)。要防止高頻信號(hào)泄漏,,否則會(huì)對(duì)發(fā)射信號(hào)造成很大干擾,。由于天線要散播電磁能量,需選用Q值較小的器件,。制作PCB板時(shí),,在器件周圍覆銅,,以提高抗干擾性能。
1.3 傳感器模塊和擴(kuò)展口
  板上設(shè)有一光敏電阻感應(yīng)光信號(hào),,由于是模擬信號(hào),,需接入ATMELGA128L的AD引腳進(jìn)行AD轉(zhuǎn)換后才可處理。板上還裝有一數(shù)字型溫濕度傳感芯片SHT15,可感知溫度和濕度,,精確度較高,,且功耗低,采用I2C讀寫(xiě),,占有IO口很少,。
  為了讓節(jié)點(diǎn)具有更廣泛的應(yīng)用,節(jié)點(diǎn)板上接有擴(kuò)展口,,其中有I2C口,、AD口和中斷口等,用來(lái)連接其他傳感器,。
1.4 電源模塊和電能消耗
  節(jié)點(diǎn)有兩種供電方式,,在實(shí)驗(yàn)室調(diào)試和測(cè)試時(shí)通過(guò)開(kāi)發(fā)板供電,在外界環(huán)境中工作時(shí),,用2個(gè)AA電池供電,。為了防止2個(gè)電源之間的干擾,在板上加有一個(gè)手動(dòng)開(kāi)關(guān),。
  因?yàn)殡娔艿南臎Q定了傳感器節(jié)點(diǎn)的使用壽命,,在節(jié)點(diǎn)的軟、硬件設(shè)計(jì)時(shí),,必須充分考慮能源的有效性,。節(jié)點(diǎn)在各種運(yùn)行模式下,必須關(guān)閉不必要的模塊以節(jié)省能量,。
  當(dāng)通信采用節(jié)點(diǎn)定時(shí)關(guān)閉和打開(kāi)的協(xié)議且關(guān)閉與打開(kāi)的時(shí)間比為1:99時(shí)[6],,使用2節(jié)1 000毫安時(shí)(mA-hr)的AA電池供電,節(jié)點(diǎn)耗能如表1所示,。


  在上述工作模式下,,如果用2節(jié)1 000mA-h(huán)r的AA電池供電,則節(jié)點(diǎn)壽命為12.55個(gè)月,。此值是在最大發(fā)送功率情況下計(jì)算的,。當(dāng)發(fā)送功率和收發(fā)速率變小時(shí),耗能更少,,傳感器的壽命會(huì)更長(zhǎng),。
2 開(kāi)發(fā)板的硬件設(shè)計(jì)
  開(kāi)發(fā)板的硬件系統(tǒng)框圖如圖3所示。


  節(jié)點(diǎn)CPU的JTAG口接在開(kāi)發(fā)板上,。如果使用JTAG口下載和調(diào)試程序,,則需要JTAG下載器,。為此,設(shè)計(jì)了另一種下載方式,,即串行下載,。CPU通過(guò)USB口接收上位機(jī)的代碼,然后通過(guò)SPI口下載到節(jié)點(diǎn)CPU的FLASH,。CPU為中心控制模塊,,接收上位機(jī)的各種命令并進(jìn)行相應(yīng)處理。CPU芯片選用ATMEL公司的ATMELGA16L,,該芯片帶有可編程UART口和工作于主機(jī)/從機(jī)模式的SPI口,。
  USB轉(zhuǎn)換芯片實(shí)現(xiàn)上位機(jī)端的USB數(shù)據(jù)與下位機(jī)" title="下位機(jī)">下位機(jī)端的UART數(shù)據(jù)之間的轉(zhuǎn)換。選用芯片為FT232BM,。由于編程板CPU,、ATMELGA128都要通過(guò)USB口與上位機(jī)通信,為了防止不同輸入輸出信號(hào)間的干擾,,設(shè)計(jì)時(shí)用了兩個(gè)帶有使能控制的BUFFER來(lái)控制不同CPU串口通信的通斷,。
  為了更方便地配置傳感器節(jié)點(diǎn),在板上集成了一塊E2PROM,。目標(biāo)代碼可以先存儲(chǔ)在E2PROM中,。當(dāng)需要向節(jié)點(diǎn)下載時(shí),通過(guò)按鈕激發(fā)外部中斷即可將E2PROM的代碼通過(guò)SPI口寫(xiě)入節(jié)點(diǎn)CPU,。操作方便簡(jiǎn)單,擺脫了上位機(jī)的限制,。
  節(jié)點(diǎn)連接器是17針的節(jié)點(diǎn)與開(kāi)發(fā)板和擴(kuò)展傳感器之間的接口,,除了編程口和串口,還有連接傳感器的擴(kuò)展口,,包括I2C口,、中斷口和AD口等。
  節(jié)點(diǎn)CPU SPI編程共需4根信號(hào)線,,其中3根SPI通信線與開(kāi)發(fā)板CPU的SPI口相連,,節(jié)點(diǎn)CPU的RESET信號(hào)由開(kāi)發(fā)板CPU的IO口控制即可。
3 開(kāi)發(fā)板軟件設(shè)計(jì)
3.1 上位機(jī)程序設(shè)計(jì)

  用C++Builder 6.0編寫(xiě)上位機(jī)程序,,制作了用戶操作界面,,并將不同編譯系統(tǒng)生成的多種目標(biāo)文件格式轉(zhuǎn)換成上、下位機(jī)約定的文件格式,,傳送給下位機(jī),。
  為提高向ATMELGA128L的FLASH和E2PROM寫(xiě)代碼的效率和便于從E2PROM向FLASH寫(xiě)代碼,上位機(jī)傳送給下位機(jī)的代碼采用圖4所示的格式,。


  圖4中,,地址指該段代碼要寫(xiě)入FLASH的初始地址,,包括2字節(jié)的頁(yè)地址和1字節(jié)的頁(yè)內(nèi)地址;序列號(hào)表示該段代碼是全部代碼中的第幾段,;長(zhǎng)度指該段代碼的字節(jié)數(shù),,不包括地址和序列號(hào)。每一地址段代碼都采用表2的格式,。


  上位機(jī)程序支持的目標(biāo)文件格式有:TinyOS,、AVR GCC和IAR生成的Intel hex文件。Intel hex是Intel公司提出的一種文件標(biāo)準(zhǔn),,是最常用的目標(biāo)文件格式之一[2],。上位機(jī)程序還支持TI(德州儀器)公司提出的msp430-txt格式,該格式及說(shuō)明如表2所示,。
  上位機(jī)程序?qū)⒉煌幾g系統(tǒng)生成的不同格式的目標(biāo)文件轉(zhuǎn)換成圖4所示的格式,,再發(fā)給下位機(jī)。上位機(jī)操作界面提供了各種命令按鈕,,用戶點(diǎn)擊命令按鈕后,,上位機(jī)即按制定的該命令模式處理協(xié)議發(fā)送命令和數(shù)據(jù)。在傳送文件時(shí),,為確保數(shù)據(jù)傳送不出差錯(cuò),,采用了停止-等待傳輸協(xié)議。上位機(jī)發(fā)送約定長(zhǎng)度的數(shù)據(jù)后停止發(fā)送,,等接收到下位機(jī)發(fā)來(lái)的確認(rèn)標(biāo)志后再開(kāi)始發(fā)送,。上位機(jī)總程序框圖如圖5所示。


3.2 下位機(jī)程序設(shè)計(jì)
  下位機(jī)接收上位機(jī)的命令,,完成讀寫(xiě)FLASH,、E2PROM、鎖定位,、熔絲位和USB口使用權(quán)的切換等功能,。由于實(shí)現(xiàn)的功能較多,采用了模塊化,、自下向上的結(jié)構(gòu)化設(shè)計(jì)方法,。首先按照ATMELGA128L數(shù)據(jù)手冊(cè)提供的SPI編程算法,用C語(yǔ)言實(shí)現(xiàn)了讀寫(xiě)FLASH,、鎖定位和熔絲位等模塊,。
  程序設(shè)計(jì)的一個(gè)難點(diǎn)是將接收的上位機(jī)發(fā)送的文件寫(xiě)入FLASH或E2PROM,因?yàn)樯婕暗浇邮諗?shù)據(jù)和寫(xiě)FLASH或E2PROM的交互,。解決方法是采用停止-等待傳輸協(xié)議進(jìn)行數(shù)據(jù)傳送,。下位機(jī)開(kāi)辟約定數(shù)量的緩沖區(qū),利用中斷接收上位機(jī)數(shù)據(jù)至緩沖區(qū)滿,處理完緩沖區(qū)數(shù)據(jù)后發(fā)送確認(rèn)標(biāo)志,,上位機(jī)收到確認(rèn)后再開(kāi)始下一次發(fā)送,。
  按制定的協(xié)議寫(xiě)ATMELGA128L的FLASH的流程圖如圖6所示。


  寫(xiě)E2PROM與寫(xiě)FLASH類似,,只是要將接收的地址,、序列號(hào)、長(zhǎng)度也寫(xiě)入E2PROM,。代碼在E2PROM中存放時(shí)仍保持表2所示的格式,,即段初始地址、序列號(hào),、該段長(zhǎng)度,、數(shù)據(jù)的格式,以便將E2PROM中存儲(chǔ)的代碼寫(xiě)入FLASH,。
  編寫(xiě)下位機(jī)程序時(shí),,依據(jù)各模塊分別用子函數(shù)實(shí)現(xiàn)、模塊間接口清晰,、主程序簡(jiǎn)單的原則,,實(shí)現(xiàn)了讀寫(xiě)FLASH和E2PROM、讀寫(xiě)鎖定位和鎖定位,、從E2PROM寫(xiě)FLASH等幾大模塊,,主函數(shù)接收到命令調(diào)用相應(yīng)模塊即可。當(dāng)按下中斷按鈕時(shí),,中斷程序先檢測(cè)FLASH連接,,如果檢測(cè)成功,則調(diào)用從E2PROM寫(xiě)FLASH模塊,;否則紅燈閃爍指示操作失敗,。
  使用本文設(shè)計(jì)的開(kāi)發(fā)板對(duì)節(jié)點(diǎn)下載程序,程序運(yùn)行正常,,節(jié)點(diǎn)間通信狀態(tài)良好,且功耗低,,實(shí)現(xiàn)了預(yù)計(jì)的功能并滿足性能要求,。
  從設(shè)計(jì)過(guò)程和使用可以看出,本開(kāi)發(fā)系統(tǒng)具有以下優(yōu)點(diǎn):
  (1)節(jié)點(diǎn)功耗低,,體積小,,射頻芯片靈敏度高;
  (2)節(jié)點(diǎn)通用性好,,可以連接多種傳感板,;
  (3)開(kāi)發(fā)工具用戶界面友好,支持多種目標(biāo)文件格式;
  (4)代碼可存儲(chǔ)在E2PROM中,,需要下載時(shí)按下按鈕便寫(xiě)入FLASH,,配置節(jié)點(diǎn)方便。
  本文所設(shè)計(jì)的傳感器開(kāi)發(fā)系統(tǒng)便于研究者做更深入的實(shí)踐研究,,推動(dòng)了傳感器更廣泛的應(yīng)用,。
參考文獻(xiàn)
1 孫利民,李建中,,陳 渝等.無(wú)線傳感器網(wǎng)絡(luò).北京:清華大學(xué)出版社,,2005
2 林志鋒,梁志坤,,王澤芳.用ATmega8單片機(jī)設(shè)計(jì)串行編程器.現(xiàn)代電子技術(shù),,2003;(15):77~79
3 Ning Xu.A survey of sensor network applications.http://enl.usc.edu/ningxu/papers,,2003
4 Akyildiz I F,,Su W,Sankarasubramaniam Y et al.Wireless sensor networks:a survey.Computer Networks.2002,;38(4):393~422
5 Estrin D.Wireless sensor networks.In:Tutorial at the Eighth ACM International Conference,,Georgia,USA,,2002
6 Crossbow.MPR/MIB MoteUserManual.http://www.xbow.com,,2004

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com,。