Arduino - 無線通訊

無線發射器和接收器模組的工作頻率為 315 MHz。它們可以輕鬆放入麵包板中,並與微控制器配合使用,建立非常簡單的無線資料鏈路。使用一對傳送器和接收器,模組只能單向通訊資料​,但是,你需要兩對(不同頻率)作為傳送器/接收器對。

- 這些模組是不加區別的,並且會收到相當多的噪音。發射器和接收器都以共同的頻率工作,沒有 ID。

無線通訊

接收器模組規格

  • 產品型號 - MX-05V
  • 工作電壓 - DC5V
  • 靜態電流 - 4mA
  • 接收頻率 - 315Mhz
  • 接收器靈敏度 - -105DB
  • 尺寸 - 30 * 14 * 7mm

傳送器模組規格

  • 產品型號 - MX-FS-03V
  • 發射距離 - 20-200 米(不同電壓,不同結果)
  • 工作電壓 - 3.5-12V
  • 尺寸 - 19 * 19mm
  • 執行模式 - AM
  • 轉移率 - 4KB / S.
  • 發射功率 - 10mW
  • 發射頻率 - 315Mhz
  • 外接天線 - 25cm 普通多芯或單芯線
  • 引腳輸出從左→右 - (DATA; VCC ; GND)

需要的元件

你將需要以下元件 -

  • 2×Arduino UNO 板
  • 1×Rf 發射器
  • 1×Rf 接收器

程式

按照電路圖進行連線,如下圖所示。

無線通訊連線

草圖

在你的計算機上開啟 Arduino IDE 軟體。用 Arduino 語言編碼將控制你的電路。單擊“新建”開啟新的草圖檔案。

草圖

- 你必須在 Arduino 庫檔案中包含鍵盤庫。將 VirtualWire.lib 檔案複製並貼上到 libraries 資料夾中,如下面的螢幕截圖所示。

Arduino 庫檔案

Arduino 傳送器程式碼

//simple Tx on pin D12
#include <VirtualWire.h>
char *controller;

void setup() {
   pinMode(13,OUTPUT);
   vw_set_ptt_inverted(true);
   vw_set_tx_pin(12);
   vw_setup(4000);// speed of data transfer Kbps
}

void loop() {
   controller="1" ;
   vw_send((uint8_t *)controller, strlen(controller));
   vw_wait_tx(); // Wait until the whole message is gone
   digitalWrite(13,1);
   delay(2000);
   controller="0" ;
   vw_send((uint8_t *)controller, strlen(controller));
   vw_wait_tx(); // Wait until the whole message is gone
   digitalWrite(13,0);
   delay(2000);
}

程式碼注意

這是一個簡單的程式碼。首先,它將傳送字元 1,兩秒後它將傳送字元 0,依此類推。

Arduino 接收器程式碼

//simple Rx on pin D12
#include <VirtualWire.h>

void setup() {
   vw_set_ptt_inverted(true); // Required for DR3100
   vw_set_rx_pin(12);
   vw_setup(4000); // Bits per sec
   pinMode(5, OUTPUT);
   vw_rx_start(); // Start the receiver PLL running
}

void loop() {
   uint8_t buf[VW_MAX_MESSAGE_LEN];
   uint8_t buflen = VW_MAX_MESSAGE_LEN;
   if (vw_get_message(buf, &buflen)) // Non-blocking {
      if(buf[0]=='1') {
         digitalWrite(5,1);
      }
      if(buf[0]=='0') {
         digitalWrite(5,0);
      }
   }
}

程式碼注意

當接收到字元 1 時,連線到 Arduino 板上的引腳號 5 的 LED 接通,當接收到字元 0 時,變為關閉。