ラズパイその他工作

ラズパイでスマートホームを実現しよう! 第4回: カメラをつけて、お部屋のチェックなど便利に使おう!

こんにちは、ヨシケンです!
ラズパイでスマートホーム化の第4回。これまでラズパイを使って、声による起動、部屋の温湿度チェック、そしてリモコン機器の操作を行ってきました。
第1回: ウェイクワードで操作できるスマートホーム・デバイスを作り始める
第2回: 独自のウェイクワードでお部屋をチェックする
第3回: 声でリモコンを操作して便利に使う
今回はカメラを付けて、部屋のチェックをしたり、お子さんの帰宅を知らせたりするなど、画像を使った機能を付けましょう。(左側の丸い窓にカメラを設置しています。)

19-1

また、「おはよう!」や「ただいま!」などのシンプルな挨拶で、家の中の事を自動化する仕組みも作って、スマートホームの完成です!
tadaima

今回の記事で必要な物一覧

・Raspberry Pi 3B+ (最新版のラズパイ本体)
- Raspberry Pi 3B+

・小型USBマイク 
小型USBマイク

・小型スピーカー 
小型スピーカー


・パイ・カメラ

(ラズパイ公式カメラです。これと同形状で夜間撮影が可能なPiNoIRカメラもあります。)
パイカメラ

・温湿度センサ
sensor

・赤外線LED SIR-34ST3F
image30

・赤外線拡散キャップ
image31

・赤外線受光モジュール
I-04659

・小型バッテリー(小型ならどんなものでも構いません)
image9

・ミニブレッドボード
breadboard

・LED、抵抗やケーブル類
・(100円ショップなどで手に入る)木のケースなど装飾部品

 

今回の記事の流れ

1.カメラをセットアップして写真撮影
2.写真をLINEに添付、送付
3.スマートホーム・デバイスにカメラを組み込む
4.音声と連携させて、室内で便利に使う
5.まとめ

 

1.カメラをセットアップして写真撮影

まずラズパイにカメラをセットしましょう。ラズパイの中ほどにあるカメラ端子の白いフックを引き上げ、ケーブルを差して、フックを固定します。
右写真のように黒い端子を上の向きにすると、そのままで上下正しく撮る事ができます。(オプションで写真の向きなどを変更する事もできます)

19-3

smartフォルダ下に、imageという写真保存場所を作って、raspistillコマンドで試し撮りしてみます。(-w 480 -h 360は画像サイズの指定です。)

$ cd smart/

$ sudo mkdir image

$ raspistill -w 480 -h 360 -o image.jpg

今後のpythonプログラムで使えるように、camera.pyプログラムを作って、imageフォルダ下に、日付時間毎の画像ファイルを保存するようにします。

[camera.py]

2.写真のLINEへの送付

写真を撮った時に、それをLINEに送って、遠隔からでも簡単にチェックできるようにします。
LINEのNotifyというAPIを使うと、ラズパイから簡単に写真付きメッセージを送る事ができます。

LINE Notifyのページから、LINEアカウントでセットアップをしてみて下さい。
以下画面が出たら、“トークンを発行する”ボタンを押します。

19-4

写真を送りたいグループなどを指定します。ここでは“スマートホーム“グループを作っています。
ここでNotify用のトークンを取得します。一度しか表示されないので、しっかりコピーしておいて下さいね。
またLINE側で、写真を送るグループにLINE Notifyというユーザを招待するのをお忘れなく。

19-5

それでは先ほどのカメラ機能と合わせてcamera_line.pyを作ります。取得したトークンを使ってLINE送付用のコマンドを追加(黄色部分)しています。

[camera_line.py]

camera_line.pyを流してみると、ラズパイで撮った写真が、このようにLINEに送られてきました。

19-6

3.スマートホーム・デバイスにカメラを組み込む

それでは、前回まで作っていたスマートホーム・デバイスに、カメラを組み込んでいきます。

19-7

ちょうど空いた穴から、レンズ部分を出し、固定します。
ケーブルが多くなってしまった部分は、赤い屋根でふたをしておきます。

19-8

これを部屋に置いておいて、定期的に室内写真を撮るようにしてみましょう。例えば、10時と15時に自動的に写真を撮って、LINE送付するようにします。

19-9

これにはcronという定期的にプログラムを実行する仕組みを利用します。
cronに必要なライブラリをインストールして、スタートさせます。

$ sudo apt-get install chkconfig

$ sudo /etc/init.d/cron start

$ sudo chkconfig cron

19-10

cronエディタ(crontab -e)を実行し、その一番最後に以下2つの実行プログラムを記述します。(この場合、毎日10時と15時に実行)
その後リスト(-l)でcronが正常に登録されているか確認してください。

$ crontab -e

# 一番最後にこの二行を追加
00 10 * * * python /home/pi/smart/camera_line.py
00 15 * * * python /home/pi/smart/camera_line.py

$ crontab -l

19-12
またcronから正常にプログラムが動いているか確認する為、cronのログを残すようにします。
rsyslog.confという設定ファイルのうち、#cron.*となっている部分のコメントアウトを外せば、/var/log/cron.logとしてログファイルが書き込まれます。

$ sudo vi /etc/rsyslog.conf

cron.* /var/log/cron.log #コメントアウトを外す

$ sudo /etc/init.d/rsyslog restart

$ sudo cat /var/log/cron.log

[/etc/rsyslog.conf]
19-13

cronが動いているかどうかの確認
19-14

これで部屋に置いて電源を入れておくだけで、定期的に室内の写真をLINEに送ってきてくれるようになります。
19-16

4.音声と連動させて、室内で便利に使う

それでは最後に、発話内容に応じて、室内で便利に使えるように、これまで作った機能を連携させましょう。
以下例のような、普段の“おはよう”や“ただいま”などのあいさつに連動して、自動で動かす仕組みを作ってみてはどうでしょうか?

19-17

そのために、前回作成した日本語認識のJuliusのプログラムを改修して、julius_remote.pyプログラムを作りました。プログラムはリンクからダウンロードできるようになっています。
内容的には、以下の部分で、あいさつに応じて、返答のメッセージや、リモコンのコマンドを指定しています。

[julius_remote.pyの一部]

以下の部分で、コマンドに応じて赤外線送信や、室温のチェック、写真、LINE送付などを定義しています。取り入れたい機能に応じて、プログラムの記述を変えてみて下さい。

[julius_remote.pyの一部]

また室内の温湿度を測って、その結果に応じて赤外線を操るために、bme.pyを以下のように追加、修正します。このプログラムは、bme_remote.pyとして、こちらに保存しています。

[bme_remote.pyの一部]

これらのプログラムができたら、スマートホーム・デバイスを室内の好きなところに置いてください。赤外線機器の近くの方がリモコンの効きは良いと思います。
19-18

それではこのjulius_remote.pyプログラムを実行するか、以前の記事を見て自動実行プログラムにして、走らせます。

さあ、まずは「おはよう!」と挨拶してみましょう。
この動画のように、「おはようございます!」の返答と共に、室温などを測って、リモコン操作してくれると思います。

また、「いってきます!」や「ただいま!」のあいさつで、スナップ写真を撮ってくれています。
特に家に帰ってきた子どもの写真がLINEに送られてくると、親御さんは安心ですし、ほっこり和むこと請け合いですね!
19-19

これ以外にも第2回で扱ったSnowboyで「ねぇ、お部屋チェック!」などのウェイクワードを登録し、こちらのプログラムを使えば、似たような操作が可能です。
[wake_remote.pyの一部]

detector = snowboydecoder.HotwordDetector(models, sensitivity=sensitivity)
callbacks = [lambda: camera_line.main(),
lambda: bme_remote.main()]
print(“「ねぇ、お部屋チェック!」や「ねぇ、お部屋測って!」などウェイクワードを発話して下さい。Ctrl+Cで終了します。”)

ぜひ色々組み合わせて、ご自分の部屋や使い方にあった機能を付け加えてみて下さい!

5.まとめ

ラズパイでスマートホーム化として、カメラをつないで室内をチェックできるようにしました。
合わせてLINEと連携させる事により、離れた所からでも家がチェックできるようになりました。

最後に、これまで作った温湿度センサ、赤外線リモコン、日本語音声認識などを組み合わせて、シンプルなあいさつから、様々な機能を呼び出せるようにしました。

一人暮らしの方は挨拶に応えてくれるだけでも嬉しいですし、お子さんがいる方は、帰宅時などのチェックができて、安心ですね。画像解析機能を活用すれば、不審者検知カメラや、ペット監視にも使えるかもしれません。

それではこれからも、ラズパイと、センサ、カメラ、音声機能などを使って、家の中を便利に、スマートホーム化していってください!

(ヨシケン)

deviceplus_vol3_cta_580x223_ver2
ヨシケン(吉田 顕一)

普通の会社に勤めるサラリーマンですが、モノ作りが好きな週末メイカーで、電子書籍MESHBOOKを出したり、ブログを書いたりしています!

http://blog.ktrips.net