reklama

Je to znovu to roční období, kdy se považuje za společensky přijatelné vyděsit malé děti a dát jim bonbóny. Oh, radost. Jsem tu proto, abych vám usnadnil vaši práci tím, že vám ukážu, jak vytvořit jednoduchý zvukový box Raspberry Pi Halloween citlivý na pohyb. Zde je ukázka:

Zde je to, co budete potřebovat

Pravděpodobně jedinou částí, kterou ještě nemáte, je pohybový senzor, malou a levnou součást, kterou byste měli najít v místním Microcentru nebo Maplinu.

  • Raspberry Pi (jakýkoli model udělá).
  • Pohybový senzor (~ 3 $).
  • Zapojovací dráty.
  • Kabelový reproduktor (většina reproduktorů Bluetooth bude mít možnost použít linkový vstup).
  • 3,5 mm stereo kabel, samec-samec.

Až budete hotovi, možná budete chtít přidat nějaké synchronizované světelné efekty Jak synchronizovat domácí světla a hudbu na HalloweenAť už pořádáte halloweenskou párty nebo chcete nejstrašidelnější dům v sousedství, vaše světla budou blikat v čase hudbou a zvukovými efekty. Přečtěte si více taky, ale v tomto tutoriálu se budeme zabývat jen strašidelnými zvuky!

instagram viewer

Nastavení

Používáme Raspbian Jessie Lite a Python 2.7, ale jakýkoli distro Linux, který běží na vašem Pi, by měl být v pořádku. Nechal jsem to na standardním názvu hostitele „raspberrypi.local“, takže začněte vzdáleným přihlášením pomocí SSH (pokud jste na počítačích Mac, otevřete okno Terminálu). Tady je jak to udělat ve Windows 4 snadné způsoby použití SSH ve WindowsSSH je de facto řešení pro bezpečný přístup ke vzdáleným terminálům na Linuxu a dalších unixových systémech. Pokud máte vzdálený server SSH, ke kterému chcete přistupovat, musíte si stáhnout klienta SSH ... Přečtěte si více ) - nebo pokud jste se rozhodli používat plnou Raspbian s grafickým uživatelským rozhraním, můžete přeskočit na aktualizaci.

ssh [email protected]. (zadejte jako heslo malinu) sudo apt-get update. sudo apt-get install python-pip. sudo pip install gpiozero. 

To nainstaluje jednoduchou knihovnu pro práci s kolíky GPIO v Pythonu s mnoha typy vestavěných senzorů a tlačítek. Zapojte senzor pomocí signálního kolíku na GPIO4, VCC připojeného k 5V a GND připojeného k GND. To se může lišit v závislosti na vašem přesném modelu, takže to potvrďte pomocí diagramu pinout.

Schéma Raspberry Pi GPIO
Obrázek Kredit: raspberrypi.org

Naštěstí má můj případ Pi 2 od Pimoroni přímo na něj vyleptaný laserový diagram.

Označené pouzdro Raspberry Pi

Nyní vytvořme skript pro detekci pohybu.

nano motion.py. 

Vložit do:

z importu gpiozero MotionSensor pir = MotionSensor (4) while True: if pir.motion_detected: print ("Motion zjištěno!") jinde: print ("No motion")

Stiskněte CTRL-X a poté Y pro uložení a ukončení, poté spusťte:

python motion.py. 

Na obrazovce byste se měli opakovaně dívat na zprávu „žádný pohyb“, dokud mávnete rukou před senzorem, dokud se neobjeví na obrazovce „Detekce pohybu!“.

Pohyb detekován v terminálu

Pokud se zpráva vůbec nezmění, zapojili jste ji špatně.

Pokud se chcete dozvědět více o této jednoduché knihovně GPIOZero, podívejte se na tento fantastický podvodný list.

Přehrávání zvuku

Připojte svůj přenosný reproduktor a ujistěte se, že je napájen, pokud je potřeba. Použijeme pygame knihovna pro přehrávání zvuků, tak jděte do toho a nainstalujte:

sudo apt-get install python-pygame. 

Nejprve potřebujeme zvukový soubor pro přehrání. Pokud to děláte z prostředí stolního počítače, pokračujte a stáhněte si WAV nebo OGG soubor odněkud (našel jsem dobrý výběr zdarma Halloween zvuky zde) a vložte jej do svého domovského adresáře. Navrhuji nejprve převzorkování a převod do malého formátu OGG tak jako tak.

Pokud se připojujete vzdáleně a používáte pouze příkazový řádek, máme s některými weby o něco větší potíže, protože wget příkaz nemusí chytit skutečný soubor. Místo toho ji můžeme stáhnout místně na naši plochu a použít scp (zabezpečená kopie) příkaz pro kopírování přes příkazový řádek. Můžete se dozvědět více o scp zde, ale prozatím, otevřete novou kartu Terminál a zadejte:

scp thunder.ogg [email protected]: 

Přejmenujte thunder.ogg podle potřeby, ale nezapomeňte na to finále : (příkaz bude dokončen bez něj, ale nedělá to, co chceme, aby udělal). Ve výchozím nastavení bude soubor přenesen do domovského adresáře uživatele Pi.

Nyní upravme skript tak, aby přehrával zvuk. Začněte importováním některých nových modulů:

import pygame.mixer. ze souboru pygame.mixer import zvuku. 

Poté hned po existujících příkazech pro import budeme znovu a znovu opakovat stejný zvuk pro účely testování. Nechte zbytek kódu pro snímání pohybu tak, jak je tomu dosud - prostě se nespustí, protože bude navždy zaseknutý v této zvukové smyčce.

pygame.init () pygame.mixer.init () # načíst zvukový soubor v domovském adresáři uživatele Pi (žádné mp3) hrom = pygame.mixer. Zvuk ("/ home / pi / thunder.ogg"), zatímco True: thunder.play () spánek (10) thunder.stop ()

Všimněte si, že když jsem původně vyzkoušel tento proces, zvuk se odmítl přehrát a místo toho jen klikl. Velikost souboru nebo bit-rate byla viníkem: to bylo 24-bit a přes 5 MB pro 15 sekundový klip. Díky škálování na 16 bitů pomocí převaděče, který jsem propojil s výše, všechno fungovalo dobře a velikost byla snížena na pouhých 260 kB!

Pokud si všimnete nepříjemného syčení z reproduktorů, když je spuštěna aplikace Python, ale jinak, zadejte:

sudo nano /boot/config.txt. 

A na konec přidejte tento řádek:

disable_audio_dither = 1. 

Změny se projeví až po restartování. Nebo se neobtěžujte, protože mi to stejně znělo jako déšť.

Nakonec upravme hlavní smyčku pro kontrolu pohybu tak, aby při detekci pohybu přehrávala zvuk. Použijeme 15sekundové zpoždění, aby bylo možné přehrát celou smyčku, a chovat se jako vyrovnávací paměť spamu pro případ, že se bude pohybovat nepřetržitě.

while True: if pir.motion_detected: print ("Motion zjištěno!") thunder.play () # zajistí, že přehrávání bude plně dokončeno před obnovením detekce pohybu, zabraňuje „spamování“ zvukového spánku (15) thunder.stop () else: print („No pohyb")

Spustit automaticky

Pravděpodobně to chceme někde nastavit s baterií a bez připojení k internetu, takže skript musí být spuštěn při restartu bez nutnosti otevírat příkazový řádek. K tomu použijeme nejjednodušší možnou metodu: crontab Jak naplánovat úkoly v Linuxu pomocí Cron a CrontabSchopnost automatizovat úkoly je jednou z těch futuristických technologií, které již existují. Každý uživatel Linuxu může těžit z plánování systému a uživatelských úkolů, díky cronu, snadno použitelné službě na pozadí. Přečtěte si více . Typ:

sudo crontab -e. 

Pokud je tento příkaz spuštěn poprvé, nejprve se vás zeptám, jaký editor použít. Pro nano jsem vybral možnost 2. Spustí se do vybraného editoru, takže přidejte následující řádek:

@reboot python /home/pi/motion.py &

To znamená, že váš skript motion.py bude spuštěn při každém spuštění, a to tiše (takže jakýkoli výstup ze skriptu bude ignorován). Vyzkoušejte to restartováním.

Pokud se nic nehraje, přestože došlo k pohybu, nebo uslyšíte jen malé kliknutí, možná jste nepoužili úplnou cestu k souboru, nebo může být nutné převést váš soubor na nižší datový tok a menší velikost souboru.

Přidat další zvuky

Hrát stejný efekt znovu a znovu je trochu nudné, takže k tomu přidáme nějakou náhodnost. Stáhněte si další zvuky Halloween, nezapomeňte je zmenšit na rozumnou velikost a datový tok a poté je poslat na Pi pomocí scp jako dříve. Přidal jsem tři různé typy výkřiku.

Upravte kód tak, aby místo definování jednoho pygame.mixer. Zvuk proměnná, vlastně vytváříme pole zvuků. To je u Pythonu jednoduché, stačí je obklopit čárkami oddělenými seznamy s hranatými závorkami, jako například:

zvuky = [pygame.mixer. Zvuk ("/ home / pi / thunder.ogg"), pygame.mixer. Zvuk ("/ home / pi / scary_scream.ogg"), pygame.mixer. Zvuk ("/ home / pi / girl_scream.ogg"), pygame.mixer. Zvuk ("/ home / pi / psycho_scream.ogg")]

Dále importujte náhodnou knihovnu do svého souboru pomocí:

importovat náhodně. 

Nyní upravte hlavní smyčku snímání pohybu následujícím způsobem:

while True: if pir.motion_detected: print ("Motion zjištěno!") playSound = random.choice (zvuky) playSound.play () # zajistit přehrávání byl plně dokončen před obnovením detekce pohybu, zabraňuje „spamování“ zvukového spánku (15) playSound.stop () jinde: tisk („Ne pohyb")

Všimněte si drobné změny: místo hraní jediné zvukové proměnné používáme random.choice funkce vybrat náhodný zvuk z našeho zvukového pole, pak hrát to.

Zde je plný kód pro případ, že máte problémy:

importovat pygame. ze souboru pygame.mixer import zvuku. z gpiozero import MotionSensor. od času import spánku. importovat náhodný pygame.init () pygame.mixer.init () #load zvukový soubor, stejný adresář jako skript (bez mp3) zvuky = [pygame.mixer. Zvuk ("/ home / pi / thunder.ogg"), pygame.mixer. Zvuk ("/ home / pi / scary_scream.ogg"), pygame.mixer. Zvuk ("/ home / pi / girl_scream.ogg"), pygame.mixer. Zvuk ("/ home / pi / psycho_scream.ogg")] pir = MotionSensor (4) while True: if pir.motion_detected: print ("Motion zjištěno!") playSound = random.choice (zvuky) playSound.play () # zajistit přehrávání byl plně dokončen před obnovením detekce pohybu, zabraňuje „spamování“ zvukového spánku (15) playSound.stop () jinde: tisk („Ne pohyb")

U pouhých čtyř vzorků existuje vysoká pravděpodobnost opakování pokaždé, ale pokud je to nepříjemné, můžete přidat další vzorky.

A je to! Skrýt to v křoví s některými strašidelné LED monstrum oči Jak vydělat strašidelné Halloween zářící oči za méně než 5 dolarůChcete okořenit vaše Halloweenské dekorace letos? Naučte se, jak vytvořit LED oči za méně než 5 $ v tomto elektronickém projektu pro začátečníky. Přečtěte si více a měli byste být schopni zachránit si nějaké bonbóny, protože všechny děti utíkají křičet, než se dostanou ke dveřím. Nebo se skryjte ve skříni, protože rozzlobená maminka je po krvi, když jste Johnnyho plačeli.

Zřeknutí se odpovědnosti: MakeUseOf nezodpovídá za žádné zranění, které by mohlo vyplynout z použití tohoto projektu!

Vyrobíte tento soundboxem aktivovaný soundbox, abyste vyděsili místní trik nebo treaters? Nastavili jste nějaké strašidelné efekty s Raspberry Pi tento Halloween? Prosím, dejte nám vědět o tom v komentářích níže!

James má bakalářský titul v oboru umělé inteligence a je certifikován pro CompTIA A + a Network +. Je hlavním vývojářem MakeUseOf a tráví svůj volný čas hraním VR paintballu a deskových her. Staví počítače od dětství.