防犯・災害対策に!Raspberry Piで作るセンサー連動自動撮影カメラシステム


前へ⇒ Pythonモジュール入門:プログラムの機能を拡張する便利な部品

※当サイトは、アフィリエイトプログラムを利用して商品を紹介しています。

地震や災害時の記録、空き巣などの防犯に役立つのが「自動撮影カメラシステム」。小型コンピュータRaspberry Piとセンサー、カメラを組み合わせれば、動きを感知して自動で撮影する仕組みを簡単に作れます。

家庭の防犯から災害監視、ペットの見守りまで幅広く活用できる防災IoT工作です。

Raspberry Pi 5

・本体

焦電型赤外線センサー SB612B

・人や動物の体温(赤外線)を感知して「動きを検出」できるセンサー。

Raspberry Pi Camera Module 3

・高画質カメラ。広角レンズのバリエーションもあります。

専用カメラケーブル(Raspberry Pi 5対応)

・ラズパイ5は従来のカメラポートと形状が異なるため、必ず Pi 5対応ケーブル に交換してください。

ブレッドボードとジャンパーワイヤー

・センサーをラズパイと簡単に接続できますが、今回はジャンパーワイヤーのメスーメスがあれば不要です。

電子パーツは下記のオンラインショップで購入できます。

焦電型赤外線センサー

焦電型赤外線センサーモジュール(焦電人感センサ): 計測器・センサー・ロガー 秋月電子通商-電子部品・ネット通販

カメラモジュール及び専用カメラケーブル

Raspberry Pi カメラモジュール3: 開発ツール・ボード 秋月電子通商-電子部品・ネット通販

SB612Bの3本ピンを以下のように接続します。

  • VCC → Raspberry Pi 5 の 3.3Vピン(GPIOヘッダー1番)
  • GND → Raspberry Pi 5 の GNDピン(6番など)
  • OUT → Raspberry Pi 5 の GPIO4ピン(7番)

Raspberry pi本体 GPIOピンの配置

 3.3V  (1) (2)  5V
 GPIO2 (3) (4)  5V
 GPIO3 (5) (6)  GND
 GPIO4 (7) (8)  GPIO14
  GND  (9) (10) GPIO15
 GPIO17(11)(12) GPIO18
 GPIO27(13)(14) GND
 GPIO22(15)(16) GPIO23
 3.3V  (17)(18) GPIO24
 GPIO10(19)(20) GND
 GPIO9 (21)(22) GPIO25
 GPIO11(23)(24) GPIO8
  GND  (25)(26) GPIO7
 ID_SD (27)(28) ID_SC
 GPIO5 (29)(30) GND
 GPIO6 (31)(32) GPIO12
 GPIO13(33)(34) GND
 GPIO19(35)(36) GPIO16
 GPIO26(37)(38) GPIO20
  GND  (39)(40) GPIO21

カメラモジュールは専用のケーブルを使って、ラズパイ5の「Camera 0」スロットに接続してください。

ターミナルを開きます。Ctrl + Alt + T を同時に押す。

ターミナルで nano shikoshikocamera.py と入力し、新しいファイルを作成。

nano shikoshikocamera.py

次に、以下のプログラムを入力します。「#」から始まる行は、コメントとして扱われ、プログラムとしての意味はありませんので不要でも構いません。

尚、ここではfilename = “/home/ikeoji/{}.jpg”.format(timestamp)を ikeoji にしています。ユーザー名に変更してください。

from gpiozero import MotionSensor
from datetime import datetime
from picamera2 import Picamera2
from signal import pause

# センサーをGPIO4に接続
sensor = MotionSensor(4)

# カメラモジュールを準備
camera = Picamera2()

# 動きを感知したときに呼ばれる関数
def capture():
    # 現在の日時をファイル名に使う
    timestamp = datetime.now().isoformat()
    filename = "/home/ikeoji/{}.jpg".format(timestamp)
    
    # 写真を撮影して保存
    camera.start_and_capture_file(filename)
    print("撮影しました:", filename)

# 動きを感知したときに capture() を実行
sensor.when_motion = capture

# プログラムを終了せず待機
pause()

保存は Ctrl + O → Enter、終了は Ctrl + X です。

実行するときはターミナルを開きます。Ctrl + Alt + T を同時に押す。

ターミナルで以下を入力します。

python3 shikoshikocamera.py

センサーが動きを検知すると写真を撮影します。

撮影した写真は以下に保存されます。

/home/ikeoji/

写真のファイル名は日時になります。例

2025-09-11T10:30:00.123456.jpg

Pythonには、メールを送信するための便利なモジュールが標準で用意されています。

  • smtplib … SMTPサーバーに接続してメールを送るモジュール
  • email … 添付ファイルや本文を扱うモジュール

これらを使えば、撮影した画像をメールに添付して送信できます。

写真をメール送信する

ターミナルを開きます。Ctrl + Alt + T を同時に押す。

ターミナルで nano shikoshikomail.py と入力し、新しいファイルを作成。

nano shikoshikomail.py

次に、以下のプログラムを入力します。LolipopレンタルサーバーのSMTPを使ったメール送信例です。 尚、image_path = f”/home/ikeoi/{timestamp}.jpg”を ikeoji にしています。変更してください。

from gpiozero import MotionSensor 
from datetime import datetime
from picamera2 import Picamera2
from signal import pause
import smtplib
from email.message import EmailMessage
import os

# SMTP設定(Lolipop用)
SMTP_SERVER = "smtp.lolipop.jp"
SMTP_PORT = 465  # SSLポート

# ログイン情報
EMAIL_ADDRESS = "メールアドレス"       # 送信元(あなたのメールアドレス)
EMAIL_PASSWORD = "メールパスワード"   # 注意:絶対に公開しない!
TO_ADDRESS = "受信者のメールアドレス"  # 送信先(自分や家族など)

# センサー・カメラ初期化
sensor = MotionSensor(4)
camera = Picamera2()

# メール送信関数
def send_email_with_image(image_path):
    msg = EmailMessage()
    msg["Subject"] = "モーション検知 - 写真送信"
    msg["From"] = EMAIL_ADDRESS
    msg["To"] = TO_ADDRESS
    msg.set_content("モーションを検知しました。写真を添付します。")

    # 写真を添付
    with open(image_path, "rb") as img_file:
        img_data = img_file.read()
        img_name = os.path.basename(image_path)
        msg.add_attachment(img_data, maintype="image", subtype="jpeg", filename=img_name)

    # メール送信(SSL接続)
    with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) as smtp:
        smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
        smtp.send_message(msg)

# 撮影とメール送信をまとめた処理
def capture():
    timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    image_path = f"/home/ikeoi/{timestamp}.jpg"
    camera.start_and_capture_file(image_path)
    send_email_with_image(image_path)

# センサーが反応したら撮影 → メール送信
sensor.when_motion = capture
pause()

保存は Ctrl + O → Enter、終了は Ctrl + X です。

実行するときはターミナルを開きます。Ctrl + Alt + T を同時に押す。

ターミナルで以下を入力します。

python3 shikoshikomail.py

センサーが動きを検知すると写真を撮影し、受信者のメールアドレスに画像が添付されてきます。

撮影した写真は以下に保存されます。

/home/ikeoji/

これで、Raspberry Pi 5が動体を検知 → 写真を撮影 → 自動でメール送信という完成形に近づきました!自宅の簡易防犯カメラや観察カメラとしても使えます。

焦電型赤外線センサーが動きを検知し、Camera Module 高画質な写真を自動撮影。配線もシンプルなので、初心者でも挑戦しやすい電子工作です。

電子工作をどんどん作ってラズパイを楽しんでいきましょう!

次回は、豪雨・洪水対策!Raspberry Piで作る家庭用水位センサーです。

イケオジ流!ラズベリーパイ(Raspberry Pi)一覧はこちら

ラズベリーパイを始めるならこれ!本体・モニター・センサー類の商品リスト

(旧twitter) 今日のイケオジ 

イケオジのキング・オブ・アスリートへの道はこちら

ゲオ:[PR]欲しい商品がきっと見つかる!ゲオ公式通販サイト。全国に1,000店以上展開しているゲオの公式通販サイトです。ゲーム・中古スマホ・中古タブレット・スマートウォッチ・テレビ・イヤホン、雑貨等と幅広い品揃え!

ブックオフ:[PR]ブックオフの公式宅配買取サービスは、不要なお品物を箱に詰めて送るだけ。買取アイテムも拡大中で、本・CD・DVD・ゲームはもちろんのこと、フィギュア・おもちゃ プラモデル・トレカ・ブランド品・ジュエリー・金、プラチナ ・カメラ ・スマホ ・楽器など。

24時間どこでもひけるオンラインガチャ:[PR]初心者でも安心、低額、高還元率のオンラインガチャ【どこでもオリパ】。トレーディングカードだけではなく色々なジャンルのオンラインガチャを展開しています。今後も色々なジャンルで拡大予定ですので多くの方に楽しんでいただけるガチャとなっています。

マルチプレイゲームサーバー:[PR]簡単に構築できるマルチプレイ専用サーバーLOLIPOP! For Gamers。サーバーの知識が無くても大丈夫です。1ヶ月単位で契約できるのでとてもリーズナブルです。

エンタメ通販サイト:[PR]ゲームメディア「週刊ファミ通」「ゲームの電撃」の公式オンラインショップです。ここでしか手に入らない限定グッズ付きゲームソフトから、雑貨・フィギュアなどを多数取り揃えております!

3Dプリンター出力代行サービス:[PR]3DTOWNは3Dプリント出力代行サービスです。個人から法人まで、主に3Dプリンタ―でフィギュアを制作したい方に利用されています。3Dプリンタ―用の3Dデータを送ると48時間以内に見積りが届き、あとは専用ページからいつでも発注することができます。

さあ、勇気を出してイケオジブログをシェアしよう!


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


PAGE TOP