Reklama

Je to opäť v tomto ročnom období, keď sa považuje za spoločensky prijateľné vydesiť malé deti a dať im sladkosti. Ó radosť. Som tu, aby som vám uľahčil prácu tým, že vám ukážem, ako vytvoriť jednoduchý zvukový box Raspberry Pi Halloween citlivý na pohyb. Tu je ukážka:

Tu je to, čo budete potrebovať

Pravdepodobne jediná časť, ktorú ešte nemáte, je pohybový senzor, malú a lacnú časť, ktorú by ste mali nájsť v miestnom Microcentri alebo Mapline.

  • Raspberry Pi (akýkoľvek model urobí).
  • Pohybový senzor (~ 3 $).
  • Zapojovacie vodiče.
  • Káblový reproduktor (väčšina reproduktorov Bluetooth bude mať možnosť použiť vstupný signál).
  • 3,5 mm stereo kábel, samec-samec.

Po dokončení môžete pridať ďalšie synchronizované svetelné efekty Ako synchronizovať domáce svetlá a hudbu na HalloweenČi už usporadúvate halloweenskú večierok alebo chcete najchladnejší strašidelný dom v okolí, je nevyhnutné, aby vaše svetlá v čase blikali hudbou a zvukovými efektmi. Čítaj viac tiež, ale v tomto tutoriále sa budeme zaoberať iba strašidelnými zvukmi!

instagram viewer

Nastavenie

Používame Raspbian Jessie Lite a Python 2.7, ale akákoľvek distribúcia Linuxu, ktorá beží na vašom Pi, by mala byť v poriadku. Nechal som ho na štandardnom názve hostiteľa „raspberrypi.local“, takže začnite vzdialeným prihlásením pomocou SSH (ak ste v počítačoch Mac, otvorte okno terminálu). tady ako to isté urobiť v systéme Windows 4 jednoduché spôsoby použitia SSH vo WindowsSSH je de facto riešením pre bezpečný prístup k vzdialeným terminálom v Linuxe a iných systémoch podobných UNIX. Ak máte vzdialený server SSH, ku ktorému chcete získať prístup, musíte si stiahnuť klienta SSH ... Čítaj viac ) - alebo ak ste sa rozhodli používať plnú Raspbian s grafickým používateľským rozhraním pre počítače, neváhajte preskočiť na aktualizáciu.

ssh [email protected]. (ako heslo zadajte malinu) sudo apt-get update. sudo apt-get install python-pip. nainštalovať gpiozero. 

Týmto sa inštaluje jednoduchá knižnica na prácu s kolíkmi GPIO v Pythone s mnohými typmi vstavaných senzorov a tlačidiel. Zapojte senzor pomocou signálneho kolíka na GPIO4, VCC pripojeného na 5V a GND pripojeného na GND. To sa môže líšiť v závislosti od vášho presného modelu, a preto ho potvrďte pomocou schémy pinout.

Graf GPIO Raspberry Pi
Obrázok Kredit: raspberrypi.org

Našťastie má môj prípad Pi 2 od spoločnosti Pimoroni priamo na neho vyleptaný laserový diagram.

Označené puzdro Raspberry Pi

Teraz vytvorme skript na detekciu pohybu.

nano motion.py. 

Prilepiť do:

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

Stlačením CTRL-X a Y uložte a ukončite, potom spustite s:

python motion.py. 

Na obrazovke by sa mala opakovať správa „Žiadny pohyb“, až kým sa vám neozvučí pred senzorom, keď sa objaví na obrazovke „Detekcia pohybu!“.

Pohyb zistený v termináli

Ak sa správa vôbec nezmení, zapojili ste ju nesprávne.

Ak sa chcete dozvedieť viac o tejto jednoduchej knižnici GPIOZero, prečítajte si ju tento fantastický podvodník.

Prehrávanie zvuku

Pripojte prenosný reproduktor a uistite sa, že je v prípade potreby napájaný. Použijeme pygame knižnica na prehrávanie zvukov, tak choďte do toho a nainštalujte ju:

sudo apt-get install python-pygame. 

Najprv potrebujeme zvukový súbor na prehratie. Ak to robíte z prostredia pracovnej plochy, pokračujte a stiahnite si WAV alebo OGG odkiaľkoľvek (našiel som dobrý výber tu bezplatne znie Halloween) a vložte ju do svojho domovského adresára. Najprv by som navrhol prevzorkovanie prevádzanie na malý formát OGG tak ako tak.

Ak sa pripájate na diaľku a používate iba príkazový riadok, s niektorými webmi máme trochu väčšie problémy, pretože wget príkaz nemusí chytiť skutočný súbor. Namiesto toho si ho môžeme stiahnuť lokálne na náš desktop a použiť scp (secure copy) príkaz na kopírovanie cez príkazový riadok. Môžete sa dozvedieť viac o scp tu, ale zatiaľ, otvorte novú kartu Terminál a napíšte:

scp thunder.ogg [email protected]: 

Premenujte thunder.ogg podľa potreby, ale nezabudnite na toto finále : (príkaz sa dokončí bez neho, ale neurobí to, čo chceme). V predvolenom nastavení sa súbor prenesie do domovského adresára používateľa Pi.

Teraz upravme skript na prehrávanie zvuku. Začnite importom niektorých nových modulov:

import pygame.mixer. zo súboru pygame.mixer import zvuku. 

Potom hneď za existujúcimi príkazmi na import budeme znova a znova opakovať rovnaký zvuk na účely testovania. Zostaňte so zvyškom kódu na snímanie pohybu tak, ako je to doteraz - jednoducho sa nespustí, pretože bude navždy uviaznutý v tejto slučke na prehrávanie zvuku.

pygame.init () pygame.mixer.init () # načítať zvukový súbor do domovského adresára používateľa Pi (žiadne mp3) hrom = pygame.mixer. Zvuk ("/ home / pi / thunder.ogg"), zatiaľ čo True: thunder.play () spánok (10) thunder.stop ()

Všimnite si, že keď som pôvodne vyskúšal tento proces, zvuk sa odmietol prehrať a namiesto toho len klikol. Vinník: veľkosť súboru alebo bitová rýchlosť: 24-bit a viac ako 5 MB za 15-sekundový klip. Vďaka škálovaniu na 16-bitový prevodník, ktorý som prepojil vyššie, všetko fungovalo pekne a veľkosť bola znížená na iba 260 kB!

Ak si všimnete škaredé syčanie z vašich reproduktorov, keď je spustená vaša aplikácia Python, ale inak:

sudo nano /boot/config.txt. 

A na koniec pridajte tento riadok:

disable_audio_dither = 1. 

Zmeny sa prejavia až po reštartovaní. Alebo sa neobťažujte, pretože mi to znelo ako dážď.

Nakoniec upravme hlavnú slučku na kontrolu pohybu tak, aby pri detekcii pohybu prehrala zvuk. Použijeme 15-sekundové oneskorenie, aby bolo možné prehrať celú slučku, a pôsobiť ako vyrovnávacia pamäť spamu, keď dôjde k nepretržitému pohybu.

while True: if pir.motion_detected: print ("Motion zjištěno!") thunder.play () # zaistí úplné prehrávanie dokončená pred obnovením detekcie pohybu, zabraňuje „spamovaniu“ zvukového spánku (15) thunder.stop () else: print („No motion ")

Spustiť automaticky

Pravdepodobne to chceme niekde nastaviť pomocou batérie a bez pripojenia na internet, takže skript sa musí spustiť pri reštarte bez toho, aby musel otvárať príkazový riadok. Na tento účel použijeme najjednoduchšiu možnú metódu: crontab Ako naplánovať úlohy v Linuxe s Cron a CrontabSchopnosť automatizovať úlohy je jednou z tých futuristických technológií, ktoré už existujú. Každý užívateľ systému Linux môže mať úžitok z plánovania úloh systému a používateľov, vďaka cron, ľahko použiteľnej službe na pozadí. Čítaj viac . typ:

sudo crontab -e. 

Ak je tento príkaz spustený prvýkrát, najprv sa vás opýtam, aký editor použiť. Vybral som možnosť 2 pre nano. Spustí sa do vybratého editora, preto pridajte nasledujúci riadok:

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

To znamená, že skript motion.py sa spustí pri každom štarte a urobí ho ticho (takže akýkoľvek výstup zo skriptu bude ignorovaný). Vyskúšajte to reštartovaním.

Ak sa nič nehrá, aj keď došlo k pohybu, alebo budete počuť iba malé kliknutie, možno ste nepoužívali úplnú cestu k súboru alebo je možné, že váš súbor bude potrebné skonvertovať na nižšiu bitrate a menšiu veľkosť súboru.

Pridať ďalšie zvuky

Hrať ten istý efekt znova a znova je trochu nudné, takže k tomu pridáme trochu náhodnosti. Stiahnite si ďalšie zvuky Halloweenu, nezabudnite ich zmenšiť na rozumnú veľkosť a dátový tok a potom ich poslať na Pi pomocou scp ako predtým. Pridal som tri rôzne typy výkriku.

Upravte kód tak, aby namiesto definovania jedného pygame.mixer. zvuk premenná, vlastne vytvárame rad zvukov. V Pythone je to jednoduché, stačí ich ohraničiť čiarkami oddelenými zoznamami, napríklad hranatými zátvorkami:

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")]

Potom importujte náhodnú knižnicu do svojho súboru pomocou:

importovať náhodne. 

Teraz upravte hlavnú slučku snímania pohybu nasledovne:

while True: if pir.motion_detected: print ("Motion zjištěno!") playSound = random.choice (zvuky) playSound.play () # zabezpečí prehrávanie bol úplne dokončený pred obnovením detekcie pohybu, zabraňuje „spamovaniu“ zvukového spánku (15) playSound.stop () else: print („No motion ")

Všimnite si malú zmenu: namiesto prehrávania jednej zvukovej premennej používame random.choice funkciu vybrať náhodný zvuk z nášho zvukového poľa, potom hrať.

Tu je celý kód pre prípad, že máte problémy:

importovať pygame. zo súboru pygame.mixer import zvuku. z gpiozero import MotionSensor. od času import spánku. importovať náhodný pygame.init () pygame.mixer.init () #load zvukový súbor, rovnaký adresár ako zvuky skriptu (bez mp3) = [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 () # zabezpečí prehrávanie bol úplne dokončený pred obnovením detekcie pohybu, zabraňuje „spamovaniu“ zvukového spánku (15) playSound.stop () else: print („No motion ")

Pri iba štyroch vzorkách je vysoká pravdepodobnosť opakovania zakaždým. Ak je to nepríjemné, môžete pridať ďalšie vzorky.

To je všetko! Skryte to v kríkoch s niektorými strašidelné LED monštrum oči Ako si vyrobiť strašidelné Halloween žiariace oči za menej ako 5 dolárovChcete tento rok ozdobiť svoje Halloweenské ozdoby? Naučte sa, ako si vyrobiť oči LED za menej ako 5 dolárov v tomto elektronickom projekte začiatočníkov. Čítaj viac a mali by ste byť schopní zachrániť si nejaké sladkosti, keď všetky deti utekajú kričať skôr, ako sa dostanú ku dverám. Alebo sa skryte v skrini, pretože nahnevaná mama je po krvi, keď si trochu Johnny plakala.

Zrieknutie sa zodpovednosti: MakeUseOf nezodpovedá za žiadne zranenia osôb, ktoré môžu vyplynúť z vášho používania tohto projektu!

Vytvoríte tento soundboxom aktivovaný soundbox, aby ste vystrašili miestnych trikov alebo spracovateľov? Nastavili ste strašidelné efekty s Raspberry Pi tento Halloween? Dajte nám o tom vedieť v komentároch nižšie!

James má bakalárske štúdium v ​​oblasti umelej inteligencie a je držiteľom certifikátu CompTIA A + a Network +. Je popredným vývojárom MakeUseOf a trávi svoj voľný čas hraním VR paintballu a spoločenských hier. Staval počítače od malička.