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 傳送器程式碼
//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
時,變為關閉。