Jednoduchý python script na pouštění videa z RB po detekci pohybu. Je součástí projektu Ghost Mirror, což je Halloweenský projekt na zobrazování ducha v zrcadle.
|
|
||
|---|---|---|
| config | ||
| ghost_trigger.py | ||
| LICENSE | ||
| README.md | ||
👻 Projekt Zrcadlo: Digitální Duch 👻
Proměňte obyčejné zrcadlo v bránu do záhrobí! 😱
Tento projekt využívá Raspberry Pi a pohybový senzor k vytvoření dokonalé iluze "strašidelného zrcadla". Je navržen jako hlavní atrakce pro Halloweenskou párty. Když se někdo nic netuše přiblíží, zrcadlo ožije a zjeví se v něm duch.
✨ Klíčové vlastnosti
- Detekce pohybu: Duch se objeví, jen když se někdo přiblíží.
- Perfektní iluze: V klidovém stavu zobrazuje absolutně černou obrazovku. Žádné blikání terminálu, žádný text.
- Plynulé přechody: Přechod z černé obrazovky na video (a zpět) je okamžitý a plynulý. Iluze není nikdy přerušena.
- Náhodné přehrávání: Nikdy nevíte, který z duchů se zjeví. Skript si náhodně vybírá ze složky s videi.
- Chytrý zámek: Senzor je po spuštění videa inteligentně deaktivován přesně na dobu délky videa. Tím se zabrání otravnému restartování scény při dalším pohybu.
- Vysoký výkon: Všechna videa jsou analyzována předem při startu. Reakce na pohyb je tak bleskurychlá, protože skript už zná délku každého videa.
- Plná konfigurovatelnost: Vše (GPIO piny, časování) lze snadno nastavit v jediném
config.yamlsouboru.
🛠️ Jak to funguje
Celý systém běží na Raspberry Pi Zero 2 W se systémem Raspberry Pi OS Lite.
- Na pozadí běží
mpvpřehrávač. Ten neustále zobrazuje černý obrázek (black.png) a poslouchá na IPC socketu (/tmp/mpvsocket). - PIR senzor (HC-SR501) detekuje pohyb.
- Python skript (
ghost_trigger.py) zachytí signál ze senzoru. - Skript okamžitě zamkne senzor (
is_playing = True) a náhodně vybere video a jeho předem zjištěnou délku. - Po uplynutí "zpoždění pro překvapení" (např. 1.5s) pošle pomocí
socatpříkaz do běžícíhompv. - Příkaz obsahuje instrukce: "Plynule přehraj toto video (bez opakování) a hned po něm zařaď do fronty zpět černý obrázek."
mpvprovede plynulý přechod, přehraje video a plynule se vrátí k černé.- Python skript mezitím čeká po přesnou dobu délky videa a poté senzor opět odemkne.
⚙️ Potřebný hardware
- Raspberry Pi: Tento projekt běží na Raspberry Pi Zero 2 W. Zvládne to i výkonnější Pi 3/4.
- Displej: Libovolný tenký LCD panel s HDMI vstupem.
- Zrcadlo: Polopropustné ("špionážní") zrcadlo nebo fólie.
- Senzor: Pohybový senzor HC-SR501 (PIR).
- Napájení: Dostatečně silná powerbanka (alespoň 10 000 mAh) nebo UPS HAT pro delší výdrž.
- SD karta: (alespoň 8 GB)
🚀 Instalace a spuštění
- Naklonujte nebo zkopírujte soubory do složky (
/home/zrnek/duch). - Nainstalujte všechny potřebné závislosti:
sudo apt update sudo apt install mpv ffmpeg socat python3-gpiozero python3-yaml - Připravte prostředí:
- Do složky
videos/nahrajte své video soubory (s černým pozadím). - Vygenerujte černý obrázek pro pozadí:
ffmpeg -f lavfi -i color=c=black:s=1920x1080 -vframes 1 black.png
- Do složky
- Nastavte
config/config.yaml:- Upravte si GPIO pin, časování a další hodnoty podle svých potřeb.
- Nastavte službu
systemd:- Vytvořte soubor
/etc/systemd/system/ghost-player.service, aby se skript spouštěl automaticky při startu. (Doporučuje se spouštět jakorootpro bezproblémový přístup k hardwaru, nebo pečlivě nastavit oprávnění pro uživatelezrnek). - Povolte službu:
sudo systemctl daemon-reload sudo systemctl enable ghost-player.service sudo reboot
- Vytvořte soubor
🔧 Konfigurace
Veškeré nastavení se provádí v souboru duch/config/config.yaml:
# GPIO pin, ke kterému je připojen PIR senzor
pir_pin: 17
# Název složky s videi
videos_dir: "videos"
# Seznam povolených přípon video souborů
video_extensions:
- ".mp4"
- ".mkv"
# Zpoždění v sekundách od detekce pohybu po spuštění videa
# (pro lepší "leknutí")
surprise_delay: 1.5