注釈

こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。

参加する理由は?

  • エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。

  • 学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。

  • 独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。

  • 特別割引:最新製品の独占割引をお楽しみください。

  • 祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。

👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!

4.1.5 スマートビジュアルドアベル

はじめに

このプロジェクトでは、DIYのスマートビジュアルドアベルを作成しましょう。

必要な部品

このプロジェクトには、以下の部品が必要です。

../_images/3.1.19components.png

全セットを購入すると確実に便利です。リンクは以下です:

名前

このキットのアイテム

リンク

Raphael Kit

337

Raphael Kit

以下のリンクから部品を別々に購入することもできます。

コンポーネントの紹介

購入リンク

GPIO拡張ボード

BUY

ブレッドボード

BUY

ジャンパーワイヤー

BUY

抵抗器

BUY

ボタン

BUY

オーディオモジュールとスピーカー

-

カメラモジュール

BUY

回路図

T-Board Name

physical

wiringPi

BCM

GPIO27

Pin 13

2

27

../_images/3.1.19_schematic.png

実験手順

ステップ1: 回路を作成します。

../_images/3.1.19fritzing.png

このプロジェクトを開始する前に、 3.1.3 オーディオモジュール3.1.2 ビデオモジュール を完了していることを確認してください。

ステップ2: コードのフォルダに移動します。

cd ~/raphael-kit/python/

ステップ3: 実行します。

python3 4.1.5_DoorBell.py

コードを実行すると、ボタンが押されるとベルの音が鳴り、カメラが5秒間のビデオを記録します。これは ~ ディレクトリの visitor.h264 ファイルとして保存されます。画面がある場合は、リアルタイムでビデオをプレビューして、訪問者を表示することもできます。

コード

注釈

以下のコードを 修正/リセット/コピー/実行/停止 することができます。しかし、それをする前に、ソースコードのパス raphael-kit/python に移動する必要があります。コードを変更した後、その効果を直接見るために実行できます。

#!/usr/bin/env python3
from picamera import PiCamera
from pygame import mixer
import RPi.GPIO as GPIO
import time
import os
user = os.getlogin()
user_home = os.path.expanduser(f'~{user}')


camera = PiCamera()

BtnPin = 18
status = False

def setup():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(BtnPin, GPIO.IN, GPIO.PUD_UP)
    mixer.init()

def takePhotos(pin):
    global status
    status = True

def main():
    global status
    GPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=takePhotos)
    while True:
        if status:
            mixer.music.load(f'{user_home}/raphael-kit/music/doorbell.wav')
            mixer.music.set_volume(0.7)
            mixer.music.play()
            camera.start_preview(alpha=200)
            camera.start_recording(f'{user_home}/visitor.h264')
            print ('Have a visitor')
            time.sleep(5)
            mixer.music.stop()
            camera.stop_preview()
            camera.stop_recording()
            status = False

def destroy():
    GPIO.cleanup()
    mixer.music.stop()
    camera.stop_preview()
    camera.stop_recording()

if __name__ == '__main__':
    setup()
    try:
        main()
    except KeyboardInterrupt:
        destroy()

コード説明

status = False

これは、ドアベルが使用されているかどうかを記録するためのフラグです。

GPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=takePhotos)

BtnPin のイベントを設定します。ボタンが押されたとき(レベル信号が高から低に変わるとき)、関数 takePhotos() を呼び出します。

if status:
    mixer.music.load(f'{user_home}/raphael-kit/music/doorbell.wav')
    mixer.music.set_volume(0.7)
    mixer.music.play()
    camera.start_preview(alpha=200)
    camera.start_recording(f'{user_home}/visitor.h264')
    print ('Have a visitor')
    time.sleep(5)
    mixer.music.stop()
    camera.stop_preview()
    camera.stop_recording()
    status = False

ここで5秒間を使用して、音楽を再生し、ビデオを記録します。これにより、ドアベルとして機能します。

現象の画像

../_images/4.1.5door_bell.JPG