IR(红外)通信是一种简单,低成本且广泛使用的无线通信技术。红外光与可见光有些相似,只是波长稍长。IR的这一特性使其无法被人眼察觉,非常适合无线通信。
在许多应用中,您需要解码IR信号才能使用IR遥控器操作某些设备。因此,在本教程中,我们将使用TSOP1838 IR接收器通过Arduino构建IR远程解码器。每个按钮的十六进制代码将记录到Microsoft Excel工作表中。这个简单的IR远程控制解码器可用于IR远程控制机器人,家庭自动化和其他IR控制项目等项目。
以前,我们使用IR遥控器和TSOP接收器来构建许多有用的应用程序,例如:
- 红外遥控可控硅调光电路
- 使用Arduino的IR远程控制家庭自动化
- 使用PIC单片机的IR远程控制家庭自动化
- 使用Arduino和蓝牙的手机控制AC
所需组件
- Arduino Uno / Arduino纳米
- 红外线接收器(TSOP1838)
- 跳线
- 面包板
红外通信如何工作?
像其他通信系统一样,红外通信也具有发送器和接收器。发射器看起来就像一个LED,但它会产生IR光谱而不是可见光谱的光。红外接收器是嵌入有前置放大器的光电二极管,该前置放大器将红外光转换为电信号。对于IR通信,发送器和接收器都应指向彼此。要了解有关红外发射器和接收器电路的更多信息,请点击链接。
按下遥控器按钮时,IR LED(发射器)会发出红外光。该光被通常为光电二极管或光电晶体管的接收器接收。但是,太阳,灯泡和其他任何会发热的物体也会发出红外光。这可能会干扰发射器信号,因此要防止发射器信号使用36 kHz至46 kHz之间的载波频率进行调制。接收到信号后,IR接收器会对信号进行解调,然后将其转换为二进制,然后再发送给微控制器。
在这里,我们使用电视遥控器发送IR信号,使用TSOP1838和Arduino接收红外信号。
另外,在此处检查各种基于IR的应用,包括电视遥控器干扰电路和IR测试仪电路。
电路原理图
下面给出了使用Arduino的IR远程解码器的电路图:
连接非常简单,因为红外接收器传感器只有三个引脚:Vs,GND和数据。将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库文件来启动代码。
#包括
之后,定义您连接IR接收器数据引脚的Arduino引脚。就我而言,它连接到Arduino的D2引脚。
int IRPIN = 2;
之后,为IR接收器引脚创建一个实例。
IRrecv irrecv(IRPIN);
在下一行中,为 decode_results 类定义一个对象,IR接收器将使用该对象发送解码后的信息。
解码结果结果;
在 setup() 函数内部,启动串行通信,然后通过调用 IRrecv 函数 enableIRIn() 启动IR接收器 。
void setup(){Serial.begin(9600); Serial.println(“启用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”); //始终写“ DATA”以表示以下内容为Data Serial.print(“,”); //使用“,” Serial.print(result.value,HEX);移至下一列 //将日期存储在Excel Serial.print(“,”); //使用“,” Serial.println();移至下一列 //行尾移至下一行}
一旦硬件和程序准备就绪,就可以将程序上传到Arduino Nano板上了。上载代码后,将遥控器指向IR接收器,然后按遥控器按钮。每个按钮的十六进制代码将打印在串行监视器上。
将IR远程解码器数据保存到Excel工作表中
现在将数据发送到Excel工作表,我们将使用PLX-DAQ。这是一个Excel插件软件,可帮助您将Arduino中的值直接写入笔记本电脑或PC上的Excel表中。使用链接下载文件。下载后,解压缩该文件,然后单击.exe文件进行安装。它将在您的桌面上创建一个名为PLX-DAQ的文件夹。
现在,从桌面文件夹中打开“ PLX-DAQ电子表格” 文件。如果在Excel上禁用了宏,那么您将看到一个安全块,如下图所示:
单击 选项->启用内容->完成->确定 以启用宏。之后,您将获得以下屏幕:
现在,将波特率选择为“ 9600”,并将Arduino连接到的端口,然后单击“连接”以开始数据流传输。您的值应该开始记录下来,如下图所示。
这是可以轻松构建Arduino IR远程解码器的方式,以将IR远程信号转换为等效的HEX代码。
下面给出了带有演示视频的完整Arduino代码。