ラズパイZEROとモーションセンサーで見守りシステムをつくる(その1 全体構成とハードウェア編) | そう備忘録

ラズパイZEROとモーションセンサーで見守りシステムをつくる(その1 全体構成とハードウェア編)

見守りシステムの構築の理由

今年の正月に帰省した時に両親が思ったより衰えていたのでちょっとショックを受けた。

自分が離れた県に住んでいる事もあり頻繁に訪問する事もできないので、それならば何らかの方法で見守る事はできないかと考えて市販されている各種の見守りシステムを調べてみたのだけれども、どれも機能的にしっくりくるのが無かったので「それならば自分で作ってみよう」と思って制作した時の備忘録。

記事の量が多いので何回かに分けてアップロードしようと思う。

今回は見守りシステムの基本要件と全体構成図、ハードウェアに関する記事とする。

尚、この記事の最後で動画で解説をしている。

要件について

まずは必要な要件を書き出してみた。

  1. 映像を撮られるのは本人たちも嫌がると思うのでカメラは使わない。その代わりモーションセンサーで室内の動きをカウントする
  2. カウントは10分毎に集計する。1時間単位でカウント数を集計して定時通知(レポート)が届くようにする
  3. 特定の時間帯で動きがない場合(検知数がゼロ)には随時通知が届くようにする。ただし予め指定した日付は動きが無くても通知しない(旅行などで予め外出が分かっている時)
  4. 上記はGoogle Sheetで任意の時間、回数を設定できるようにする(Sheetの値を変更すれば時間帯も変更される)
  5. 通知はLINEに届くようにする
  6. 通知情報はAWS IoT Core経由でAWS DynamoDBの保存されるようにする
  7. ハードウェアはラズパイゼロ(Raspberry Pi Zero WH)とモーションセンサー、プログラミングはPythonで実装する
  8. 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に警告通知が届くようにした。

検知ゼロの通知例。テストなので1分単位で指定している。

検知ゼロ警告通知例

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から以下の変更を行った。

パッケージの更新

上記のコマンドにてパッケージ類を最新の状態にした

sudo apt-get update
sudo apt-get upgrade

ホスト名の変更

メニューから設定ー>RaspberryPiの設定、システムタブでホスト名を変更した

尚、この画面ショットではデスクトップ(GUI表示)だが、プログラミングが終了した後にブートをCLI(Command Line Interface)に変更している

ホスト名の変更

デフォルトユーザpiの変更

デフォルトのユーザpiはそのままにしておくとセキュリティ上問題があるので別ユーザ名に変更した

piを変更した時の記事はこちら

固定IPの割当

無線LANのIP Addressを固定IPに変更した

再起動の度にDHCPから異なるIP Addressを割り当てられるとVNCやSSHで接続する時に面倒なのでIP固定にした

固定IPを設定した時の記事はこちら

sshのポート番号の変更

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)が未インストールだったのでインストールしている

sudo apt-get install idle-python3.7

でインストールした

続く

ハードウェアの接続や初期設定についてはこれで終了。

今回の記事ではこれまでとする。

次回はGoogleSheetにアクセスするための設定やLINEにメッセージを送信するための設定、ラズパイに必要なモジュールに関する記事とする。

動画

この記事の内容を動画で解説をしているのでみて欲しい。

ハードウェア、OSのインストール

見守りシステムの仕様と必要なハードウェアの説明とSDカードのフォーマット、OSのインストールに関する動画。

固定IPの設定とデフォルトユーザpiの変更

起動する度にIP Addressが変更されると色々と面倒なので固定IPを設定した。

またデフォルトのアカウントpiをそのままにしておくとセキュリティ上問題があるので変更した時の動画。

Pythonのデフォルトを3に変更とIDLEのインストール

Pythonのデフォルトが2.7だったので3に変更した。

またPythonの統合開発環境をインストールした時の動画。

sshの設定

sshをパスワード認証から公開鍵暗号方式に変更してデフォルトのポート番号を22から変更、その他セキュリティ関連の設定を見直した時の動画。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

2件のフィードバック

  1. 伊藤慎一 より:

    そう備忘録 管理人様
    このようなサイトを公開していただき感謝しております。
    ラズパイ初心者の私ですが、こちらのサイトでとても理解が深まり成長できました。
    とても丁寧な解説で初心者の私でもわかりやすくほんとに感謝しております。
    これからもこちらのサイトの記事を一つつずつこなしスキルを向上したいと思います。
    ありがとうございます。

    • souichirou より:

      伊藤さん

      嬉しいコメントありがとうございます?
      自分が何も分からない所から始めたので、初心に戻ってなるべく丁寧に書いているつもりなのでそう言って頂けると嬉しいです。
      ラズパイは面白いですよね。
      これからも記事を書いていきますのでよろしくお願いします。

伊藤慎一 へ返信する コメントをキャンセル

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。