Bange for trick-or-Treaters med en DIY-bevægelsesaktiveret lydboks

  • William Charles
  • 0
  • 3046
  • 687
Reklame

Det er den tid på året igen, hvor det betragtes som socialt acceptabelt at skræmme små børn og give dem slik. Å glæde. Jeg er her for at gøre dit job lettere, ved at vise dig, hvordan du laver en enkel bevægelsesfølsom Raspberry Pi Halloween-lydkasse. Her er en demo:

Her er hvad du har brug for

Den eneste del, du ikke allerede har, er sandsynligvis bevægelsessensoren, en lille og billig del, du burde være i stand til at finde på dit lokale Microcenter eller Maplin.

  • Raspberry Pi (enhver model vil gøre).
  • Bevægelsessensor (~ $ 3).
  • Koblingsledninger.
  • Kabelforbundet højttaler (de fleste Bluetooth-højttalere har mulighed for at bruge line-in).
  • 3,5 mm stereokabel, han-til-han.

Når du er færdig, ønsker du måske at tilføje nogle synkroniserede lyseffekter Sådan synkroniseres hjemmelys og musik til Halloween Sådan synkroniserer du hjemmelys og musik til Halloween Uanset om du er vært for en halloween-fest eller vil have det fedeste hjemsøgte hus i kvarteret, så dine lys blinker i tide til musik og lydeffekter er afgørende. også, men i denne tutorial dækker vi kun den skræmmende lyde!

Sætte op

Vi bruger Raspbian Jessie Lite og Python 2.7, men enhver Linux-distro, der kører på din Pi, skal være i orden. Jeg har efterladt det på standardværtsnavnet “raspberrypi.local”, så start med at logge ind eksternt ved hjælp af SSH (åbne et terminalvindue, hvis du er på Mac. Sådan gør du det samme i Windows 4 lette måder at bruge SSH i Windows 4 Nemme måder at bruge SSH i Windows SSH er de facto-løsningen til sikker adgang til fjernterminaler på Linux og andre UNIX-lignende systemer. Hvis du har en ekstern SSH-server, du vil have adgang til, skal du downloade en SSH-klient ...) - eller hvis du har valgt at bruge en fuld Raspbian med desktop GUI, er du velkommen til at springe over til opdatering.

ssh [email protected] (indtast hindbær som adgangskode) sudo apt-get-opdatering sudo apt-get install python-pip sudo pip installer gpiozero 

Dette installerer et simpelt bibliotek til at arbejde med GPIO-stifterne i Python med mange typer indbyggede sensorer og knapper. Slut din sensor op med signalstiften på GPIO4, VCC tilsluttet 5V og GND tilsluttet GND. Dette kan variere afhængigt af din nøjagtige model, så bekræft med et pinout-diagram.

Billedkredit: raspberrypi.org

Heldigvis har min Pi 2-sag fra Pimoroni et pinout-diagram laser-ætset direkte på det.

Lad os nu lave vores bevægelsesskript-script.

nano motion.py 

Indsæt:

fra gpiozero import MotionSensor pir = MotionSensor (4) mens sandt: Hvis pir.motion_detected: print ("Motion detekteret!") andet: print ("No motion") 

Hit CTRL-X og derefter Y for at gemme og afslutte, kør derefter med:

python motion.py 

Du skal se “ingen bevægelse” meddelelsen gentages på skærmen, indtil du vinker din hånd foran sensoren, når den vil blive hængende på “Bevægelse opdaget!”

Hvis meddelelsen overhovedet ikke ændres, har du forbundet den forkert.

Hvis du er interesseret i at lære mere om dette enkle GPIOZero-bibliotek, kan du tage et kig på dette fantastiske snyderis.

Afspilning af lyd

Tilslut din bærbare højttaler, og sørg for, at den er drevet, hvis den skal være det. Vi bruger PyGame bibliotek for at afspille lyde, så gå videre og installer det:

sudo apt-get install python-pygame 

Først har vi brug for en lydfil til at afspille. Hvis du gør dette fra skrivebordsmiljøet, skal du gå videre og downloade en WAV eller OGG fil et eller andet sted (jeg fandt et godt udvalg af gratis Halloween-lyde her), og læg det i dit hjemmekatalog. Jeg vil foreslå downsampling først og konvertering til et lille OGG-format alligevel.

Hvis du tilslutter fjernbetjening og kun bruger kommandolinjen, har vi lidt mere problemer med nogle websteder, da wget kommandoen griber muligvis ikke den faktiske fil. I stedet kan vi downloade det lokalt til vores skrivebord og bruge scp (sikker kopi) kommando til kopiering over kommandolinjen. Du kan lære mere om scp her, men for nu skal du åbne en ny fane Terminal og indtaste:

scp thunder.ogg [email protected]: 

Omdøb thunder.ogg efter behov, men glem ikke den sidste : (kommandoen afsluttes uden den, men den vil ikke gøre, hvad vi vil have den til at gøre). Som standard overfører dette filen til Pi-brugerens hjemmekatalog.

Lad os nu ændre scriptet til at afspille en lyd. Start med at importere nogle nye moduler:

import pygame.mixer fra pygame.mixer import Sound 

Så lige efter de eksisterende importangivelser, sløjfer vi den samme lyd igen og igen til testformål. Lad resten af ​​din bevægelsessensorkode være som for tiden - den kører bare ikke, da den sidder fast i denne lydspilende løkke for evigt.

pygame.init () pygame.mixer.init () #læs en lydfil i Pi-brugerens hjemmekatalog (ingen mp3'er) thunder = pygame.mixer.Sound ("/ home / pi / thunder.ogg") mens sandt : thunder.play () sleep (10) thunder.stop () 

Bemærk, at da jeg oprindeligt prøvede denne proces, nægtede lyden at spille og bare klikkede i stedet. Størrelsen på filen eller bitraten var den skyldige: Den var 24-bit og over 5 MB i et klip på 15 sekunder. Skalering ned til 16-bit ved hjælp af den konverter, jeg linkede til ovenfor, fik alt til at fungere pænt, og størrelsen blev reduceret til kun 260 KB!

Hvis du bemærker en grim sus fra dine højttalere, når din Python-app kører, men ikke ellers, skal du skrive:

sudo nano /boot/config.txt 

Og tilføj denne linje i slutningen:

disable_audio_dither = 1 

Genstart for at ændringerne skal træde i kraft. Eller gider det ikke, da det alligevel lyder som regn for mig.

Endelig, lad os ændre den vigtigste bevægelseskontrolsløjfe for at afspille lyden, når der registreres bevægelse. Vi bruger en forsinkelse på 15 sekunder, så hele loopen kan spilles, og til at fungere som en spambuffer, når der er masser af non-stop bevægelse.

mens sandt: Hvis pir.motion_detected: print ("Bevægelse detekteret!") thunder.play () # sikre, at afspilningen er fuldstændigt afsluttet, før genoptagelse af bevægelsesdetektion, forhindrer "spamming" af lydsøvn (15) thunder.stop () ellers: print ("Ingen bevægelse") 

Start automatisk

Vi vil sandsynligvis sætte dette op et sted med et batteri og ingen internetforbindelse, så scriptet skal køre ved genstart uden at skulle åbne en kommandolinje. For at gøre dette bruger vi den mest enkle metode: crontab Sådan planlægges opgaver i Linux med Cron og Crontab Sådan planlægges opgaver i Linux med Cron og Crontab Evnen til at automatisere opgaver er en af ​​de futuristiske teknologier, der allerede er her . Hver Linux-bruger kan drage fordel af planlægningssystemer og brugeropgaver takket være cron, en let at bruge baggrundstjeneste. . Type:

sudo crontab -e 

Hvis dette er første gang, der kører denne kommando, begynder det med at spørge dig, hvilken redaktør du skal bruge. Jeg valgte mulighed 2 til nano. Det starter i din valgte editor, så tilføj følgende linje:

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

Dette betyder, at dit motion.py-script kører ved enhver opstart og gør det lydløst (så enhver output fra scriptet ignoreres). Genstart for at prøve det.

Hvis der ikke spiller noget på trods af at der er bevægelse, eller hvis du bare hører et lille klik, har du muligvis ikke brugt den fulde filsti, eller din fil kan muligvis blive konverteret til en lavere bitrate og mindre filstørrelse.

Tilføj flere lyde

At spille den samme effekt igen og igen er lidt kedeligt, så lad os tilføje lidt tilfældighed til det. Download nogle flere Halloween-lyde, husk at skalere dem ned til en fornuftig størrelse og bitrate, og send dem derefter videre til din Pi vha. scp som før. Jeg tilføjede tre forskellige typer skrig.

Ændre koden, så i stedet for at definere en enkelt pygame.mixer.Sound variabel, opretter vi faktisk en matrix af lyde. Dette er enkelt med Python. Omgiv bare en kommasepareret liste over dem med firkantede parenteser, som sådan:

lyder = [pygame.mixer.Sound ("/ home / pi / thunder.ogg"), pygame.mixer.Sound ("/ home / pi / scary_scream.ogg"), pygame.mixer.Sound ("/ home / pi /girl_scream.ogg "), pygame.mixer.Sound (" / home / pi / psycho_scream.ogg ")] 

Importer derefter det tilfældige bibliotek til din fil med:

import tilfældigt 

Rediger nu den vigtigste bevægelsesfølende løkke som følger:

mens sandt: Hvis pir.motion_detected: print ("Bevægelse detekteret!") playSound = random.choice (lyde) playSound.play () # sikre, at afspilningen er fuldstændigt afsluttet, før genoptagelse af bevægelsesdetektering, forhindrer "spamming" af lydsøvn (15 ) playSound.stop () andet: print ("Ingen bevægelse") 

Bemærk den mindre ændring: i stedet for at afspille den enkelte lydvariabel, bruger vi random.choice funktion til at vælge en tilfældig lyd fra vores lydgruppe og derefter afspille den.

Her er den fulde kode, hvis du har problemer:

importer pygame fra pygame.mixer import lyd fra gpiozero import MotionSensor fra tid import sleep import tilfældig pygame.init () pygame.mixer.init () # indlæse en lydfil, samme bibliotek som script (uden mp3s) lyde = [pygame.mixer .Sound ("/ home / pi / thunder.ogg"), pygame.mixer.Sound ("/ home / pi / scary_scream.ogg"), pygame.mixer.Sound ("/ home / pi / girl_scream.ogg") , pygame.mixer.Sound ("/ home / pi / psycho_scream.ogg")] pir = MotionSensor (4) mens sandt: Hvis pir.motion_detected: print ("Motion detekteret!") playSound = random.choice (lyder) playSound .afspil () # Sørg for, at afspilningen er fuldstændigt afsluttet, før genoptagelse af bevægelsesdetektering, forhindrer "spamming" af lydsøvn (15) playSound.stop () andet: print ("Ingen bevægelse") 

Med kun fire prøver er der stor sandsynlighed for gentagelse hver gang, men du kan tilføje flere prøver, hvis det er irriterende.

Det er det! Skjul det i buskene med nogle skræmmende LED-monsterøjne. Hvordan man laver uhyggelige Halloween-glødende øjne til mindre end $ 5 Hvordan man laver uhyggelige Halloween-glødende øjne til mindre end $ 5 Vil du krydre dine Halloween-dekorationer i år? Lær hvordan man laver LED-øjne til mindre end $ 5 i dette begynderelektronikprojekt. , og du burde være i stand til at redde dig noget slik, da alle børnene løber væk og skriger, før de selv når døren. Eller gå og skjule dig i skabet, fordi en vred mor er ude efter blod, efter at du fik lille Johnny til at græde.

Ansvarsfraskrivelse: MakeUseOf er ikke ansvarlig for nogen personskade, der måtte være resultatet af din brug af dette projekt!

Vil du lave denne bevægelsesaktiverede lydboks for at skræmme de lokale trick-eller-behandlere? Har du konfigureret nogen skræmmende effekter med en Raspberry Pi denne Halloween? Fortæl os venligst om det i kommentarerne herunder!




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.