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.
Find a file
zrnek 0b1611d710 Aktualizovat config/config.yaml
odstranění nastavení pro zámek senzoru... není již potřeba zde.
2025-10-30 21:36:38 +01:00
config Aktualizovat config/config.yaml 2025-10-30 21:36:38 +01:00
ghost_trigger.py Aktualizovat ghost_trigger.py 2025-10-30 21:33:56 +01:00
LICENSE Initial commit 2025-10-13 06:06:43 +02:00
README.md Aktualizovat README.md 2025-10-30 21:34:29 +01:00

👻 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.yaml souboru.

🛠️ Jak to funguje

Celý systém běží na Raspberry Pi Zero 2 W se systémem Raspberry Pi OS Lite.

  1. Na pozadí běží mpv přehrávač. Ten neustále zobrazuje černý obrázek (black.png) a poslouchá na IPC socketu (/tmp/mpvsocket).
  2. PIR senzor (HC-SR501) detekuje pohyb.
  3. Python skript (ghost_trigger.py) zachytí signál ze senzoru.
  4. Skript okamžitě zamkne senzor (is_playing = True) a náhodně vybere video a jeho předem zjištěnou délku.
  5. Po uplynutí "zpoždění pro překvapení" (např. 1.5s) pošle pomocí socat příkaz do běžícího mpv.
  6. 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."
  7. mpv provede plynulý přechod, přehraje video a plynule se vrátí k černé.
  8. 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í

  1. Naklonujte nebo zkopírujte soubory do složky (/home/zrnek/duch).
  2. Nainstalujte všechny potřebné závislosti:
    sudo apt update
    sudo apt install mpv ffmpeg socat python3-gpiozero python3-yaml
    
  3. 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
      
  4. Nastavte config/config.yaml:
    • Upravte si GPIO pin, časování a další hodnoty podle svých potřeb.
  5. 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 jako root pro bezproblémový přístup k hardwaru, nebo pečlivě nastavit oprávnění pro uživatele zrnek).
    • Povolte službu:
      sudo systemctl daemon-reload
      sudo systemctl enable ghost-player.service
      sudo reboot
      

🔧 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