Arduino红外遥控器设置和故障排除分步指南

Arduino红外遥控器设置和故障排除分步指南

使用红外遥控器,您可以让 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红外遥控器设置
图片来源: pexels

红外接收器引脚图

开始之前,你需要了解引脚定义。 Arduino红外遥控器设置大多数红外接收器有三个引脚。每个引脚都有其特定的功能。您必须将每个引脚连接到 Arduino 板上的正确位置。这有助于您的设置正常工作。

红外接收器引脚

Arduino 引脚

GND

+(中间引脚)

5V

S

数字引脚 11

负极引脚接地(GND)。正极引脚接5V电源。信号引脚连接到数字引脚,通常是引脚11。请务必查看红外接收器的数据手册。有些接收器使用不同的引脚名称,但大多数都遵循此模式。

连接 Arduino

要使Arduino红外遥控器正常工作,必须将红外接收器连接到Arduino。 跳线便于安装请务必将接收器连接到正确的引脚。这一步对于确保良好的硬件连接至关重要。

红外线接收器

Arduino的

出局(左)

销2

GND(中间)

GND(-)

Vcc(右)

5V(+)

请按照以下步骤进行设置:

  1. 将红外接收器放在面包板上。

  2. 将 OUT 引脚连接到 Arduino 的数字引脚 2。

  3. 将 GND 引脚连接到电路板上的 GND。

  4. 将 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代码。首先,找出你的遥控器使用的红外协议。记下每个按钮对应的指令。观察每个功能对应的信号并做好记录。一次只更改一项,并记录下发生的情况。

  1. 找出您遥控器的红外协议。

  2. 写下每个按钮的指令。

  3. 检查并记录每个信号和任务。

  4. 一次只改变一件事,并记录结果。

借助红外遥控器,您可以修改 Arduino 项目以兼容多种遥控器。这使您能够控制许多设备。只需更新代码,添加新的命令和协议,即可使用任何遥控器。

红外接收器及故障代码排查

红外接收器及故障代码排查
图片来源: pexels

硬件问题

您的红外接收器设置可能存在问题。硬件问题通常会导致您的 Arduino 项目无法正常工作。您可以使用手机摄像头检查红外 LED。摄像头可以看到肉眼无法看到的光线。如果您看不到任何光线,请尝试反转 LED 的方向。有时,LED 的方向可能装反了。将电视遥控器对准接收器,观察状态指示灯。如果状态指示灯闪烁,则表示接收器已接收到信号。如果遮挡光束后状态指示灯仍然亮着,请遮挡红外信号,并观察接收器是否有反应。

电线松动或引脚弯曲都可能导致故障。请确保检测器与 Arduino 连接正确。使用万用表检查接收器引脚的电压。GND 引脚的电压应为零。5V 引脚的电压应接近 5 伏。按下遥控器上的按钮时,信号引脚的电压应该会发生变化。如果没有变化,请再次检查接线。

提示:请在阴凉处测试您的系统。阳光直射或强光会干扰红外接收器。在室内或光线较暗的环境下测试效果更佳。

  • 使用手机摄像头检查其LED指示灯。

  • 如果LED灯不亮,请将其反转。

  • 将电视遥控器对准接收器,观察是否有闪光。

  • 确保探测器导线连接到Arduino。

  • 屏蔽红外信号并检查状态指示灯。

  • 测试接收器引脚上的电压。

软件和信号问题

软件问题可能会导致红外接收器无法工作。您可以选择使用 IRremote 或 IRLib 库来发送和读取红外信号。请尝试运行这些库中的所有示例程序。测试示例有助于您查找接收器或遥控器的问题。有时,接收器可能无法解码某些遥控器的信号。请检查您的库是否支持遥控器的协议。

环境光或其他红外光源可能会干扰接收器。硬件滤波器有助于减少不必要的光线。请将接收器放置在远离强光的地方。在黑暗的房间里测试您的系统,看看接收器是否工作得更好。如果问题仍然存在,请检查附近是否有其他红外光源。

  • 尝试使用不同的库,例如 IRremote 或 IRLib。

  • 测试所有示例草图,以查找软件问题。

  • 检查您的接收器是否能解码来自遥控器的信号。

  • 使用硬件滤光片阻挡不需要的光线。

  • 将接收器移离强光处。

  • 在暗室中进行测试可获得更佳效果。

  • 寻找其他可能造成干扰的红外线源。

注意:解码多种红外遥控信号有助于您查找兼容性问题。请务必记录每个按钮的代码,并将其与 Arduino 程序中的正确操作进行匹配。

您已经学习了如何使用带有红外遥控器的 Arduino。以下步骤可以帮助您:

  1. 安装 IRremote 库。将红外传感器连接到正确的引脚。

  2. 使用示例代码从遥控器获取信号。观察显示器上的输出。

  3. 将遥控器上的每个按钮与项目中的控制操作一一对应。

  4. 尝试使用不同的遥控器,以改善控制效果并解决问题。

如果您需要帮助,请查看以下社区资源:

讨论标题

描述

帮助

询问有关红外遥控器的问题。

如何解读监视器输出的红外热码原始数据?

学习如何读取和使用红外代码数据。

sendSamsungLG() 函数在我的 LG HX906 上不起作用。

查找设备兼容性问题的答案。

ESP32 存在问题,通道 0 已被用于显示。

获取有关 ESP32 和红外遥控器问题的提示。

bootloop

看看其他人是否也遇到同样的红外遥控器问题。

故障排除是学习的一部分。尝试新的控制方法,并测试不同的遥控器。

常见问题解答

如何判断你的红外接收器是否工作?

您可以通过将遥控器对准红外接收器并观察 LED 指示灯闪烁来检查其工作状态。如果您按下按钮时看到指示灯闪烁,则说明接收器已接收到信号。您也可以使用手机摄像头查看红外灯。

为什么你的Arduino无法读取任何红外代码?

你可能有一个 线路故障或图书馆问题检查所有连接,确保使用正确的引脚。安装 IRremote 库。运行示例程序测试您的设置。确保您的 Arduino 板已通电。

你的Arduino红外接收器可以使用任何遥控器吗?

大多数红外接收器都能与多种遥控器配合使用。你需要找到每个按键对应的代码。有些遥控器使用特殊协议。使用 IRremote 库测试你的遥控器。记下代码,并将它们与你程序中的相应操作匹配起来。

如果您的红外信号无法到达接收器,您应该怎么办?

移除遥控器和接收器之间的障碍物。红外信号需要畅通无阻的传输路径。尝试在阳光较少的房间内使用您的设备。检查接收器是否正对着遥控器。

如何使用Arduino红外遥控器控制多个设备?

你可以在程序中将不同的代码映射到不同的输出。为每个按钮代码使用 switch 语句。将更多设备连接到 Arduino,并为每个设备设置相应的动作。测试每个按钮,确保其正常工作。

发表评论

您的电邮地址不会被公开。 必填项 *