« 16/01/10 洲崎神社 | トップページ | 16/02/11 釣り場下見(千葉外房編) »

16/01/30 ラズパイ リモコンタイマー

RaspberryPi2 Model Bを使って、リモコンをタイマー制御できる物を作ってみました。
例えば、朝起きる1時間前にエアコンをONして、起きる10分前にTVをON、起きる時間に蛍光灯を点灯させる、といった使い方が出来ちゃいます。

01
<写真01>外観(上部)

02
<写真02>外観(上部)

中央上部にある窓は、蛍光灯などの天井に向けた赤外線LED用の物。
右下に3組のボタンとLED。

03
<写真03>外観(正面)

真っ黒で分かりにくいけど、正面に向けた赤外線LED用の窓。

04
<写真04>外観(右側面)

左側に赤外線受光部、右側にACアダプタ入力。

05
<写真05>メイン基板

今回もチップ部品を多用したので、見た目がすっきりしています。
この下にラズパイがいます。

06
<写真06>サブ基板

部品面にタクトスイッチとφ3のLED、ハンダ面にチップ部品を実装しています。

<図1>回路図

回路図、部品表、、ラズパイ用プログラム、設定用スマホアプリなどの設計データをここに置いておきますのでお好きにお使い下さい。

●回路図
(たいした回路じゃないのですが…)

・赤外線LED(D1~4)
 赤外線LEDに流す電流は1個あたり約360mAとしました。
 データシートでは最大定格IFは100mAですが、実際は約38kHzのパルスで送信するためIFP=1000mA以下であれば問題ないと思います。
 もし不安な方は制限抵抗(R6~9)を10Ωから39Ωにすると良いと思います。

 回路図上は赤外線LEDを4つ並列にしていますが、必要に応じて増減して下さい。
 (今回は2つで作っています)
 但し、赤外線LEDの数を増やす場合、または電流値を増やす場合はそれに耐えられるFET(Q1)に変更して下さい。

・スイッチ(SW1~3)
 チャタリング除去回路(コンデンサ(C4~6)と抵抗(R1~3))を設けています。
 今回使用したスイッチに合わせて時定数を10msとしましたが、お使いのスイッチに合わせて調整するといいと思います。
 またスイッチを押下するとL、離すとHとして認識されます。

・LED(D5~7)
 LEDに流す電流は1個あたり約6mAとしましたが、高輝度タイプを使用したのでこれでもまだまだ明るいです。
 もうちょっと抵抗値を大きくした方がいいかもです。

●ラズパイ側
・LIRCのインストール
赤外線の学習/送信制御にはLIRCを使用します。
詳細は省きますが、以下の通りにインストールと設定を行います。

LIRCのインストール
> sudo apt-get install lirc

LIRCの設定
> sudo vi /etc/lirc/hardware.conf

LIRCD_ARGS="--uinput"
LOAD_MODULES=true
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

起動時にLIRCを有効にする。
> sudo vi /boot/config.txt
末尾に以下の行を追加
dtoverlay=lirc-rpi,gpio_in_pin=4,gpio_out_pin=17

ここで一旦再起動する。

再起動後、LIRCが有効になっているか確認する

> lsmod | grep lirc

  lirc_rpi                6638  0
  lirc_dev                8169  1 lirc_rpi
  rc_core                16956  1 lirc_dev

・Bluetoothモジュールのインストール
ラズパイ本体への設定はBluetoothで行うので、別途Bluetoothアダプタが必要です。こちらも詳細は省きますが、以下の通りにインストールと設定を行います。

> sudo apt-get install bluetooth bluez

Jessieの場合、Bluetoothデーモンが起動しないようです。
以下の修正が必要です。

> sudo vi /etc/systemd/system/bluetooth.target.wants/bluetooth.service

最後の「-C」を追加する。
ExecStart=/usr/lib/bluetooth/bluetoothd -C

認識されているか確認
(デバイス情報は環境により変わります)
> lsusb

Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

動いているか確認
> /etc/init.d/bluetooth status

● bluetooth.service - Bluetooth service
   Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled)
   Active: active (running) since 金 2016-02-19 06:50:10 JST; 15s ago
     Docs: man:bluetoothd(8)
 Main PID: 392 (bluetoothd)
   Status: "Running"
   CGroup: /system.slice/bluetooth.service
           mq392 /usr/lib/bluetooth/bluetoothd -C

起動時に各種設定を行うようにする。
> sudo vi /etc/rc.local
下記をexitの前に追記する。

sdptool add --channel=22 SP
hciconfig hci0 piscan
hciconfig hci0 name RasPi-IrTimer

・赤外線の学習
予め、LIRCによる赤外線の学習を済ませておいて下さい。

例えばTVのリモコンを学習する時は以下の通り。
> sudo irrecord -n -d /dev/lirc0 tv.conf

エアコンなどの一部の機器はデータが長くて学習できない物もあります。
そのような物はRAWデータを取得/再生する事で制御可能です。
その場合の手順を以下の通りです。

一旦LIRCを止める
> sudo /etc/init.d/lirc stop

そしてRAWデータを取得する。
> sudo mode2 -d /dev/lirc0 | tee aircon.dat (ファイル名は何でもいいです)

この状態にして、任意のリモコンボタンを押す。
ズラズラとデータが表示されたらCtrl+Cで終了させる。

続いて生成されたaircon.dat(これがRAWデータ)を成形します。
(ir_trim.plは添付した設計データの中にあります)

> ir_trim.pl -f aircon.dat

表示されたテキストを/etc/lirc/lircd.confへ追記します。

> sudo vi /etc/lirc/lircd.conf

Template
<図2>/etc/lirc/lircd.conf編集箇所

図2のgroup_nameは任意のグループ名を付けて下さい。
同じくcmd_nameも分かりやすいコマンド名を付けて下さい。
その下にある数字の羅列の所を、先ほどir_trim.plで成形したテキストを貼り付けます。
同じグループで複数のコマンドを登録する時は「name cmd_name」から数字の羅列部分を必要に応じて追加して下さい。

・プログラム
Cでコーディングしました。
ちょっと長いのでソースの詳細は省略します。

設計データの中にコンパイル済みバイナリが入っています。

自分でコンパイルするには以下の通りです。
> sudo gcc IrTimer.c -lm -o IrTimer -lwiringPi

起動時に自動で起動するよう、以下のように追記します。
> sudo vi /etc/rc.local
下記をexitの前に追記する。

/home/pi/IrTimer/IrTimer
(パスは各自の環境に合わせて下さい)

シャットダウンは回路図のSW3を3秒間長押しすれば電源OFFできるようにしてありますので、SSHもシリアルコンソールも不要です。

●設定用スマホアプリ
いつものようにXamarinでコーディングしました。
ソースは以前公開したカウントダウンタイマーの物を流用しています。
(公開してから、結構修正が入っていますが…)

・初めて使う時は、メニューの「リモコンコマンド取得」を行う。
 これにより、ラズパイ側のLIRCで登録したリモコングループと、コマンド一覧を取得します。

・予めAndroid端末側でぺリングを済ませておいて下さい。

・使用する前にメニュー → 「デバイスを接続します」または「デバイスを検出する」にてラズパイと接続状態にします。

・設定は最大10個まで可能。(ソースを編集すれば変更可)

・タイマー種類は「カウントダウン」と「時刻指定」の2種類が指定可能(混在可)。
 「カウントダウン」は指定した時間が経過したら実行、「時刻指定」は指定した時刻に達したら実行。
 リストの上から、チェックの入った項目を順次実行していきます。
 (設定時間の早い物から実行する訳ではない)

設計データの中にコンパイル済みバイナリが入っていますので、これをスマホにインストールすればスグに使用できます。
(IrTimer_android\penpens_room.IrTimer.apk)
インストールする前に、「設定」→「ロック・セキュリティ」→「情報セキュリティ」の「提供元不明のアプリ」にチェックを入れて下さい。

Screenshot_20160128000840
<写真07>設定項目一覧

Screenshot_20160128000850
<写真08>メニュー

Screenshot_20160128000914
<写真09>終了後の動作

設定した項目が全て実行し終わったあと、シャットダウンさせるか、そのままにさせるか設定できます。

Screenshot_20160128000936
<写真10>項目設定画面(カウントダウン)

Screenshot_20160128000945
<写真11>項目設定画面(時刻指定)

設定が終わり、項目左側にチェックを付けて、「設定送信」ボタンを押下すると動作開始します。

とまぁ、こんな感じ。
ラズパイを使用しているのでクラウド化して、外出先からスマホで制御させるのも簡単に出来るけど、今はまだクラウド化に興味がないのでまたそのうち。

|

« 16/01/10 洲崎神社 | トップページ | 16/02/11 釣り場下見(千葉外房編) »

電子工作」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/222376/63272811

この記事へのトラックバック一覧です: 16/01/30 ラズパイ リモコンタイマー:

« 16/01/10 洲崎神社 | トップページ | 16/02/11 釣り場下見(千葉外房編) »