IR(Infrared)通信是一种简单、低成本、应用广泛的无线通信技术。红外光与可见光有些相似,只是波长稍长一些。IR 的这一特性使其人眼无法察觉,非常适合无线通信。
有很多应用程序需要解码 IR 信号才能使用 IR 遥控器操作某些设备。因此,在本教程中,我们将使用 TSOP1838 IR 接收器来构建使用 Arduino 的 IR 远程解码器。每个按钮的十六进制代码都将记录到 Microsoft Excel 表中。这个简单的红外遥控解码器可用于红外遥控机器人、家庭自动化和其他红外控制项目等项目。
所需组件
Arduino Uno / Arduino Nano
红外接收器 (TSOP1838)
跳线
面包板
IR 通信如何工作?
与其他通信系统一样,红外通信也有发射器和接收器。发射器看起来就像一个 LED,但它产生的光是 IR 光谱而不是可见光谱。而红外接收器是一个嵌入了前置放大器的光电二极管,可将红外光转换为电信号。对于 IR 通信,发射器和接收器应相互指向。要了解有关IR 发射器和接收器电路的更多信息,请点击链接。
按下遥控按钮时,IR LED(发射器)会发出红外光。该光由通常是光电二极管或光电晶体管的接收器接收。但红外线也由太阳、灯泡和其他任何产生热量的东西发出。这会干扰发射器信号,因此为防止发射器信号使用 36 kHz 至 46 kHz 之间的载波频率进行调制。接收到信号后,IR 接收器解调信号并将其转换为二进制,然后再发送到微控制器。
在这里,我们使用电视遥控器发送红外信号,并使用带有 Arduino 的 TSOP1838接收它们。
电路原理图
使用 Arduino的 IR 远程解码器的电路图如下:
连接非常简单,因为 IR 接收器传感器只有三个引脚:Vs、GND 和 Data。将 IR 接收器的 Vs 和 GND 引脚连接到 Arduino 的 3.3V GND 引脚,将数据引脚连接到 Arduino 的数字引脚 2。
Arduino IR 远程解码器编程
Arduino IR 解码器的完整代码在页面末尾给出。
为了解码 IR Remote,首先,我们需要下载并添加一个 IR 库到 Arduino IDE。您可以从这里下载 IR Remote 库。下载文件后,打开您的 Arduino IDE 并转到Sketch 》 Include library 》 Add.Zip library。选择库文件并单击“打开”。
通过包含 IR Remote 库文件来启动您的代码。
#include 《IRremote.h》
之后定义连接红外接收器数据引脚的 Arduino 引脚。就我而言,它连接到 Arduino 的 D2 引脚。
int IRPIN = 2;
之后为 IR Receiver pin 创建一个实例。
IRrecv recv(IRPIN);
在下一行中,为decode_results类定义一个对象,IR 接收器将使用它来发送解码信息。
decode_results 结果;
在setup()函数中,启动串行通信,并通过调用IRrecv函数enableIRIn() 启动 IR 接收器。
无效设置()
{
序列号。开始(9600);
Serial.println(“启用 IRin”);
不可恢复。启用IRIn();
Serial.println(“启用 IRin”);
Initialize_streamer();
}
在loop()函数中,recv.decode不断检查新信号,如果接收到新信号,接收到的信号代码将存储在result.value函数中。
无效循环()
{
if (irrecv.decode(&result))
{
Serial.print(“值:”);
Serial.println(result.value, HEX);
Write_streamer();
不可恢复的简历();
}
延迟(500);
}
为了从 Arduino 向 Excel 表发送数据,我们使用的是 PLX-DAQ。使用Write_streamer()函数,我们以特定模式串行发送数据,就像在串行监视器上显示值一样。关键行解释如下:
无效的 Write_streamer()
{
序列号.print(“数据”); //总是写“DATA”来表示下面的数据
序列号.print(“,”); //使用“,”移动到下一列
Serial.print(result.value, HEX); //在Excel中存储日期
序列号.print(“,”); //使用“,”移动到下一列
序列号.println(); //行尾移动到下一行
}
一旦硬件和程序准备就绪,就可以将程序上传到您的 Arduino Nano 板上了。上传代码后,将遥控器指向红外接收器并按下遥控器按钮。每个按钮的十六进制代码将打印在串行监视器上。
将 IR 远程解码器数据保存到 Excel 表中
现在要将数据发送到 Excel 工作表,我们将使用PLX-DAQ。它是一个 Excel 插件软件,可帮助您将 Arduino 中的值直接写入笔记本电脑或 PC 上的 Excel 表中。使用链接下载文件。下载后,解压文件并点击.exe文件进行安装。它将在您的桌面上创建一个名为PLX-DAQ的文件夹。
现在从桌面文件夹中打开“ PLX-DAQ 电子表格”文件。如果您的 Excel 上禁用了宏,那么您将看到一个安全块,如下图所示:
单击选项-》启用内容-》完成-》确定以启用宏。之后,您将看到以下屏幕:
现在选择波特率“9600”和你的Arduino连接的端口,然后点击连接开始数据流。您的值应该开始被记录,如下图所示。
这就是如何轻松构建Arduino IR 远程解码器以将 IR 远程信号转换为等效的 HEX 代码的方式。
#include
int IRPIN = 2;
IRrecv recv(IRPIN);
decode_results 结果;
整数按钮 = 0;
无效设置()
{
序列号.开始(9600);
Serial.println("启用 IRin");
不可恢复。启用IRIn();
Serial.println("启用 IRin");
Initialize_streamer();
}
无效循环()
{
if (irrecv.decode(&result))
{
按钮=按钮+1;
Serial.print("值:");
Serial.println(result.value, HEX);
Write_streamer();
不可恢复的简历();
}
延迟(500);
}
无效 Initialize_streamer()
{
Serial.println("CLEARDATA"); //清除以前项目留下的任何数据
Serial.println("标签,十六进制代码,按钮"); //总是写LABEL,表示它是第一行
}
无效的 Write_streamer()
{
序列号.print("数据"); //总是写“DATA”来表示下面的数据
序列号.print(","); //使用“,”移动到下一列
Serial.print(result.value, HEX); //在Excel中存储日期
序列号.print(","); //使用“,”移动到下一列
串行打印(按钮);//在Excel中存储日期
序列号.print(","); //使用“,”移动到下一列
序列号.println(); //行尾移动到下一行
}
评论
查看更多