Innholdsfortegnelse:
- Trinn 1: Ingredienser
- Trinn 2: Koble ultralydsensorene til Octasonic -kortet
- Trinn 3: Koble Logic Level Converter til Octasonic Board
- Trinn 4: Koble Logic Level Converter til Raspberry Pi
- Trinn 5: Koble Raspberry Pi 5V til Octasonic 5V
- Trinn 6: Installer programvare
- Trinn 7: Lag litt musikk
- Trinn 8: Bevegelseskontroll
- Trinn 9: Lag en vedlegg
- Trinn 10: Feilsøking og neste trinn
Video: Ultralyd Pi -piano med bevegelseskontroller !: 10 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Dette prosjektet bruker billige HC-SR04 ultralydsensorer som innganger og genererer MIDI-notater som kan spilles gjennom en synthesizer på Raspberry Pi for lyd av høy kvalitet.
Prosjektet bruker også en grunnleggende form for gestkontroll, der musikkinstrumentet kan endres ved å holde hendene over de to ytterste sensorene i noen sekunder. En annen gest kan brukes til å slå av Raspberry Pi når du er ferdig.
Videoen ovenfor viser det ferdige produktet i et enkelt laserskåret kabinett. Det er en mer grundig video senere i denne instruksjonsboken som forklarer hvordan prosjektet fungerer.
Jeg opprettet dette prosjektet i forbindelse med The Gizmo Dojo (mitt lokale makerspace i Broomfield, CO) for å lage noen interaktive utstillinger som vi kan ta med til lokale STEM/STEAM -arrangementer og Maker Faires.
Sjekk også den siste dokumentasjonen og opplæringsprogrammene på https://theotherandygrove.com/octasonic/ som nå inneholder informasjon om en Python -versjon av dette prosjektet (denne instruksen ble skrevet for Rust -versjonen).
Trinn 1: Ingredienser
For denne instruktive, trenger du følgende ingredienser:
- Bringebær Pi (2 eller 3) med SD -kort
- 8 ultralydsensorer HC-SR04
- Octasonic Breakout Board
- Toveis logisk nivåomformer
- 32 x 12 "kvinne-hunn jumper ledninger for tilkobling av ultralydsensorer
- 13 x 6 "kvinnelige-kvinnelige jumperledninger for tilkobling av Raspberry Pi, Octasonic og Logic Level Converter
- Passende strømforsyning for Raspberry Pi
- PC -høyttalere eller lignende
Jeg vil anbefale å bruke en Raspberry Pi 3 hvis mulig siden den har mer datakraft, noe som resulterer i en mer lydhør og behagelig lyd. Det kan fungere fint med en Raspberry Pi 2 med litt finjustering, men jeg ville ikke prøve å bruke den opprinnelige Raspberry Pi til dette prosjektet.
HC -SR04 ultralydsensorer har 4 tilkoblinger - 5V, GND, Trigger og Echo. Vanligvis er Trigger og Echo koblet til separate pinner på en mikrokontroller eller Raspberry Pi, men det betyr at du må bruke 16 pinner for å koble til 8 sensorer, og dette er ikke praktisk. Det er her Octasonic breakout -kortet kommer inn. Dette kortet kobles til alle sensorene og har en dedikert mikrokontroller som overvåker sensorene og deretter kommuniserer med Raspberry Pi over SPI.
HC-SR04 krever 5V og Raspberry Pi er bare 3.3V, så derfor trenger vi også den logiske nivåomformeren som vil koble Raspberry Pi til Octasonic breakout-kortet.
Trinn 2: Koble ultralydsensorene til Octasonic -kortet
Bruk 4 hun-hun-jumper-ledninger for å koble hver ultralydssensor til kortet, vær forsiktig med å koble dem på riktig måte. Brettet er utformet slik at pinnene er i samme rekkefølge som pinnene på ultralydssensoren. Fra venstre til høyre på brettet er pinnene GND, Trigger, Echo, 5V.
Trinn 3: Koble Logic Level Converter til Octasonic Board
Raspberry Pi og Octasonic Board kommuniserer over SPI. SPI bruker 4 ledninger:
- Master In, Slave Out (MISO)
- Master Out, Slave In (MOSI)
- Seriell klokke (SCK)
- Slave Select (SS)
I tillegg må vi koble til strøm (5V og GND).
Den logiske nivåomformeren har to sider - en lav spenning (LV) og en høy spenning (HV). Bringebæret vil koble seg til LV -siden siden det er 3,3V. Octasonic kobler seg til HV siden siden den er 5V.
Dette trinnet er for å koble Octasonic til HV -siden av den logiske nivåomformeren
Se bildet vedlagt dette trinnet som viser hvilke pinner som skal kobles til logikknivåomformeren.
Tilkoblingene fra Octasonic til Logic Level -omformeren bør være som følger:
- 5V til HV
- SCK til HV4
- MISO til HV3
- MOSI til HV2
- SS til HV1
- GND til GND
Trinn 4: Koble Logic Level Converter til Raspberry Pi
Raspberry Pi og Octasonic Board kommuniserer over SPI. SPI bruker 4 ledninger:
- Master In, Slave Out (MISO)
- Master Out, Slave In (MOSI)
- Seriell klokke (SCK)
- Slave Select (SS)
I tillegg må vi koble til strøm (3.3V og GND). Den logiske nivåomformeren har to sider - en lav spenning (LV) og en høy spenning (HV). Bringebæret vil koble seg til LV -siden siden det er 3,3V. Octasonic kobler seg til HV siden siden den er 5V.
Dette trinnet er for å koble Raspberry Pi til LV -siden av det logiske nivåomformeren
Tilkoblingene fra Raspbery Pi til Logic Level -omformeren bør være som følger:
- 3,3V til LV
- GPIO11 (SPI_SCLK) til LV4
- GPIO09 (SPI_MISO) til LV3
- GPIO10 (SPI_MOSI) til LV2
- GPIO08 (SPI_CE0_N) SS til LV1
- GND til GND
Bruk diagrammet som er vedlagt dette trinnet for å finne de riktige pinnene på Raspberry Pi!
Trinn 5: Koble Raspberry Pi 5V til Octasonic 5V
Det er en siste ledning å legge til. Vi må faktisk drive Octasonic -kortet med 5V, så vi gjør det ved å koble en av Raspberry Pi 5V -pinnene til 5V -pinnen på Octasonic AVR -toppteksten. Dette er den nederste venstre pinnen i AVR -toppblokken (dette er 2 x 3 -blokken øverst til høyre på brettet). Se vedlagte foto som viser hvor AVR -blokken er.
Se det andre vedlagte diagrammet for å finne 5V -pinnen på Raspberry Pi.
Trinn 6: Installer programvare
Installer Raspian
Start med en ren installasjon av Raspbian Jessie, og oppdater den deretter til den nyeste versjonen:
sudo apt-get oppdatering
sudo apt-get oppgradering
Aktiver SPI
Du må aktivere SPI på Raspberry Pi for at dette prosjektet skal fungere! Bruk Raspberry Pi Configuration -verktøyet for å gjøre dette.
Det er også viktig å starte Pi på nytt etter at SPI har aktivert for at den skal tre i kraft
Installer FluidSynth
Fluidsynth er en fantastisk gratis programvare MIDI synth. Du kan installere den fra kommandolinjen med denne kommandoen:
sudo apt-get install fluidsynth
Installer Rust programmeringsspråk
Ultrasonic Pi Piano er implementert i Rust Programming Language fra Mozilla (det er som C ++ men uten de dårlige bitene). Det er det alle de kule barna bruker i disse dager.
Følg instruksjonene på https://rustup.rs/ for å installere Rust. For å spare tid, er instruksjonene å kjøre denne ene kommandoen. Du kan godta standardsvarene på spørsmål under installasjonen.
MERK: Siden du la ut dette instruerbare, er det noen problemer med å installere Rust på Raspberry Pi. Dårlig timing:-/ men jeg har endret kommandoen nedenfor for å løse problemet. Forhåpentligvis vil de fikse dette snart. Jeg jobber med å lage et bilde som folk kan laste ned og brenne på et SD -kort. Hvis du vil ha det, vennligst kontakt meg.
eksport RUSTUP_USE_HYPER = 1curl https://sh.rustup.rs -sSf | sh
Last ned kildekoden for Ultrasonic Pi Piano
Kildekoden for Ultrasonic Pi Piano kildekoden er plassert på github. Det er to alternativer for å få koden. Hvis du er kjent med git og github, kan du klone repoen:
git klon [email protected]: TheGizmoDojo/UltrasonicPiPiano.git
Alternativt kan du laste ned en zip -fil med den siste koden.
Kompiler kildekoden
cd UltrasonicPiPiano
lastbygging -utgivelse
Test koden
Før vi går videre til å lage musikk i neste trinn, la oss sørge for at programvaren kjører og at vi kan lese gyldige data fra sensorene.
Bruk følgende kommando for å kjøre programmet. Dette vil lese data fra sensorene og oversette dem til MIDI -notater som deretter skrives ut på konsollen. Når du beveger hånden over sensorene, bør du se data som genereres. Hvis ikke, hopper du til feilsøkingsdelen på slutten av denne instruksen.
lastekjøring --utgivelse
Hvis du er nysgjerrig, ber "-release" -flagget Rust om å kompilere koden så effektivt som mulig, i motsetning til standard "--debug" -innstilling.
Trinn 7: Lag litt musikk
Sørg for at du fortsatt er i katalogen der du lastet ned kildekoden og kjør følgende kommando.
Dette "run.sh" -skriptet sørger for at koden er kompilert og kjører deretter koden, og leder utgangen til fluidsynth.
./run.sh
Sørg for at du har forsterkede høyttalere koblet til 3,5 mm lydkontakten på Raspberry Pi, og du bør høre musikk mens du beveger hendene over sensorene.
Hvis du ikke hører musikk og har en HDMI -skjerm tilkoblet, går sannsynligvis lydutgangen dit i stedet. For å fikse dette, bare kjør denne kommandoen og start deretter Pi Piano på nytt:
sudo amixer cset numid = 3 1
Endre volumet
Volumet (eller "gain") er spesifisert med parameteren "-g" til fluidsynth. Du kan endre run.sh -skriptet og endre denne verdien. Vær oppmerksom på at små endringer i denne parameteren resulterer i en stor volumendring, så prøv å øke den med små mengder (som 0,1 eller 0,2).
Trinn 8: Bevegelseskontroll
Se videoen vedlagt dette trinnet for en fullstendig demonstrasjon av prosjektet, inkludert hvordan gestkontrollene fungerer.
Konseptet er veldig enkelt. Programvaren holder oversikt over hvilke sensorer som er dekket (innen 10 cm) og hvilke som ikke er det. Dette oversetter til 8 binære tall (1 eller 0). Dette er veldig praktisk, siden en sekvens på 8 binære tall lager en "byte" som kan representere tall mellom 0 og 255. Hvis du ikke allerede vet om binære tall, anbefaler jeg på det sterkeste å søke etter en opplæring. Binære tall er en grunnleggende ferdighet å lære hvis du vil lære mer om programmering.
Programvaren kartlegger sensorenes nåværende tilstand til en enkelt byte som representerer den nåværende gesten. Hvis dette tallet forblir det samme i flere sykluser, virker programvaren på den gesten.
Fordi ultralydsensorer ikke er super pålitelige og det kan være interferens mellom sensorene, må du være litt tålmodig når du bruker bevegelsene. Prøv å variere avstanden du holder hendene fra sensorene, så vel som vinkelen du holder hendene. Du kan også prøve å holde noe flatt og solid over sensorene for å reflektere lyden bedre.
Trinn 9: Lag en vedlegg
Hvis du vil gjøre dette til en permanent utstilling og kunne vise det frem for folk, vil du sannsynligvis lage en slags innhegning. Dette kan være laget av tre, papp eller mange andre materialer. Her er en video som viser kabinettet vi jobber med for dette prosjektet. Dette er laget av tre, med hull boret ut for å holde ultralydsensorene på plass.
Trinn 10: Feilsøking og neste trinn
Feilsøking
Hvis prosjektet ikke fungerer, er det vanligvis en ledningsfeil. Ta deg tid til å dobbeltsjekke alle tilkoblingene.
Et annet vanlig problem er å ikke aktivere SPI og starte pi på nytt.
Besøk https://theotherandygrove.com/octasonic/ for fullstendig dokumentasjon, inkludert feilsøkingstips, med Rust- og Python -spesifikke artikler, og også informasjon om hvordan du får støtte.
Neste skritt
Når du har fått prosjektet til å fungere, anbefaler jeg å eksperimentere med koden og prøve forskjellige musikkinstrumenter. MIDI -instrumentkoder er mellom 1 og 127 og er dokumentert her.
Vil du ha et enkelt musikkinstrument med hver sensor som spiller en annen oktav? Kanskje du vil at hver sensor skal være et eget instrument i stedet? Mulighetene er nesten ubegrensede!
Jeg håper du likte dette lærerikt. Lik det hvis du gjorde det, og husk å abonnere på meg her og på YouTube -kanalen min for å se fremtidige prosjekter.
Anbefalt:
Ultralyd lydpistol (parametrisk høyttaler): 3 trinn (med bilder)
Ultrasonic Sound Gun (parametrisk høyttaler): For dette prosjektet bygde jeg en pistol som skyter ut en smal stråle av ultralydlyd. Lyden kan bare høres av mennesker inne i den smale strålen, eller gjennom en kilde i nærheten når lyden blir demodulert. Jeg ble inspirert til å bygge dette prosjektet etter at
Batchfil: Bevegelseskontroller: 3 trinn
Batchfil: Bevegelseskontroller: Da jeg så opp hvordan jeg lagde bevegelseskontroller i CMD fant jeg ingen nøyaktige resultater, så jeg bestemte meg for å lage mine egne kontroller som fungerer med WASD -tastene for bevegelse og 1234 taster for sving
Kropps-ultralyd sonografi med Arduino: 3 trinn (med bilder)
Kropps-ultralyd sonografi med Arduino: Hei! Min hobby og lidenskap er å realisere fysikkprosjekter. Et av mine siste arbeider handler om ultralyd sonografi. Som alltid prøvde jeg å gjøre det så enkelt som mulig med deler du kan få på ebay eller aliexpress. Så la oss se på hvor langt jeg kan gå med
Strømmåling med vannmåler (ultralyd): 5 trinn (med bilder)
Strømmåling med vannmåler (ultralyd): Vann er en kritisk ressurs for planeten vår. Vi mennesker trenger vann hver dag. Og vann er nødvendig for en rekke næringer, og vi mennesker trenger det hver dag. Etter hvert som vann har blitt mer verdifullt og mangelvare, er behovet for effektiv overvåking og håndtering
Nivåmåler for ultralyd: 5 trinn (med bilder)
Ultralyd tanknivåmåler: Trenger du å overvåke væskenivået i en brønn med stor diameter, en tank eller en åpen beholder? Denne guiden viser deg hvordan du lager en ekkoloddvæskemåler med ekkolodd ved hjelp av billig elektronikk! Skissen ovenfor viser en oversikt over hva vi siktet oss mot med