工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

DIYホラー肖像画:Raspberry Piジャンプスケアプロジェクト(更新版)

プロジェクト概要

普通のLCDモニターを、モーションアクティブな恐怖の肖像画に変身させます。Raspberry Pi 3 B、Python、AtmosFXの「Unliving Portrait」動画を使用して、動きに反応するリアルなジャンプスケアを作成。このステップバイステップガイドでは、ハードウェア組み立て、画像/動画の準備、必要なPythonスクリプトをカバーします。

ハードウェアセットアップ

ステップ1:LCDフレームの製作

LCDモニターを分解後、パネル寸法を測定:17インチ×11インチ(縦向き)。オンラインフレーミングツールを使用し、内寸がパネルに一致する1インチ×2インチの木製フレームをカット。LCDはフレーム内にフラッシュマウントし、外側の額縁は背面からアクセス可能。木材にステイン塗装後、ブラッドネイラで固定。

次に、3DプリントしたPiサイドマウント(Thingiverse)にRaspberry Piを搭載。ミラーホルダーでLCDを安定させ、PIRセンサー用の穴を開けてPiのGPIOヘッダー(ピン7)に接続。

ステップ2:画像、動画、コードの準備

AtmosFX「Unliving Portrait」動画から3種類(男性、女性、子供)を選択し、バリエーション豊かなスケアセットを作成。各動画は7.99ドルで、高インパクトなジャンプスケアコンテンツを提供。 AtmosFX からダウンロード可能なMP4を、 MaleScare.mp4、 FemaleScare.mp4、 ChildScare.mp4 にリネーム。

初期静止画として、VLCで各動画の最初のフレームをキャプチャし、 MaleStart.png、 FemaleStart.png、 ChildStart.png として保存。すべてのメディアを ScareMedia フォルダに格納。

フォルダ構造

/home/pi/Projects/Halloween/
├─ ScareMedia/
│ ├─ MaleStart.png
│ ├─ FemaleStart.png
│ ├─ ChildStart.png
│ ├─ MaleScare.mp4
│ ├─ FemaleScare.mp4
│ └─ ChildScare.mp4

Pythonスクリプト

プロジェクトは2つのPythonスクリプトを使用: pirDetect.py でPIRセンサーを読み取り、 scare.py で動き検知時に動画を再生。

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import os

class detector(object):
    def __init__(self, sensor):
        self.callBacks = []
        self.sensor = sensor
        self.currState = False
        self.prevState = False
        GPIO.setmode(GPIO.BOARD)
        GPIO.setup(self.sensor, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

    def read(self):
        self.prevState = self.currState
        self.currState = GPIO.input(self.sensor)

    def printState(self):
        print(f"GPIO pin {self.sensor} is {'HIGH' if self.currState else 'LOW'}")

    def subscribe(self, callBack):
        self.callBacks.append(callBack)

    def callBack(self, state):
        for fn in self.callBacks:
            fn(state)

    def start(self):
        try:
            self.read()
            self.printState()
            while True:
                self.read()
                if self.currState != self.prevState:
                    self.printState()
                    self.callBack(self.currState)
                time.sleep(.1)
        except (KeyboardInterrupt, SystemExit):
            os.system('stty sane')
#!/usr/bin/python
import subprocess as sp
import time
import os
from pirDetect import *
import sys

video = ["omxplayer", "filename", "-o", "both", "--win", "0 0 1280 720", "--aspect-mode", "fill", "--no-osd", "--orientation", "180", "--vol", "-600"]
scareFile = "/home/pi/Projects/Halloween/ScareMedia/{0}Scare.mp4".format(sys.argv[1])
print(scareFile)

def onMotion(currState):
    if currState:
        video[1] = scareFile
        subVideo = sp.Popen(video)
        while subVideo.poll() is None:
            time.sleep(.1)

def showImage():
    os.system(f"sudo fbi -T 1 -d /dev/fb0 -noverbose -once /home/pi/Projects/Halloween/ScareMedia/{sys.argv[1]}Start.png")

showImage()
objDetect = detector(7)
objDetect.subscribe(onMotion)
objDetect.start()
os.system("sudo killall -9 fbi")

動きが検知されると、 scare.py は fbi で静止画を表示し、 omxplayer で選択した動画を再生。動画終了後、静止画が画面に残り、次の遭遇に備えます。

すべてを組み合わせる

単一の引数でキャラクターを選択してスクリプトを実行:

python scare.py Male

後で、ランダムに動画を選択したり、Piカメラを組み込んで侵入者を録画したりする拡張も可能。このモジュール設計により、将来的な機能追加に柔軟に対応できます。

完成したホラー肖像画の動作デモ: YouTube動画

完全な技術解説: Possessed Portrait – Updated

製造プロセス

  1. メガネフレーム:究極のファッションアクセサリー
  2. 液晶ディスプレイ(LCD):技術、製造、将来展望
  3. Primal Display:Raspberry Pi LCD温度モニターの構築
  4. Arduino UNOで作るLCDアニメーション&ゲーム入門
  5. AI搭載LCDコンパニオンを自作: インタラクティブな相棒
  6. DHT センサで作る信頼性の高い Arduino 気象ステーション
  7. Arduino UNOで作るクラシックLCDアーケードゲーム(ブザー・ジョイスティック付き)
  8. Arduino LCDプロジェクト: 16x2ディスプレイとプッシュボタンで作るサッカーゲーム
  9. DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計
  10. 周期表 – 縦向きビュー
  11. CDS、シームレス統合向け高輝度3D透過型LCD「ClearVue3DP」発表