RF 433MHz 发射器/接收器模块使用 – Arduino教程

释放双眼,带上耳机,听听看~!

这篇文章是关于使用 Arduino 的流行 RF 433MHz 发射器/接收器模块的指南。我们将解释它们的工作原理并分享一个 Arduino 项目示例,您可以将其应用到您自己的项目中。 

RF 433MHz 发射器/接收器模块使用 - Arduino教程

描述

在本教程中,我们将使用 FS1000A 发射器和相应的接收器,但提供的说明也适用于以类似方式工作的其他 433MHz 发射器/接收器模块。这些 RF 模块在 Arduino 爱好者中非常受欢迎,并用于需要无线控制的各种应用。

这些模块非常便宜,您可以将它们与任何微控制器一起使用,无论是 Arduino、ESP8266 还是 ESP32。

规格 RF 433MHz 接收器

  • 频率范围:433.92 MHz
  • 调制方式:ASK
  • 输入电压:5V

规格 RF 433MHz 发射器

  • 频率范围:433.92MHz
  • 输入电压:3-12V

带有 RF 433MHz 发射器/接收器模块的 Arduino

在本节中,我们将构建一个简单的示例,使用 433 MHz 将消息从 Arduino 发送到另一个 Arduino 板。Arduino 板将连接到 433 MHz 发射器并发送“Hello World!” 信息。另一个 Arduino 板将连接到 433 MHz 接收器以接收消息。

所需零件

对于此示例,您需要以下组件:

  • 2 x Arduino
  • RF 433MHz 接收器/发射器 
  • 面包板
  • 跳线

安装 RadioHead 库

RadioHead库提供一种通过 Arduino 使用 433 MHz 发射器/接收器的简单方法。请按照以下步骤在 Arduino IDE 中安装该库:

该库非常棒,它适用于市场上几乎所有的射频模块。

变送器电路

按照下图将发射器模块连接到Arduino。

RF 433MHz 发射器/接收器模块使用 - Arduino教程

重要提示:请务必检查您正在使用的发射器模块的引脚排列。通常,引脚旁边有标签。或者,您也可以查看模块的数据表。

 发射机程序

将以下代码上传到将充当发射器的Arduino板。这是基于 RadioHead 库提供的示例之一。

#include <RH_ASK.h>
#include <SPI.h> // Not actually used but needed to compile

RH_ASK driver;

void setup()
{
    Serial.begin(9600);	  // Debugging only
    if (!driver.init())
         Serial.println("init failed");
}

void loop()
{
    const char *msg = "Hello World!";
    driver.send((uint8_t *)msg, strlen(msg));
    driver.waitPacketSent();
    delay(1000);
}

 

发射机程序的工作原理

首先,包括 RadioHead ASK 库。

#include <RH_ASK.h>

此库需要 SPI 库才能工作。因此,您还需要包含 SPI 库。

#include <SPI.h>

之后,创建一个名为 driver 的 RH_ASK 对象。

在 setup() 中,使用 init() 方法初始化 RH_ASK 对象。

Serial.begin(9600); // Debugging only
if (!driver.init())
    Serial.println("init failed");

在 loop() 中,我们编写并发送消息。消息保存在 msg 变量上。请注意,消息的类型必须为 char。

const char *msg = "Hello World!";

此消息包含“Hello World!”消息,但您可以发送任何您想要的内容,只要它是 char 格式即可。

最后,我们发送如下消息:

driver.send((uint8_t *)msg, strlen(msg));
driver.waitPacketSent();

消息每秒发送一次,但您可以调整此undefined时间。

delay(1000);

 接收器电路

按照下图将接收器模块连接到另一个Arduino。

RF 433MHz 发射器/接收器模块使用 - Arduino教程

重要提示:请务必检查您正在使用的发射器模块的引脚排列。通常,引脚旁边有标签。或者,您也可以查看模块的数据表。

 接收器程序

将下面的代码上传到连接到接收器的Arduino。

 

接收器程序的工作原理

与前面的程序类似,首先要包含必要的库:

#include <RH_ASK.h>
#include <SPI.h>

创建一个名为 driver 的RH_ASK对象:

RH_ASK driver;

在 setup() 中,初始化 RH_ASKobject。

void setup(){
    Serial.begin(9600); // Debugging only
    if (!driver.init())
    Serial.println("init failed");
}

在 loop() 中,我们需要设置一个与我们将接收的消息大小相匹配的缓冲区。“Hello World!”有 12 个字符。您应该根据您将收到的消息相应地调整缓冲区大小(空格和标点符号也计算在内)。

uint8_t buf[12];
uint8_t buflen = sizeof(buf);

然后,检查您是否收到了有效的消息。如果收到有效消息,请在串行监视器中打印该消息。

if (driver.recv(buf, &buflen)) {
    int i;
    // Message with a good checksum received, dump it.
    Serial.print("Message: ");
    Serial.println((char*)buf);
}

 示范

在这个项目中,发射器通过射频向接收器发送消息“Hello World!”。这些消息显示在接收方的串行监视器中。下图显示了您应该在 Arduino IDE 串行监视器中看到的内容。

RF 433MHz 发射器/接收器模块使用 - Arduino教程

 总结

使用此模块时,您需要有一些切合实际的期望。当接收器和发射器彼此靠近时,它们工作得很好。如果将它们分开太远,您将失去通信。通信范围会有所不同。这取决于您为发射器模块提供多少电压、环境中的射频噪声以及您是否使用外部天线。

给TA打赏
共{{data.count}}人
人已打赏
ArduinoArduino-进阶动态

nRF24L01 – 2.4GHz RF 收发器使用 - Arduino教程

2023-12-9 13:57:01

ArduinoArduino-进阶动态

使用Arduino解码和发送433 MHz RF信号

2023-12-9 14:30:55

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
'); })();