前言:
如今我们对“rf使用教程”大约比较重视,你们都想要了解一些“rf使用教程”的相关文章。那么小编也在网上搜集了一些对于“rf使用教程””的相关知识,希望我们能喜欢,小伙伴们一起来学习一下吧!使用Arduino控制RF 433MHz发送器/接收器模块的完整教程
这篇文章是有关带Arduino的用的相对比较多的RF 433MHz发送器/接收器模块的指南。我们将解释它们如何工作并分享一个Arduino项目示例,您可以将其应用到自己的项目中。
描述
在本教程中,我们将使用 FS1000A发送器和相应的接收器,但是这里的讲解说明也适用于以类似方式工作的其他433MHz发送器/接收器模块。这些RF模块在Arduino爱好者中非常流行,并用于需要无线控制的各种应用中。
这些模块非常便宜,您可以将它们与任何微控制器一起使用,无论是Arduino,ESP8266还是ESP32。
规格射频433MHz接收器
频率范围:433.92 MHz调制方式:ASK输入电压:5V
规格射频433MHz发射机
频率范围:433.92MHz输入电压:3-12V
哪里买(这个?)
您只需花费几快钱即可购买这些模块。你可以比较多家商店的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。
将以下代码上传到将用作发送器的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。
接收模块程序
将以下代码上传到连接到接收器的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串行监视器中应该看到的内容。
写到最后
使用此模块时,您需要有一些现实的期望。当接收器和发射器彼此靠近时,它们可以很好地工作。如果将它们分开太远,则会失去通信。通讯范围会有所不同,这取决于您要向发射机模块提供多少电压,环境中的RF噪声以及是否使用外部天线。
希望本教程对您有所帮助。也希望喜欢电子产品的朋友分享这篇文章。喜欢的朋友记得关注,我会分享更多的项目示例。
标签: #rf使用教程