ラズパイZEROとモーションセンサーで見守りシステムをつくる(その1 全体構成とハードウェア編)
Contents
見守りシステムの構築の理由
今年の正月に帰省した時に両親が思ったより衰えていたのでちょっとショックを受けた。
自分が離れた県に住んでいる事もあり頻繁に訪問する事もできないので、それならば何らかの方法で見守る事はできないかと考えて市販されている各種の見守りシステムを調べてみたのだけれども、どれも機能的にしっくりくるのが無かったので「それならば自分で作ってみよう」と思って制作した時の備忘録。
記事の量が多いので何回かに分けてアップロードしようと思う。
今回は見守りシステムの基本要件と全体構成図、ハードウェアに関する記事とする。
尚、この記事の最後で動画で解説をしている。
要件について
まずは必要な要件を書き出してみた。
- 映像を撮られるのは本人たちも嫌がると思うのでカメラは使わない。その代わりモーションセンサーで室内の動きをカウントする
- カウントは10分毎に集計する。1時間単位でカウント数を集計して定時通知(レポート)が届くようにする
- 特定の時間帯で動きがない場合(検知数がゼロ)には随時通知が届くようにする。ただし予め指定した日付は動きが無くても通知しない(旅行などで予め外出が分かっている時)
- 上記はGoogle Sheetで任意の時間、回数を設定できるようにする(Sheetの値を変更すれば時間帯も変更される)
- 通知はLINEに届くようにする
- 通知情報はAWS IoT Core経由でAWS DynamoDBの保存されるようにする
- ハードウェアはラズパイゼロ(Raspberry Pi Zero WH)とモーションセンサー、プログラミングはPythonで実装する
- sshでリモートでメンテナンスができる環境を用意する
まずは上記の機能を実装しようと思う。
必要に応じて随時機能は追加修正していく予定なのでその際はこのブログに書いていこうと思っている。
要件についての補足
Google Sheetでの設定
設定値をローカル(ラズパイ)に持つと設定値を変更してプログラムで再読み込みをさせるのに結構手間がかかると予想される。
また両親にラズパイの操作をお願いすることは全く期待できないので自宅から設定変更を行えるGoogle sheetに各種設定値を保存してプログラム側で定期的にシートを読み込む仕様にした。
定時通知
直近24時間の1時間毎の検知件数を集計して報告(レポート)する事にした。
例えば、7:00と21:00などと1日で複数回の通知設定も可能とする。
動きが無いときの通知
例えば両親が毎朝6:00に起床するとして6:00~6:20等と10分単位で時刻を指定する。
そして6:00~6:20の20分間で検知件数がゼロならば6:20に警告通知が届くようにした。
LINEに通知
毎日の検知件数の報告レポートと特定の時間帯に動きが無いときの通知はいずれもLINEで通知を行うことにした。
メールも検討したがLINEの方がタイムリーに見ることが多いのでこちらを採用している。
AWSについて
時間別の検知件数をAWS IoT Core経由でAWS DynamoDBへ保存をしているが、必須の機能ではない。
見守りという観点からすればタイムリーに情報が得られば良いので過去データの蓄積はそれほど重要ではない。
しかしAWS IoT CoreやAWS DynamoDBは比較的安価に使用できるのと(今回の使用量では1ヶ月に1ドルも超えない見込み)過去データからAWSの機械学習を使って異常時には自動的にアラートを発信する仕組みが出来るのではないかとも考えて、過去データを蓄積することにした。
ハードウェア
モーションセンサーで感知件数をカウントするだけなのでパフォーマンス的にもラズパイゼロで十分だと判断した。
電源を入れるだけでプログラムを自動起動してそのまま使用できる仕様にする。
ssh
今後のプログラム改良等を考慮するとリモートでメンテナンスできる仕組みを備えておく必要がある。
VPN構築も考えたが両親宅のルーターが対応していないのでAWS EC2を中継してsshのトンネリングでリモートでメンテナンスできる環境を構築するつもり。
全体構成図
以下の図が全体構成図となる。
ハードウェア
Raspberry Pi Zero WH
アマゾンでスターターキットを購入した。
このセットにはディスプレイに接続する為のmini HDMI変換アダプターやUSBキーボードやマウス等を接続する為のmicro USB変換ケーブルやケースが付属している。
しかしmini HDMI変換アダプターやmicro USB変換ケーブルはプログラミングの時にちょっと使用したが両親宅に設置する時は使用しないのでこれらのケーブルをすでに持っている人は本体のみを購入しても良いかも知れない。
また外観は100均のMDFボードで自作するつもりなのでケースも使用するかどうか迷っている。
ピンが無くて、半田で接続するタイプのRaspberryPi Zero Wを選択する手もあるかも知れない。
SDカード
上記セットに付属しているSDカードのサイズは8GByte。
今回のシステムを動作させる分には足りていたが今後の機能拡張で色々なモジュールを追加インストール可能性もあるので16GByteのSDカードにしている。
モーションセンサー
HC-SR501を購入した。
今見ると自分が購入した商品は品切れになっているので同型のモーションセンサーのリンクを載せておく。
今回使用したモーションセンサー(HC-SR501)の詳細については過去記事「RaspberryPi 3 Model B+でIoT監視カメラをつくる(その1ハードウェア関連)」のモーションセンサーを参照の事。
キーボード(マウス)
マウス一体型のUSB接続ミニキーボードを使用している。
ちょっとしたコマンドを入力する程度であれば十分なサイズでタッチパッドでマウス操作もできるので重宝している。
しかしプログラミングはこのキーボードでは辛いのでパソコンでプログラミング、WinSCP等でラズパイに転送という操作をしている。
ジャンパーワイヤー
モーションセンサーとラズパイのピンを接続するために(以前に)購入した。
半田を使わないでピンを接続することができる。
接続図
- Powerを5V
- GNDをラズパイのGND
- OutをラズパイのGPIO5
に接続した。
その他初期設定
その他、初期状態のOSから以下の変更を行った。
パッケージの更新 | 上記のコマンドにてパッケージ類を最新の状態にした
|
ホスト名の変更 | メニューから設定ー>RaspberryPiの設定、システムタブでホスト名を変更した 尚、この画面ショットではデスクトップ(GUI表示)だが、プログラミングが終了した後にブートをCLI(Command Line Interface)に変更している |
デフォルトユーザpiの変更 | デフォルトのユーザpiはそのままにしておくとセキュリティ上問題があるので別ユーザ名に変更した piを変更した時の記事はこちら |
固定IPの割当 | 無線LANのIP Addressを固定IPに変更した 再起動の度にDHCPから異なるIP Addressを割り当てられるとVNCやSSHで接続する時に面倒なのでIP固定にした 固定IPを設定した時の記事はこちら |
2020/01/10追記 sshのデフォルトのポート番号は22だが/etc/ssh/sshd_configファイルを編集してポート番号を変更している | |
sshを公開鍵暗号方式に変更 | 2020/01/18追記 セキュリティを高めるためにsshをパスワード認証から公開鍵暗号方式に変更した。 その時の記事はこちら |
Python3をデフォルトにする | pythonのデフォルトが2.7だったので(Kernel version:4.19)python3をデフォルトに変更した 変更した時の記事はこちら |
Python IDEのインストール | OSはプリインストールされていたNOOBSからイメージファイルをダウンロード&コピーしてのインストールに変更している その時の記事はこちら Version:June 2019、Kernel version:4.19ではpython IDLE(Integrated DeveLopment Environment)が未インストールだったのでインストールしている
でインストールした |
続く
ハードウェアの接続や初期設定についてはこれで終了。
今回の記事ではこれまでとする。
次回はGoogleSheetにアクセスするための設定やLINEにメッセージを送信するための設定、ラズパイに必要なモジュールに関する記事とする。
動画
この記事の内容を動画で解説をしているのでみて欲しい。
ハードウェア、OSのインストール
見守りシステムの仕様と必要なハードウェアの説明とSDカードのフォーマット、OSのインストールに関する動画。
固定IPの設定とデフォルトユーザpiの変更
起動する度にIP Addressが変更されると色々と面倒なので固定IPを設定した。
またデフォルトのアカウントpiをそのままにしておくとセキュリティ上問題があるので変更した時の動画。
Pythonのデフォルトを3に変更とIDLEのインストール
Pythonのデフォルトが2.7だったので3に変更した。
またPythonの統合開発環境をインストールした時の動画。
sshの設定
sshをパスワード認証から公開鍵暗号方式に変更してデフォルトのポート番号を22から変更、その他セキュリティ関連の設定を見直した時の動画。
そう備忘録 管理人様
このようなサイトを公開していただき感謝しております。
ラズパイ初心者の私ですが、こちらのサイトでとても理解が深まり成長できました。
とても丁寧な解説で初心者の私でもわかりやすくほんとに感謝しております。
これからもこちらのサイトの記事を一つつずつこなしスキルを向上したいと思います。
ありがとうございます。
伊藤さん
嬉しいコメントありがとうございます?
自分が何も分からない所から始めたので、初心に戻ってなるべく丁寧に書いているつもりなのでそう言って頂けると嬉しいです。
ラズパイは面白いですよね。
これからも記事を書いていきますのでよろしくお願いします。