赤外線LEDで家電操作
スマートホームを目指すからには家電くらい操作できないといけません。
今回はRaspberry Piに赤外線LEDを接続して家電の操作を行います。
類似記事は山のようにあるので、他を参照したほうが確実だとは思います
正直、赤外線でAlexaなどから家電を操れる製品はたくさんあります。
でも自分で作ったほうが細かいところに手が届いたり好きなようにできるので非常に楽しいのです。
準備
赤外線で家電を扱うには、赤外線を読み取る回路と、赤外線を出す回路が必要です。
秋月で一式揃えました。
接続
実際にブレッドボード上に回路を組んでいきます。
右の接続した写真はLEDあたりの配線が少し間違っています。
あまり参考にしないでください。
回路図
LEDのドライブ回路は以下のサイトを参考にさせていただきました。
赤外線受信モジュールの方はノイズ除去のためにコンデンサを付けたほうが良いという話もありますが、なくても特に問題なく動作しました。
プログラム
pigpioのライブラリを使ってGPIOを操作します。
インストールとsystemdで自動的に有効にするようにします。
また、GPIOの17(11番ピン)を出力、GPIOの18 (12番ピン)を入力に設定します。
再起動時も自動的に設定されるようにcronに記述しておきます。
実際に赤外線の送受信を行うプログラムは「irrp.py」を使います。
コマンド1行で簡単に赤外線の送受信をすることができるすごいプログラムです。
以下のコマンドで赤外線を学習することができます。
GPIOの18番の入力で、codesというファイルに「livingroom_light:off」という命令で保存されます。
コマンドを実行して「Recording」表記になったら赤外線受信モジュールに向けてリモコンのボタンを押します。
Okay表示が出れば学習完了です。
学習したものが正しく動作するか試してみます。
以下のコマンドで赤外線を送信することができます。
GPIOの17番からcodesファイルの中にあるlivingroom_aircon:onという先程学習した信号を送信します。
実際に家電が反応すればOKです。
赤外線コードについて
テレビや照明のリモコンの場合は単純にON/OFFや各機能の信号が送信されますが、エアコンの場合は厄介で、電源を入れるボタンを押したとしても、温度や冷房/暖房、風量などの情報まで送信されています。
27度の冷房で風量風向自動と学習したものはその設定しか使うことができません。
パターンわけをしてひたすら学習させ続ければできないこともないですが、膨大な記録が必要です。
コードを解析できれば自分の好きなようにエアコンを操れますが、今回は見送りです。
そのうちやるかもしれません。
家電を操作するシェルスクリプトを作る
先程のコマンドをそのまま使ってもいいのですが、パラメータも多く大変なので、シェルスクリプトにしました。
何も難しいことはしておらず、シェルスクリプトの引数にon/offを入れてそれにあったコマンドが実行されるようになっているだけです。
コード解析していないので、冷房27度風量風向自動の設定です。
settimerは5時間のタイマーをセットするときの信号を入れています。(寝るとき用ですね)
もう少しきれいに書けますが、とりあえず暫定版ということで・・・
iPhoneからエアコンを操作する
このスクリプトをiPhoneのショートカットアプリから実行すればお手軽スマホリモコンの完成です。
ショートカットアプリに先程作ったシェルを起動するようなショートカットを作成します。
sshがiPhoneから起動できるので簡単です。
もちろんローカル環境(家のWi-Fiにつながっている状態)じゃないと動作しません。
ボタンを押すだけでなく、Siriにも対応しています。
今回の場合はSiriを起動させて「寝室のエアコン付けて」と言うとエアコンが付きます。
いよいよスマートホームらしくなってきました。
コメント