IR - 传输 IR NEC 原始数据并解码

材料准备

  • AmebaD [AMB21 / AMB22 / AMB23 / BW16 ] x 2

  • Grove – 红外线发射器 x1 (Figure 1)

  • Grove – 红外线接收器 x1 (Figure 2)

范例说明

在此范例中,我们使用两个Ameba RTL8722模块,它们分别与红外线(IR)发射器和IR接收器连接,以发送和接收IR NEC 原始数据。

1

图一: Grove – 红外线发射器

2

图二: Grove – 红外线接收器

在发送端,发送器将发送IR NEC原始数据。原始数据可以看作是“marks”和“spaces”(图三)的连续持续时间(以微秒(us)为单位)。
  • Mark: 特定时间发送脉冲

  • Space: 特定时间不发送脉冲

3

图三: 典型的红外线发射和接收设置实作

有关更多详细信息,请参阅SB-Projects的主题 IR Remote Control Theory 学习IR遥控器操作的理论以及IR协议说明。在此范例中,我们将使用NEC(Now Renesas,也称为日语格式)作为传输协议。

NEC 特色
  • 8位元地址和8位元命令长度。

  • 具扩展模式,地址长度加倍。

  • 为了确保可靠性,发送两次地址和命令。

  • Pulse distance modulation.

  • 载波频率为38kHz。

  • Bit Time为1.125ms或2.25ms。

调节
NEC协议使用Pulse Distance Encoding进行数据通信(图四)。 “1”由2250us的总持续时间表示,其中560us的“marks”和(2250-560)us的“spaces”表示。“0”由总持续时间1120us表示,其中560us是“marks”,而(1120-560)us是“spaces”。

4

图四: NEC 调节

有关更多详细信息,请参阅SB-Projects的主题 IR Remote Control Theory 学习IR遥控器操作的理论以及IR协议说明。 在此范例中,我们将使用NEC(Now Renesas,也称为日语格式)作为传输协议。

5

图五: 完整NEC数据的样本(1或0)

6

图六: NEC 原始完整数据的样本(us)

图七和图八显示了AMB21 / AMB22板的红外发射器和接收器的引脚配置。

7

图七: 红外发射器和AMB21 / AMB22的引脚配置

8

图八: 红外接收器和AMB21 / AMB22的引脚配置

图九和图十显示了BW16板的红外发射器和接收器的引脚配置。

7-2

图十一: 红外发射器和BW16的引脚配置

8-2

图十二: 红外接收器和BW16的引脚配置

正确设置连接后,我们将介绍此范例的编码部分。首先,确保在Arduino IDE中选择了正确的Ameba开发板:“Tools”->“Board”。

在“File”->“Examples”->“ AmebaIRDevice”->“ IRSendRAW”中打开“ IRSendRAW”范例(图十一),并将其上传到与IR Emitter连接的第一块板上:

9

图十一: IRSendRaw 与 IRRecvNEC 的范例位置

成功上传IRSendRaw的范例代码后,您可能需要从“File”->“Examples”->“ AmebaIRDevice”->“ IRRecvNEC”上传与IR接收器连接的第二块板的IRRecvNEC范例。

打开IR接收器的serial monitor并按两块开发板上的重置按钮后,将每3秒接收一次数据“ 48”(由于具有delays()函式,因此不必强制等待)。解码来自接收引脚D8的信号并使用逻辑分析仪和脉冲视图发送引脚D9(图十二)后,使用IR NEC协议解码接收数据后,结果也显示为“ 48”。

10

图十二: 发送和接收引脚的脉冲视图结果

程式码说明

[1] Seeed Official website for Grove – Infrared Receiver
[2] Seed Official website for Grove – Infrared Emitter
[3] Ken SHirriff’s blog on A Multi-Protocol Infrared Remote Library for the Arduino
[4] SB-Projects: IR Remote Control Project