本教程介绍如何使用Arduino解码来自RF遥控器的433 MHz信号,并使用Arduino和433 MHz发射器发送信号以远程控制电源开关插座。
目录
为什么要解码射频信号?
我尝试了不同的方法来控制电源电压,但有些方法需要:
- 处理交流电压的经验
- 在墙壁/天花板/开关上开孔
- 修改电气面板
- 了解每个国家/地区的电气规则
很难想出一个安全且适合所有人的解决方案。远程控制连接到电源电压的电器的最简单、最安全的方法之一是使用射频 (RF) 控制的插座。为什么?使用遥控插座有 5 个好处:
- 相当便宜
- 容易获得
- 适用于 ESP8266 和 Arduino
- 使用安全
- 适用于任何国家/地区
所需零件
在本教程中,需要以下部分:
- Arduino UNO
- 433 MHz 射频遥控插座
- 433 MHz 发射器/接收器
- 面包板
- 跳线
例
以下是它们的外观:
设置 RF 通道
我已将遥控器设置到 I 位置。
插座必须都在 I 位置上。我为网点选择了频道 3 和 4(您可以使用任何您想要的频道)。
如果您将它们插入插座,您应该能够使用遥控器控制遥控器插座。
安装 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板连接到计算机,请按照以下说明操作:
- 转到“工具”选项卡
- 选择Arduino UNO板
- 选择 COM 端口
- 按上传按钮。
解码器 – 原理图
上传程序后,将 433MHz 射频接收器连接到 Arduino UNO 板的数字引脚 2:
解码射频信号(代码)
打开 Arduino IDE 串行监视器并开始按下按钮。如下面的视频演示所示:
按下每个按钮一次后,您可以看到每个按钮的二进制代码(以红色突出显示):
保存每次按下按钮的二进制代码(您也可以使用十进制或三态代码):
- 按钮 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板后,组装以下电路:
您的两个插座都应该连续打开和关闭。
总结
本教程介绍le 如何使用Arduino解码来自RF遥控器的433 MHz信号,并通过Arduino和433 MHz发射器发送信号以远程控制电源开关插座。通过解码射频信号,可以避免处理交流电压和修改电气面板,使远程控制电器的连接更为简便和安全。使用RC Switch库和Arduino,您可以轻松实现这一目标,同时确保设备适用于任何国家/地区。