
使用红外遥控器,您可以让 Arduino 项目变得简单有趣。红外技术可以帮助您控制家中的各种设备。您可以自己制作遥控器,也可以读取其他遥控器的信号。借助 Arduino 红外遥控系统,您可以创造全新的设备控制方式,还可以创建专属的遥控器。Arduino 红外遥控设置是为您的项目添加无线控制功能的简便方法。
应用类型 | 描述 |
|---|---|
控制家用电器 | 使用红外遥控器控制家里的电视和其他电器。 |
定制遥控器 | 制造遥控器,以便更轻松地控制多种设备。 |
信号解码 | 再次使用信号来控制新设备。 |
构建自定义控件 | 为Arduino红外遥控工作创建满足特殊需求的控制方案。 |
你可以先从连接一个基本的红外接收器开始。然后你可以尝试一些关于Arduino红外遥控的新想法。
红外通信基础知识
什么是红外线?
红外线(IR)使设备之间能够相互发送信号。红外线是一种肉眼不可见的光。红外通信利用这种不可见光来传递信息。遥控器和接收器使用红外发光二极管(IR LED)和传感器来实现这一功能。红外线主要有两种工作方式:点对点和漫射。点对点通信需要遥控器正对接收器。漫射通信则允许设备之间无需直线传输即可进行通信。红外线的工作频率范围为 300 GHz 至 400 THz。电视、耳机和家庭安防系统等设备都应用了红外线技术。
提示:红外信号无法穿透固体。请确保遥控器和接收器之间没有任何障碍物阻挡。
红外通信使用红外光脉冲。
红外信号在没有任何障碍物的情况下效果最佳。
红外技术被广泛应用于许多家用电子产品中。
红外遥控器和红外接收器
要使用红外功能,您需要红外遥控器和红外接收器。遥控器以红外光脉冲的形式发送数据,接收器接收并解码这些脉冲。对于 Arduino 红外项目,通常需要用到 SunFounder Uno 开发板、USB 数据线、红外接收模块、遥控器和三针连接线。
元件 | 功能 |
|---|---|
红外遥控器 | 发送红外信号 |
红外接收模块 | 获取并解码信号 |
Arduino板 | 处理接收到的数据 |
红外遥控器使用一种称为消费级红外(Consumer IR)的特殊编码方式。这种方式发送指令的速度较慢,最高可达每秒 4000 比特,传输速率为 32 位。接收器会检测红外光脉冲和间隔的持续时间。38 kHz 的调制频率有助于接收器忽略其他光源的干扰。
IR协议
您可以使用协议来控制红外设备。协议是发送和读取红外信号的规则。NEC 协议在电子领域非常常见。其他常用的协议包括 JVC、Sony SIRC、Philips RC5 和 RC6。这些协议使用 38 kHz 的载波来发送二进制信号。
NEC远程协议
RC5遥控协议
JVC协议
索尼SIRC协议
飞利浦 RC6 协议
红外遥控器上的每个按钮都会发送自己的代码。接收器会将代码与相应的指令进行匹配。协议和编码确保每个按钮的功能都不同。由于每个代码都是独一无二的,因此您可以实现精准控制。
Arduino红外遥控器设置

红外接收器引脚图
开始之前,你需要了解引脚定义。 Arduino红外遥控器设置大多数红外接收器有三个引脚。每个引脚都有其特定的功能。您必须将每个引脚连接到 Arduino 板上的正确位置。这有助于您的设置正常工作。
红外接收器引脚 | Arduino 引脚 |
|---|---|
– | GND |
+(中间引脚) | 5V |
S | 数字引脚 11 |
负极引脚接地(GND)。正极引脚接5V电源。信号引脚连接到数字引脚,通常是引脚11。请务必查看红外接收器的数据手册。有些接收器使用不同的引脚名称,但大多数都遵循此模式。
连接 Arduino
要使Arduino红外遥控器正常工作,必须将红外接收器连接到Arduino。 跳线便于安装请务必将接收器连接到正确的引脚。这一步对于确保良好的硬件连接至关重要。
红外线接收器 | Arduino的 |
|---|---|
出局(左) | 销2 |
GND(中间) | GND(-) |
Vcc(右) | 5V(+) |
请按照以下步骤进行设置:
将红外接收器放在面包板上。
将 OUT 引脚连接到 Arduino 的数字引脚 2。
将 GND 引脚连接到电路板上的 GND。
将 Vcc 引脚连接到 5V 引脚。
提示:通电前请仔细检查每根连接线。连接错误会导致您的 Arduino 红外遥控装置无法正常工作。
硬件检查
连接接收器后,您需要检查一下连接情况。确保每根电线都连接牢固。检查是否有松动的电线或弯曲的针脚。您的 Arduino 红外遥控装置需要可靠的硬件连接。如果接收器上的指示灯闪烁,则表示连接正常。如果指示灯不闪烁,请再次检查接线。
您可以使用万用表测试接收器的电压。5V 引脚的电压应接近 5 伏。GND 引脚的电压应为零。当您按下红外遥控器上的按钮时,信号引脚的电压应该会发生变化。这表示您的设置已准备就绪,可以进行下一步操作。
Arduino编程和代码阅读
安装 IRremote 库
您需要 IRremote 库来对红外接收器进行编程。该库可以帮助您读取遥控器的信号。要安装它,请按照以下步骤操作:打开 Arduino IDE。依次点击“项目”、“包含库”、“管理库”。在库管理器中搜索“Arduino-IRremote”。点击“安装”。
如果您看到类似“TCCR2B 未声明”或重定位错误之类的提示,则可能是芯片不匹配。这些问题通常出现在 Attiny 微控制器上。您可以使用 Arduino IDE 1.0.5 版本来解决这些问题。请确保库文件位于正确的文件夹中。
安装库之后,即可开始对红外接收器进行编程。IRremote 库提供了一些示例,可帮助您读取代码和控制设备。
读取红外代码
您可以使用 IRremote 库示例来读取遥控器的代码。打开“IRrecvDemo”示例程序,并将其上传到您的 Arduino 开发板。将红外接收器连接到开发板。在 Arduino IDE 中打开串口监视器。
按下遥控器上的按钮,红外接收器会接收到信号。Arduino 会解码该信号并以十六进制格式显示代码。按下每个按钮,找到对应的代码。记下这些代码,以便日后使用。
提示:要记录所有按键的代码,请按下每个按键并在串口监视器中记下代码。这有助于您找到遥控器的代码。
您可能想知道遥控器使用的是哪种协议。您可以通过以下几种方式实现:使用示波器查看信号;使用红外接收器和 Arduino 解码协议;尝试脉冲宽度调制 (PWM) 或双相编码 (Bi-Phase encoding) 等编码方法。
IRremote库示例通常会在代码旁边显示协议名称。这有助于您将代码与正确的协议匹配。
代码到操作的映射
找到遥控器的代码后,就可以在 Arduino 程序中将它们映射到相应的动作。使用 IRremote 库示例来控制 LED、电机或其他设备。将代码上传到 Arduino。打开串口监视器。将遥控器对准红外接收器并按下按钮。Arduino 会读取代码并执行你设置的动作。
您可以使用红外按键代码来控制输出。例如,用一个按钮打开 LED,用另一个按钮关闭它。您还可以使用代码来控制电机或继电器。在您的程序中为每个要使用的代码设置相应的动作。
记录每个按钮的代码。
使用 Arduino 程序中的代码来控制输出。
为每个代码设置功能,以创建自定义遥控器。
尝试不同的示例,学习如何在多种设备上使用代码。
您可以尝试将代码映射到新的操作。这样,您就可以为项目构建自定义控件。如果您需要为新的遥控器添加代码,请重复上述步骤并更新您的程序。使用 Arduino 对红外接收器进行编程,可以为您提供多种无线控制方式。
使用红外遥控器控制输出
LED和器件
你可以使用红外遥控器来控制 Arduino 控制各种设备。最常见的控制对象是 LED 灯和家用电器。首先,设置红外接收器并将其连接到 Arduino。遥控器上的每个按钮都会发送一个独立的信号。Arduino 读取这些信号并控制你想要控制的设备。
LEDs
许多设备无需电线即可控制。
您可以同时点亮多个 LED。在代码中,选择每个 LED 对应的引脚。使用 switch case 语句将每个按钮与特定的 LED 或设备匹配。按下按钮时,Arduino 会打开或关闭相应的输出。
提示:您可以使用红外遥控器来控制灯、风扇或其他无线设备。
以下是一个控制多个 LED 的简单代码示例:
#include <IRremote.h>
int IR_Recv = 3;
int ledPins[] = {5, 6, 9, 10};
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(ledPins[i], OUTPUT);
}
IrReceiver.begin(IR_Recv, ENABLE_LED_FEEDBACK);
}
void loop() {
if (IrReceiver.decode()) {
switch (IrReceiver.decodedIRData.command) {
case 0x10: digitalWrite(ledPins[0], HIGH); break;
case 0x11: digitalWrite(ledPins[1], HIGH); break;
case 0x12: digitalWrite(ledPins[2], HIGH); break;
case 0x13: digitalWrite(ledPins[3], HIGH); break;
}
IrReceiver.resume();
}
}
您可以根据项目需要更改密码和代码。这种方法适用于任何遥控器。
针对不同遥控器进行定制
你可能需要使用不同类型的红外遥控器。你需要稍微修改一下你的Arduino代码。首先,找出你的遥控器使用的红外协议。记下每个按钮对应的指令。观察每个功能对应的信号并做好记录。一次只更改一项,并记录下发生的情况。
找出您遥控器的红外协议。
写下每个按钮的指令。
检查并记录每个信号和任务。
一次只改变一件事,并记录结果。
借助红外遥控器,您可以修改 Arduino 项目以兼容多种遥控器。这使您能够控制许多设备。只需更新代码,添加新的命令和协议,即可使用任何遥控器。
红外接收器及故障代码排查

硬件问题
您的红外接收器设置可能存在问题。硬件问题通常会导致您的 Arduino 项目无法正常工作。您可以使用手机摄像头检查红外 LED。摄像头可以看到肉眼无法看到的光线。如果您看不到任何光线,请尝试反转 LED 的方向。有时,LED 的方向可能装反了。将电视遥控器对准接收器,观察状态指示灯。如果状态指示灯闪烁,则表示接收器已接收到信号。如果遮挡光束后状态指示灯仍然亮着,请遮挡红外信号,并观察接收器是否有反应。
电线松动或引脚弯曲都可能导致故障。请确保检测器与 Arduino 连接正确。使用万用表检查接收器引脚的电压。GND 引脚的电压应为零。5V 引脚的电压应接近 5 伏。按下遥控器上的按钮时,信号引脚的电压应该会发生变化。如果没有变化,请再次检查接线。
提示:请在阴凉处测试您的系统。阳光直射或强光会干扰红外接收器。在室内或光线较暗的环境下测试效果更佳。
使用手机摄像头检查其LED指示灯。
如果LED灯不亮,请将其反转。
将电视遥控器对准接收器,观察是否有闪光。
确保探测器导线连接到Arduino。
屏蔽红外信号并检查状态指示灯。
测试接收器引脚上的电压。
软件和信号问题
软件问题可能会导致红外接收器无法工作。您可以选择使用 IRremote 或 IRLib 库来发送和读取红外信号。请尝试运行这些库中的所有示例程序。测试示例有助于您查找接收器或遥控器的问题。有时,接收器可能无法解码某些遥控器的信号。请检查您的库是否支持遥控器的协议。
环境光或其他红外光源可能会干扰接收器。硬件滤波器有助于减少不必要的光线。请将接收器放置在远离强光的地方。在黑暗的房间里测试您的系统,看看接收器是否工作得更好。如果问题仍然存在,请检查附近是否有其他红外光源。
尝试使用不同的库,例如 IRremote 或 IRLib。
测试所有示例草图,以查找软件问题。
检查您的接收器是否能解码来自遥控器的信号。
使用硬件滤光片阻挡不需要的光线。
将接收器移离强光处。
在暗室中进行测试可获得更佳效果。
寻找其他可能造成干扰的红外线源。
注意:解码多种红外遥控信号有助于您查找兼容性问题。请务必记录每个按钮的代码,并将其与 Arduino 程序中的正确操作进行匹配。
您已经学习了如何使用带有红外遥控器的 Arduino。以下步骤可以帮助您:
安装 IRremote 库。将红外传感器连接到正确的引脚。
使用示例代码从遥控器获取信号。观察显示器上的输出。
将遥控器上的每个按钮与项目中的控制操作一一对应。
尝试使用不同的遥控器,以改善控制效果并解决问题。
如果您需要帮助,请查看以下社区资源:
讨论标题 | 描述 |
|---|---|
帮助 | 询问有关红外遥控器的问题。 |
如何解读监视器输出的红外热码原始数据? | 学习如何读取和使用红外代码数据。 |
sendSamsungLG() 函数在我的 LG HX906 上不起作用。 | 查找设备兼容性问题的答案。 |
ESP32 存在问题,通道 0 已被用于显示。 | 获取有关 ESP32 和红外遥控器问题的提示。 |
bootloop | 看看其他人是否也遇到同样的红外遥控器问题。 |
故障排除是学习的一部分。尝试新的控制方法,并测试不同的遥控器。
常见问题解答
如何判断你的红外接收器是否工作?
您可以通过将遥控器对准红外接收器并观察 LED 指示灯闪烁来检查其工作状态。如果您按下按钮时看到指示灯闪烁,则说明接收器已接收到信号。您也可以使用手机摄像头查看红外灯。
为什么你的Arduino无法读取任何红外代码?
你可能有一个 线路故障或图书馆问题检查所有连接,确保使用正确的引脚。安装 IRremote 库。运行示例程序测试您的设置。确保您的 Arduino 板已通电。
你的Arduino红外接收器可以使用任何遥控器吗?
大多数红外接收器都能与多种遥控器配合使用。你需要找到每个按键对应的代码。有些遥控器使用特殊协议。使用 IRremote 库测试你的遥控器。记下代码,并将它们与你程序中的相应操作匹配起来。
如果您的红外信号无法到达接收器,您应该怎么办?
移除遥控器和接收器之间的障碍物。红外信号需要畅通无阻的传输路径。尝试在阳光较少的房间内使用您的设备。检查接收器是否正对着遥控器。
如何使用Arduino红外遥控器控制多个设备?
你可以在程序中将不同的代码映射到不同的输出。为每个按钮代码使用 switch 语句。将更多设备连接到 Arduino,并为每个设备设置相应的动作。测试每个按钮,确保其正常工作。




