以上提到的两个项目都使用某种自制的适配器进行红外遥控。在德国 ELEKTOR 5/97 第 28 页杂志中,也有关于自行构建串口 IrDA 适配器的描述。也许有人可以将这两种适配器合并在一起。
为了讨论红外遥控和 IrDA 之间的关系,我引用了 Linux/IrDA 邮件列表中的内容(由 WH 缩短和修改)
Ryan Shillington 写道:“ConsumerIR - CIR、Remote IR 和 ASK-IR 与 IrDA (FIR、MIR、SIR) 非常不同。
Remote IR 和 ASK-IR 是红外应用的非常低速和低频率(但非常远距离)的应用。它们以大约 2400 波特率运行。
SIR 以更高的速率运行,旨在用于远距离传输,在远距离传输中,您需要通过的不仅仅是几个字符(与遥控器不同)。
MIR 稍微快一点(距离较短),但速度高达 1.15 Mbps,而 FIR(设备几乎必须紧挨着)的速度为 4Mbps。范围与您可以发送数据的速度成反比。
我正在开发 Remote-IR 的驱动程序,但您应该知道您的红外设备必须支持它。寻找像 NEC、RC-5 或 RC-0 这样的协议(这些是最常见的协议)。
您可以使用 SIR 接收遥控信号。将您的波特率设置得较低,数据就会通过。但是,根据我的经验,这不是正确的数据。它没有以正确的方式分析,因此,您无法计算校验和或用它的补码进行校验。
我已经成功地(使用 SIR)接收到遥控器的数据。我被告知,根据温度不同,SIR 读取遥控器数据的方式也会不同(虽然我从未有过这种经历)。”
Lichen Wang 回应道:“大多数笔记本电脑等设备中所谓的 ASKIR 并非用于远程红外设备。ASKIR 旨在用于 Sharp Wizard 和 Zaurus PDA 以及某些 Sharp 的笔记本电脑。Sharp 早在 IrDA 建立之前就声明了这一点,并且仍在支持它以保持向后兼容性。苹果的 Newton 也曾一度具备这种能力。
简而言之,ASKIR 使用 9.6 Kbps(也可能是 19.2 和 38.4 Kbps)的异步数据格式,包括 8 个数据位、1 个停止位和奇校验。起始位以及数据/校验位中的所有 0 位都以 500 KHz 的红外方波(DASK 子载波)传输。停止位以及数据/校验位中的所有 1 位都表示没有任何红外传输。
如您所见,这与现有的红外遥控完全不兼容。[..]
没错。您不仅可以使用 SIR 硬件来接收,还可以进行发射。当然,有一些限制。
大多数红外遥控器使用 38 KHz 子载波。3 乘以 38 是 114,非常接近 115.2。您可以将 UART 设置为以 115.2 Kbps 的速度运行,7 个数据位,无校验,1 个停止位 - 总共 9 位。38 KHz 子载波的每 3 个周期都可以作为 0x5B 的字节接收或发射。
除了子载波必须为 38 KHz 之外,还有一些物理限制。SIR 接收器对 38 KHz 的敏感度不如为此设计的红外遥控接收器。SIR 发射器的占空比也低得多,因此也无法发射出强烈的子载波。
红外遥控通过在某些特定模式下打开和关闭子载波来编码控制信号。现在您可以发射和接收子载波,剩下的都在于时序。
对于发射,您必须知道对于子载波的每次突发,要发送多少个连续的 0x5B 字节,以及在突发之间要保持静默多长时间。
对于接收,您必须知道您接收到的 0x5B 中有多少个是连续的,以及这些连续字节组之间的间隔有多长。[..]
我对 SIR、MIR 和 FIR 的 IrDA 连接距离的经验与 Ryan 所说的有些不同。[..]
SIR、MIR 和 FIR 都应该在 0 到 100 厘米范围内工作,但在实践中
(a) 某些设备在远距离处可能出现问题。
如果可能,请将两个通信设备之间的距离保持在 50 厘米以内。低功耗设备,如寻呼机、电话等,即使它们使用 SIR 而不是 MIR 或 FIR,其范围也可能更短。
(b) 某些设备在近距离处可能出现问题。
将两个设备至少相隔几厘米放置。将两个设备彼此太靠近可能会导致问题。
当连接不可靠时,我们将两个设备靠得更近,这在某种程度上是符合直觉的。但太近也不好,这违反直觉。原因是 1 厘米处的光强度比 100 厘米处亮 10,000 倍。在 0.5 厘米处,亮度是 40,000 倍,等等。红外接收器制造商很难覆盖如此巨大的动态范围。我们都有在 10 瓦灯泡下阅读的问题,但想象一下在 100,000 瓦灯下的感觉!
IrDA 物理层与红外遥控中使用的 DASK 调制完全不兼容。因此,不可能对 FIR 和遥控使用相同的控制器功能。然而,实际上所有 FIR 控制器芯片都包含一些支持遥控的附加功能。National、SMC 和 Winbond(仅举几例)都拥有这样的 I/O 芯片。
用于 FIR 和遥控的红外发射器非常相似。我尝试过标准的 FIR 发射器。它可以达到 10 米的遥控目的。因此,它的性能与为遥控设计的发射器一样好。
用于 FIR 和遥控的红外接收器有些不同。FIR 接收器可以接收遥控信号,但只能达到 1 米,而为遥控设计的接收器通常可以达到 10 米。
我有一个带有 National I/O 芯片的 ISA 总线适配器,它同时支持 FIR 和遥控。我还有包含 FIR 和遥控接收器的红外适配器。(外加一个用于两种模式的发射器。)我找不到任何支持遥控功能的软件。我在 DOS 中做了自己的实验(我还不能运行 Linux)。有人对此感兴趣吗?”
Benny Amorsen 写道:“我有一台笔记本电脑,据说是支持 ASKIR 的。红外端口的模式可以在 BIOS 中切换到 ASKIR。但是,必须重启才能在 BIOS 中切换模式,这使得它毫无用处,因此有人必须找到一种动态切换的方法。”
Dag Brattli 写道:应该可以使用 IrControl(以前称为 IrBus)用于兼容 IrDA 的遥控器。我目前不知道有任何使用 IrControl 标准的遥控器,但应该有一些(还有谁更了解?)。您应该访问 IrDA 网站并获取物理层标准(我认为其中包括 IrControl)。
“普通” IrDA(使用 IrLAP)由于其面向连接的特性(并且仅支持 9600bps 用于无连接使用)而_不_ 非常适合遥控。他们说范围有限的原因是为了眼睛安全(但我目前不知道为什么 CIR 在使用相同功率的情况下效果更好)。但我见过笔记本电脑在 4-5 米处连接(但我不认为任何高速通信都是可能的)。
大多数 IrDA 芯片组都能够进行 CIR 操作,并且很容易修改驱动程序,使它们可以进行 CIR 通信。Takahide Higuchi 已经开始研究 IrSockets,如果我们能够打开一个“原始” Ir(DA) 套接字,然后可以发送和接收 CIR 数据包,那就太好了。这样所有的 CIR 应用程序都可以存在于用户空间中。
我知道 Corel 有兴趣使用 CIR 来控制 NetWinder(他们实际上有正在运行的代码)。请查看 这篇文章 或 Ryans 页面 。
摘自 Hewlett-Packard 的“IrDA 数据链路设计指南”第 21 页:“使用 Hewlett-Packard 红外收发器,可以传输和接收 IrDA 信号以外的信号。有关实施细节,请参阅应用笔记,《收发器在 ASK 和电视遥控信号方面的性能》。”
摘自 IR-MAN 手册页
幸运的是,许多 IrDA 设备与电视遥控器中使用的 38-kbps ASK 调制兼容。这意味着它们可以与此类红外类型信号一起工作。 ... 然而,似乎仍然有许多便携式计算机无法接收电视红外设备。
对于台式计算机,根据您拥有的主板,存在两种选择。通常,奔腾主板具有为红外通信准备好的 I/O 芯片组。有一个特殊的连接器,您可以在其中连接传感器。另一种选择是购买连接到计算机标准串口 (RS-232) 的串口型收发器。 ... PC 遥控器已成功测试,可与两种类型的 IrDA 设备一起使用
1) IRmate IR-210 串口红外适配器。 ... 设备发送可识别数据值的串口速度为 2400 bps。我不知道这种速度对于所有此类适配器是否相同,还是此型号的独特特性。
查看接收到的数据值示例,了解它们有多相似。有些红外命令每次都会发生很大变化,使得识别变得困难。在这种情况下,可以在比较中使用较大的容差,但不同命令之间混淆的风险会增加。几乎所有情况下合适的容差值为 20。
2) Actisys IR2000L 连接到 Asus P2B 主板。 ... 有几种串口速度工作良好,尽管 4800 bps 似乎是最好的。其他同类型的适配器使用此速度也能很好地工作。查看使用此设备接收到的数据序列示例。一些遥控按钮发送完全相同的序列,根本无法区分它们。
3) Asus IR-eye 连接到与上面相同的 MoBo。它的工作效果与 Actisys 设备一样好。
电视遥控器仅以单向方式发送命令,以低速突发方式发送,距离可达 30 英尺。它们使用定向红外和具有适中锥角的 LED,以提高易用性特点。通过 IrDA 的无绳连接以高速突发方式在短距离内点对点和双向传输文件,使用定向红外和具有窄锥角的 LED。IrDA 传输需要相对仔细的瞄准,并且很容易被阻挡。因此,在使用遥控器时,不要期望有很远的距离。
Alessio Massaro 写道:“IrDA 不与电视遥控器对话,但它确实有 IrCOMM 层来模拟串口接口。我的猜测是,为了让 LIRC 与它一起工作,您只需要...从 IrCOMM 虚拟串口设备(就像您使用 /dev/cua 或其他设备一样)读取,并使用您的适配器 + IrDAheader 对可以看到的遥控器。”
Dag Brattli 回答:“您说的是普通串口,但这至少是我选择 IrDA 不是的东西。我已经将所有设备驱动程序实现为网络设备驱动程序,因此事情有点不同(更面向帧)。设备驱动程序传递 IrDA 帧,目前仅此而已。
但我不认为我们必须为 IrDA 设备驱动程序提供 tty 接口才能支持更多的原始读取和写入。顺便说一句,忘记 IrCOMM 吧,它与这个问题无关。
实际上,我已经为设备驱动程序实现了对原始读取和写入的支持,因为某些适配器需要这样做。”