2017年8月21日 星期一

*1*nRF24L01+*1* 如何提高 nRF24L01+ 無線模組的傳輸距離與穿牆效果? 加碼:不同天線形式的穿牆測試

網頁最後修改時間:2017/08/21

nRF24L01+ 板載天線的無線模組在空曠處無遮蔽的情況之下,距離可達上百公尺!但是在隔著木板牆甚至是水泥牆時,傳輸距離就會大打折扣!因此在參考其他網路上的建議,加上了兩支平行的天線,來提高傳輸距離並且提高穿牆效果;由於這些資料原網站都有,我在這邊只做必要的照片重拍與解釋的動作,測試的程式直接沿用。

在這篇網頁,我們的重點是:
  • 樓層與樓層之間,前面與後面都相隔幾堵(水泥)牆 (公寓則是都在同一層,應該牆壁少,所以影響會比較小),對於無線模組的影響有多少?
  • 傳輸成功率變為多少 ? 
  • 這些修改過的無線模組能夠幫我穿多少牆?
  • 是否能夠在建立多節點 (Nodes) 無線感測器網路時可用來減少 PA+LNA 無線模組的使用 ?
雖然可以全部都選用高功率的無線模組來用,但這只是增加點到點的距離而已,並無法解決接收的模組超過六個、點到點的距離超過限制的問題!

所以,在更進一步討論這問題之前,測試是必須的 !

nRF24L01+ 板載天線改裝與測試程式碼參考網頁

改裝板載天線
為了加強板載天線的穿牆效果,此種改裝會破壞原有無線模組上面的板載天線,請動手前三思!

這種改裝參考 Dipole Antenna ( 偶極天線,WIKIPEDIS [英文, 中文]) 的設計方式,使用一對對稱的導體構成天線 (建議使用 24 ~ 30 AWG 單芯線),天線的長度為半波長 (如下所示)。因為天線的長度會根據使用的頻率、線徑大小有所不同,但這就不在本文的討論之內,其他的自行爬文吧,本文使用參考網頁裡面的建議。
Dipole antenna standing waves animation 461x217x150ms.gif
By Chetvorno - Own work, CC0, Link

/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 改裝與偶極天線焊接位置:
請準備一支雕刻刀(或是美工刀),有兩個地方需要先修整一下。

首先,參照下面左圖示,移除掉上面打叉叉的黃色金屬部分部分,斷開無線模組正面板載天線與電路連接的地方,只剩下紅字 S 的部分;而這部分就是等一下要焊接的地方。
板載天線無線模組正面修改與焊接位置
反過來背面。仔細看距離頂部 6mm 的地方有一條線 (被覆蓋在黑色圖層下面),從這條線往下大概 1.5mm 的地方有一排圓點,在如下圖這個地方,用美工刀把上面的黑色塗層割掉一塊大概長方形 1.5mm * 3.5 mm 的區域,就能看見黃色金屬出現,這區域就是等一下要焊接的地方。
板載天線無線模組背面修改與焊接位置
裁減兩條單芯線,長度各取 5 公分長。單芯線的一端剝線 2mm,然後使用尖嘴鉗或是其他工具,壓平上面 6mm 左右的塑膠皮 (如果沒有做這個動作,單芯線拱在電路上會不好焊,而且容易在壓線調整時脫落),然後依照上面的兩個照片圖示,進行焊接並將線彎曲。形狀出來後使用熱熔膠封住焊接點與彎曲調整後的單芯線位置和形狀。

最後,依照所標示的單芯線長度進行多餘長度修剪,就完成了!
天線改裝偶極天線前後對照照片
參考接線圖:

下圖是測試所使用的接線圖。參考的網頁上沒有這一份,方便起見我畫了一份 (沒有包括 1602 LCD 的部分),請照著接好 echo (子節點) 與 main (主節點) 的線 (無線模組必須使用轉接板)
參考接線圖 (main 沒有包含 1602 LCD 的接線部分)

上圖,接收端的開關是用來輸出每次通訊時的統計資料 (下面再做說明)。

/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 材料:
請注意到,我們這邊所使用的無線模組,都是有加裝轉接板的!如果不接轉接板跟著接線會燒掉無線模組。

函式庫與程式碼下載:
進入到參考網頁之後到第五步驟,下載裡面的 ZIP檔案。解壓縮會有兩個 *.ino 的檔案 (RF24_Reliaility_echo.ino, RF24_Reliability_main.ino),請為每一個檔案新增一個同名稱的目錄 (不要加上副檔名),接著下載 (同 *0*nRF24L01+*0* Arduino 二點四GHz 訊號掃描器) 使用的函式庫,並安裝

函式庫下載

打開 Arduino IDE,載入 RF24_Reliability_main.ino 編譯並燒錄到 main(主節點);載入 RF24_Reliability_echo.ino 編譯並燒錄到 echo(子節點)。

/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
網頁提供的電路圖沒有 1602 LCD 的接線部分,所以使用者有兩個選擇:自己接上 1602 LCD 的接線,或是移除 1602 LCD 相關的程式碼 (我是移除掉的)。
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*

穿牆測試:

穿牆測試所用到的無線模組,有板載天線 (Normal,左下)、偶極天線 (Dipole,右下) 和外接天線 (PA,上方) 三種 (發射、接收各一組),所以一個位置會有 9 筆測試數據。
測試所需要的無線模組
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 測試點說明:
測試的地點選擇如下面的四層樓水泥隔牆建築物,將其分為 8 個測試點 (就近電源插座)。其中,0 是 main (主節點),1 ... 8 是 echo (子節點);子節點點根據實際使用的情況,有關門或不關門的情況 (除了 7 (樓梯間) 和 8  )
測試點位置與編號
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 輸出訊息說明:
下圖左方是 echo 接收到 main 傳送的數據後,先回傳 ACK 再輸出接收到的數據。右方則是傳送資料之後收到 ACK 的數據資料。
(左) echo(子節點) 與 (右) main(主節點) 輸出訊息
echo 和 main 程式裡面關於 nRF24L01+ 的設定:傳送速率都設定為最低的 250Kbps 以拉長傳輸距離;預設的發射功率為 HIGH;預設數據嘗試傳送的次數 15 次,每次延遲時間 1250us。

當中,echo 的預設功率可以使用 Serial Monitor 去做修改,但是在測試中都是使用設設的功率設定;main 的發射功率 (大約) 每隔 1000 ms 做循環,順序 HIGH -> LOW -> HIGH -> MAX,不使用 MIN 的功率設定。統計數據可以等待相互通訊大約 60 秒後會自動輸出,或是切換開關即可得到。不過有一點需要注意的是,要讓數據穩定以取得輸出數據,建議超過 12 秒 (或是更長) 再使用開關切換;開關切換也可用在重新一次的循環測試上。

最後的統計數據輸出就如下面表示。更詳細的可參考程式碼,裡面解釋的也非常清楚!
Recent Minimum & Maximum averages: 
Mins: 392/s  100% 8 ms  (每秒最小平均封包數、最小平均成功率、和最小平均封包延遲時間)
Maxs: 407/s  100% 22 ms (每秒最大平均封包數、最大平均成功率、和最大平均封包延遲時間) 
The Average packets per second: 388 (每秒封包數)  Success rate: 100 % (成功率)

/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 測試結果:
每一個 echo 所在的位置 (1 ... 8) 都會更換三種無線模組,每個位置擺放無線模組都維持固定,其中 PA+LNA 的天線角度為 90 度;而在 main 所在的位置 0 也會更換三種無線模組,情況跟其他位置一樣,只有 PA+LNA 擺放角度為 45 度。

整理  8 個位置 81 筆測試的數據後,固定 echo 八個位置的無線模組形式,main 位置變換使用三個無線模組形式後,可得到下面三個立體區域圖。所顯示的數據是成功率百分比 (%)。

由下圖可看出,在 8 個測試的位置上使用 Normal 的板載天線無線模組,只有當位置 0 使用 PA+LNA 模組才有 ACK 回傳
測試位置使用 Normal 無線模組所得的傳輸成功率百分比 (%)
更換 8 個位置使用 Enhanced 改裝天線的無線模組,其中在位置 0 更換為 Enhanced 無線模組後,兩個 echo 位置的效果出來了!
測試位置使用 Enhanced 無線模組所得的傳輸成功率百分比 (%)
最後,更換 8 個位置使用 PA+LNA 無線模組後,穿牆效果更佳的顯著!
測試位置使用 PA+LNA 無線模組所得的傳輸成功率百分比 (%)
對於上面的數據大概整理之後,其實有再進行一次測試!也就是針對同一樓層條件差不多的情況之下,只改變 PA+LNA 在位置 0 的天線擺放位置為平放 (與無線模組一直線) 再做測試;結果發現可以大幅提升並改善收發情況 (例如 5 (3F,不關)),值得作為之後無線溫濕度感測器網路節點擺放的參考依據。

結論:
2.4GHz 無線模組的通訊很容易受到遮蔽物大減傳輸距離,利用參考網頁所提供的改裝方式,經過測試可 (大幅?) 增加空曠處通訊距離與穿牆效果。

天線擺放方式與角度會影響通訊效果!若發現通訊應該正常的情況之下通訊不好,可調整天線角度試試!

最後,這些測試的結果,將會作為我們之後佈署無線溫溼度感測器網路時,各節點的無線模組選用的依據。

<< 部落格相關網頁 >>

沒有留言:

張貼留言