En Halloween Sound Trigger med Raspberry Pi og Arduino - 💡 Fix My Ideas

En Halloween Sound Trigger med Raspberry Pi og Arduino

En Halloween Sound Trigger med Raspberry Pi og Arduino


Forfatter: Ethan Holmes, 2019
[Vimeo: https: //vimeo.com/51950656]

Folk har spurt meg om interessante applikasjoner for Raspberry Pi, og om Raspberry Pi er en Arduino morder av noe slag. Svaret på det andre spørsmålet er nei; faktisk er det en Arduino augmenter. Dette blogginnlegget svarer på det første spørsmålet med et annet spørsmål: Hva med en Haunted House lydeffekter maskin?

En ny revisjon av tidlig frigjøring av Komme i gang med Raspberry Pi kom ut i fredags. Jeg leste Matt Richardsons kapittel om bruk av Pygame med GPIO-pinnene på Pi, som inkluderte en enkel Sound Sample-spiller. Jeg tilpasset hans eksempel for å jobbe med en Arduino som snakker til Pi over en seriell forbindelse; denne skjelettet (ahem) hookup kunne lett bli innlemmet i en slags Halloween installasjon. Jeg bestemte meg for å bruke Arduino for å lese innspillingene fordi den ikke er mer robust og kan håndtere et bredere utvalg av innganger. Også, det er mange eksisterende Haunted House utløse demoer ute i naturen som bruker Arduino.

Først må du forberede utløserkretsen. Følgende eksempel bruker tre svingbrytere, men du kan erstatte de med noen form for på / av-inngang. I et hjemsøkt hus (eller verandabasert trick-or-treater-installasjon), ville en PIR-sensor være nyttig for utløsing basert på nærhet.

Her er grunnleggende skjematisk:

De 10k motstandene kan erstattes av Arduino sine egne interne trekkmotstander, hvis du vet hvordan du gjør det.

Jeg koblet Arduino til Raspberry Pi ved hjelp av en USB-kabel. Mens jeg hadde Pi hektet inn i en skjerm, fant jeg ut at jeg bare kunne koble Arduino via USB-kontakten min Mac-tastatur, og den fikk nok strøm fra det til arbeidet. Hvis du har en eldre Raspberry Pi med polyfuser som begrenser strømmen på USB-porten (se for å se om du har 2 små grønne sikringer merket "1104" ved siden av USB-porter), kan du trenge et eksternt hub eller kjøre Pi-hodet å frigjøre en USB-port.

Deretter laster du opp følgende skisse til Arduino:

// PiTalk.ino // Leser tre digitale innganger. Disse kan være noen form for // bryter eller (for Halloween) PIR sensorer. byte onState [3] = {0, 0, 0}; // lagre tilstanden til hver stift ugyldig oppsett () {Serial.begin (9600); // Åpne seriell tilkobling pinMode (2, INPUT); // Sett disse tre pinnene for å lese pinMode (3, INPUT); // Hver har en 10k pullup eksternt pinMode (4, INPUT); // så en utløser er LOW} tomromsløyfe () {for (int i = 0; i <3; i ++) {// Iterate over pins hvis (digitalRead (i + 2) == LOW) {// Sjekk om utløst hvis (onState [i] == 0) {// Bare utløst? Serial.write (i + 2); // Send pinnummeret påState [i] = 1; // men bare en gang}} ellers {onState [i] = 0; // Ikke utløst}} forsinkelse (20); }

Du kan bruke datamaskinen til å laste opp programmet, eller du kan laste ned og installere Arduino IDE direkte på Raspberry Pi (som beskrevet i neste utgave av Komme i gang med Raspberry Pi).

Når Arduino er programmert, åpne Leafpad-tekstredigereren på Raspberry Pi og skriv inn dette Python-programmet, tilpasset Matt's Sound Sample Player:

# playSounds.py import pygame.mixer fra tid import søvn fra sys import exit import seriell pygame.mixer.init (44000, -16, 1, 1024) soundA = pygame.mixer.Sound ("Scream.wav") soundB = pygame .mixer.Sound ("WilhelmScream.wav") soundC = pygame.mixer.Sound ("CastleThunder.wav") soundChannelA = pygame.mixer.Channel (1) soundChannelB = pygame.mixer.Channel (2) soundChannelC = pygame.mixer .Kanel (3) skriv ut "Sampler Ready." serialFromArduino = serial.Serial ("/ dev / ttyACM0", 9600) serialFromArduino.flush () mens True: prøv: val = ord (serialFromArduino.read ()) print (val) hvis (val == 2): soundChannelA.play (soundA) if (val == 3): soundChannelB.play (lydB) hvis (val == 4): soundChannelC.play (soundC) val = 0 sleep (.01) unntatt KeyboardInterrupt: exit

Lagre det som playSounds.py. Før du kjører skriptet, må du sannsynligvis installere Python seriemodulen. For å gjøre det, skriv inn:

sudo apt-get install python-seriell

Hvis du kjører den nyeste Raspbian, har du sannsynligvis alt du trenger for å få dette til å løpe. Åpne LXTerminal og skriv:

python playSounds.py

Hvis du får en feil som Pygame ikke er installert, skriver du:

sudo apt-get oppdatering sudo apt-get install python-pygame

Du trenger også noen lydfiler som skal spilles. Jeg valgte tre fra Internet Archive: et generisk skrik, en Wilhelm Scream, og den klassiske Castle Thunder-prøven.

Når du trykker på knappene, spiller hver lyd en gang; Pygame's mixer vil til og med spille alle tre samtidig hvis du har flere trick-or-treaters som invaderer verandaen din.



Du Kan Være Interessert

Bli kjent med dine digitale lagringsoscilloskop

Bli kjent med dine digitale lagringsoscilloskop


White House Building High School Makerspaces

White House Building High School Makerspaces


Remote Treat Dispenser sender deg bedårende bilder av kjæledyret ditt

Remote Treat Dispenser sender deg bedårende bilder av kjæledyret ditt


Prosjekt Orion: Deep Space Force

Prosjekt Orion: Deep Space Force






Siste Innlegg