學習目標 : 認識faya RF發射接收模組的功能及使用方式
學習時間 : 45mins
示範模組 : (1) fayaduino Nano(x2)
(2) faya RF發射模組
(3) faya RF接收模組
====================功能介紹====================
faya RF發射與接收模組透過簡單的接線,從Arduino的函式下指令,就能輕鬆的傳送和讀取資料,完全不需要有藍芽或Wifi背景知識,使用起來非常方便。
faya RF發射模組外觀如下圖,它的左邊兩個埠分別是Din和NC(No Connection - 無作用),Din用來接收來自Arduino的數位訊號,內部電路將訊號調變至315MHz的頻段由天線 (ANT)發射設至空氣中。
faya RF接收模組外觀如下圖,它的右邊兩個埠分別是Dout和NC,天線接收到空氣中315MHz頻段訊號後,利用內部的電路還原回數位訊號,然後從Dout埠傳給Arduino接收處理。
注意到我們這個範例需要用到VirtualWire函式庫,函式中以預先設定好腳位,因此連接線路時必須跟著預設腳位連接
Arduino D12 --- RF發射_Din
Arduino D11 --- RF接收端Dout
====================原理知識====================
以下解釋提供給有需要知道背後原理的人:
本電路將發射訊號
RF發射模組:本電路將發射訊號
利用315MHz晶體產生在315MHz的諧振電路,並將數位訊號以ASK(Ampliture Shift Keying)調變的方式傳送至空氣中。
電路圖如下所示:
RF接收模組:
電路主角為MICRF002BM RF接收IC,此IC接收頻段為300~440Mhz,按照Datasheet的建議,選擇周邊電阻/電容/電感零件,就能接收315MHz頻段的ASK訊號,並將此ASK訊號解調還原成基頻的數位訊號,詳細資料可以參考Datasheet - 這裡。
====================範例實作(一)====================
了解模組功能(原理)後,我們用以下範例來展示模組的功能:
目標:
(1)利用Arduino產生"HELLO WORLD"字串,並透過RF發射模組發射目標:
(2)利用Serial Monitor,查看RF接收模組的資訊
接線:
(3) 訊號線連接 (RF接收模組)
D11 ==> RF接收模組_Dout
範例程式:
本模組需要使用[VirtulWire]函式庫來傳輸高頻訊號,函式庫可在此[下載],請在下載後解壓縮在Arduino的Libraries資料夾,重新開啟Arduino後即可使用。
不像藍芽或WiFi傳輸,有些通訊傳輸電路為了成本和功能考量,設計得比較不嚴謹 (也不需要那麼嚴謹),此時可以利用VirtualWire函式庫輔助訊號完成的傳輸,例如訊號的同步、 錯誤檢查等等,讓訊號能夠完整的傳送和接收。VirtualWire詳細介紹可以參考這邊,Datasheet可由此下載。
發射端:
備註:
- L14 : 和UART一樣,發射和接收端的傳輸速率要一致
- L19~24 : 發送字串的指令使用方式固定,需要用到此模組時,修改要傳送的資訊(L19)即可
接收端:
備註:
- L21 : 接收資料需要設定資料緩衝區大小,此大小定義在 Libraries資料夾內的 VirtualWire_Config.h,預設值為40個字元,如果預期傳輸的資料大於此字元時,可自行更改
- L24~35: 發送字串的指令使用方式固定,需要用到此模組時,直接套用即可。
範例結果:
將發射和接收程式分別上傳到兩邊的Arduino,傳送和接受資料的期間,兩邊Arduino的內建LED都會亮起。
將發射和接收程式分別上傳到兩邊的Arduino,傳送和接受資料的期間,兩邊Arduino的內建LED都會亮起。
討論:
- 連接此RF模組時,發現當天線往Arduino主板方向時擺設的話,會有接收不良的情況發生,所以請朝外擺設可以讓收訊更良好唷。
- 在沒有阻擋的情形下,筆者能夠穩定的的收到5公尺外的發射訊號,實際上應該可以更遠,前提是用比較好的電源來源,例如筆電的電源或者高品質的USB插座電源,筆者用過低品質的行動電源,傳輸距離超過1.5公尺後,接收到的資料就斷斷續續了
- 本篇範例介紹大家如何簡單的傳輸字串,大家可以把發射端連上搖桿或按鈕,讓搖桿和按鈕的狀態對應到相對地字串指令,接收端收到指令後再進行指令解碼,這樣一個簡單的遙控器就完成囉!
====================================
fayalab 粉絲團
FB本篇留言版
沒有留言:
張貼留言