0°

(七)map430进阶:使用MSP-EXP430G2 TI Launchpad进行IR红外通信

介绍

(七)map430进阶:使用MSP-EXP430G2 TI Launchpad进行IR红外通信

IR LED,IR光电二极管和TSOP1738

IR通信利用来自电磁频谱的IR(红外)波。

IR LED用于以数字形式无线传输数据(0 – LED OFF或1 – LED ON)。

IR光电二极管或IR光电晶体管接收该数据。IR接收器(IR光电二极管或IR光电晶体管)根据光强度给出不同的电流值。

可以调制传输的数据,并且可以使用特殊的解码器IR接收器,如TSOP1738,可以接收调制数据。

接口图

(七)map430进阶:使用MSP-EXP430G2 TI Launchpad进行IR红外通信

使用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通信

使用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);
  }
}

接收器程序:

限制以下用户组阅读此隐藏内容

请先登录

您的用户组:

程序下载

限制以下用户组阅读此隐藏内容

请先登录

您的用户组:

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论