Raspberry Piを使用して赤外線でACを制御する


19

どこかから家に帰る途中で、アパートに到着する数分前にACを切り替えられるようにしたいと思います。おそらく、電話を使ってデスクのRaspberry Piに接続します。回して、ACを制御します。ACは、赤外線リモコンを使用して制御できます。Raspberry Piが必要な信号を発信するようにします。

Raspberry Piで必要な信号を送信できるようにするには、何を購入する必要がありますか?また、元のリモコンから送信された信号をサンプリングできるものが必要になるため、Raspberry Piに送信する信号を伝えることができます。それ、どうやったら出来るの?

使用方法を知っているプログラミング言語はPythonだけであることに注意してください。Cでのプログラミングなどが必要な場合、それは私にとって良い解決策ではありません。

回答:


12

前述のように、LIRCは、RaspberryPiがIR信号を送受信するための優れたソフトウェアパッケージです。2012年12月現在、最新のRaspbian OSにはar0nのLIRCドライバーが含まれています。

この同じ問題を自分で解決しなければならなかったため、(ハードウェアから)RaspberryPiにLIRCをインストールして構成するためのガイドを書きました。LIRCをインストールしてRaspberryPiで作業すると、含まれているアプリケーションの一部を使用して、Python / Ruby /選択した言語からIRコマンドを送受信できます。

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


2
今日、RaspberryPi IRトランシーバーを構築するための回路図(および購入した部品)を説明する新しいブログ投稿を書きました。alexba.in/blog/2013/03/09/raspberrypi-ir-schematic-for-lirc
アレックスベイン

5

Raspberry Pi用のLIRCカーネルドライバーをすでに作成している人がいます。LIRCRaspberry Piドライバーを参照してください。必要なハードウェアと接続の回路図もこのページにあります。

私は自分でLIRCを試したことはありませんが、LIRCを使用する多くのアプリケーションがありますが、それらはすべてRaspberry Piで動作するようになりました。

必要に応じて、必要に応じて、この主題をもう少し詳しく掘り下げて、追加情報を見つけてください。

Pythonの部分には、pyLircと呼ばれるLIRCと対話するPythonモジュールと、pyLirc2と呼ばれる新しいメンテナンスバージョンがあります。


答えてくれてありがとう、しかしそのページは「カーネルの再コンパイル」で私を失いました:)よりプラグアンドプレイなものはありませんか?
ラムラチャム

1
とりあえず、このドライバーがディストリビューションに入るまで、それがLIRCが機能する唯一のオプションではないかと思います。しかし、Pythonプログラマーであるpython用のGPIOモジュールがあります。リンクされたページに示されているハードウェアのみを使用して、独自のPythonコードを作成して希望どおりに実行できます。ACリモートが送信するIRシーケンスを読み取り、それを再生する必要があります。これは、このPython GPIOモジュールを使用して可能になるはずです。
ikku

1
私のコメント「...私はLIRCが機能する唯一のオプションだと思います...」はGPIOコンテキスト内でのみ有効です。シリアル/ USBなどのデバイスは問題なく動作するはずです。
ikku

3

LIRCはIRメッセージを送信する比較的簡単な方法であることがわかりましたが、実際にはjavaからLIRCを制御できるようにしたかったのです。私はJavaでのプログラミングが好きであり、Javaの代わりにPythonで作業することを納得させるためのpythonの簡単なチュートリアルは見つかりませんでした。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メッセージをリッスンするために同様の方法を使用することについて考えている人がいたら、私は知りたい

有用なリソース:

  • piのLIRCをセットアップするには、Alex Bainの指示に従ってください。彼らは本当に良いです!irsend ここに関する詳細情報を見つけることができます。これにより、リモートのリストがより明確になります。
  • ここでは、Javaからbashスクリプトを実行するための詳細情報を見つけることができます。

トムが役に立てば幸い


2

LIRCは、lmセンサーのように、必要と思われるよりも不愉快なプロジェクトであることに常に気付きました。

だから私はこれをもう少し回り道で見るでしょう:トリガーされたときに正しいパルス列を送信するためにマイクロコントローラー(または実際のリモート)を取得できる場合は、おそらくgpioピン(またはuartメッセージ)を使用することができますRPiが「ボタンを押す」、多かれ少なかれ、送信をトリガーします。

適切な送信機ソリューションが見つかった場合、それは比較的プラグアンドプレイです。

RPiがサーバーであることを心配し、ハードウェア(ファームウェア)モジュールがIRアクションを心配するようにします。同様の方法を使用して、プロセスのステータスを監視することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.