Mainos

Se on taas vuosi vuodesta, jolloin pidetään sosiaalisesti hyväksyttävänä kauhistaa pieniä lapsia ja antaa heille karkkia. Voi ilo. Olen täällä helpottaaksesi työtäsi näyttämällä sinulle kuinka tehdä yksinkertainen liikettä havaitseva Raspberry Pi Halloween -äänilaatikko. Tässä on demo:

Tässä on mitä tarvitset

Todennäköisesti ainoa osa, jota sinulla ei vielä ole, on liiketunnistin, pieni ja edullinen osa, jonka sinun pitäisi löytää paikallisesta Microcenteristä tai Maplinista.

  • Vadelma Pi (mikä tahansa malli tekee).
  • Liiketunnistin (~ 3 dollaria).
  • Kytkentäjohdot.
  • Langallinen kaiutin (useimmissa Bluetooth-kaiuttimissa on mahdollisuus käyttää linja sisään).
  • 3,5 mm stereokaapeli, uros-uros.

Kun olet valmis, saatat haluta lisätä joitain synkronoidut valaistehosteet Kuinka synkronoida kodin valot ja musiikki HalloweenilleOletpa sitten isännöimäsi Halloween-talon juhlia tai haluatko naapuruston viileimmän kummitetun talon, saat valot vilkkumaan ajoissa musiikkiin ja äänitehosteisiin on välttämätöntä. Lue lisää myös, mutta tässä opetusohjelmassa käsittelemme vain pelottavia ääniä vähän!

Asettaa

Käytämme Raspbian Jessie Lite- ja Python 2.7 -versioita, mutta kaikkien Pi-koneellasi toimivien Linux-distrojen pitäisi olla hienoja. Olen jättänyt sen tavanomaiseen isäntänimeen “raspberrypi.local”, joten aloita kirjautumalla sisään etäyhteyden kautta SSH: lla (avaa terminaali-ikkuna, jos olet Mac-tietokoneessa). tässä Kuinka tehdä sama Windowsissa 4 helppoa tapaa käyttää SSH: ta WindowsissaSSH on tosiasiallinen ratkaisu etäpäätelaitteiden turvalliseen käyttämiseen Linuxissa ja muissa UNIX-kaltaisissa järjestelmissä. Jos sinulla on etä SSH-palvelin, jota haluat käyttää, sinun on ladattava SSH-asiakasohjelma ... Lue lisää ) - tai jos olet valinnut täydellisen Raspbian-sovelluksen käyttämisen työpöydän graafisen käyttöliittymän kanssa, ohita päivitys.

ssh [email protected]. (kirjoita salasana vadelma) sudo apt-get update. sudo apt-get install python-pip. sudo pip install gpiozero. 

Tämä asentaa yksinkertaisen kirjaston käytettäväksi Pythonin GPIO-nastat kanssa monentyyppisillä sisäänrakennetuilla antureilla ja painikkeilla. Kytke anturi GPIO4: n signaalin nastalla, VCC on kytketty 5 V: iin ja GND on kytketty GND: hen. Tämä voi vaihdella tarkan mallisi mukaan, joten vahvista ne pinout-kaaviolla.

Vadelma Pi GPIO -kaavio
Kuvahyvitys: raspberrypi.org

On hyödyllistä, että Pimoroni-Pi 2-tapauksessani on suorakaikkaiden avulla syövytetty nastakaavio.

Merkitty Vadelma Pi-tapaus

Tehdään nyt liiketunnistusohjelma.

nano motion.py. 

Liitä sisään:

gpiozero-tuonnista MotionSensor pir = MotionSensor (4) kun taas totta: jos pir.motion_detected: print ("liike havaittu!") muu: print ("ei liikettä")

Paina CTRL-X, sitten Y tallentaaksesi ja poistuaksesi, aja sitten:

python motion.py. 

Sinun pitäisi nähdä "ei liikettä" -viesti toistuvasti näytöllä, kunnes heilautat kättäsi anturin edessä, kun se viipyy "Liike havaittu!"

Liikkeessä havaittiin liike

Jos viesti ei muutu ollenkaan, olet johtanut sen väärin.

Jos haluat lisätietoja tästä yksinkertaisesta GPIOZero-kirjastosta, katso tätä tämä fantastinen cheatsheet.

Toista ääni

Liitä kannettava kaiutin ja varmista, että kaiuttimessa on virta tarvittaessa. Käytämme pygame kirjasto soittamaan ääniä, joten jatka ja asenna se:

sudo apt-get install python-pygame. 

Ensinnäkin, toistamiseen tarvitaan äänitiedosto. Jos teet tämän työpöytäympäristöstä, siirry eteenpäin ja lataa a WAV tai OGG tiedosto jostakin (löysin hyvän valinnan ilmaiset Halloween-äänet täällä) ja lisää se kotihakemistoon. Ehdotan pienentää näytteenottoa ensin ja muuntaminen pieneen OGG-muotoon joka tapauksessa.

Jos muodostat yhteyden etäyhteydellä ja käytät vain komentoriviä, meillä on hiukan enemmän vaikeuksia joidenkin sivustojen kanssa, wget komento ei välttämättä tartu tiedostoon. Sen sijaan voimme ladata sen paikallisesti työpöydällemme ja käyttää scp (suojattu kopio) -komento kopioidaksesi komentoriviltä. Voit oppia lisää noin scp avaa nyt uusi Terminal-välilehti ja kirjoita:

scp thunder.ogg [email protected]: 

Nimeä thunder.ogg uudelleen sopivaksi, mutta älä unohda loppua : (komento täyttyy ilman sitä, mutta se ei tee mitä haluamme sen tekevän). Oletuksena tämä siirtää tiedoston Pi-käyttäjän kotihakemistoon.

Nyt muokataan skripti soittamaan ääni. Aloita tuomalla joitain uusia moduuleja:

tuo pygame.sekoitin. osoitteesta pygame.mixer import Sound. 

Sitten heti olemassa olevien tuontilausumien jälkeen, soitamme saman äänen yhä uudelleen testausta varten. Jätä loput liiketunnistuskoodistasi kuten nyt - se ei vain toimi, koska se pysyy umpinaisessa äänentoistosilmukassa ikuisesti.

pygame.init () pygame.mixer.init () # Lataa äänitiedosto Pi-käyttäjän kotikansioon (ei mp3-tiedostoja) ukkonen = pygame.sekoitin. Ääni ("/ home / pi / thunder.ogg") totta: thunder.play () uni (10) thunder.stop ()

Huomaa, että kun yritin alun perin tätä prosessia, ääni kieltäytyi toistamasta ja napsautti sen sijaan. Tiedoston koko tai bittinopeus oli syyllinen: se oli 24-bittinen ja yli 5 Mt 15 sekunnin leikkeellä. Asteikon pienentäminen 16-bittiseksi muuntimeen, johon yllä linkitin, sai kaiken toimimaan hienosti, ja koko pienennettiin vain 260 kt: iin!

Jos huomaat kaiuttimista kiusaamista kaiuttimiesi aikana, kun Python-sovelluksesi on käynnissä, mutta ei muuten, kirjoita:

sudo nano / boot /config.txt. 

Ja lisää tämä rivi loppuun:

disable_audio_dither = 1. 

Käynnistä uudelleen, jotta muutokset tulevat voimaan. Tai älä vaivaudu, koska se kuulostui minusta joka tapauksessa sateelta.

Lopuksi muokataan pääliikkeen tarkistussilmukkaa soittamaan ääntä, kun liike havaitaan. Käytämme 15 sekunnin viivettä, jotta koko silmukka voidaan toistaa, ja toimiaksemme roskapostin puskurina silloin, kun ei-stop-liikkeitä on paljon.

kun taas totta: jos pir.motion_detected: tulosta ("Liike havaittu!") thunder.play () # varmista, että toisto on ollut täysi valmis ennen liiketunnistuksen jatkamista, estää äänen unen "roskapostin" (15) thunder.stop () muuten: tulosta ("Ei motion ")

Käynnistä automaattisesti

Haluamme todennäköisesti asettaa tämän jonnekin paristolla ja ilman Internet-yhteyttä, joten komentosarjan on suoritettava uudelleen käynnistettäessä ilman, että tarvitsee avata komentoriviä. Tätä varten käytämme yksinkertaista mahdollista menetelmää: crontab Kuinka ajoittaa tehtäviä Linuxissa Cronin ja Crontabin avullaKyky automatisoida tehtäviä on yksi niistä futuristisista tekniikoista, joka on jo täällä. Jokainen Linux-käyttäjä voi hyötyä järjestelmän ja käyttäjän tehtävien ajoittamisesta helppokäyttöisen taustapalvelun cron ansiosta. Lue lisää . Tyyppi:

sudo crontab -e. 

Jos tämä on ensimmäinen kerta tämän komennon suorittamiseksi, se alkaa kysymällä, mitä editoria käytetään. Valitsin vaihtoehdon 2 nanolle. Se käynnistyy valitsemassasi editorissa, joten lisää seuraava rivi:

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

Tämä tarkoittaa, että motion.py-skriptisi suoritetaan jokaisessa käynnistyksessä, ja tee se hiljaa (joten kaikki komentosarjan tulokset jätetään huomioimatta). Käynnistä uudelleen kokeillaksesi sitä.

Jos mikään ei toista liikkeestä huolimatta, tai kuulet vain pienen napsautuksen, et ehkä ole käyttänyt koko tiedostopolkua, tai tiedosto voi joutua muuntamaan pienemmäksi bittinopeudeksi ja pienemmäksi tiedostokokoksi.

Lisää lisää ääniä

Saman efektin soittaminen yhä uudelleen on vähän tylsää, joten lisäämme siihen satunnaisuutta. Lataa lisää Halloween-ääniä muistamalla skaalata ne järkevään kokoon ja bittinopeuteen, ja lähettää ne sitten Pi-laitteellesi käyttämällä scp kuten ennen. Lisäsin kolme erityyppistä huutoa.

Muokkaa koodia siten, että sijasta määritetään yksi pygame.mixer. Ääni muuttuja, me todella luomme ryhmä ääniä. Tämä on yksinkertaista Pythonin kanssa, ympäröi vain pilkuilla erotettu luettelo niistä hakasulkeilla, kuten näin:

äänet = [pygame.sekoitin. Ääni ("/ koti / pi / ukkonen.ogg"), pygame.sekoitin. Ääni ("/ home / pi / scary_scream.ogg"), pygame.mixer. Ääni ("/ home / pi / girl_scream.ogg"), pygame.mixer. Ääni ("/ koti / pi / psycho_scream.ogg")]

Tuo seuraavaksi satunnainen kirjasto tiedostoosi:

Tuo satunnainen. 

Muokkaa nyt liiketunnistussilmukkaa seuraavasti:

samalla kun totta: jos pir.motion_detected: tulosta ("liike havaittu!") playSound = random.choice (äänet) playSound.play () # varmista, että toistossa on on valmis kokonaan ennen liiketunnistuksen jatkamista, estää äänen nukkumisen "roskapostiksi" (15) playSound.stop () else: print ("No motion ")

Huomaa pieni muutos: sijasta, että soitamme yhtä äänimuuttujaa, käytämme random.choice Toiminto valitsee satunnaisen äänen äänimatriisistamme ja toistamme sen.

Tässä on koko koodi, jos sinulla on ongelmia:

tuo pygame. osoitteesta pygame.mixer import Sound. gpiozero-tuonnista MotionSensor. tuonnissa nukkua. Tuo satunnainen pygame.init () pygame.mixer.init () # Lataa äänitiedosto, sama hakemisto kuin skripti (ei mp3-tiedostoja) äänet = [pygame.mixer. Ääni ("/ koti / pi / ukkonen.ogg"), pygame.sekoitin. Ääni ("/ home / pi / scary_scream.ogg"), pygame.mixer. Ääni ("/ home / pi / girl_scream.ogg"), pygame.mixer. Ääni ("/ home / pi / psycho_scream.ogg")] pir = MotionSensor (4) samalla kun totta: jos pir.motion_detected: tulosta ("liike havaittu!") playSound = random.choice (äänet) playSound.play () # varmista, että toistossa on on valmis kokonaan ennen liiketunnistuksen jatkamista, estää äänen nukkumisen "roskapostiksi" (15) playSound.stop () else: print ("No motion ")

Vain neljällä näytteellä on suuri todennäköisyys toistua joka kerta, mutta voit lisätä lisää näytteitä, jos se on ärsyttävää.

Se siitä! Piilota se pensailla joidenkin kanssa pelottavia LED-hirviöitä Kuinka tehdä pelottavista hehkuvista silmistä alle 5 dollariaHaluatko mausteta Halloween-koristeesi tänä vuonna? Opi kuinka tehdä LED-silmät alle 5 dollaria tässä aloittelijan elektroniikkaprojektissa. Lue lisää , ja sinun pitäisi pystyä pelastamaan itsellesi karkkia, koska kaikki lapset pakenevat huutaen ennen kuin edes saavuttavat oven. Tai mennä piiloutumaan kaapista, koska vihainen äiti on poissa verta, kun olet saanut pienen Johnnyn itkemään.

Vastuuvapauslauseke: MakeUseOf ei ole vastuussa henkilövahinkoista, jotka voivat johtua tämän projektin käytöstä!

Aiotteko tehdä tämän liikkeellä aktivoidun äänilaatikon paikallisten huijauskoodien pelottamiseksi? Oletko asentanut pelottavia tehosteita vadelmapiin kanssa tällä Halloweenilla? Kerro meille siitä alla olevissa kommenteissa!

Jamesilla on teknisen älykunnan kandidaatin tutkinto ja hän on CompTIA A + ja Network + -sertifioitu. Hän on MakeUseOfin johtava kehittäjä ja viettää vapaa-aikansa pelaamalla VR-paintballia ja lautapelejä. Hän on rakennettu tietokoneita lapsuudestaan ​​asti.