Proyek Potret Hantu DIY: Proyek Jump-Scare Raspberry Diperbarui
Ringkasan Proyek
Ubah layar LCD biasa menjadi potret hantu yang mengerikan dan diaktifkan gerakan. Menggunakan Raspberry Pi 3 B, Python, dan video Unliving Portrait AtmosFX, Anda dapat membuat jump-scare yang realistis yang bereaksi terhadap gerakan. Panduan langkah demi langkah ini mencakup rangkaian hardware, persiapan gambar/video, dan skrip Python yang diperlukan untuk menghidupkan kejutan.
Pengaturan Hardware
Langkah 1: Bangun Bingkai LCD
Setelah membongkar layar LCD, saya mengukur dimensi panel: 17" × 11" (portret). Menggunakan alat bingkai online, saya memotong bingkai kayu 1" × 2" dengan dimensi dalam yang cocok dengan panel. LCD berada rata di dalam, dan bingkai gambar luar masih dapat diakses dari belakang. Saya menyelesaikan bingkai dengan pewarna kayu, lalu melekatkannya dengan brad nailer.
Selanjutnya, saya memasang Raspberry Pi pada Pi Side Mount cetak 3D (Thingiverse). Penghantak cermin menjaga LCD tetap stabil, dan saya membuat lubang untuk sensor PIR untuk terhubung ke header GPIO Pi (pin 7).
Langkah 2: Siapkan Gambar, Video, dan Kode
Saya memilih tiga video Unliving Portrait AtmosFX (Pria, Wanita, Anak) untuk kumpulan kejutan yang beragam. Setiap video berharga $7,99 dan menawarkan konten jump-scare berdampak tinggi. AtmosFX menyediakan MP4 yang dapat diunduh, yang saya ganti namanya menjadi MaleScare.mp4, FemaleScare.mp4, dan ChildScare.mp4.
Untuk gambar statis awal, saya menangkap frame pertama dari setiap video menggunakan VLC, menyimpannya sebagai MaleStart.png, FemaleStart.png, dan ChildStart.png, dan menyimpan semua media dalam folder ScareMedia.
Struktur Folder
/home/pi/Projects/Halloween/ ├─ ScareMedia/ │ ├─ MaleStart.png │ ├─ FemaleStart.png │ ├─ ChildStart.png │ ├─ MaleScare.mp4 │ ├─ FemaleScare.mp4 │ └─ ChildScare.mp4
Skrip Python
Proyek ini menggunakan dua skrip Python: pirDetect.py untuk membaca sensor PIR dan scare.py untuk meluncurkan video saat gerakan terdeteksi.
#!/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")
Saat gerakan terdeteksi, scare.py menampilkan gambar statis melalui fbi dan meluncurkan video yang dipilih dengan omxplayer. Setelah video selesai, gambar statis tetap di layar, siap untuk pertemuan berikutnya.
Menggabungkan Semuanya
Jalankan skrip dengan satu argumen untuk memilih karakter:
python scare.py Male
Nanti, Anda dapat memperluas skrip untuk memilih video secara acak atau mengintegrasikan kamera Raspberry untuk merekam perusak. Desain modular ini menjaga proyek tetap fleksibel untuk peningkatan di masa depan.
Untuk demonstrasi visual, tonton potret hantu yang selesai dalam aksi: Video YouTube.
Baca tulisan teknis lengkap: Potret Terpukau – Diperbarui