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