Innholdsfortegnelse:

Ultralyd Pi -piano med bevegelseskontroller !: 10 trinn (med bilder)
Ultralyd Pi -piano med bevegelseskontroller !: 10 trinn (med bilder)

Video: Ultralyd Pi -piano med bevegelseskontroller !: 10 trinn (med bilder)

Video: Ultralyd Pi -piano med bevegelseskontroller !: 10 trinn (med bilder)
Video: Гормоны и здоровье. Лечение щитовидной железы. 2024, Juli
Anonim
Image
Image
Ultralyd Pi -piano med bevegelseskontroller!
Ultralyd Pi -piano med bevegelseskontroller!

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

Koble ultralydsensorene til Octasonic -kortet
Koble ultralydsensorene til Octasonic -kortet
Koble ultralydsensorene til Octasonic -kortet
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

Koble Logic Level Converter til Octasonic Board
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

Koble Logic Level Converter til Raspberry Pi
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

Koble Raspberry Pi 5V til Octasonic 5V
Koble Raspberry Pi 5V til Octasonic 5V
Koble Raspberry Pi 5V til Octasonic 5V
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: