使用Arduino控制RF 433MHz发送器/接收器模块的完整教程

这篇文章是有关带Arduino的用的相对比较多的RF 433MHz发送器/接收器模块的指南。我们将解释它们如何工作并分享一个Arduino项目示例,您可以将其应用到自己的项目中。

433射频接收模块怎么接(RF433MHz发送器接收器模块使用方法)(1)

描述

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

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

规格射频433MHz接收器

  • 频率范围:433.92 MHz
  • 调制方式:ASK
  • 输入电压:5V
  • 规格射频433MHz发射机

  • 频率范围:433.92MHz
  • 输入电压:3-12V
  • 哪里买(这个?)

    433射频接收模块怎么接(RF433MHz发送器接收器模块使用方法)(2)

    您只需花费几快钱即可购买这些模块。你可以比较多家商店的RF 433MHz发射器/接收器,并找到最优惠的价格。

    RF 433MHz发射器/接收器模块的Arduino应用

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

    所需零件

    此示例需要以下组件:

  • 2个Arduino
  • RF 433MHz接收器/发射器
  • 面包板
  • 跳线
  • 安装RadioHead库

    该库提供了一种简单的方法来与Arduino控制的433MHz的发射器/接收器模块的应用。请按照以下步骤在Arduino IDE中安装该库:

    1. 下载该库,您的下载文件夹中应该有一个.zip文件夹。

    2. 解压缩RadioHead 库。

    3. 将RadioHead库文件夹移至Arduino IDE安装文件夹。

    4. 重新启动您的Arduino IDE

    RadioHead库很棒,它可以与市场上几乎所有的RF模块一起使用。

    发射电路

    按照这个示意图将发射器模块连接到Arduino。

    433射频接收模块怎么接(RF433MHz发送器接收器模块使用方法)(3)

    将以下代码上传到将用作发送器的Arduino板。

    #include <RH_ASK.h>

    #include <SPI.h>

    RH_ASK driver;

    void setup()

    {

    Serial.begin(9600);

    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);

    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();

    该消息每秒发送一次,但是您可以调整此延迟时间。

    delay(1000);

    接收电路

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

    433射频接收模块怎么接(RF433MHz发送器接收器模块使用方法)(4)

    接收模块程序

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

    #include <RH_ASK.h>

    #include <SPI.h>

    RH_ASK driver;

    void setup()

    {

    Serial.begin(9600);

    if (!driver.init())

    Serial.println("init failed");

    }

    void loop()

    {

    uint8_t buf[12];

    uint8_t buflen = sizeof(buf);

    if (driver.recv(buf, &buflen))

    {

    int i;

    Serial.print("Message: ");

    Serial.println((char*)buf);

    }

    }

    接收模块程序如何工作

    与之前的草图类似,您首先需要包含必要的库:

    #include <RH_ASK.h>

    #include <SPI.h>

    您创建一个称为driver的RH_ASK对象:

    RH_ASK driver;

    在 setup()中,初始化RH_ASK对象。

    void setup(){

    Serial.begin(9600);

    if (!driver.init())

    Serial.println("init failed");

    }

    在loop()中,我们需要设置一个与接收到的消息大小匹配的缓冲区。"你好,世界!" 有12个字符。您应该根据收到的消息调整缓冲区大小(空格和标点符号也算在内)。

    uint8_t buf[12];

    uint8_t buflen = sizeof(buf);

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

    if (driver.recv(buf, &buflen)) {

    int i;

    Serial.print("Message: ");

    Serial.println((char*)buf);

    }

    示例

    在此项目中,发送模块正在发送消息" Hello World!"。通过射频连接到接收器。这些消息正在接收器的串行监视器中显示。下图显示了您在Arduino IDE串行监视器中应该看到的内容。

    433射频接收模块怎么接(RF433MHz发送器接收器模块使用方法)(5)

    写到最后

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

    希望本教程对您有所帮助。也希望喜欢电子产品的朋友分享这篇文章。喜欢的朋友记得关注,我会分享更多的项目示例。

    ,