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
时,变为关闭。