<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 元件/連接器 > 設計應用 > 無(wú)線(xiàn)傳感器開(kāi)發(fā)系統的設計及實(shí)現

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

作者: 時(shí)間:2011-03-10 來(lái)源:網(wǎng)絡(luò ) 收藏
本文介紹了一種無(wú)線(xiàn)開(kāi)發(fā)系統的設計方法.包括節點(diǎn)和開(kāi)發(fā)板。節點(diǎn)具有功耗低、通用性好的特點(diǎn),帶有多種,可以感知溫度、濕度和光等,并帶有擴展口。開(kāi)發(fā)板用于配置節點(diǎn)和下載程序。開(kāi)發(fā)板具有友好的上位機用戶(hù)界面,并支持多種編譯系統生成的不同目標文件格式。

  1 節點(diǎn)的硬件設計

  節點(diǎn)的硬件結構主要由傳感模塊、處理模塊、通信模塊和電源模塊組成。傳感器節點(diǎn)一般采用電池供電,由于節點(diǎn)放置在危險或不易到達的區域,更換電池幾乎是不可能,因此節能成為設計的關(guān)鍵技術(shù),此外,還要控制成本和體積。設計的節點(diǎn)硬件框圖如圖1所示。

節點(diǎn)的硬件設計

  1.1 微處理器模塊

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

  存儲器存放待處理或接收的數據.選用Mierochip公司的25AAl024。該芯片的存儲量為1024KB,功耗低,讀寫(xiě)方式為SPI,占用10口少。節點(diǎn)索引號產(chǎn)生器選用MAXIM公司的DS2411,用來(lái)產(chǎn)生48位隨機數,作為節點(diǎn)的惟一標識號。

  1.2 射頻模塊

  射頻芯片的選取直接影響節點(diǎn)的功耗,因為節點(diǎn)消耗能量的近2/3都用于無(wú)線(xiàn)收發(fā)。選用的射頻芯片為NORDIC公司的nRF24L01。該芯片功耗低。在相同工作模式下,比Chipcon公司的CC2420芯片節省近l/3的能量;工作于2.4G~2.5GHz ISM頻段;支持高速跳頻;體積很??;外圍器件少,配置簡(jiǎn)單,且使用兩層PCB板,節省成本。nRF24L0l配置框圖如圖2所示。

nRF24L0l配置框圖

  nRF24L01與微處理器相連只需6根信號線(xiàn),其中4根是SPI信號線(xiàn),與ATMELGAl28L的SPI口相連;其余一根為片選,另一根用于中斷請求。

  射頻電路要取得好的RF性能,PCB設計必須合理。nRF24L01的供電電源必須經(jīng)過(guò)良好的濾波,并且與數字電路分開(kāi);避免長(cháng)距離走線(xiàn);在射頻信號輸出部分,根據發(fā)送功率設置濾波網(wǎng)絡(luò ),以實(shí)現阻抗匹配,使到達天線(xiàn)的信號最強。要防止高頻信號泄漏,否則會(huì )對發(fā)射信號造成很大干擾。由于天線(xiàn)要散播電磁能量,需選用Q我較小的器件。制作PCB板時(shí),在器件周?chē)层~,以提高抗干擾性能。

  1.3 傳患器模塊和擴展口

  板上設有一光敏電阻感應光信號,由于是模擬信號,需接入ATMELGAl28L的AD引腳進(jìn)行AD轉換后才可處理。板上還裝有一數字型溫濕度傳感芯片SHT15,可感知溫度和濕度,精確度較高,且功耗低,采用I2C讀寫(xiě),占有IO口很少。

  為了讓節點(diǎn)具有更廣泛的應用,節點(diǎn)板上接有擴展口,其中有I2C口、AD口和中斷口等,用來(lái)連接其他傳感器。

  1.4 電源橫塊和電能消耗

  節點(diǎn)有兩種供電方式,在實(shí)驗室調試和測試時(shí)通過(guò)開(kāi)發(fā)板供電,在外界環(huán)境中工作時(shí),用2個(gè)AA電池供電。為了防止2個(gè)電源之間的干擾,在板上加有一個(gè)手動(dòng)開(kāi)關(guān)。

  因為電能的消耗決定了傳感器節點(diǎn)的使用壽命,在節點(diǎn)的軟、硬件設計時(shí),必須充分考慮能源的有效性。節點(diǎn)在各種運行模式下,必須關(guān)閉不必要的模塊以節省能量。當通信采用節點(diǎn)定時(shí)關(guān)閉和打開(kāi)的協(xié)議且關(guān)閉與打開(kāi)的時(shí)間比為1:99時(shí),使用2節1000毫安時(shí)(mAhr)的AA電池供電,節點(diǎn)耗能如表1所示。

節點(diǎn)耗能表

  在上述工作模式下,如果用2節1000mA-hr的AA電池供電,則節點(diǎn)壽命為12.55個(gè)月。此值是在最大發(fā)送功率情況下計算的。當發(fā)送功率和收發(fā)速率變小時(shí),耗能更少,傳感器的壽命會(huì )更長(cháng)。

  2 開(kāi)發(fā)板的硬件設計

  開(kāi)發(fā)板的硬件系統框圖如圖3所示。

開(kāi)發(fā)板的硬件系統框圖

節點(diǎn)CPU的JTAG口接在開(kāi)發(fā)板上。如果使用JTAG口下載和調試程序,則需要JTAG下載器。為此,設計了另一種下載方式,即串行下載。CPU通過(guò) USB口接收上位機的代碼,然后通過(guò)SPI口下載到節點(diǎn)CPU的FLASH。CPU為中心控制模塊,接收上位機的各種命令并進(jìn)行相應處理。CPU芯片選用 ATMEL公司的ATMELGAl6L,該芯片帶有可編程UART口和工作于主機,從機模式的SPI口。

  USB轉換芯片實(shí)現上位機端的USB數據與下位機端的UART數據之間的轉換。選用芯片為FT232BM。由于編程板CPU、ATMELGAl28都要通過(guò)USB口與上位機通信,為了防止不同輸入輸出信號間的干擾,設計時(shí)用了兩個(gè)帶有使能控制的BUFFER來(lái)控制不同CPU串口通信的通斷。

  為了更方便地配置傳感器節點(diǎn),在板上集成了一塊E2PROM。目標代碼可以先存儲在EZPROM中。當需要向節點(diǎn)下載時(shí),通過(guò)按鈕激發(fā)外部中斷即可將E2PROM的代碼通過(guò)SPI口寫(xiě)入節點(diǎn)CPU。操作方便簡(jiǎn)單,擺脫了上位機的限制。

  節點(diǎn)連接器是17針的節點(diǎn)與開(kāi)發(fā)板和擴展傳感器之間的接口,除了編程口和串口,還有連接傳感器的擴展口,包括I2C口、中斷口和AD口等。

  節點(diǎn)CPU SPI編程共需4根信號線(xiàn),其中3根SPI通信線(xiàn)與開(kāi)發(fā)板CPU的SPI口相連,節點(diǎn)CPU的RESET信號 由開(kāi)發(fā)板CPU的IO口控制即可。

  3 開(kāi)發(fā)板軟件設計

  3.1 上位機程序設計

  用C++ Builder 6.0編寫(xiě)上位機程序,制作了用戶(hù)操作界面,并將不同編譯系統生成的多種目標文件格式轉換成上、下位機約定的文件格式,傳送給下位機。

  為提高向ATMELGAl28L的FLASH和E2PROM寫(xiě)代碼的效率和便于從E2PROM向FLASH寫(xiě)代碼,上位機傳送給下位機的代碼采用圖4所示的格式。

上位機傳送給下位機的代碼

  圖4中,地址指該段代碼要寫(xiě)入FLASH的初始地址,包括2字節的頁(yè)地址和l字節的頁(yè)內地址;序列號表示該段代碼是全部代碼中的第幾段;長(cháng)度指該段代碼的字節數,不包括地址和序列號。每一地址段代碼都采用表2的格式。

  上位機程序支持的目標文件格式有:TinyOS、AVRGCC和IAR生成的Intel hex文件。Intel hex是Intel公司提出的一種文件標準,是最常用的目標文件格式之一。上位機程序還支持TI(德州儀器)公司提出的msp430-txt格式,該格式及說(shuō)明如表2所示。

msp430-txt格式

  上位機程序將不同編譯系統生成的不同格式的目標文件轉換成圖4所示的格式,再發(fā)給下位機。上位機操作界面提供了各種命令按鈕,用戶(hù)點(diǎn)擊命令按鈕后,上位機即按制定的該命令模式處理協(xié)議發(fā)送命令和數據。在傳送文件時(shí),為確保數據傳送不出差錯,采用了停止-等待傳輸協(xié)議。上位機發(fā)送約定長(cháng)度的數據后停止發(fā)送,等接收到下位機發(fā)來(lái)的確認標志后再開(kāi)始發(fā)送。上位機總程序框圖如圖5所示。

上位機總程序框圖

  3.2 下位機程序設計

  下位機接收上位機的命令,完成讀寫(xiě)FLASH、E2PROM、鎮定位、熔絲位和USB口使用權的切換等功能。由于實(shí)現的功能較多,采用了模塊化、自下向上的結構化設計方法。首先按照ATMELCAl28L數據手冊提供的SPI編程算法,用C語(yǔ)言實(shí)現了讀寫(xiě)FLASH、鎖定位和熔絲位等模塊。

  程序設計的一個(gè)難點(diǎn)是將接收的上位機發(fā)送的文件寫(xiě)入FLASH或E2PROM,因為涉及到接收數據和寫(xiě)FLASH或EZPROM的交互。解決方法是采用停止一等待傳輸協(xié)議進(jìn)行數據傳送。下位機開(kāi)辟約定數量的緩沖區,利用中斷接收上位機數據至緩沖區滿(mǎn),處理完緩沖區數據后發(fā)送確認標志,上位機收到確認后再開(kāi)始下一次發(fā)送。

  按制定的協(xié)議寫(xiě)ATMELGA128L的FIASH的流程圖如圖6所示。

寫(xiě)ATMELGA128L的FIASH的流程圖

  寫(xiě)EZPROM與寫(xiě)FLASH類(lèi)似,只是要將接收的地址、序列號、長(cháng)度也寫(xiě)入E2PROM。代碼在E2PROM中存放時(shí)仍保持表2所示的格式,即段初始地址、序列號、該段長(cháng)度、數據的格式,以便將E2PROM中存儲的代碼


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>