由AndroidThings提供支持的红外接收器

时间:2017-02-02 15:24:16

标签: android-things

是否有可能在android-things上实现IR接收器?

第一个想法:
使用GPIO作为输入并尝试缓冲更改,然后解析缓冲区以解码消息 的结果:
GPIO监听器机制太慢,无法观察IR信号 另一种方法是读取GPIO无限循环。但是所有IR协议都强烈依赖于时间,而java(dalvik)在这种情况下则不太准确。

第二个想法
使用UART 的结果:
似乎可以调整波特率来观察消息的所有位,但是UART API需要设置起始位的数量等,这是一个问题,因为IR协议不适合该模式。

目前恕我直言,UART是唯一的途径,但这将是一个巨大的解决方法。

2 个答案:

答案 0 :(得分:3)

总体问题(正如您所发现的)是由于时序限制,任何非实时系统都难以直接解析此输入。这是一个最适合微控制器的工作,可以访问定时器中断。获取便宜的tinyAVRPIC来管理传感器。

您还需要使用专用的receiver sensor(您可能已经这样做)来简化信号的解析。这些传感器包括一个解调器,这意味着您不必处理38kHz脉冲信号,并将输入转换为更标准的PWM波。

答案 1 :(得分:0)

我相信你不能用Java处理IR信号,因为读取脉冲会比读取分辨率更快 - 至少在覆盆子pi中。为了获得更快的gpio读数,我相信你可以使用带有覆盆子的ndk在c ++中完成。虽然它没有得到官方支持,但还是有一些技巧可以启用它。有关如何在c中写入gpio的信息,请参阅How to do GPIO on Android Things bypassing Java。从那里开始阅读紧凑循环应该是微不足道的。虽然到目前为止我仍然试图从Java挂钩触发器,但我对如何在c中编写/安装中断没有明确的想法。