YU2TA7KA's BLOG ~take one step at a time~

派生開発、組み込み開発周りのこと。

赤ちゃんを見守るぞ!(おうちカメラの開発) おうちハック No.3

やりたいこと

我が家に赤ちゃんがもう少しでやってくる予定です。スマホで家庭内遠隔見守りを実現したいなと思い自作しました。家事などで赤ちゃんから離れるときに利用することを想定しています。ベビーモニタという商品が世の中にはあるので、N番煎じです。

デモ動画

システム構成

システム構成図

f:id:yuji-tanaak:20190608061857j:plain

ハードウェア

名前 用途 価格
ラズパイ環境(Raspberry Pi 3 Model b+) ストリーミングの配信。定期撮影データの保存。 8,800円
Raspberry Pi Official Camera V2 ラズパイに装着して、撮影を行う。 4,580円
スマートフォン ストリーミング配信視聴端末。日常利用していない古いものを利用。Simカードなし。 0円
お菓子の箱 ラズパイ収納ケースとして利用。 0円
WiFi無線ルータ 家庭内ネットワークの構築。 4,480円

ソフトウェア

名前 用途
MJPG-streamser ストリーミング配信
cron 定期撮影の実行
systemd ラズパイ起動時にアプリケーションを実行開始する(未実装)
Google フォト 定期撮影したデータをAPIで自動でアップロードする(未実装)

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 9.9 (stretch)
Release:	9.9
Codename:	stretch
$ uname -a 
Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux

機能

ストリーミング配信

カメラで撮影した画像をMJPG-streamserによりストリーミング配信します。同じWiFi環境にある端末からブラウザでアクセスすることが可能です。そのため、遠隔から赤ちゃんの状態を確認することができます。

定期撮影

cronにより定期的に撮影を行います。いろいろな姿の赤ちゃんを撮影できる見込みです。

手動撮影

MJPG-streamserのsnapshot機能によりブラウザから撮影が可能です。

今後実装したい機能

  • ラズパイ起動時の自動実行(最優先)
  • 気温表示
  • 気温によるエアコン制御
  • 定期撮影した画像をGoogle フォトへ自動アップロード
  • 撮影画像による表情分類

おわりに

ラズパイ起動時の自動実行を実装できればひとまず運用できそうな見込みです。動画配信の機能自体はすぐに実装できたのですが、定期撮影や撮影したデータの扱い、systemdなどの制御で手間取っています。ネット上に情報は多いので、一歩ずつやっていけばなんとかなりそうかなと思います。
ラズパイでいろいろやってて思うのは、家庭内WiFi環境あるとおうちハックが捗ります。むしろ無いとかなり機能が制限されるか家中にLANケーブルが這うことになりそうです。学生のときはバリバリ有線LANで作業してたので、改めて技術革新しているなぁと思いました(今さら)。

エラー対応メモ

cron関係

MTAのインストール不足

CRON[1614]: (CRON) info (No MTA installed, discarding output)

postfixをインストールして対応(参考

$ sudo apt-get install postfix

コマンドメモ

mjpg-streamerのインストール

$ sudo apt-get install -y cmake libv4l-dev libjpeg-dev imagemagick
$ git clone https://github.com/jacksonliam/mjpg-streamer.git
$ cd mjpg-streamer/mjpg-streamer-experimental
$ make

動画の配信

$ ./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -x 640 -y 480 -fps 30 -q 10"

http://[IPアドレス]:8080
でブラウザからアクセス
mjpg-streamer/mjpg-streamer-experimental/www/stream_simple.html
にカメラ画像のみを表示するサンプルWebページがある。ここに好きな情報を追加していく。