Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Retrato Assombrado DIY: Projeto Jump-Scare com Raspberry Pi (Atualizado)

Visão Geral do Projeto

Transforme monitor LCD comum em retrato assustador ativado por movimento. Usando Raspberry Pi 3 B, Python e vídeos Unliving Portrait da AtmosFX, você pode criar jump-scare realista que reage a movimento. Este guia passo a passo cobre montagem de hardware, preparação de imagens/vídeos e scripts Python necessários para dar vida ao susto.

Configuração de Hardware

Passo 1: Construa Moldura do LCD

Após desmontar monitor LCD, medi dimensões do painel: 17" × 11" (retrato). Usando ferramenta de moldura online, cortei moldura de madeira 1" × 2" com dimensões internas correspondentes ao painel. LCD fica flush por dentro, e moldura externa permanece acessível por trás. Finalizei moldura com stain de madeira, então fixei com pregador de brad.

Em seguida, montei Raspberry Pi em Pi Side Mount 3D impresso (Thingiverse). Suportes de espelho mantêm LCD estável, e furei furo para sensor PIR conectar ao header GPIO do Pi (pino 7).

Passo 2: Prepare Imagens, Vídeos e Código

Selecionei três vídeos AtmosFX Unliving Portrait (Homem, Mulher, Criança) para conjunto variado de sustos. Cada vídeo custa $7.99 e oferece conteúdo de jump-scare de alto impacto. AtmosFX fornece MP4s baixáveis, que renomeei para MaleScare.mp4, FemaleScare.mp4 e ChildScare.mp4.

Para imagem estática inicial, capturei primeiro frame de cada vídeo usando VLC, salvei como MaleStart.png, FemaleStart.png e ChildStart.png, e armazenei toda mídia em pasta ScareMedia.

Estrutura de Pastas

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

Scripts Python

Projeto usa dois scripts Python: pirDetect.py para ler sensor PIR e scare.py para lançar vídeo quando movimento detectado.

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

Quando movimento detectado, scare.py exibe imagem estática via fbi e lança vídeo escolhido com omxplayer. Após vídeo terminar, imagem estática permanece na tela, pronta para próximo encontro.

Juntando Tudo

Execute script com argumento único para selecionar personagem:

python scare.py Male

Depois, você pode estender script para escolher vídeo aleatoriamente ou incorporar câmera Pi para gravar intruso. Este design modular mantém projeto flexível para melhorias futuras.

Para demonstração visual, assista retrato assombrado finalizado em ação: Vídeo YouTube.

Leia write-up técnico completo: Possessed Portrait – Updated

Processo de manufatura

  1. Tabela Periódica — Visão Retrato
  2. Armações de Óculos: O Acessório de Moda Definitivo
  3. Display de Cristal Líquido (LCD): Tecnologia, Fabricação e Perspectivas Futuras
  4. CDS Apresenta ClearVue3DP: LCDs Transparentes 3D High-Brightness para Integração Seamless
  5. Primal Display: Construa Monitor de Temperatura LCD com Raspberry Pi
  6. Crie Animações e Jogos Envolventes em LCD com Arduino UNO
  7. Construa um Companheiro LCD com IA: Seu Amigo Interativo
  8. Construa uma Estação Meteorológica Arduino Confiável com Sensores DHT
  9. Projeto DIY Arduino LCD: Monte com Resistores, Botão e Display 16x2
  10. Construa um Relógio Despertador Confiável com RTC DS1302 e Arduino UNO