Kazalo:

Ultrazvočni pi klavir s krmilnimi potezami!: 10 korakov (s slikami)
Ultrazvočni pi klavir s krmilnimi potezami!: 10 korakov (s slikami)

Video: Ultrazvočni pi klavir s krmilnimi potezami!: 10 korakov (s slikami)

Video: Ultrazvočni pi klavir s krmilnimi potezami!: 10 korakov (s slikami)
Video: E.Grieg - Peer Gynt Suite - Anitra´s dance - violin or Flute and Piano - Piano Accompaniment 2024, Julij
Anonim
Image
Image
Ultrazvočni pi klavir s krmilnimi potezami!
Ultrazvočni pi klavir s krmilnimi potezami!

Ta projekt uporablja poceni ultrazvočne senzorje HC-SR04 kot vhodne podatke in ustvarja zapise MIDI, ki jih je mogoče predvajati prek sintetizatorja na Raspberry Pi za visokokakovosten zvok.

Projekt uporablja tudi osnovno obliko upravljanja s kretnjami, kjer lahko glasbeni instrument spremenite tako, da za nekaj sekund držite roke nad dvema zunanjima senzorjema. Z drugo potezo lahko izklopite Raspberry Pi, ko končate.

Zgornji video prikazuje končni izdelek v enostavnem lasersko izrezanem ohišju. Kasneje v tem navodilu je podrobnejši video, ki pojasnjuje, kako projekt deluje.

Ta projekt sem ustvaril skupaj z The Gizmo Dojo (moj lokalni makerspace v Broomfieldu, CO), da bi naredil nekaj interaktivnih eksponatov, ki jih lahko popeljemo na lokalne dogodke STEM/STEAM in Maker Faires.

Oglejte si tudi najnovejšo dokumentacijo in vaje na naslovu https://theotherandygrove.com/octasonic/, ki zdaj vsebuje informacije o različici tega projekta Python (ta navodila so bila napisana za različico Rust).

Korak: Sestavine

Za to navodilo boste potrebovali naslednje sestavine:

  • Raspberry Pi (2 ali 3) s kartico SD
  • 8 ultrazvočnih senzorjev HC-SR04
  • Octasonic Breakout Board
  • Dvosmerni pretvornik ravni logike
  • 32 x 12 "žensko-ženske mostične žice za priključitev ultrazvočnih senzorjev
  • 13 x 6 "žensko-ženska mostična žica za priključitev pretvornika nivoja Raspberry Pi, Octasonic in logičnega nivoja
  • Primerno napajanje za Raspberry Pi
  • PC zvočniki ali podobno

Če je mogoče, priporočam uporabo Raspberry Pi 3, saj ima več računalniške moči, kar ima za posledico bolj odziven in prijetnejši zvok. Z Raspberry Pi 2 se lahko dobro obnese z rahlim prilagajanjem, vendar za ta projekt ne bi poskušal uporabiti izvirne Raspberry Pi.

Ultrazvočni senzorji HC -SR04 imajo 4 povezave - 5V, GND, Trigger in Echo. Običajno sta sprožilec in odmev povezana na ločene nožice na mikrokrmilniku ali Raspberry Pi, vendar to pomeni, da bi morali za priključitev 8 senzorjev uporabiti 16 nožic, kar pa ni praktično. Tu pride na trg Octasonicova odklopna plošča. Ta plošča se poveže z vsemi senzorji in ima namenski mikrokrmilnik, ki nadzoruje senzorje in nato komunicira z Raspberry Pi prek SPI.

HC-SR04 zahteva 5V, Raspberry Pi pa le 3.3V, zato potrebujemo tudi pretvornik logične ravni, ki bo povezal Raspberry Pi z odklopno ploščo Octasonic.

2. korak: Priključite ultrazvočne senzorje na ploščo Octasonic

Priključite ultrazvočne senzorje na ploščo Octasonic
Priključite ultrazvočne senzorje na ploščo Octasonic
Priključite ultrazvočne senzorje na ploščo Octasonic
Priključite ultrazvočne senzorje na ploščo Octasonic

Za priključitev vsakega ultrazvočnega senzorja na ploščo uporabite 4 žice žensko-ženski skakalec, pri tem pa pazite, da jih pravilno povežete. Plošča je zasnovana tako, da so zatiči v istem vrstnem redu kot zatiči na ultrazvočnem senzorju. Od leve proti desni na plošči so zatiči GND, Trigger, Echo, 5V.

3. korak: Pretvornik logičnih ravni priključite na ploščo Octasonic

Pretvornik logične ravni priključite na ploščo Octasonic
Pretvornik logične ravni priključite na ploščo Octasonic

Raspberry Pi in Octasonic Board komunicirata prek SPI. SPI uporablja 4 žice:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Zaporedna ura (SCK)
  • Slave Select (SS)

Poleg tega moramo priključiti napajanje (5V in GND).

Pretvornik logične ravni ima dve strani - nizkonapetostno (LV) in visokonapetostno (HV). Malina se bo priključila na LV stran, saj je 3.3V. Octasonic se bo priključil na HV stran, saj je 5V.

Ta korak je namenjen priključitvi Octasonica na visokonapetostno stran pretvornika logične ravni

Oglejte si fotografijo, priloženo temu koraku, ki prikazuje, katere zatiče je treba priključiti na pretvornik logične ravni.

Priključki iz pretvornika Octasonic v logični nivo morajo biti naslednji:

  • 5V na HV
  • SCK v HV4
  • MISO do HV3
  • MOSI v HV2
  • SS do HV1
  • GND v GND

4. korak: Pretvornik ravni logike povežite z Raspberry Pi

Pretvornik ravni logike povežite z Raspberry Pi
Pretvornik ravni logike povežite z Raspberry Pi

Raspberry Pi in Octasonic Board komunicirata prek SPI. SPI uporablja 4 žice:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Zaporedna ura (SCK)
  • Slave Select (SS)

Poleg tega moramo priključiti napajanje (3,3 V in GND). Pretvornik logične ravni ima dve strani - nizkonapetostno (LV) in visokonapetostno (HV). Malina se bo priključila na LV stran, saj je 3.3V. Octasonic se bo priključil na HV stran, saj je 5V.

Ta korak je namenjen priključitvi Raspberry Pi na LV stran pretvornika logične ravni

Povezave od Raspbery Pi do pretvornika logične ravni morajo biti naslednje:

  • 3.3V do LV
  • GPIO11 (SPI_SCLK) do LV4
  • GPIO09 (SPI_MISO) do LV3
  • GPIO10 (SPI_MOSI) do LV2
  • GPIO08 (SPI_CE0_N) SS do LV1
  • GND v GND

S pomočjo diagrama, priloženega temu koraku, poiščite pravilne zatiče na Raspberry Pi!

5. korak: Priključite Raspberry Pi 5V na Octasonic 5V

Priključite Raspberry Pi 5V na Octasonic 5V
Priključite Raspberry Pi 5V na Octasonic 5V
Priključite Raspberry Pi 5V na Octasonic 5V
Priključite Raspberry Pi 5V na Octasonic 5V

Dodati je treba še eno zadnjo žico. Octasonicovo ploščo moramo dejansko napajati s 5V, zato to storimo tako, da enega od 5 -polnih zatičev Raspberry Pi povežemo s 5 -V na glavi Octasonic AVR. To je spodnji levi zatič v bloku glave AVR (to je blok 2 x 3 v zgornjem desnem kotu plošče). Oglejte si priloženo fotografijo, ki prikazuje, kje je blok AVR.

Oglejte si drugi priloženi diagram in poiščite 5V pin na Raspberry Pi.

6. korak: Namestite programsko opremo

Namestite Raspian

Začnite s čisto namestitvijo Raspbian Jessie, nato jo posodobite na najnovejšo različico:

sudo apt-get posodobitev

sudo apt-get nadgradnja

Omogoči SPI

Če želite, da ta projekt deluje, morate omogočiti SPI na Raspberry Pi! Za to uporabite pripomoček za konfiguracijo Raspberry Pi.

Pomembno je tudi, da znova zaženete Pi, potem ko omogočite SPI, da začne veljati

Namestite FluidSynth

Fluidsynth je neverjeten MIDI sintetizator brezplačne programske opreme. Lahko ga namestite iz ukazne vrstice s tem ukazom:

sudo apt-get install fluidsynth

Namestite programski jezik Rust

Ultrazvočni pi klavir je implementiran v programskem jeziku Rust iz Mozille (podoben je C ++, vendar brez slabih kosov). To danes uporabljajo vsi kul otroci.

Sledite navodilom na https://rustup.rs/, da namestite Rust. Če želite prihraniti čas, sledite tem ukazom. Med namestitvijo lahko sprejmete privzete odgovore na vsa vprašanja.

OPOMBA: Od objave tega navodila je nekaj težav pri nameščanju Rusta na Raspberry Pi. Slab čas:-/ vendar sem spodnji ukaz spremenil, da bi rešil težavo. Upajmo, da bodo to kmalu uredili. Delam na ustvarjanju slike, ki jo lahko ljudje prenesejo in zapišejo na kartico SD. Če bi to želeli, me prosim kontaktirajte.

izvoz RUSTUP_USE_HYPER = 1curl https://sh.rustup.rs -sSf | sh

Prenesite izvorno kodo Ultrasonic Pi Piano

Izvorna koda za izvorno kodo Ultrasonic Pi Piano gostuje na githubu. Obstajata dve možnosti za pridobitev kode. Če poznate git in github, lahko klonirate repo:

git clone [email protected]: TheGizmoDojo/UltrasonicPiPiano.git

Druga možnost je, da prenesete zip datoteko z najnovejšo kodo.

Prevedite izvorno kodo

cd UltrasonicPiPiano

izdelava tovora -sprostitev

Preizkusite kodo

Preden nadaljujemo z ustvarjanjem glasbe v naslednjem koraku, se prepričajmo, da se programska oprema zažene in da lahko iz senzorjev preberemo veljavne podatke.

Za zagon aplikacije uporabite naslednji ukaz. Ta bo prebral podatke iz senzorjev in jih prevedel v zapiske MIDI, ki jih nato natisnejo na konzoli. Ko premikate roko po senzorjih, bi morali videti, kako se ustvarjajo podatki. Če ne, pojdite na razdelek za odpravljanje težav na koncu tega navodila.

cargo run -sprostitev

Če vas zanima, zastavica "--release" pove Rustu, da kodo sestavi čim bolj učinkovito, v nasprotju s privzeto nastavitvijo "--debug".

7. korak: Ustvarite glasbo

Prepričajte se, da ste še vedno v imeniku, kjer ste prenesli izvorno kodo, in zaženite naslednji ukaz.

Ta skript "run.sh" poskrbi, da je koda prevedena, nato pa zažene kodo, tako da izhod prenese v fluidsynth.

./run.sh

Prepričajte se, da imate ojačane zvočnike, priključene na 3,5 -milimetrski avdio priključek na Raspberry Pi, in slišati glasbo, ko premikate roke po senzorjih.

Če ne slišite glasbe in imate priključen monitor HDMI, bo namesto tega verjetno šel zvočni izhod. Če želite to odpraviti, preprosto zaženite ta ukaz in nato znova zaženite Pi Piano:

sudo amixer cset numid = 3 1

Spreminjanje glasnosti

Glasnost (ali "dobiček") je podana s parametrom "-g" na fluidsynth. Skript run.sh lahko spremenite in spremenite to vrednost. Upoštevajte, da majhne spremembe tega parametra povzročijo veliko spremembo obsega, zato ga poskusite povečati za majhne količine (na primer 0,1 ali 0,2).

8. korak: Nadzor s kretnjami

Za popoln prikaz projekta, vključno s tem, kako delujejo kontrole kretenj, si oglejte videoposnetek, priložen temu koraku.

Koncept je zelo preprost. Programska oprema spremlja, kateri senzorji so pokriti (znotraj 10 cm) in kateri ne. To pomeni 8 binarnih števil (1 ali 0). To je zelo priročno, saj zaporedje 8 binarnih števil naredi "bajt", ki lahko predstavlja številke med 0 in 255. Če še ne poznate binarnih števil, vam toplo priporočam, da poiščete vadnico. Binarne številke so temeljna veščina, če se želite naučiti več o programiranju.

Programska oprema preslika trenutno stanje senzorjev v en sam bajt, ki predstavlja trenutno potezo. Če ta številka ostane več ciklov, programska oprema deluje na to potezo.

Ker ultrazvočni senzorji niso super zanesljivi in med senzorji lahko pride do motenj, boste morali pri uporabi kretenj biti potrpežljivi. Poskusite spremeniti razdaljo, ki jo držite za roke od senzorjev, kot tudi kot, v katerem držite roke. Hladite tudi, da držite nekaj ravno in trdno nad senzorji, da bolje odražajo zvok.

9. korak: izdelava ohišja

Če želite to narediti za stalno razstavo in jo lahko pokazati ljudem, boste verjetno želeli narediti kakšno ograjo. Lahko je izdelan iz lesa, kartona ali mnogih drugih materialov. Tukaj je video, ki prikazuje ohišje, na katerem delamo za ta projekt. Ta je narejen iz lesa, z izvrtanimi luknjami za držanje ultrazvočnih senzorjev na mestu.

10. korak: Odpravljanje težav in naslednji koraki

Odpravljanje težav

Če projekt ne deluje, je to običajno posledica napake pri ožičenju. Vzemite si čas in dvakrat preverite vse povezave.

Druga pogosta težava je onemogočanje SPI in ponovni zagon pi.

Obiščite https://theotherandygrove.com/octasonic/ za popolno dokumentacijo, vključno z nasveti za odpravljanje težav, s članki, specifičnimi za Rust in Python, ter informacijami o tem, kako dobiti podporo.

Naslednji koraki

Ko projekt začne delovati, priporočam, da eksperimentirate s kodo in preizkusite različna glasbila. Kode instrumentov MIDI so med 1 in 127 in so dokumentirane tukaj.

Ali želite en sam glasbeni instrument, pri katerem vsak senzor igra drugačno oktavo? Morda bi želeli, da bi bil vsak senzor ločen instrument? Možnosti so skoraj neomejene!

Upam, da ste uživali v tem navodilu. Če vam je všeč, se všečkajte in se naročite na mene tukaj in na moj YouTube kanal, če si želite ogledati prihodnje projekte.

Priporočena: