延伸傳輸距離及複製Uart介面: Repeater與Duplicator

線」的想像!延伸與擴展凌陽創新的1-1無線Uart應用

        還記得我們之前使用凌陽創新的無線Uart傳輸模組MUART0-S-1-1製作了一個方便好用的戶外型太陽能pm2.5感測器嗎?如果您想再回顧其作法請按此:DIY太陽能無線PM2.5偵測器

雖然這個PM2.5偵測器在空矌地區的傳輸距離可達80~100公尺遠,但是大部份的環境並非空矌且無阻隔,因此傳輸距離會比想像中的更短,這種情況下我們就需要透過repeater來強化無線訊號讓傳輸距離更遠,或者有時我們會想要將Uart資號同時duplicate到不同的裝置,例如下面的場景:

        或者是想要在透天或多個房間的環境中,讓多組裝置同時接收到資訊:

上述的這些應用場景皆有下列兩種需求:

  1. 想讓Uart訊號傳得更遠
  2. 想讓多組裝置同時接收Uart資訊

這兩項需求我們可利用Repeater及Duplicator兩種裝置來達成!Repeater是將衰減中的無線訊號收到後再發射出去,具有放大的效果,而Duplicator則是將收到的訊號同時再發送給多組的接收裝置,除放大外還同時兼具複製訊號的功能。目前凌陽創新的RF Uart模組雖然僅支援1對1傳輸,但是透過多個模組的搭配,其實我們很輕易就能作出repeater以及duplicator兩種功能的裝置:

延伸RF距離的Repeater:

只需要多組MUART0-S-1-1進行簡單的串接即可達到延伸RF距離的Repeater功能,請參考下圖的說明:

        若單單使用一組MUART0-S-1-1,於空曠地距離為80~100m。

我們可透過RX/TX對接方式,增加一組MUART0-S-1-1,即可將距離擴展達一倍。

甚至不止一組,我們還可加入多組的MUART0-S-1-1,將RF訊號延伸更到更遠的距離。

複製RF訊號的Duplicator:

要讓一對一的RF Uart訊號同步複製到多個Uart介面,我們可以利用一片Arduino Mega開發板再加上幾行簡單的程式碼,再搭配多組MUART0-S-1-1即可組裝出這個Duplicator裝置,甚至於只要經費與時間允許,我們還能加入多個Arduino Mega來無限擴展複製到更多的其它Uart裝置。

        下面介紹說明Duplicator的製作方法,透過Arduino Mega開發板搭配多組MUART0-S-1-1,將單一的Uart訊號,無線傳輸複製到多個Uart接收端。

RF Uart Duplicator製作說明

        Duplicator的原理很簡單,我們只要將收到的訊息再發送出去就可以了,它與Repeater的差異在於要一次傳送給多組,而非單一組接收端,所以這個用來製作Duplicator的開發板至少必須內建至少兩組Uart(Serial)ports才行,這是我們選用Arduino Mega作為製作RF Uart Duplicator裝置的原因。

        因此您只要準備一片Arduino Mega板子,以及數套MUART0-S-1-1,然後依下文所示將程式碼燒錄進去很快就能完成了。

問:可以使用Software serial嗎?

        您可能會打算在Uno或Nano的板子上執行數個Software serial ports,或者想要同時併用Hardware 與Software serials,但是Arduino官方並不建議這樣作,因為在一塊開發板上同時使用Hardware+Software serial或者執行多組的Software serial,很容易產生傳輸瓶頸或亂碼,我們試過後也是如此。因此,建議您使用支援四組hardware serial的Arduino Mega開發板。

由於Arduino MEGA內建有四組的Hareware Serial ports(Uart ports),因此扣除一組用來接收的RX/TX之後,還有三組可以讓我們可以作出一台1對3的Uart Duplicator。組裝方式如同下圖虛線內的部份,您必須準備一片MEGA開發板以及四套MUART0-S-1-1。(可視需求安裝,也不一定要接滿三個發送端)

        程式部份如下:接收端使用的RX0/TX0對應的是Serial,傳送端RX1/TX1RX2/TX2RX3/TX3分別對應到Serial1Serial2Serial3,下方程式示範了如何讀取Serial數值後同時寫入Serial1Serial2Serial3。


void setup() {
Serial1.begin(9600); // RX1/TX1
Serial2.begin(9600); // RX2/TX2
Serial3.begin(9600); // RX3/TX3
Serial.begin(9600); // RX0/TX0
}

void loop() {
char inByte;
while (Serial.available()) {
inByte = Serial.read();
Serial1.write(inByte);
Serial2.write(inByte);
Serial3.write(inByte);
}
}

        程式燒錄完成後,這個Duplicator就可以如下的運作了,它除了能加強Uart無線訊號之外,還能將同時將Uart資訊發送給三個不同裝置。        注意:在您準備要燒錄程式到Arduino MEGA前,請先將Serial的RX0/TX0拔起不要插上,否則會出現無法寫入的錯誤,這是因為這個Serial port預設由連接PC的USB介面所共用,若在燒錄時未拔起會出現無法燒錄的錯誤。

成品範例

        這是完成的1對3 無線Uart Duplicator,您可以把它應用在任何使用Uart介面的裝置上,讓它升級成無線Uart並同時傳輸給三個不同的裝置。

例如,我們把這個Replicator應用在上次的成品:太陽能無線PM2.5偵測器上,讓PM2.5的資訊可同時送給三個裝置來顯示,如下分別是二台Arduino以及一台樹莓派。

廣告