使用Raspberry Pi通过红外线控制AC


19

当我从某个地方回家的路上时,我希望能够在到达公寓前的几分钟内切换交流电源,方法可能是使用手机将其连接到桌上的Raspberry Pi,以便转,控制交流电。可使用红外遥控器控制AC。我希望Raspberry Pi发出所需的信号。

我必须为Raspberry Pi购买什么才能使其发送所需的信号?另外,我将需要一些东西来采样原始遥控器发送的信号,因此我可以告诉Raspberry Pi发送哪个信号。我怎么做?

请注意,我唯一会使用的编程语言是Python。如果某些东西需要用C或其他东西编程,那对我来说不是一个好的解决方案。

Answers:


12

如上所述,LIRC是一个出色的软件包,可让您的RaspberryPi发送和接收IR信号。从2012年12月起,最新的Raspbian操作系统现在包括ar0n的LIRC驱动程序。

我写了一个指南,以在您的RaspberryPi上安装和配置LIRC(从硬件开始),因为我必须自己解决这个问题。一旦安装了LIRC并在RaspberryPi上工作,就可以使用其中包含的一些应用程序从Python / Ruby /您选择的语言发送和接收IR命令。

http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/


2
今天,我写了一篇新的博客文章,描述了构建RaspberryPi红外收发器的原理图(以及我购买的零件)。alexba.in/blog/2013/03/09/raspberrypi-ir-schematic-for-lirc
Alex Bain

5

已经有人为Raspberry Pi编写了LIRC内核驱动程序,可以在这里找到:LIRC Raspberry Pi驱动程序。另外,所需的硬件和连接示意图也可以在此页面上找到。

我自己还没有尝试过LIRC,但是有很多使用LIRC的应用程序,我想它们现在都可以在Raspberry Pi上运行。

如果您需要/需要,我可以更深入地研究该主题,并提供一些其他信息。

对于Python部分,有一个与LIRC交互的Python模块,称为pyLirc和一个较新的维护版本pyLirc2


感谢您的回答,但是该页面让我在“重新编译内核”中迷失了:)难道没有更多的即插即用功能吗?
Ram Rachum

1
目前,在此驱动程序进入发行版之前,恐怕这是LIRC起作用的唯一选择。但是有一个适用于python的GPIO模块,作为Python程序员,您可以仅使用链接页面中显示的硬件来创建自己的Python代码,以执行所需的操作。您需要阅读AC遥控器发送的IR序列,然后重播该序列。使用此Python GPIO模块应该可以实现。
ikku 2012年

1
我的评论“ ...恐怕这是LIRC起作用的唯一选择...”仅在GPIO上下文内有效。串行/ USB等设备应该可以正常工作。
ikku 2012年

3

我发现LIRC是发送IR消息的相对简单的方法,但我确实希望能够从Java控制LIRC。我喜欢用Java编程,但是没有找到任何简单的Python教程来说服我使用它代替Java。尝试使用Java从pi发送IR代码几个小时后,我发现下一个解决方案相对简单:制作一个包含该irsend消息的bash脚本,并告诉Java运行它。

例:

toggleLight.sh

#!/bin/bash
irsend SEND_ONCE HyundaiFan lightOnOff

RunBash.java

public class RunBash {
    public static final void main (String args[]) {
        String cmd = "../toggleLight.sh";
        try {
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec(new String[] {"/bin/bash", "-c", cmd});
            int exitValue = process.waitFor();
            System.out.println("exit value: " + exitValue);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

你想得到exit value: 0。如果您的退出值为127,则意味着Java找不到bash脚本。

更多注意事项:

  • 我已经尝试过jlirc和lircj-LIRC的Java包装器,但无法正确配置它们->无法正常工作。
  • 该解决方案的唯一缺点是您无法收听IR消息。如果有人对使用类似方法收听IR消息有任何想法,我想知道。

有用的资源:

  • 按照Alex Bain的说明为pi设置LIRC。他们真的很好!您可以在irsend 此处找到更多信息。这使得列出您的遥控器更加清晰。
  • 在这里,您可以找到有关从Java运行bash脚本的更多信息。

希望对您有所帮助,汤姆


2

我总是发现LIRC比看起来像lm传感器更令人讨厌的项目要处理。

因此,我可能会以一种更round回的方式来看待这个问题:如果您可以让微控制器(甚至是实际的遥控器)在触发时发送正确的脉冲序列,也许您可​​以使用gpio引脚(或uart消息) RPi或多或少地“按下按钮”,并触发发送。

如果您找到合适的发送器解决方案,则它相对即插即用。

让RPi担心成为服务器,而硬件(固件)模块则担心IR动作。也许您也可以使用类似的技巧来监视过程状态。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.