Reklāma

Tas ir atkal gada laiks, kad tiek uzskatīts par sociāli pieņemamu biedēt mazus bērnus un dot viņiem konfektes. Ak prieks. Es esmu šeit, lai atvieglotu jūsu darbu, parādot, kā padarīt vienkāršu kustību uztverošu Raspberry Pi Halloween skaņu kastīti. Šis ir demonstrācija:

Lūk, kas jums būs nepieciešams

Droši vien vienīgā detaļa, kuras jums vēl nav, ir kustības sensors, maza un lēta detaļa, kuru jums vajadzētu atrast vietējā mikrocentrā vai Maplin.

  • Aveņu Pi (to darīs jebkurš modelis).
  • Kustības sensors (~ 3 USD).
  • Hookup vadi.
  • Vadu skaļrunis (lielākajai daļai Bluetooth skaļruņu būs iespēja izmantot line-in).
  • 3,5 mm stereo kabelis, vīriešu-vīriešu.

Kad esat pabeidzis, jūs varētu vēlēties pievienot sinhronizēti apgaismojuma efekti Kā sinhronizēt mājas apgaismojumu un mūziku HelovīnamNeatkarīgi no tā, vai rīkojat Helovīna nama ballīti vai vēlaties, lai apkārtnē notiktu stilīgākā vajātā māja, ir svarīgi, lai jūsu gaismas savlaicīgi mirgo, lai atskaņotu mūziku un skaņas efektus. Lasīt vairāk arī šajā mācību materiālā mēs mazliet apskatīsim tikai biedējošās skaņas!

Uzstādīt

Mēs izmantojam Raspbian Jessie Lite un Python 2.7, taču visiem Linux distrodiem, kas darbojas uz jūsu Pi, jābūt labiem. Es to esmu atstājis standarta resursdatorā “raspberrypi.local”, tāpēc vispirms piesakieties attāli, izmantojot SSH (atveriet termināļa logu, ja izmantojat Mac). Lūk Kā to izdarīt Windows 4 vienkārši veidi, kā izmantot SSH operētājsistēmā WindowsSSH ir de facto risinājums drošai piekļuvei attālinātiem termināļiem Linux un citās UNIX līdzīgās sistēmās. Ja jums ir attāls SSH serveris, kuram vēlaties piekļūt, jums būs jālejupielādē SSH klients ... Lasīt vairāk ) - vai, ja esat izvēlējies lietot pilnu Raspbian ar darbvirsmas GUI, droši pārejiet uz atjaunināšanu.

ssh [email protected]. (kā paroli ievadiet aveņu) sudo apt-get update. sudo apt-get instalēt python-pip. sudo pip instalēt gpiozero. 

Tas instalē vienkāršu bibliotēku darbam ar GPIO tapām Python ar daudzu veidu iebūvētiem sensoriem un pogām. Pieslēdziet sensoru ar signāla tapu uz GPIO4, ar RVC pieslēgtu 5 V un ar GND pieslēgtu pie GND. Tas var atšķirties atkarībā no jūsu precīzā modeļa, tāpēc apstipriniet to ar piespraudes diagrammu.

Aveņu Pi GPIO diagramma
Attēla kredīts: raspberrypi.org

Noderīgi, ka manam Pimoroni Pi 2 gadījumam ir tieši uz tā lāzera kodināta pinout diagramma.

Marķētā aveņu Pi lieta

Tagad izveidosim mūsu kustības noteikšanas skriptu.

nano motion.py. 

Ielīmēt:

no gpiozero importa MotionSensor pir = MotionSensor (4) kamēr taisnība: ja pir.motion_detected: print ("Kustība noteikta!") cits: print ("Bez kustības")

Lai saglabātu un izietu, nospiediet taustiņu kombināciju CTRL-X, pēc tam Y, pēc tam palaidiet ar:

python motion.py. 

Jums vajadzētu redzēt ziņojumu “bez kustības”, kas atkārtots ekrānā, līdz jūs aizviļat savu roku sensora priekšā, kad tas ievilksies ekrānā “Kustība ir atklāta!”

Terminālī tika noteikta kustība

Ja ziņojums nemaz nemainās, esat to nepareizi izveidojis.

Ja vēlaties uzzināt vairāk par šo vienkāršo GPIOZero bibliotēku, ieskatieties šeit šo fantastisko cheatsheet.

Spēlējot skaņu

Pievienojiet pārnēsājamo skaļruni un nodrošiniet, lai tas darbotos, ja tam ir nepieciešams. Mēs izmantosim pygame bibliotēku, lai atskaņotu skaņas, tāpēc dodieties uz priekšu un instalējiet to:

sudo apt-get instalēt python-pygame. 

Pirmkārt, lai atskaņotu, mums ir nepieciešams skaņas fails. Ja to darāt no darbvirsmas vides, dodieties uz priekšu un lejupielādējiet a WAV vai OGG fails no kaut kurienes (atradu labu izvēli bezmaksas Helovīna skaņas šeit) un ievietojiet to mājas direktorijā. Es ieteiktu vispirms noņemt atlasi un konvertēšana uz mazu OGG formātu vienalga.

Ja veidojat savienojumu no attāluma un izmantojat tikai komandrindu, ar dažām vietnēm mums ir nedaudz vairāk grūtību kopš wget komanda nevar satvert faktisko failu. Tā vietā mēs to varam lejupielādēt uz darbvirsmas un izmantot scp (droša kopija) komanda, lai kopētu pa komandrindu. Jūs varat uzzināt vairāk par scp šeit, bet pagaidām atveriet jaunu cilni Termināls un ierakstiet:

scp thunder.ogg [email protected]: 

Pārdēvējiet thunder.ogg kā atbilstošu, taču neaizmirstiet šo finālu : (komanda tiks izpildīta bez tā, taču tā nedarīs to, ko mēs vēlamies, lai to izdarītu). Pēc noklusējuma fails tiks pārsūtīts uz Pi lietotāja mājas direktoriju.

Tagad modificēsim skriptu, lai atskaņotu skaņu. Sāciet importēt dažus jaunus moduļus:

importēt pygame.mixer. no pygame.mixer importa Sound. 

Tad tūlīt pēc esošajiem importēšanas paziņojumiem testēšanas nolūkos mēs atkārtosim to pašu skaņu. Atstājiet atlikušo kustības uztveršanas kodu, kāds tas ir tagad - tas vienkārši nedarbosies, jo tas uz mūžiem būs iestrēdzis šajā skaņas atskaņošanas cilpā.

pygame.init () pygame.mixer.init () # ielādēt skaņas failu Pi lietotāja mājas direktorijā (nav mp3 failu) pērkons = pygame.mixer. Skaņa ("/ home / pi / thunder.ogg"), kamēr taisnība: thunder.play () sleep (10) thunder.stop ()

Ņemiet vērā, ka tad, kad es sākotnēji izmēģināju šo procesu, skaņa atteicās spēlēt un tā vietā vienkārši noklikšķināja. Vainīgais bija faila lielums vai bitu pārraides ātrums: tas bija 24 bitu un vairāk nekā 5 MB 15 sekunžu klipam. Pielāgojot to līdz 16 bitu līmenim, izmantojot pārveidotāju, ar kuru es saistīju iepriekš, viss darbojās labi, un izmērs tika samazināts līdz tikai 260 KB.

Ja, lietojot Python lietotni, no skaļruņiem pamanāt nejauku svilpi, bet ne citādi, ierakstiet:

sudo nano / boot /config.txt. 

Un beigās pievienojiet šo rindu:

Disable_audio_dither = 1. 

Restartējiet, lai izmaiņas stātos spēkā. Vai arī neuztraucieties, jo tas man kaut kā izklausījās pēc lietus.

Visbeidzot, mainīsim galveno kustības pārbaudes cilpu, lai atskaņotu skaņu, kad tiek noteikta kustība. Mēs izmantosim 15 sekunžu aizkavi, lai varētu atskaņot visu cilpu, un darbosimies kā surogātpasta buferis gadījumos, kad notiek daudz nepārtrauktu kustību.

kamēr taisnība: ja pir.motion_detected: print ("Kustība noteikta!") thunder.play () # pārliecinieties, ka atskaņošana ir bijusi pilnībā pabeigta pabeigta pirms kustības noteikšanas atsākšanas, novērš skaņas miega "surogātpastu" (15) thunder.stop () cits: drukāt ("Nē kustība ")

Sāciet automātiski

Mēs, iespējams, vēlamies to iestatīt kaut kur ar akumulatoru un bez interneta savienojuma, tāpēc skriptam jādarbojas restartējot, neatverot komandrindu. Lai to izdarītu, mēs izmantosim vienkāršāko iespējamo metodi: crontab Kā plānot uzdevumus operētājsistēmā Linux ar Cron un CrontabSpēja automatizēt uzdevumus ir viena no tām futūristiskajām tehnoloģijām, kas jau pastāv šeit. Ikviens Linux lietotājs var gūt labumu no plānošanas sistēmas un lietotāja uzdevumiem, pateicoties cron, kas ir ērti lietojams fona pakalpojums. Lasīt vairāk . Tips:

sudo crontab -e. 

Ja šī komanda tiek izpildīta pirmo reizi, tā tiks sākta, vaicājot, kuru redaktoru izmantot. Nano es izvēlējos 2. variantu. Tas tiks ielādēts jūsu izvēlētajā redaktorā, tāpēc pievienojiet šo rindu:

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

Tas nozīmē, ka jūsu motion.py skripts darbosies katrā startēšanas reizē un to darīsit klusi (tātad visi skripta izvadi tiks ignorēti). Atsāknējiet, lai to izmēģinātu.

Ja nekas nespēlē, neraugoties uz to, ka notiek kustība, vai arī dzirdat tikai nelielu klikšķi, iespējams, ka neesat izmantojis pilnu faila ceļu, vai arī jūsu fails, iespējams, būs jāpārveido uz mazāku bitrate un mazāku faila lielumu.

Pievienojiet vairāk skaņu

Tāda paša efekta atskaņošana atkal un atkal ir nedaudz garlaicīga, tāpēc pieņemsim tai pievienot kādu nejaušību. Lejupielādējiet vēl dažas Helovīna skaņas, atceroties tās samazināt līdz saprātīgam lielumam un samazināt ar ātrumu, pēc tam nosūtiet tās uz Pi, izmantojot scp kā iepriekš. Es pievienoju trīs dažādu veidu kliedzienus.

Modificējiet kodu tā, lai tā vietā definētu vienu pygame.mixer. Skaņa mainīgo, mēs faktiski veidojam masīvs skaņu. Ar Python tas ir vienkārši, vienkārši apņemiet komatu atdalītu sarakstu ar kvadrātiekavām, piemēram:

skaņas = [pygame.mixer. Skaņa ("/ home / pi / thunder.ogg"), pygame.mixer. Skaņa ("/ home / pi / scary_scream.ogg"), pygame.mixer. Skaņa ("/ home / pi / girl_scream.ogg"), pygame.mixer. Skaņa ("/ home / pi / psycho_scream.ogg")]

Pēc tam importējiet failā izlases bibliotēku ar:

importēt izlases veidā. 

Tagad mainiet galveno kustības uztveršanas cilpu šādi:

kamēr taisnība: ja pir.motion_detected: print ("Kustība noteikta!") playSound = random.choice (skaņas) playSound.play () # pārliecinieties, ka atskaņošanai ir pirms kustības noteikšanas atsākšanas ir pilnībā pabeigts, novērš skaņas miega "surogātpastu" (15) playSound.stop () cits: print ("No kustība ")

Ņemiet vērā nelielas izmaiņas: tā vietā, lai atskaņotu atsevišķu skaņas mainīgo, mēs izmantojam izlases.izvēle funkcija, lai izvēlētos nejaušu skaņu no mūsu skaņu masīva, pēc tam to atskaņojot.

Šeit ir pilns kods gadījumā, ja rodas problēmas:

importēt pygame. no pygame.mixer importa Sound. no gpiozero importa MotionSensor. no laika importēt miegu. importēt izlases pygame.init () pygame.mixer.init () # ielādēt skaņas failu, tajā pašā direktorijā kā skripts (bez mp3) skaņas = [pygame.mixer. Skaņa ("/ home / pi / thunder.ogg"), pygame.mixer. Skaņa ("/ home / pi / scary_scream.ogg"), pygame.mixer. Skaņa ("/ home / pi / girl_scream.ogg"), pygame.mixer. Skaņa ("/ home / pi / psycho_scream.ogg")] pir = MotionSensor (4) kamēr taisnība: ja pir.motion_detected: print ("Kustība noteikta!") playSound = random.choice (skaņas) playSound.play () # pārliecinieties, ka atskaņošanai ir pirms kustības noteikšanas atsākšanas ir pilnībā pabeigts, novērš skaņas miega "surogātpastu" (15) playSound.stop () cits: print ("No kustība ")

Izmantojot tikai četrus paraugus, pastāv liela atkārtošanās varbūtība katru reizi, taču, ja tas kaitina, varat pievienot vēl citus paraugus.

Tieši tā! Paslēpiet to krūmos ar dažiem biedējošas LED monstra acis Kā padarīt spocīgas Helovīna mirdzošas acis mazāk par 5 USDVai vēlaties šogad piepildīt savus Helovīna rotājumus? Uzziniet, kā šajā iesācēja elektronikas projektā padarīt LED acis mazāk par 5 USD. Lasīt vairāk , un jums vajadzētu spēt ietaupīt sev konfektes, jo visi bērni aizbēg kliedzot, pirms viņi pat sasniedz durvis. Vai arī paslēpieties skapī, jo dusmīgajai mammai ir asinis pēc tam, kad jūs likāt mazajam Džonijam raudāt.

Atruna: MakeUseOf nav atbildīgs par miesas bojājumiem, kas varētu rasties, lietojot šo projektu!

Vai jūs izveidosit šo ar kustību aktivizēto skaņas kasti, lai nobiedētu vietējos viltības pārvaldītājus? Vai šajā Halovīni esat iestatījis drausmīgus efektus ar Aveņu Pi? Lūdzu, informējiet mūs par to komentāros zemāk!

Džeimsam ir mākslīgā intelekta bakalaura grāds, un viņš ir sertificēts CompTIA A + un Network +. Viņš ir galvenais MakeUseOf izstrādātājs un brīvo laiku pavada, spēlējot VR peintbolu un galda spēles. Kopš mazotnes viņš būvēja datorus.