Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

DIY Bezet Portret: Raspberry Pi Schrik-project (Geüpdatet)

Projectoverzicht

Verander een gewone LCD-monitor in een griezelige, bewegingsgeactiveerd bezet portret. Met een Raspberry Pi 3 B, Python, en AtmosFX's Unliving Portrait video's, kun je een realistische schrik creëren die reageert op beweging. Deze stap-voor-stap gids dekt hardware-assemblage, afbeelding/video-voorbereiding, en de Python-scripts die nodig zijn om de schrik tot leven te wekken.

Hardware-opstelling

Stap 1: De LCD-lijst bouwen

Na het demontieren van de LCD-monitor, meet ik de panel-afmetingen: 17" × 11" (portret). Met een online lijst-hulpmiddel, zaagde ik een 1" × 2" houten lijst met binnenafmetingen die overeenkomen met het paneel. De LCD zit vlak binnenin, en de outer picture frame blijft vanaf de achterkant toegankelijk. Ik finishte de lijst met een houtbeits, en bevestigde het met een bradnagelapparaat.

Vervolgens monteerde ik de Raspberry Pi op een 3D-geprinte Pi Zijmontage (Thingiverse). Spiegelhouders houden de LCD stabiel, en ik boorde een gat voor de PIR-sensor om te verbinden met de Pi's GPIO-header (pin 7).

Stap 2: Afbeeldingen, Video's, en Code Voorbereiden

Ik selecteerde drie AtmosFX Unliving Portrait video's (Man, Vrouw, Kind) voor een gevarieerde schrik-set. Elke video kost $7,99 en biedt hoog-impact schrik-content. AtmosFX levert downloadbare MP4's, die ik hernoemde naar MaleScare.mp4, FemaleScare.mp4, en ChildScare.mp4.

Voor de initiële stilafbeelding, captureerde ik het eerste frame van elke video met VLC, bewaarde ze als MaleStart.png, FemaleStart.png, en ChildStart.png, en bewaarde alle media in een ScareMedia map.

Mapstructuur

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

Python-scripts

Het project gebruikt twee Python-scripts: pirDetect.py om de PIR-sensor uit te lezen en scare.py om de video te starten wanneer beweging gedetecteerd wordt.

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

Wanneer beweging gedetecteerd wordt, toont scare.py de stilafbeelding via fbi en lanceert de gekozen video met omxplayer. Na afloop van de video blijft de stilafbeelding op het scherm, klaar voor de volgende ontmoeting.

Alles Samenvoegen

Draai het script met een enkel argument om het personage te selecteren:

python scare.py Male

Later kun je het script uitbreiden om een video willekeurig te kiezen of een Pi-camera te integreren om de indringer op te nemen. Dit modulaire ontwerp houdt het project flexibel voor toekomstige verbeteringen.

Voor een visuele demonstratie, bekijk het afgeronde bezet portret in actie: YouTube-video.

Lees de volledige technische uitleg: Bezet Portret – Geüpdatet

Productieproces

  1. Brilmonturen: het ultieme mode-accessoire
  2. Vloeistofkristal Display (LCD): Technologie, Productie en Toekomstperspectief
  3. Primal Display: Een Raspberry Pi LCD-temperatuurmonitor bouwen
  4. Bouw Boeiende LCD Animaties & Games met Arduino UNO
  5. Bouw een AI LCD-maatje: Jouw interactieve vriend
  6. Bouw een betrouwbare Arduino-weerstation met DHT-sensoren
  7. Bouw een Klassieke Arduino LCD Arcade Game met Buzzer en Joystick
  8. DIY Arduino LCD-project: Bouw met weerstanden, drukknop en 16x2 display
  9. Bouw een betrouwbare wekker met DS1302 RTC en Arduino UNO
  10. Periodiek Systeem – Portretweergave
  11. CDS onthult ClearVue3DP: hoge-helderheid 3D transparante LCD's voor naadloze integratie