注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!
4.1.5 スマートビジュアルドアベル¶
はじめに¶
このプロジェクトでは、DIYのスマートビジュアルドアベルを作成しましょう。
必要な部品¶
このプロジェクトには、以下の部品が必要です。
全セットを購入すると確実に便利です。リンクは以下です:
名前 |
このキットのアイテム |
リンク |
---|---|---|
Raphael Kit |
337 |
以下のリンクから部品を別々に購入することもできます。
コンポーネントの紹介 |
購入リンク |
---|---|
- |
|
回路図¶
T-Board Name |
physical |
wiringPi |
BCM |
GPIO27 |
Pin 13 |
2 |
27 |
実験手順¶
ステップ1: 回路を作成します。
このプロジェクトを開始する前に、 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秒間を使用して、音楽を再生し、ビデオを記録します。これにより、ドアベルとして機能します。