目录
介绍
IR LED,IR光电二极管和TSOP1738
IR通信利用来自电磁频谱的IR(红外)波。
IR LED用于以数字形式无线传输数据(0 – LED OFF或1 – LED ON)。
IR光电二极管或IR光电晶体管接收该数据。IR接收器(IR光电二极管或IR光电晶体管)根据光强度给出不同的电流值。
可以调制传输的数据,并且可以使用特殊的解码器IR接收器,如TSOP1738,可以接收调制数据。
接口图
使用MSP-EXP430G2 TI Launchpad在IR LED和IR光电二极管之间进行IR红外通信
注意: 对于TI Launchpad板, P1.1 是 Rx 引脚, P1.2 是 跳线 定位为使用 硬件串口 时的Tx引脚 。这里,我们使用的是硬件串口,因此P1.1是Rx引脚,P1.2是Tx引脚。
当跳线定位于软件串行时,P1.1作为Tx引脚,P1.2作为Rx引脚。
注意: 在上图中,对于IR LED和IR光电二极管,较长的引线是阳极,较短的引线是阴极。
此外,光电二极管用于反向偏置模式(它设计为在反向偏置模式下工作)。
使用MSP-EXP430G2 TI Launchpad在IR LED和TSOP1738 IR接收器之间进行IR通信
注意: 对于TI Launchpad板, P1.1 是 Rx 引脚, P1.2 是 跳线 定位为使用 硬件串口 时的Tx引脚 。这里,我们使用的是硬件串口,因此P1.1是Rx引脚,P1.2是Tx引脚。
当跳线定位于软件串行时,P1.1作为Tx引脚,P1.2作为Rx引脚。
注意: 在上图中,对于IR LED,较长的引线是阳极,较短的引线是阴极。
红外发射的数据在传输前以38 kHz进行调制。
TSOP1738是一款红外接收器,能够解调以38 kHz频率调制的信号。
TSOP1730等任何其他TSOP17xx接收器也可用于代替TSOP1738。唯一的区别是它可以解调的载波频率。例如,TSOP1730可以解调载波频率为30 kHz的信号。如果使用TSOP1730或某些其他接收器,则需要在发送器侧进行调制方案的相应改变。
例
两个MSP-EXP430G2 TI Launchpad之间的无线IR红外通信。
这里,使用IR LED从发射器发送简单计数。通过IR光电二极管或TSOP1738在接收器处接收该计数。当接收器使用IR光电二极管时,计数被传输。当接收器使用TSOP1738时,计数调制为38 kHz。
注意: IR仅用作发送器和接收器之间的数据传输介质。使用USART协议发送数据。
谨慎行事: MSP-EXP430G2 TI Launchpad主板具有512字节的RAM,可轻松上传,尤其是在使用不同库时。有时您需要串行缓冲区足够大以包含所需的数据,并且您必须修改串行库的缓冲区大小。在做这些事情时,我们必须确保代码不会使用超过70%的RAM。这可能导致代码以不稳定的方式工作,有时运行良好并且在其他方面失败。
有些时候RAM使用率可能会超过70%并且代码将完全正常工作,并且即使RAM使用率为65%,代码也无法工作。
在这种情况下,可能需要对缓冲区大小和/或变量进行一些试验和错误。
红外LED和红外光电二极管之间进行通信的程序
发射器程序
void setup() {
Serial.begin(9600); /* Define baud rate for serial communication */
Serial.println("Transmitter");
}
void loop() {
int count;
for(count = 0; count<100; count++)
{
Serial.println(count);
delay(1000);
}
}
接收器程序
红外LED和TSOP1738之间进行IR通信的程序
发射器程序
#define cr_pin 9
void setup() {
Serial.begin(1200); /* Define baud rate for serial communication */
tone(cr_pin, 38000); /* For modulation at 38kHz */
Serial.println("Transmitter");
}
void loop() {
int count;
for(count = 0; count<100; count++)
{
Serial.println(count);
delay(1000);
}
}
接收器程序:
程序下载