おはようございます!

 

昨日、ラズパイこと

Raspberry Pi用のリモコン学習回路が

届き、早速電子工作して取り付け

プログラミングして

様々なリモコン信号を

ラズパイから送れるようになりました。

 

ここで、激ハマりポイントを紹介します。

 

信号線の長さです。

このリモコン学習回路を

ラズパイから遠いところに設置しようと

信号線を半田でつなげて

5メートルくらいにしました。

 

そしてラズパイに取り付けると

何と 回路を認識しません!

 

首を捻りながら 信号線を

13cmぐらいのジャンパー線に変えました。

すると 回路を認識しました。

 

おそらく線の抵抗値が高すぎて

信号が途中で減衰してしまっているのでしょう。

 

この回路の使い方ですが

まず 電源、バス線をつないで

回路上のスイッチを

LEARN(学習)にして

1〜10のうちの

バス線をつないだ番号のボタンを押し

回路に向けてリモコンで信号を

発射するとリモコンが学習します。

 

配線方法はこちらが詳しいです。

ラズパイ3 + 専用 学習リモコン基板を使ってみます

 

次に、先ほどのスイッチを

CONTROL(操作)にして

先ほどのボタンを押すと

リモコン信号が発射され家電が動作します。

 

ラズパイ側ではまず「I2C」を

有効にしなければなりません。

やり方はここでは割愛します。

こちらが詳しいので、ご参照ください。

Raspberry Pi で I2C を利用するための設定 - Qoosky

 

次に、Pythonスクリプトをダウンロードしてきます。

こちらからダウンロードできます。

リモコンいじり放題!!ラズパイ専用 学習リモコン基板で使えるソフトウェア3種詰め合わせ公開 | Bit Trade One, LTD

 

このスクリプトはどこに置いても構いませんが

171行目を、このスクリプトを置いた

ディレクトリに変更してください。

 

変更前は

 

dir_name = '/home/pi/I2C0x52-IR/'

になっています。

ホーム(~)に置いた場合は

dir_name = '/home/pi/'

になります。

 

あと、スクリプト名がやたらと長く

コマンドを打つときに面倒なので

「IR02cmd.py」のように適宜変更してください。

以降、スクリプト名をIR02cmd.pyに変更したとして

説明を続けます。

 

今、1番のボタンに何かの

リモコン信号を学習した状態だとします。

 

この状態で、

python3 IR02cmd.py r 0 > a.dat

 

とコマンドを打つと、リモコン信号のデータが

a.datというファイル名でラズパイに保存できます。

rのあとの0は1番ボタンということで

2番ボタンなら1、3番ボタンなら2、と

ボタン番号から1減らしたものを指定します。

 

次に、

python3 IR02cmd.py t `cat a.dat`

とコマンドを打つと、 先ほど保存した

リモコン信号を回路から発射します。

 

回路には10個のボタンがあり

信号も10種類しか覚えられませんが

学習してはファイル名を変えて

ラズパイに取り込むを繰り返すことにより

リモコン信号をいくつも記憶できます。

 

そうして、ラズパイに先に取り付けた

温度センサーを組み合わせて

室温を30度前後に保つ仕組みを完成させました。

 

こちらがそのコードです。

 

#!/bin/bash

 

if [ ! -e mode.dat ]; then

  echo "Couldn't find \"mode.dat\""

  exit 1

fi

 

hi_temp=32

lo_temp=29

on_dat="aircon-on.dat"

off_dat="aircon-off.dat"

 

while : 

do

  current_temp=`python ondo.py`

  mode=`cat mode.dat`

  if [ $mode = "off" ]; then

    if [ $current_temp -ge $hi_temp ]; then

      echo "on" > mode.dat

      python3 IR02cmd.py t `cat $on_dat`

    fi

  else

    if [ $current_temp -le $lo_temp ]; then

      echo "off" > mode.dat

      python3 IR02cmd.py t `cat $off_dat`

    fi

  fi

  sleep 15

done

 

ondo.pyは、実行すると現在の室温を

「30」というふうに表示するPythonスクリプトです。

これについては割愛します。

 

シェルを記述するときは

if文の[の前後のスペース忘れやセミコロンの忘れに

気をつけてください。

また、最初に「off」とだけ書かれた

mode.datというファイルを用意してください。

 

また、このシェルは無限ループになってますので

実行の際は

./hogehoge.sh &

と、最後に&をつけてください。

終了させる場合は

ps -ef | grep hogehoge

とやってプロセス番号調べてkillするか

ほかのシェルから実行させ$!で

プロセス番号を記憶してkillしてください。