Skelbimas

Tai vėl yra metų laikas, kai socialiai priimtina bauginti mažus vaikus ir dovanoti jiems saldainius. O džiaugsmas. Aš čia, norėdamas palengvinti jūsų darbą, parodydamas, kaip pasidaryti paprastą judesiais jautrų Raspberry Pi Halloween garso dėžutę. Štai demonstracinė versija:

Štai štai ko jums reikės

Turbūt vienintelė dalis, kurios dar neturite, yra judesio jutiklis. Tai maža ir nebrangi dalis, kurią turėtumėte rasti vietiniame „Microcenter“ arba „Maplin“.

  • Raspberry Pi (bet kuris modelis tai padarys).
  • Judesio jutiklis (~ 3 USD).
  • Kabelio laidai.
  • Laidinis garsiakalbis (dauguma „Bluetooth“ garsiakalbių turės galimybę naudoti linijinį įvestį).
  • 3,5 mm stereo kabelis, vyriškas.

Baigę galite ką nors pridėti sinchronizuoti apšvietimo efektai Kaip sinchronizuoti namų apšvietimą ir muziką HelovinuiNesvarbu, ar rengiate vakarėlius Helovyno namuose, ar norite, kad kaimynystėje vyktų šauniausias persekiojamas namas, labai svarbu, kad jūsų lemputės laiku mirksėtų muzikai ir garso efektams. Skaityti daugiau taip pat, tačiau šiame vadove mes šiek tiek apimsime tik baisius garsus!

instagram viewer

Nustatymas

Mes naudojame „Raspbian Jessie Lite“ ir „Python 2.7“, tačiau bet koks „Linux“ diskontas, veikiantis jūsų Pi programoje, turėtų būti geras. Palikau jį standartiniame pagrindinio kompiuterio pavadinime „raspberrypi.local“, todėl pradėkite prisijungdami nuotoliniu būdu naudodami SSH (atidarykite terminalo langą, jei naudojate „Mac“. Štai kaip padaryti tą patį Windows 4 paprasti būdai, kaip naudoti SSH sistemoje WindowsSSH yra de facto sprendimas, skirtas saugiai pasiekti nuotolinius terminalus „Linux“ ir kitose UNIX tipo sistemose. Jei turite nuotolinį SSH serverį, kurį norite pasiekti, turėsite atsisiųsti SSH klientą ... Skaityti daugiau ) - arba jei pasirinkote naudoti visą „Raspbian“ su darbalaukio GUI, nedvejodami pereikite prie atnaujinimo.

ssh [email protected]. (slaptažodį įveskite aviečių) sudo apt-get update. sudo apt-get install python-pip. sudo pip įdiegti gpiozero. 

Tai įdiegia paprastą biblioteką, skirtą darbui su GPIO kaiščiais Python'e su daugelio tipų įmontuotais jutikliais ir mygtukais. Prijunkite jutiklį signalo kaiščiu ant GPIO4, VCC prijungtu prie 5 V, o GND prijungtu prie GND. Tai gali skirtis priklausomai nuo jūsų tikslaus modelio, todėl patvirtinkite pakabinimo schema.

Raspberry Pi GPIO diagrama
Vaizdo kreditas: raspberrypi.org

Naudinga, kad mano „Pimoroni“ „Pi 2“ dėkle tiesiai ant jo yra lazeriu išgraviruota pinouto schema.

Etiketėje „Raspberry Pi“

Dabar padarykime mūsų judesio aptikimo scenarijų.

nano judesys.py. 

Įklijuoti:

iš „gpiozero“ importo „MotionSensor“ pir = „MotionSensor“ (4) tuo tarpu tiesa: jei pir.motion_detected: spausdinti („Judėjimas aptiktas!“) dar: spausdinti („Nėra judesio“)

Paspauskite CTRL-X, tada Y, jei norite išsaugoti ir išeiti, tada paleiskite su:

python motion.py. 

Ekrane turėtumėte pamatyti pranešimą „nejuda“, kol numojate ranka priešais jutiklį, kai jis svyruos ties judesiu aptiktas!

Terminale aptiktas judesys

Jei pranešimas visiškai nesikeičia, neteisingai jį sukūrėte.

Jei norite sužinoti daugiau apie šią paprastą „GPIOZero“ biblioteką, pažiūrėkite į tai fantastinis kodai.

Groja garsas

Prijunkite nešiojamąjį garsiakalbį ir įsitikinkite, kad jis maitinamas, jei to reikia. Mes naudosime pygame biblioteka, kad galėtumėte leisti garsus, todėl eikite į priekį ir įdiekite:

sudo apt-get install python-pygame. 

Pirmiausia, norint žaisti, mums reikia garso failo. Jei tai darote naudodami darbalaukio aplinką, eikite į priekį ir atsisiųskite a WAV arba OGG failą iš kažkur (radau gerą pasirinkimą čia nemokami Helovino garsai) ir įdėkite jį į savo namų katalogą. Aš siūlyčiau pirmiausia imti atranką ir konvertuoti į mažą OGG formatą šiaip ar taip.

Jei jungiatės nuotoliniu būdu ir naudojate tik komandinę eilutę, su kai kuriomis svetainėmis turime šiek tiek daugiau sunkumų, nes wget komanda gali nepaimti tikrojo failo. Vietoj to, mes galime ją atsisiųsti į savo darbalaukį ir naudoti scp (saugi kopija) komanda kopijuoti per komandinę eilutę. Galite sužinoti daugiau apie scp čia, bet kol kas atidarykite naują terminalo skirtuką ir įveskite:

scp thunder.ogg [email protected]: 

Pervardykite „thunder.ogg“ kaip reikia, bet nepamirškite to finalo : (komanda nebus vykdoma be jo, bet ji nepadarys to, ko norime, kad tai padarytų). Pagal numatytuosius nustatymus failas bus perkeltas į „Pi“ vartotojo namų katalogą.

Dabar modifikuokime scenarijų, kad būtų paleistas garsas. Pradėkite importuoti keletą naujų modulių:

importuoti pygame.mixer. iš pygame.mixer importo Garsas. 

Tada iškart po esamų importavimo pareiškimų bandymo tikslais vėl ir vėl keisime tą patį garsą. Palikite likusį judesio jutimo kodą, koks yra dabar - jis tiesiog nebus paleistas, nes jis amžinai įstrigs šioje garso grojimo kilpoje.

pygame.init () pygame.mixer.init () # įkelti garso failą į pagrindinį „Pi“ vartotojo katalogą (nėra mp3) griaustinis = pygame.mixer. Garsas („/ home / pi / thunder.ogg“) ir „True“: „thunder.play“) miegas (10) „thunder.stop“ ()

Atminkite, kad kai iš pradžių išbandžiau šį procesą, garsas atsisakė groti ir vietoj jo spustelėjo. Kaltas kaltinamasis failo dydis arba bitų perdavimo sparta: jis buvo 24 bitų ir didesnis nei 5 MB per 15 sekundžių klipą. Jei pritaikėte keitiklį, prie kurio susiejau aukščiau, iki 16 bitų, viskas gražiai pavyko, o dydis buvo sumažintas iki 260 KB!

Jei iš garsiakalbių pastebite nemalonų švilpimą, kai veikia jūsų „Python“ programa, bet ne kitaip, įveskite:

sudo nano / boot /config.txt. 

Ir pridėkite šią eilutę pabaigoje:

invalid_audio_dither = 1. 

Paleiskite iš naujo, kad pakeitimai įsigaliotų. Arba nesijaudinkite, nes vis tiek tai man atrodė kaip lietus.

Galiausiai modifikuokime pagrindinę judesio tikrinimo kilpą, kad būtų galima leisti garsą, kai aptinkamas judesys. Panaudosime 15 sekundžių delsą, kad būtų galima atkurti visą kilpą, ir veikti kaip šlamšto buferis, kai yra daug nepertraukiamų judesių.

tuo tarpu tiesa: jei pir.motion_detected: spausdinkite („Judėjimas aptiktas!“) thunder.play () # įsitikinkite, kad atkūrimas buvo visiškai baigtas prieš atnaujinant judesio aptikimą, neleidžia „šlamšti“ garso miego (15) thunder.stop () dar: spausdinti („Ne judesys “)

Pradėti automatiškai

Tikriausiai norime tai nustatyti kur nors su baterija ir be interneto ryšio, todėl scenarijų reikia paleisti iš naujo paleidus, neatsidarius komandinės eilutės. Norėdami tai padaryti, naudosime paprasčiausią įmanomą metodą: crontab Kaip suplanuoti "Linux" užduotis naudojant "Cron" ir "Crontab"Galimybė automatizuoti užduotis yra viena iš tų futuristinių technologijų, kurios jau yra čia. Kiekvienas „Linux“ vartotojas gali gauti naudos iš planavimo sistemos ir vartotojo užduočių, nes „cron“ yra lengvai naudojama foninė paslauga. Skaityti daugiau . Tipas:

sudo crontab -e. 

Jei pirmą kartą paleisite šią komandą, ji bus pradėta paklausus, kurį redaktorių naudoti. Pasirinkau 2 variantą, skirtą nano. Jis bus paleistas į pasirinktą redaktorių, todėl pridėkite šią eilutę:

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

Tai reiškia, kad jūsų „motion.py“ scenarijus bus paleistas kiekvieną kartą paleidžiant ir darykite tai tyliai (taigi, visi scenarijaus išvestys bus ignoruojamos). Pabandykite iš naujo.

Jei niekas nerodo nepaisant to, kad judesys, arba girdite tik nedidelį paspaudimą, galbūt nenaudojote viso failo kelio arba failą gali reikėti konvertuoti į mažesnį bitų srautą ir mažesnį failo dydį.

Pridėti daugiau garsų

Žaisti tą patį efektą vėl ir vėl yra nuobodu, todėl pridėkime šiek tiek atsitiktinumų. Atsisiųskite dar keletą Helovino garsų, prisimindami juos iki protingo dydžio ir sumažindami bitų skaičių, tada nusiųskite juos į savo Pi naudodami scp kaip ir anksčiau. Pridėjau tris skirtingas rėkimo rūšis.

Pakeiskite kodą taip, kad vietoj to, kad apibrėžtumėte vieną pygame.mixer. Garsas kintamasis, mes iš tikrųjų kuriame masyvas garsų. Su „Python“ tai paprasta, tiesiog apsupkite kableliais atskirtą sąrašą su skliausteliais, pavyzdžiui:

garsai = [pygame.mixer. Garsas („/ home / pi / thunder.ogg“), pygame.mixer. Garsas („/ home / pi / scary_scream.ogg“), pygame.mixer. Garsas („/ home / pi / girl_scream.ogg“), pygame.mixer. Garsas („/ home / pi / psycho_scream.ogg“)]

Tada importuokite atsitiktinę biblioteką į savo failą naudodami:

importuoti atsitiktinai. 

Dabar pakeiskite pagrindinę judesio jutimo kilpą taip:

tuo tarpu tiesa: jei pir.motion_detected: print („Judėjimas aptiktas!“) playSound = random.choice (garsai) playSound.play () # įsitikinkite, kad atkūrimas turi buvo visiškai baigtas prieš atnaujinant judesio aptikimą, neleidžia „šlamšti“ garso miego (15) playSound.stop () dar: spausdinti („Ne judesys “)

Atkreipkite dėmesį į nedidelį pakeitimą: užuot groję vieną garso kintamąjį, naudojame „ atsitiktinis.pasirinkimas funkcija, kad pasirinktumėte atsitiktinį garsą iš mūsų garsų masyvo, tada paleisdami.

Štai visas kodas tuo atveju, jei kyla problemų:

importuoti pigame. iš pygame.mixer importo Garsas. iš „gpiozero import“ „MotionSensor“. nuo laiko importuoti miegą. importuoti atsitiktinį pygame.init () pygame.mixer.init () #įkelkite garso failą, tą patį katalogą kaip scenarijus (be mp3) garsai = [pygame.mixer. Garsas („/ home / pi / thunder.ogg“), pygame.mixer. Garsas („/ home / pi / scary_scream.ogg“), pygame.mixer. Garsas („/ home / pi / girl_scream.ogg“), pygame.mixer. Garsas („/ home / pi / psycho_scream.ogg“)] pir = „MotionSensor“ (4) tuo tarpu tiesa: jei pir.motion_detected: print („Judėjimas aptiktas!“) playSound = random.choice (garsai) playSound.play () # įsitikinkite, kad atkūrimas turi buvo visiškai baigtas prieš atnaujinant judesio aptikimą, neleidžia „šlamšti“ garso miego (15) playSound.stop () dar: spausdinti („Ne judesys “)

Turint tik keturis pavyzdžius, didelė tikimybė, kad jie pasikartos kiekvieną kartą, tačiau galite pridėti daugiau mėginių, jei tai erzina.

Viskas! Paslėpkite jį krūmuose su kai kuriais baisios LED monstrų akys Kaip padaryti, kad baisu Helovinas švytėtų akimis mažiau nei už 5 USDNorite paįvairinti savo Helovino papuošimus šiais metais? Sužinokite, kaip užmegzti LED akis už mažiau nei 5 USD šiame pradedančiųjų elektronikos projekte. Skaityti daugiau , ir jūs turėtumėte sugebėti sutaupyti sau saldainių, nes visi vaikai bėga rėkdami dar prieš jiems pasiekiant duris. Arba eik pasislėpti į spintą, nes supykusi mama išmuša kraują po to, kai privertei mažąjį Džonis verkti.

Atsakomybės atsisakymas: „MakeUseOf“ neatsako už jokius kūno sužalojimus, kurie gali kilti dėl jūsų naudojimosi šiuo projektu!

Ar padarysite šią judesiais suaktyvinamą garso dėžę, kad išgąsdintumėte vietinius apgaulės ar apgaulės įrankius? Ar esate sukūrę kokių nors bauginančių efektų su „Raspberry Pi“ šį Helovyną? Praneškite mums apie tai komentaruose žemiau!

Jamesas yra dirbtinio intelekto bakalauras ir yra CompTIA A + bei Network + sertifikuotas. Jis yra pagrindinis „MakeUseOf“ kūrėjas ir laisvalaikį praleidžia žaisdamas VR dažasvydį ir stalo žaidimus. Nuo mažens jis statė kompiuterius.