Oglas

Ponovno je čas v letu, ko se zdi, da je groziti majhne otroke in jim dati sladkarije. O veselje. Tukaj sem, da olajšam vaše delo in vam pokažem, kako narediti preprost zvočni zvočnik Raspberry Pi Halloween. Sledi predstavitev:

Tukaj je tisto, kar boste potrebovali

Verjetno je edini del, ki ga še nimate, senzor gibanja, majhen in poceni del, ki bi ga morali najti v lokalnem Microcentru ali Maplinu.

  • Malina Pi (kateri koli model bo).
  • Senzor gibanja (~ 3 $).
  • Žice za povezovanje.
  • Žični zvočnik (večina zvočnikov Bluetooth bo imela možnost uporabe vmesnika).
  • 3,5 mm stereo kabel, moški do moškega.

Ko končate, jih boste morda želeli dodati sinhronizirani svetlobni učinki Kako sinhronizirati domače luči in glasbo za noč čarovnicNe glede na to, ali prirejate hišno zabavo za noč čarovnic ali želite najbolj kul hišo s prebivališčem v soseski, so vaše luči pravočasno utripale v glasbo in zvočne učinke. Preberi več tudi v tej vadnici bomo pokrivali le delček strašljivih zvokov!

Nastavitev

Uporabljamo Raspbian Jessie Lite in Python 2.7, vendar bi morali biti vsi distrobusi Linux, ki delujejo na vašem Pi-ju, v redu. Pustil sem ga na standardnem imenu gostitelja "raspberrypi.local", zato se najprej prijavite na daljavo s pomočjo SSH (odprite okno Terminal, če ste na Macu. Tukaj je

instagram viewer
kako to storiti v operacijskem sistemu Windows 4 enostavni načini uporabe SSH v operacijskem sistemu WindowsSSH je dejanska rešitev za varen dostop do oddaljenih terminalov v Linuxu in drugih sistemih, ki so podobni UNIX-u. Če imate oddaljeni strežnik SSH, do katerega želite dostopati, boste morali prenesti odjemalca SSH ... Preberi več ) - ali če ste se odločili za uporabo celotne datoteke Raspbian z namiznim vmesnikom, lahko preskočite na posodobitev.

ssh [email protected]. (vnesite malino kot geslo) sudo apt-get update. sudo apt-get install python-pip. sudo pip namestite gpiozero. 

Ta namesti preprosto knjižnico za delo s GPIO zatiči v Pythonu z veliko vrstami vgrajenih senzorjev in gumbov. Povežite senzor s signalnim zatičem na GPIO4, VCC povezanim s 5 V in GND povezanim z GND. To se lahko razlikuje glede na vaš natančen model, zato potrdite s pribitnim diagramom.

Raspberry Pi GPIO diagram
Kreditna slika: raspberrypi.org

V pomoč mi je, da ima moj Pi 2 kovček iz Pimoronija izrezan diagram, ki je lasersko vrezan neposredno nanj.

Z oznako Primer maline Pi

Zdaj pa naredimo naš skript za zaznavanje gibanja.

nano motion.py. 

Prilepi:

from gpiozero import MotionSensor pir = MotionSensor (4) medtem ko je res: če je pir.motion_detected: print ("Zaznano gibanje!") else: print ("Brez gibanja")

Pritisnite CTRL-X in Y, da shranite in zapustite, nato pa zaženite z:

python motion.py. 

Na zaslonu bi morali videti sporočilo "brez gibanja", dokler ne mahnete z roko pred senzorjem, ko se bo zazrlo na "Zaznano gibanje!"

Zaznavanje gibanja v sponki

Če se sporočilo sploh ne spremeni, ste ga napačno povezali.

Če vas zanima več o tej preprosti knjižnici GPIOZero, si oglejte ta fantastična varalica.

Predvajanje zvoka

Priključite prenosni zvočnik in poskrbite, da bo napajal, če bo treba. Uporabili bomo piragame knjižnica za predvajanje zvokov, zato nadaljujte in jo namestite:

sudo apt-get install python-pygame. 

Najprej potrebujemo zvočno datoteko za predvajanje. Če to počnete v namiznem okolju, nadaljujte s prenosom WAV ali OGG datoteka od nekod (našel sem dober izbor tukaj se sliši brezplačno noč čarovnic) in ga vnesite v domači imenik. Najprej bi predlagal znižanje vzorcev in pretvorbo v majhen format OGG vseeno.

Če se povezujete na daljavo in uporabljate samo ukazno vrstico, imamo na nekaterih spletnih mestih malo več težav, saj wget ukaz morda ne zgrabi dejanske datoteke. Namesto tega ga lahko prenesemo lokalno na namizje in uporabimo scp (varna kopija) ukaz za kopiranje v ukazni vrstici. Izvedete lahko več o scp tukaj, vendar zaenkrat odprite nov zavihek Terminal in vnesite:

scp thunder.ogg [email protected]: 

Preimenujte thunder.ogg, kot je primerno, vendar tega ne pozabite : (ukaz se bo dokončal brez njega, vendar ne bomo storili tega, kar želimo.) To bo privzeto prenese datoteko v domači imenik Pi uporabnika.

Zdaj pa spremenimo scenarij za predvajanje zvoka. Začnite z uvozom nekaterih novih modulov:

uvoz pygame.mixer. iz pygame.mixer uvoz zvoka. 

Potem bomo tik za obstoječimi izjavami o uvozu za testiranje prekinili isti zvok. Ostanite kodo za zaznavanje gibanja, kot je za zdaj - preprosto se ne bo zagnala, saj bo v tej zanki za predvajanje zvoka za vedno obtičala.

pygame.init () pygame.mixer.init () # naložite zvočno datoteko v domači imenik uporabnika Pi (brez mp3-jev) grom = pygame.mixer. Zvok ("/ dom / pi / thunder.ogg"), medtem ko je res: thunder.play () spanje (10) thunder.stop ()

Ko sem prvotno preizkusil ta postopek, je zvok zavrnil predvajanje in namesto tega samo kliknil. Razlog za velikost datoteke ali bitne hitrosti je bil 24-bitni in več kot 5 MB za 15 sekundni posnetek. Zmanjšanje obsega do 16-bitnega pretvornika, s katerim sem bil povezan zgoraj, je vse lepo delovalo, velikost pa je bila zmanjšana na samo 260 KB!

Če med zvočniki opazite grdo piskanje, ko se zažene aplikacija Python, drugače pa ne, vnesite:

sudo nano /boot/config.txt. 

In dodajte to vrstico na koncu:

onesposobiti_audio_dither = 1. 

Znova zaženite, da spremembe začnejo veljati. Ali ne moti, saj mi nekako tako zveni kot dež.

Končno spremenimo glavno zanko za preverjanje gibanja, da predvaja zvok, ko zazna gibanje. Uporabili bomo 15-sekundni zamik, da se lahko predvaja celotna zanka in deluje kot medpomnilnik za neželeno pošto, kadar je gibanja neprekinjeno veliko.

medtem ko je res: če je pir.motion_detected: natisnite ("gibanje zaznano!") thunder.play () # zagotovite, da je predvajanje v celoti dokončano pred nadaljevanjem zaznavanja gibanja, preprečuje "neželeno pošiljanje" zvočnega mirovanja (15) thunder.stop () drugo: natisni ("Ne gibanje ")

Začni samodejno

Verjetno želimo to nastaviti nekje z baterijo in brez internetne povezave, zato se skript mora zagnati znova zagnati, ne da bi morali odpreti ukazno vrstico. V ta namen bomo uporabili najpreprostejšo možno metodo: krontab Kako razporejati naloge v Linuxu s Cron in CrontabSposobnost avtomatizacije nalog je ena tistih futurističnih tehnologij, ki že obstaja. Vsak uporabnik Linuxa ima lahko koristi od sistema načrtovanja in uporabniških opravil, zahvaljujoč cron, enostavni osnovni storitvi. Preberi več . Vrsta:

sudo crontab -e. 

Če se ta ukaz prvič izvaja, se vam bo začelo vprašanje, kateri urejevalnik uporabiti. Izbral sem možnost 2, za nano. Vklopi se v izbrani urejevalnik, zato dodajte naslednjo vrstico:

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

To pomeni, da se bo vaš skript motion.py izvajal ob vsakem zagonu in to storite tiho (tako da bo vsak izhod iz skripta prezrt). Znova zaženite, da ga preizkusite.

Če se kljub gibanju nič ne igra, ali slišite le majhen klik, morda niste uporabili celotne poti datoteke ali pa bo morda potrebna pretvorba datoteke v nižjo bitrate in manjšo velikost datoteke.

Dodaj več zvokov

Igranje enakega učinka vedno znova je nekoliko dolgočasno, zato mu dodajmo nekaj naključnosti. Prenesite še nekaj zvokov za noč čarovnic in si pri tem zapomnite, da jih zmanjšate na velikost in bitrate, nato pa jih pošljite na vaš Pi z uporabo scp kot prej. Dodala sem tri različne vrste krika.

Spremenite kodo tako, da namesto določitve ene same pygame.mixer. Zvok spremenljivko, dejansko ustvarjamo matrika zvokov. Pri Pythonu je to preprosto, seznam njih ločite z vejicami s kvadratnimi oklepaji, tako:

zvoki = [pygame.mixer. Zvok ("/ dom / pi / thunder.ogg"), pygame.mixer. Zvok ("/ domača / pi / scary_scream.ogg"), pygame.mixer. Zvok ("/ dom / pi / girl_scream.ogg"), pygame.mixer. Zvok ("/ domov / pi / psycho_scream.ogg")]

Nato uvozite naključno knjižnico v svojo datoteko z:

uvoz naključno. 

Zdaj spremenite glavno zanko za zaznavanje gibanja na naslednji način:

medtem ko je res: če je pir.motion_detected: natisnite ("gibanje odkrito!") playSound = random.choice (zvoki) playSound.play () # zagotovite, da ima predvajanje pred nadaljevanjem zaznavanja gibanja v celoti končano, preprečuje "neželeno pošto" zvočnega mirovanja (15) playSound.stop () drugo: natisni ("Ne gibanje ")

Upoštevajte manjšo spremembo: namesto da predvajamo samo eno spremenljivko zvoka, uporabljamo naključna izbira funkcijo za izbiro naključnega zvoka iz našega zvočnega sklopa in nato predvajanje tega.

Tu je celotna koda, če imate težave:

uvozi piggame. iz pygame.mixer uvoz zvoka. iz gpiozero uvoz MotionSensor. od časa uvoz spanja. uvoz naključnega pygame.init () pygame.mixer.init () #load zvočna datoteka, isti imenik kot skripta (brez mp3-jev) zveni = [pygame.mixer. Zvok ("/ dom / pi / thunder.ogg"), pygame.mixer. Zvok ("/ domača / pi / scary_scream.ogg"), pygame.mixer. Zvok ("/ dom / pi / girl_scream.ogg"), pygame.mixer. Zvok ("/ dom / pi / psycho_scream.ogg")] pir = MotionSensor (4) medtem ko je res: če je pir.motion_detected: natisnite ("gibanje odkrito!") playSound = random.choice (zvoki) playSound.play () # zagotovite, da ima predvajanje pred nadaljevanjem zaznavanja gibanja v celoti končano, preprečuje "neželeno pošto" zvočnega mirovanja (15) playSound.stop () drugo: natisni ("Ne gibanje ")

Pri samo štirih vzorcih je velika verjetnost ponovitve vsakič, vendar lahko dodate več vzorcev, če vas to moti.

To je to! Z nekaterimi ga skrijemo v grmovju strašljive LED pošastne oči Kako narediti spooky svetleče oči za noč čarovnic za manj kot 5 USDŽelite letos popestriti svoje halloween okraske? Naučite se, kako narediti LED oči za manj kot 5 USD v tem elektronskem projektu za začetnike. Preberi več in morali bi si prihraniti nekaj sladkarij, saj vsi otroci bežijo kričeči, preden sploh pridejo do vrat. Ali pa se pojdite skriti v omaro, ker je jezna mama kri, potem ko ste mali Johnny jokali.

Izjava o omejitvi odgovornosti: MakeUseOf ne odgovarja za kakršne koli telesne poškodbe, ki bi lahko nastale zaradi vaše uporabe tega projekta!

Ali boste naredili to zvočno polje z aktiviranjem gibanja, da bi prestrašili lokalne trike ali trezorje? Ste si z malino Pi na ta noč čarovnic vzpostavili strašljive učinke? Sporočite nam v spodnjih komentarjih!

James ima doktorat iz področja umetne inteligence in ima certifikat CompTIA A + in Network +. Je vodilni razvijalec MakeUseOf in svoj prosti čas preživlja z igranjem VR paintball in družabnih iger. Z računalniki gradi že od malih nog.