歡迎您光臨本站 登入註冊首頁

基於nRF401 的無線通訊系統及應用

admin @ 2014-03-26 , reply:0

概述

1.引言   在儀器儀錶及測控技術中,無線數據通信以其節省傳輸線、使用方便等優點被廣泛關注。中短距離(小於500米)的無線通信在自動測試系統、無線抄表、計算機遙測遙控系統……

1. 引言
    在儀器儀錶及測控技術中,無線數據通信以其節省傳輸線、使用方便等優點被廣泛關注。中短距離(小於500 米)的無線通信在自動測試系統、無線抄表、計算機遙測遙控系統、車輛監控系統和小區管理等實際應用中有廣泛的市場。在眾多的無線收發晶元中,nRF401以其成本低、可靠性高、外圍設計簡單廣受歡迎,然而由於通信空間的複雜性,無線通訊系統很容易收到誤碼,即使在發送端不發送數據的情況下,接收端也仍然會接收到大量的干擾數據。在一個中等規模的系統設計中,CPU 要進行多種操作,如外部存儲器的訪問,感測器數據的處理等,因此無線通訊干擾信息較多時,特別是在中斷通訊模式下,頻繁的中斷將嚴重影響主程序的運行,另外由於對nRF401 的操作除了控制輸入輸出外,還需要對nRF401的收髮狀態、運行模式切換,因此對於一個匯流排結構的系統(如485 通訊模式),無線通訊部分也作為一個獨立ID 模塊時,傳統的設計處理遇到了困難。因此需要設置一個中間處理環節,既能有效過濾信息又不影響通訊速率。
 
    為解決上述問題,本設計基於nRF401 作為無線收發晶元,使用兩片AT89C2051 作為控制晶元,設計出一套無線通訊系統。其中一片AT89C2051(定義為控制晶元A)控制nRF401,AT89C2051 的IO 介面與串口配合控制nRF401 實現非同步通訊;另一片AT89C2051(定義為控制晶元B)既能滿足匯流排串口的要求,又能解決控制晶元A 由於頻繁串列中斷而不能及時響應匯流排的問題,起到分擔任務、隔離干擾、串口擴展的作用。採用兩片2051單片機設計方法,與採用一片雙串口單片機設計相比,能降低成本、提高晶元利用率、隔離干擾。實踐表明該系統結構簡單、抗干擾能力強,能很好解決短距離系統之間的無線通信問題。

2. 系統硬體設計
     系統硬體設計包括無線通訊模塊和通訊控制部分。
2.1 基於nRF401 的無線通訊模塊設計
    nRF401是Nordic公司研製的單片UHF無線收發晶元,工作在433MHz ISM頻段。在接收模式中,nRF401被配置成傳統的外差式接收機,所接收的射頻調製的數字信號被低雜訊放大器放大,經混頻器變換成中頻,放大、濾波後進入解調器。解調后變換成數字信號輸出(DOUT端)。在發射模式中,數字信號經DIN端輸入,經鎖相環和壓控振蕩器處理後進入功率放大器射頻輸出。在本系統設計中,為了避免干擾,將基於nRF401的無線收發部分做在一塊單獨的PCB板上,引出通訊控制介面(J1),組成獨立的無線收發模塊。
 
2.2 基於AT89C2051 的控制系統設計
    控制部分包括兩片AT89C2051,控制晶元A 負責處理無線收發模塊數據信息,並與控制晶元B 通過P1 口以中斷1 方式進行數據交流。控制晶元B 負責處理來自串口的信息,並與控制晶元A 進行數據交流。由於兩片AT89C2051 以中斷方式并行傳輸模式傳輸數據,其數據交換時間遠小於單片機串口通訊時間,因此不會影響整個系統的半雙工通訊時間。為了滿足各種要求,串口通過跳線被設計成232 模式、485 模式和UART 模式。
 

3. 系統軟體設計
3.1 通訊協議
    在無線通信的過程中,由於外部環境的干擾,通常誤碼率比較高,即使發射方不發送數據,接收方仍會經常接收到由於外部干擾而產生的雜亂數據,為了在接收的過程中區分接收到的數據是否為有效數據,必須有一定的通信協議。在傳輸數據量不大時,為有效處理信息,本系統設計以下通訊協議:
1) 無線收發數據幀由3個位元組組成,即8bit的標識位(0xab),8bit的數據位,8bit的校驗位。
2) 無線收發數據幀格式
byte1 高四位為1010(0xa),低四位為數據的高四位

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 0 1 0 D7 D6 D5 D4

Byte2 高四位為1011(0xb),低四位為數據的低四位

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 0 1 1 D3 D2 D1 D0

Byte3 為byte1與byte2的異或值。
3 內部單片機之間傳輸的數據不包括標識位元組和校驗位元組。
4 系統與外部串列通訊時,採用另外的通訊協議(如ModBus協議)。
5 外部輸入採用中斷方式,內部循環採用查詢方式。
6 程序設計中,外部中斷優先,以及時接收外部數據信息。
7 執行某一中斷時,不響應其他中斷。
8 無線通訊模塊平時處於接收狀態。

3.2 程序流程
    對於控制晶元A,接收無線收發模塊數據為串列中斷方式,接收控制晶元B 數據為外中斷1 方式。主程序運行過程中始終處於檢測系統狀態字循環方式,當發送緩衝區有數據(來自控制晶元B)時,主程序調用串列發送程序將數據經串口、無線收發模塊發送出去;當接收緩衝區有數據(來自無線收發模塊)時,主程序調用并行發送程序將數據經P1 口發送到控制晶元B。在設計應將發送緩衝區和接收緩衝區設置為多位元組,用來堆積不能及時轉移的數據。控制晶元B 的程序流程與控制晶元A 流程相似,只是在接收串口數據時,控制晶元A 程序對數據幀的校驗方式不同。
    圖4 為程序流程圖,其中UART()定義為串列中斷服務程序;Int1()定義為外部中斷1 中斷服務程序;TranByte 定義為發送緩存區;RecByte 定義為接收緩存區;Recsum 定義為接收緩存區計數;Transum 定義為發送緩存區計數;delay 定義為延時子程序;flag 定義為系統狀態控制字,其中flag.7 定義為接收緩存區狀態標誌;flag.6 定義為發送緩存區狀態標誌。
 

4. 在自主移動機器人系統中的應用
    在自主移動機器人系統中,可靠穩定的通訊系統對機器人與上位機、機器人與機器人之間的信息交換是十分重要的。基於nRF401 的無線通訊系統可以作為中小型自主移動機器人的無線通訊部分,在應用中,將該系統通過跳線設置為RS232 模式與計算機串口相連,另一套系統設置為UART 模式與機器人其它部分組成多機通訊系統,這樣便構建了一個機器人與上位機的一套無線通訊系統。
 

5. 結論
    本文給出了一種基於nRF401 的無線通訊系統設計,該系統具有硬體電路簡單、成本低廉、編程方便、可靠性高的特點。可以方便地應用於各種匯流排結構的系統中,作為其無線通訊部分,實現無線數據的雙向傳輸。無線通訊系統傳輸的安全性和可靠性依賴於良好軟體設計,由於外界干擾,無線通訊系統很容易收到誤碼,無線通訊程序設計中採用的短幀結構、三位元組校驗法,實踐證明對過濾誤碼是很有效的。另外測試表明在最高通訊速率範圍內,適當提高通訊速率可以減少誤碼率。


[admin via 研發互助社區 ] 基於nRF401 的無線通訊系統及應用已經有1950次圍觀

http://cocdig.com/docs/show-post-44728.html