0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Piでペット監視カメラをつくる (Raspberry Pi Zero 2 W対応)

Posted at

はじめに

我が家では犬を飼っているのですが、外出先はもちろん、同じ家の中でリモートワークをしているときにも別の部屋にいる愛犬の様子が気になります。そこで本記事では、Raspberry Piを使って自作の「ペット監視カメラ」を構築する方法を紹介します。
今回は安価で小型な Raspberry Pi Zero 2 W の活用にフォーカスし、MotionEyeを導入して外出先からも映像を見られるシステムを構築します。そして安価に入手できる Freenove 5/8MP Camera などを使う場合のポイントも説明します。


1. プロジェクト概要

  • 目的

    • 外出先から、または同じ家の別室からペット(犬)の様子を確認したい
    • 必要に応じて録画・動体検知などを行いたい
  • 使用機器

    • Raspberry Pi Zero 2 W
      • 小型・省電力でWi-Fi内蔵、狭いスペースに設置しやすい
    • カメラモジュール
      • USBカメラ(UVC対応)
      • CSIカメラ(例:公式Camera Module V3、Freenove 5/8MP Cameraなど)
    • microSDカード(16GB以上推奨)
    • 電源アダプター(公式推奨)
    • Raspberry Pi OS(GUI版 or Lite版)
    • MotionEye(監視カメラ用ソフトウェア)

以下のようなシステム構成を想定しています。


2. ハードウェアの準備

2.1 Raspberry Pi Zero 2 W

  • 省スペース・低消費電力でWi-Fi内蔵。電源さえ確保できればどこにでも設置しやすいです。
  • CPU性能やUSB/Wi-Fi帯域は限られるため、高解像度・高FPSでの運用や負荷の大きいタスクは注意が必要です。
  • 放熱対策も考慮すると安定運用につながります。

2.2 カメラモジュール

2.2.1 USBカメラ(UVC対応)

  • 例:Logicool C920、Anker PowerConf C200など
  • 公式ドライバ不要で簡単に使えますが、Pi Zero 2 Wではmicro USB OTGアダプタが必要
  • 高解像度(1080p以上)だとPi Zero 2 WのCPU負荷が大きくなるため、解像度やFPSを調整してください。

2.2.2 CSIカメラ(例:Camera Module V3、Freenove 8MP Camera など)

  • CSI接続を使うため、Raspberry Pi上のカメラコネクタにフラットケーブルで直結します。Pi Zero用の細いケーブルが必要な場合があります。
  • Camera Module V3は12MP対応でオートフォーカス搭載など高機能ですが、Zero 2 WでフルHD配信を高フレームレートで行うと負荷がかかりやすいです。
Freenove 8MP Cameraなどを使う場合(Camera Module V2 相当品)
  • IMX219センサー搭載が多く、公式のCamera Module V2相当の画質・互換性があります。
  • Raspberry Pi OSのlibcamera環境で標準的に認識されることが多く、MotionEyeでも“V4L2 Camera”や“MMAL Camera”として利用可能。
  • NoIR版(赤外線フィルタなし)などバリエーションがあるため、昼夜の撮影に合わせて選択可能。
  • Pi Zero 2 Wで使う際は、小型コネクタ用のアダプタケーブルを用意し、接続を正しい向きで行ってください。
  • 夜間撮影をしたい場合はNoIR版+IR照明を、昼間中心ならIRフィルタ付モデルを選ぶと自然な色合いが得られます。
Freenove 5MP Cameraなどを使う場合(Camera Module V1 相当品)
  • 多くの場合、OV5647センサーを採用(Raspberry Pi公式のCamera Module v1と同等)
  • 最大5メガピクセルの静止画撮影、1080p/30fps程度の動画撮影が可能
  • Raspberry Pi OS (Bullseye)以降では、libcameraをベースとする新しいカメラスタックに移行しており、OV5647センサー(Camera Module v1系)は、公式的には「レガシー扱い」となり、現在のBullseye版でも完全サポートが限られる場合があります。
  • 動作させるには”legacy camera stack”を有効化したり、モジュールや設定ファイルを調整したりする必要が出てくるケースがあります。

3. ソフトウェアの準備

3.1 Raspberry Pi OSのインストール

  1. 公式サイトからRaspberry Pi Imagerを入手してmicroSDに書き込み
  2. GUI版でもLite版でもMotionEyeは導入可能
    • Lite版:リソース節約でき、Pi Zero 2 Wでの動作がやや軽い
    • GUI版:デスクトップ操作がしやすく初心者向けだが、CPU/メモリ負荷はLite版より高め
  3. 初回起動後、以下でアップデート
    sudo apt update
    sudo apt upgrade -y
    

3.2 MotionEyeのインストール

  1. 依存パッケージ

    sudo apt update
    sudo apt install -y python3 python3-pip ffmpeg v4l-utils motion
    
  2. MotionEye本体の導入

    sudo pip3 install motioneye
    
  3. 設定ファイルの配置・systemdサービス登録

  4. ブラウザでアクセス

    • デフォルトでポート8765
    • http://<Raspberry PiのIP>:8765

4. Raspberry Pi Zero 2 WでMotionEyeを動かすポイント

  1. 解像度やFPSを抑える

    • 720p(1280×720)やVGA(640×480)程度で15fps前後を目安にすると安定度が増します。
    • フルHD以上の解像度や高FPSはCPU使用率や温度が上がりやすいため、様子を見ながら調整。
  2. 動体検知・録画の負荷

    • 常時録画&動体検知機能をフルに使うとCPU負荷も高くなるので、最初はライブストリーミングのみでテストし、問題なければ段階的に機能を追加すると良いでしょう。
  3. Wi-Fi安定性

    • Zero 2 Wは2.4GHz帯のWi-Fiを使うことが多く、電波干渉などで映像が途切れやすい場合があります。
    • ルーターの近くに置く、チャネルを変更するなどで通信を安定させましょう。
  4. GUI版 or Lite版

    • GUI版Raspberry Pi OSでもOKですが、Pi Zero 2 Wはリソースが少ないので、GUIを同時に動かすと負荷がやや高まります。
    • 動作が重いと感じたらLite版に切り替える、不要なサービスを止めるなどの対策を検討してください。

5. カメラ接続とMotionEye設定

5.1 カメラの接続

  1. USBカメラ: micro USB OTGアダプタ経由で接続し、ls /dev/video*で認識確認
  2. CSIカメラ(Camera V3、Freenove 5/8MPなど):
    • Pi Zero用リボンケーブルを正しい向きで挿入
    • libcamera-still --list-camerasなどで認識確認
    • 必要に応じてraspi-configまたはlibcameraの設定を有効化
    • Freenove 5MPなどの Camera Module V1 相当品を動作させるには”legacy camera stack”を有効化したり、モジュールや設定ファイルを調整したりする必要が出てくるケースがあります。

5.2 MotionEyeでの設定

  1. ブラウザでhttp://<PiのIP>:8765にアクセス
  2. 初回ログイン(ユーザー: admin、パスワード: 空)
  3. 「Add Camera」を押し、Local V4L2(USBカメラ)またはMMAL / libcamera(CSIカメラ)を選択
  4. 解像度やFPS、録画設定を適宜調整
  5. プレビュー映像がMotionEyeの画面に表示されれば成功です。

6. ネットワークアクセス

6.1 LAN内からアクセス

  • ルーターから割り当てられたローカルIP:8765にアクセス
  • ポート開放不要なのでシンプル。家の中でのリモートワーク監視などに便利

6.2 外出先からアクセス

  1. ポート開放

    • ルーターの管理画面で8765番をPi Zero 2 WのIPに転送
    • グローバルIPやDDNSでアクセス
    • セキュリティ対策として強固なパスワードやファイアウォール設定が必須
  2. VPN

    • 自宅ルーターやRaspberry Pi上にVPNサーバーを立て、外出先からVPN接続
    • ポート開放よりもセキュリティ面で安心
  3. リバーストンネル(Ngrok等)

    • ポート開放不要でお手軽
    • 無料プランだとセッション制限やURL変更があるため、本格運用には注意

7. Q&A

Q1. Pi Zero 2 WでMotionEyeは動作するの?

A1. はい、動作します。ただしパフォーマンス管理が重要。

  • 高解像度や高FPSを設定するとCPU負荷が上がり、遅延や発熱、フレーム落ちのリスクが高まります。
  • 720p程度で15fps前後に抑えれば、ペット見守り用途なら十分実用的に使えます。

Q2. Freenove 8MP Cameraは使えますか?

A2. 使えます。

  • Freenove 8MP CameraはSony IMX219センサー搭載の場合が多く、公式Camera Module V2相当の画質や互換性が期待できます。
  • libcamera対応のRaspberry Pi OS上で標準的に認識され、MotionEyeからもV4L2 CameraMMAL Cameraとして利用可能。
  • Pi Zero 2 Wで使う場合は、小型コネクタ用のアダプタケーブルを用意し、向きに注意してください。
  • IRフィルタの有無、レンズ焦点距離などの仕様が公式カメラと異なる場合があるので、用途に合わせて選んでください。

Q3. Raspberry Pi OS Liteじゃなくてもいいの?

A3. GUI版でもOKです。

  • ただしPi Zero 2 Wはリソースが限られるので、GUIを常に起動しているとCPU負荷が増えます。
  • 動作が重い場合はLite版を検討したり、不要なサービスを停止したりするとよいでしょう。

8. まとめ

  • Raspberry Pi Zero 2 W + MotionEyeで、コンパクトかつ省電力なペット監視カメラを構築可能。
  • 安価なFreenove 5/8MP Cameraを含む様々なCSIカメラモジュールや、UVC対応USBカメラが使える。
  • 解像度やFPSは抑えめに設定し、Wi-Fi環境を整えることでスムーズに動作しやすい。
  • LAN内アクセスならローカルIPを使い、外出先アクセスはポート開放やVPNなどを駆使する。
  • GUI版Raspberry Pi OSでも動作するが、Lite版のほうが軽量でパフォーマンス的に有利な場合もある。

9. LAN/外部アクセス比較表

アクセス方法 手順 メリット デメリット
同じ家のネットワーク 1. ローカルIPをブラウザで指定
2. http://<ローカルIP>:8765
- ルーター設定不要
- セキュリティリスク少
- 簡単に試せる
- 外出先からは見られない
ポート開放(フォワード) 1. ルーターで8765番を転送
2. グローバルIPまたはDDNSでアクセス
- 外部から直接アクセス可能
- 手順が比較的シンプル
- 不正アクセスリスク増
- 強固なパスワード設定・DDNSなど必須
VPNの利用 1. 自宅ルーター/ラズパイでVPNサーバ構築
2. 外出先端末でVPN接続
- セキュリティが高い
- ローカルLANと同じ感覚で使える
- 構築のハードルがある
- ルーター機能や設定の知識が必要
リバーストンネル 1. Pi上でNgrokなどを起動
2. 生成されたURLを外部から利用
- ポート開放不要
- お手軽
- 無料版は制限あり
- 連続運用には有料プランが必要な場合

参考リンク


以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?