|
红外通信是一种简单、低成本且广泛使用的无线通信技术。红外光与可见光有些相似,只是波长稍长。 IR的这一特性使其无法被人眼察觉,非常适合无线通信。
在许多应用中,您需要解码红外信号才能使用红外遥控器操作某些设备。因此,在本篇文章中,我们将使用红外接收器TSOP1838通过Arduino构建一个红外遥控解码器。每个按钮的十六进制代码将记录到Microsoft Excel工作表中。这个简单的红外遥控解码器可用于红外远程控制机器人、家庭自动化和其他红外控制项目等项目。
所需的组件 ● Arduino Uno / Arduino Nano开发板 ● 红外接收器(TSOP1838) ● 跳线 ● 面包板
红外通信如何工作? 像其他通信系统一样,红外通信也具有发送器和接收器。发射器看起来就像一个LED,但它会产生红外光谱而不是可见光谱的光线。红外接收器是嵌入有前置放大器的光电二极管,该放大器将红外光转换为电信号。对于红外通信,发送器和接收器都应彼此对射。
按下遥控器按钮时,红外LED(发射器)会发出红外光。该光被通常为光电二极管或光电晶体管的接收器接收。但是,太阳、灯泡和其他任何会发热的物体也会发出红外光。这可能会干扰发射器信号,因此,发射器信号使用36 kHz至46 kHz之间的载波频率进行调制。接收到信号后,红外接收器会对信号进行解调,然后将其转换为二进制,然后再发送给微控制器。
在这里,我们使用电视遥控器发送红外信号,使用TSOP1838和Arduino接收这些信号。
电路原理图 下面给出了使用Arduino的红外遥控解码器的电路图:
连接非常简单,因为红外接收器传感器只有三个引脚:Vs、GND和Data。将红外接收器的Vs和GND引脚分别连接到Arduino的3.3V和GND引脚,然后将Data引脚连接到Arduino的数字引脚2。
Arduino红外遥控解码器编程 在本文页面末尾提供了Arduino红外解码器的完整代码。
为了解码红外遥控器,首先,我们需要下载一个IR库并将其添加到Arduino IDE。您可以从此处下载IR Remote库。下载文件后,打开Arduino IDE并转至Sketch> Include library> Add.Zip库。选择库文件,然后单击“打开”。
首先我们在代码中包含IR Remote库的头文件。 之后,定义您连接红外接收器数据引脚的Arduino引脚。本文连接到Arduino的D2引脚。 接下来,为红外接收器引脚创建一个实例。 然后,为decode_results类定义一个对象,红外接收器将使用该对象发送已解码的信息。
在setup()函数中,启动串口通信,然后通过调用IRrecv函数enableIRIn()启动红外接收器。 - void setup()
- {
- Serial.begin(9600);
- Serial.println("Enabling IRin");
- irrecv.enableIRIn();
- Serial.println("Enabled IRin");
- Initialize_streamer();
- }
复制代码
在loop()函数中,irrecv.decode会不断检查是否有新信号,如果接收到新信号,则接收到的信号代码将存储在result.value函数中。 - void loop()
- {
- if (irrecv.decode(&result))
- {
- Serial.print("Value: ");
- Serial.println(result.value, HEX);
- Write_streamer();
- irrecv.resume();
- }
- delay(500);
- }
复制代码为了将数据从Arduino发送到Excel工作表,我们使用PLX-DAQ。使用Write_streamer()函数,我们以特定的模式串行发送数据,就像在串口监视器上显示值一样。关键代码说明如下: - void Write_streamer()
- {
- Serial.print("DATA"); //always write "DATA" to Indicate the following as Data
- Serial.print(","); //Move to next column using a ","
- Serial.print(result.value, HEX); //Store date on Excel
- Serial.print(","); //Move to next column using a ","
- Serial.println(); //End of Row move to next row
- }
复制代码
一旦硬件和程序准备就绪,就可以将程序上传到Arduino Nano开发板上了。上载代码后,将遥控器指向红外接收器,然后按下遥控器按钮。每个按钮的十六进制代码将打印在串口监视器上。
将红外遥控解码器数据保存到Excel工作表中 现在将数据发送到Excel工作表,我们将使用PLX-DAQ。这是一个Excel插件软件,可帮助您将Arduino中的值直接写入笔记本电脑上的Excel表中。使用此链接下载文件。下载后,解压缩该文件,然后单击.exe文件进行安装。它将在您的桌面上创建一个名为PLX-DAQ的文件夹。
现在,从桌面文件夹中打开“ PLX-DAQ spreadsheet”文件。如果在Excel上禁用了宏,那么您将看到一个安全块,如下图所示:
单击Options->Enable the content -> Finish -> OK以启用宏(Macros)。之后,您将看到以下界面:
现在,将波特率选择为“ 9600”,并将Arduino连接到的端口,然后单击“连接”以开始数据流。您的值应该开始记录下来,如下图所示。
以上就是轻松构建Arduino红外解码器的方式,将红外遥控信号转换为等效的HEX代码。
代码 下面给出了本文的完整Arduino代码:
main.rar
(563 Bytes, 下载次数: 75)
|