Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

DIY Geisterporträt: Raspberry Pi Jump-Scare Projekt (Aktualisiert)

Projektübersicht

Verwandeln Sie einen gewöhnlichen LCD-Monitor in ein gruseliges, bewegungsaktiviertes Geisterporträt. Mit einem Raspberry Pi 3 B, Python und AtmosFX Unliving Portrait Videos können Sie einen realistischen Jump-Scare erstellen, der auf Bewegung reagiert. Diese Schritt-für-Schritt-Anleitung deckt Hardware-Montage, Bild-/Videovorbereitung und die nötigen Python-Skripte ab.

Hardware-Aufbau

Schritt 1: LCD-Rahmen bauen

Nach dem Zerlegen des LCD-Monitors maß ich die Panel-Abmessungen: 17" × 11" (Hochformat). Mit einem Online-Rahmen-Tool schnitt ich einen 1" × 2" Holzrahmen mit passenden Innenmaßen. Das LCD sitzt bündig darin, der äußere Bilderrahmen bleibt von hinten zugänglich. Ich lackierte den Rahmen mit Holzbeize und befestigte ihn mit einem Nagelgerät.

Anschließend montierte ich den Raspberry Pi auf einer 3D-gedruckten Pi-Seitenhalterung (Thingiverse). Spiegelhalter halten das LCD stabil, und ich bohrte ein Loch für den PIR-Sensor, um ihn an den GPIO-Header des Pi (Pin 7) anzuschließen.

Schritt 2: Bilder, Videos und Code vorbereiten

Ich wählte drei AtmosFX Unliving Portrait Videos (Mann, Frau, Kind) für ein abwechslungsreiches Grusel-Set. Jedes Video kostet 7,99 $ und bietet hochwirksamen Jump-Scare-Content. AtmosFX liefert herunterladbare MP4s, die ich in MaleScare.mp4, FemaleScare.mp4 und ChildScare.mp4 umbenannte.

Für das initiale Standbild extrahierte ich den ersten Frame jedes Videos mit VLC, speicherte sie als MaleStart.png, FemaleStart.png und ChildStart.png und legte alle Mediendateien in einen ScareMedia-Ordner.

Ordnerstruktur

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

Python-Skripte

Das Projekt nutzt zwei Python-Skripte: pirDetect.py zum Auslesen des PIR-Sensors und scare.py zum Starten des Videos bei Bewegungserkennung.

#!/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")

Bei Bewegungserkennung zeigt scare.py das Standbild via fbi und startet das gewählte Video mit omxplayer. Nach Videoende bleibt das Standbild auf dem Bildschirm, bereit für den nächsten Schreckmoment.

Alles zusammenfügen

Starten Sie das Skript mit einem Argument zur Charakterauswahl:

python scare.py Male

Später können Sie das Skript erweitern, um Videos zufällig auszuwählen oder eine Pi-Kamera einzubinden, um den Eindringling aufzuzeichnen. Dieses modulare Design hält das Projekt flexibel für zukünftige Erweiterungen.

Für eine visuelle Demonstration sehen Sie das fertige Geisterporträt in Aktion: YouTube Video.

Den vollständigen technischen Bericht lesen: Possessed Portrait – Updated

Herstellungsprozess

  1. Periodensystem der Elemente – Hochformat
  2. Brillenfassungen: Das ultimative Modeaccessoire
  3. Flüssigkristall-Display (LCD): Technologie, Fertigung und Zukunftsaussichten
  4. CDS stellt ClearVue3DP vor: High-Brightness 3D Transparente LCDs für nahtlose Integration
  5. Primal Display: Raspberry Pi LCD-Temperaturmonitor mit DHT11 bauen
  6. LCD-Animationen & Spiele mit Arduino UNO erstellen
  7. KI-LCD-Begleiter bauen: Dein interaktiver Buddy
  8. Zuverlässige Arduino-Wetterstation mit DHT-Sensoren bauen
  9. Arduino LCD-Projekt: 16×2 Display mit Tastern & Widerständen selbst bauen
  10. Zuverlässigen Wecker mit DS1302 RTC und Arduino UNO bauen