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

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

本教程介绍如何使用Arduino解码来自RF遥控器的433 MHz信号,并使用Arduino和433 MHz发射器发送信号以远程控制电源开关插座。

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

为什么要解码射频信号?

我尝试了不同的方法来控制电源电压,但有些方法需要:

  • 处理交流电压的经验
  • 在墙壁/天花板/开关上开孔
  • 修改电气面板
  • 了解每个国家/地区的电气规则

很难想出一个安全且适合所有人的解决方案。远程控制连接到电源电压的电器的最简单、最安全的方法之一是使用射频 (RF) 控制的插座。为什么?使用遥控插座有 5 个好处:

  1.  相当便宜
  2.  容易获得
  3. 适用于 ESP8266 和 Arduino
  4.  使用安全
  5. 适用于任何国家/地区

 所需零件

在本教程中,需要以下部分:

  • Arduino UNO
  • 433 MHz 射频遥控插座
  • 433 MHz 发射器/接收器
  •  面包板
  •  跳线

 

以下是它们的外观:

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

设置 RF 通道

我已将遥控器设置到 I 位置。

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

插座必须都在 I 位置上。我为网点选择了频道 3 和 4(您可以使用任何您想要的频道)。

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

如果您将它们插入插座,您应该能够使用遥控器控制遥控器插座。

安装 RC 交换机库

RC Switch 库提供了一种使用 ESP8266、ESP32 或 Arduino 操作远程无线电控制设备的简单方法。这很可能适用于所有流行的低成本电源插座。

打开解码器程序

您需要解码遥控器发送的信号,以便Arduino或ESP8266可以再现这些信号并最终控制插座。

该库附带了几个程序示例。在Arduino IDE软件中,您需要转到文件>示例> RC_Switch > ReceiveDemo_Advanced。下一个程序打开:

/*
  Example for receiving
  
  https://github.com/sui77/rc-switch/
  
  If you want to visualize a telegram copy the raw data and 
  paste it into http://test.sui.li/oszi/
*/

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
    mySwitch.resetAvailable();
  }
}

 

您必须使用“文件”>“示例”> RC_Switch > ReceiveDemo_Advanced打开示例,以便它也会自动加载输出文件。

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

将Arduino板连接到计算机,请按照以下说明操作:

  1. 转到“工具”选项卡
  2.  选择Arduino UNO板
  3.  选择 COM 端口
  4.  按上传按钮。

 解码器 – 原理图

上传程序后,将 433MHz 射频接收器连接到 Arduino UNO 板的数字引脚 2:

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

解码射频信号(代码)

打开 Arduino IDE 串行监视器并开始按下按钮。如下面的视频演示所示:

按下每个按钮一次后,您可以看到每个按钮的二进制代码(以红色突出显示):

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

保存每次按下按钮的二进制代码(您也可以使用十进制或三态代码):

  • 按钮 3 ON = (24 位) 二进制:000101010101000101010101
  • 按钮 3 OFF =(24 位)二进制:000101010101000101010100
  • 按钮 4 ON = (24 位) 二进制:000101010101010001010101
  • 按钮 4 OFF =(24 位)二进制:000101010101010001010100

保存您的脉冲长度:416 微秒和协议:1。

发送射频信号(代码)

您需要使用二进制代码、脉冲长度和协议自定义下一个程序:

 

就我而言,脉冲长度和协议如下所示:

// Optional set pulse length.
mySwitch.setPulseLength(416);
 
// Optional set protocol (default is 1, will work for most outlets)
mySwitch.setProtocol(1);

下面是一个二进制发送者示例(您必须替换为自己的二进制代码):

mySwitch.send("000101010101000101010101");

 发送方原理图

将程序上传到Arduino板后,组装以下电路:

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

您的两个插座都应该连续打开和关闭。

 总结

本教程介绍le 如何使用Arduino解码来自RF遥控器的433 MHz信号,并通过Arduino和433 MHz发射器发送信号以远程控制电源开关插座。通过解码射频信号,可以避免处理交流电压和修改电气面板,使远程控制电器的连接更为简便和安全。使用RC Switch库和Arduino,您可以轻松实现这一目标,同时确保设备适用于任何国家/地区。

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

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

2023-12-9 14:06:00

Nodemcu/ESP8266Nodemcu/ESP8266-基础动态

中断和定时器使用 - NodeMCU

2023-12-9 21:10:16

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