Reklaam
See on jälle aastaaeg, kui peetakse sotsiaalselt vastuvõetavaks hirmutada väikelapsi ja anda neile kommi. Oh rõõmu. Olen siin, et teie tööd lihtsamaks teha, näidates teile, kuidas teha lihtsat liikumist tundvat Raspberry Pi Halloweeni heliboksi. Siin on demo:
Teil on vaja
Tõenäoliselt on ainus osa, mis teil veel puudub, liikumisandur - väike ja odav osa, mida peaksite leidma oma kohalikus mikrokeskuses või Maplinis.
- Vaarika Pi (seda teeb iga mudel).
- Liikumisandur (~ 3 dollarit).
- Hookup juhtmed.
- Juhtmega kõlar (enamikul Bluetooth-kõlaritest on võimalus kasutada sisselogimist).
- 3,5 mm stereokaabel, mees-mees.
Kui olete lõpetanud, võiksite mõnda lisada sünkroniseeritud valgusefektid Kuidas sünkroonida koduvalgusteid ja muusikat halloweeniksÜkskõik, kas korraldate Halloweeni majapeo või soovite naabruses kõige lahedamat kummitavat maja, on oluline, et teie tuled muusika ja heliefektide ajal vilguksid. Loe rohkem ka, aga selles õpetuses käsitleme ainult hirmutavaid helisid!
Seadistan
Me kasutame Raspbian Jessie Lite ja Python 2.7, kuid iga teie Pi peal töötav Linuxi distro peaks olema korras. Olen jätnud selle tavapäraseks hostinimeks “raspberrypi.local”, nii et kõigepealt logige sisse kaugjuhtimisega SSH abil (avage terminali aken, kui olete Macis. Siin on
kuidas teha sama Windowsis 4 lihtsat viisi SSH kasutamiseks WindowsisSSH on de facto lahendus Linuxi ja muude UNIX-taoliste süsteemide kaugterminalidele turvaliseks juurdepääsuks. Kui teil on SSH-kaugserver, millele soovite juurde pääseda, peate alla laadima SSH-kliendi ... Loe rohkem ) - või kui olete valinud täieliku Raspbiani kasutamise koos töölaua GUI-ga, minge julgelt värskenduste juurde.ssh [email protected]. (sisestage paroolina vaarikas) sudo apt-get update. sudo apt-get install python-pip. sudo pip install gpiozero.
See installib lihtsa raamatukogu Pythoni GPIO-nööpnõeltega töötamiseks koos mitut tüüpi sisseehitatud andurite ja nuppudega. Juhtme külge ühendage andur GPIO4 signaaliklemmiga, VCC on ühendatud 5 V-ga ja GND on ühendatud GND-ga. See võib varieeruda sõltuvalt teie täpsest mudelist, nii et kinnitage pinoutskeemiga.
Kasulik on see, et minu Pimoroni Pi 2 juhtumil on laseriga söövitatud pinoutskeem otse sellele.
Tehkem nüüd meie liikumise tuvastamise skript.
nano motion.py.
Kleebi sisse:
gpiozero impordist MotionSensor pir = MotionSensor (4) kuigi tõene: kui pir.motion_detected: print ("Liikumine tuvastatud!") muidu: print ("Liikumist pole")
Vajutage klahvikombinatsiooni CTRL-X, siis Y, et salvestada ja väljuda, seejärel käivitage:
python motion.py.
Ekraanil peaksite kordama teadet „liikumist ei toimu”, kuni veate kätt anduri ette, kui see vilgub ekraanil „Liikumine tuvastatud!”
Kui kiri ei muutu üldse, olete selle valesti ühendanud.
Kui soovite teada saada selle lihtsa GPIOZero teegi kohta, vaadake seda see fantastiline cheatsheet.
Heli mängimine
Ühendage kaasaskantav kõlar ja veenduge, et see saaks vajadusel toidet. Me kasutame pygame raamatukogu helide esitamiseks, nii et minge edasi ja installige see:
sudo apt-get install python-pygame.
Esiteks vajame esitamiseks helifaili. Kui teete seda töölauakeskkonnast, siis minge edasi ja laadige alla a WAV või OGG fail kuskilt (leidsin hea valiku tasuta heli kõlab siin) ja pange see oma kodukataloogi. Ma soovitaksin kõigepealt vähendada valimit ja teisendamine väikeseks OGG-vorminguks igatahes.
Kui ühendate ühenduse kaugjuhtimisega ja kasutate ainult käsurida, on meil mõne saidiga pisut raskem, kuna wget käsk ei pruugi tegelikku faili haarata. Selle asemel võime selle kohapeal oma töölauale alla laadida ja kasutada nuppu scp (turvaline koopia) käsk kopeerimiseks käsurealt. Saate rohkem teada saada umbes scp siin, kuid praegu avage uus sakk Terminal ja tippige:
scp thunder.ogg [email protected]:
Nimetage thunder.ogg vastavalt vajadusele, kuid ärge unustage seda viimast : (käsk läheb ilma selleta lõpule, kuid ta ei tee seda, mida me tahame, et see toimiks). Vaikimisi edastab see faili Pi kasutaja kodukataloogi.
Muutkem nüüd heli esitamiseks skripti. Alustage mõne uue mooduli importimisega:
import pygame.mixer. saidilt pygame.mixer import Sound.
Siis, vahetult pärast olemasolevaid impordi avaldusi, anname katsetamise jaoks sama heli ikka ja jälle. Jätke ülejäänud liikumisandur nagu praegu - see lihtsalt ei tööta, kuna see jääb sellesse heli mängivasse silmusesse igaveseks.
pygame.init () pygame.mixer.init () #laadige helifail Pi kasutaja kodukataloogis (mp3-sid pole) äike = pygame.segaja. Heli ("/ home / pi / thunder.ogg") ja True: thunder.play () uni (10) thunder.stop ()
Pange tähele, et kui ma seda protsessi algselt proovisin, keeldus heli esitamast ja klõpsas selle asemel lihtsalt. Süüdlane oli faili suurus või bitikiirus: see oli 24-bitine ja üle 5 MB 15-sekundilise klipi jaoks. Selle ümardatud muunduri abil 16-bitiseks muutmine muutis kõik kenasti toimima ja maht vähendati vaid 260 KB-ni!
Kui märkate kõlaritest kõlavat mühastust, kui teie Pythoni rakendus töötab, kuid mitte muul viisil, tippige:
sudo nano / boot /config.txt.
Ja lisage selle rea lõppu:
keelama_audio_dither = 1.
Muudatuste jõustumiseks taaskäivitage. Või ärge häirige, sest see kõlas mulle niikuinii nagu vihm.
Lõpuks muutkem peamist liikumise kontrollisilmust, et heli esitada siis, kui liikumine on tuvastatud. Kasutame 15-sekundilist viivitust, et kogu silmus saaks mängida, ja kui palju on non-stop-liikumist, toimime rämpsposti puhverina.
kuigi tõsi: kui pir.motion_detected: print ("Liikumine tuvastatud!") thunder.play () # veenduge, et taasesitus on täielikult läbi viidud enne liikumistuvastuse taastamist lõpule viidud, takistab heli une "rämpsposti" (15) thunder.stop () muidu: print ("Ei liikumine ")
Käivitage automaatselt
Tõenäoliselt tahame selle kusagil patareideta ja ilma Interneti-ühenduseta seadistada, nii et skript tuleb taaskäivitada, ilma et peaks käsurida avama. Selleks kasutame lihtsamat meetodit: crontab Kuidas planeerida ülesandeid Linuxis koos Croni ja CrontabigaÜlesannete automatiseerimise võime on üks neist futuristlikest tehnoloogiatest, mis siin juba olemas. Tänu Linuxi hõlpsasti kasutatavale taustateenusele cron saab süsteemi ja kasutajaülesannete kavandamine kasu igale Linuxi kasutajale. Loe rohkem . Tüüp:
sudo crontab -e.
Kui käivitate seda käsku esimest korda, küsib see teilt, millist redaktorit kasutada. Valisin nano jaoks variandi 2. See käivitatakse teie valitud redaktorisse, nii et lisage järgmine rida:
@reboot python /home/pi/motion.py &
See tähendab, et teie motion.py skript töötab igal käivitamisel ja tehke seda vaikides (nii et kõiki skripti väljundeid eiratakse). Proovige uuesti.
Kui midagi ei mängi vaatamata liikumisele või kui kuulete vaid väikest klõpsu, pole te võib-olla kogu faili teed kasutanud või võib juhtuda, et teie fail vajab teisendamist väiksemaks bitikiiruseks ja väiksemaks failisuuruseks.
Lisage veel helisid
Sama efekti mängimine ikka ja jälle on pisut igav, nii et lisame sellele veidi juhuslikkust. Laadige alla veel mõned Halloweeni helid, pidades meeles, et vähendage need mõistlikuks ja bitikiiruseks ning seejärel saatke need Pi-le, kasutades selleks scp nagu enne. Lisasin kolm erinevat tüüpi karjeid.
Muutke koodi nii, et üksiku määratlemise asemel pygame.mixer. Heli muutuja, loome tegelikult massiiv helidest. Pythoni puhul on see lihtne, ümbritsege komadega eraldatud loend nurksulgudega, näiteks nii:
kõlab = [pygame.mixer. Heli ("/ kodu / pi / äike.ogg"), pygame.segaja. Heli ("/ kodu / pi / scary_scream.ogg"), pygame.mixer. Heli ("/ kodu / pi / girl_scream.ogg"), pygame.mixer. Heli ("/ kodu / pi / psycho_scream.ogg")]
Järgmisena importige faili juhuslik teek järgmiste failidega
import juhuslikult.
Nüüd muutke peamist liikumistundlikku silmust järgmiselt:
kuigi tõsi: kui pir.motion_detected: print ("Liikumine tuvastatud!") playSound = random.choice (kõlab) playSound.play () # veenduge, et taasesitusel on enne liikumise tuvastamise jätkamist täielikult valmis, takistab heli une "rämpsposti" (15) playSound.stop () muidu: print ("Ei liikumine ")
Pange tähele väikest muudatust: ühe heli muutuja esitamise asemel kasutame nuppu juhuslik.valik funktsiooni, et valida meie helimassiivist juhuslik heli ja seejärel seda mängida.
Siin on täielik kood juhuks, kui teil on probleeme:
impordi pygame. saidilt pygame.mixer import Sound. gpiozero impordi MotionSensor. ajast import magada. import juhuslikult pygame.init () pygame.mixer.init () #laadige helifail, samas kataloogis nagu skript (mp3-sid pole) helid = [pygame.mixer. Heli ("/ kodu / pi / äike.ogg"), pygame.segaja. Heli ("/ kodu / pi / scary_scream.ogg"), pygame.mixer. Heli ("/ kodu / pi / girl_scream.ogg"), pygame.mixer. Heli ("/ kodu / pi / psycho_scream.ogg")] pir = MotionSensor (4) kuigi tõsi: kui pir.motion_detected: print ("Liikumine tuvastatud!") playSound = random.choice (kõlab) playSound.play () # veenduge, et taasesitusel on enne liikumise tuvastamise jätkamist täielikult valmis, takistab heli une "rämpsposti" (15) playSound.stop () muidu: print ("Ei liikumine ")
Ainult nelja proovi korral on suur tõenäosus, et seda korratakse iga kord, kuid kui see on tüütu, võite lisada veel proove.
See selleks! Peida see mõnega põõsastesse hirmutavad LED-monstrumi silmad Kuidas teha õudseid Halloweeni säravaid silmi vähem kui 5 dollari eestKas soovite oma Halloweeni kaunistusi sel aastal vürtsitada? Siit algajate elektroonikaprojektist saate teada, kuidas teha LED-silmi vähem kui 5 dollari eest. Loe rohkem , ja peaksite saama ise endale kommi salvestada, kuna kõik lapsed jooksevad karjudes minema, enne kui nad isegi ukseni jõuavad. Või minge kapis peitu, sest vihane emal on verd väljas pärast seda, kui panite väikese Johnny nutma.
Kohustustest loobumine: MakeUseOf ei vastuta tervisekahjustuste eest, mis võivad tuleneda selle projekti kasutamisest!
Kas teete selle liikumisega aktiveeritud helikasti, et hirmutada kohalikke trikke või trellereid? Kas olete Halloweeni ajal Vaarika Pi abil mingeid hirmutavaid efekte seadnud? Palun andke sellest allpool olevates kommentaarides teada!
Jamesil on tehisintellekti BSc ning ta on CompTIA A + ja Network + sertifikaadiga. Ta on MakeUseOfi juhtiv arendaja ja veedab oma vaba aega VR-i paintballi ja lauamänge mängides. Ta on lapsest peale arvutit ehitanud.