构建Arduino IR远程解码器的教程

通信网络

650人已加入

描述

  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

  电路原理图

  使用 Arduino的 IR 远程解码器的电路图如下:

Arduino

  连接非常简单,因为 IR 接收器传感器只有三个引脚:Vs、GND 和 Data。将 IR 接收器的 Vs 和 GND 引脚连接到 Arduino 的 3.3V GND 引脚,将数据引脚连接到 Arduino 的数字引脚 2。

Arduino

  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 上禁用了宏,那么您将看到一个安全块,如下图所示:

Arduino

  单击选项-》启用内容-》完成-》确定以启用宏。之后,您将看到以下屏幕:

Arduino

  现在选择波特率“9600”和你的Arduino连接的端口,然后点击连接开始数据流。您的值应该开始被记录,如下图所示。

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(); //行尾移动到下一行
}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分