Turinys:

Ultragarsinis Pi fortepijonas su gesto valdikliais!: 10 žingsnių (su paveikslėliais)
Ultragarsinis Pi fortepijonas su gesto valdikliais!: 10 žingsnių (su paveikslėliais)

Video: Ultragarsinis Pi fortepijonas su gesto valdikliais!: 10 žingsnių (su paveikslėliais)

Video: Ultragarsinis Pi fortepijonas su gesto valdikliais!: 10 žingsnių (su paveikslėliais)
Video: 4 el yerine 4 ayak piyano / 4 foot instead of 4 hand piano 2024, Lapkritis
Anonim
Image
Image
Ultragarsinis Pi fortepijonas su gestų valdikliais!
Ultragarsinis Pi fortepijonas su gestų valdikliais!

Šiame projekte naudojami nebrangūs ultragarso jutikliai HC-SR04 ir generuojami MIDI užrašai, kuriuos galima paleisti per „Raspberry Pi“sintezatorių, kad garsas būtų aukštos kokybės.

Projekte taip pat naudojama pagrindinė gestų valdymo forma, kai muzikos instrumentą galima pakeisti laikant rankas virš dviejų atokiausių jutiklių kelias sekundes. Kitas gestas gali būti naudojamas „Raspberry Pi“išjungimui, kai baigsite.

Aukščiau esančiame vaizdo įraše parodyta gatava produkcija paprastame lazeriu supjaustytame korpuse. Vėliau šioje instrukcijoje yra išsamesnis vaizdo įrašas, kuriame paaiškinama, kaip veikia projektas.

Sukūriau šį projektą kartu su „The Gizmo Dojo“(mano vietinė kūrėjų erdvė Broomfield, CO), kad galėčiau sukurti keletą interaktyvių eksponatų, kuriuos galėtume pasiimti į vietinius STEM/STEAM renginius ir „Maker Faires“.

Taip pat peržiūrėkite naujausius dokumentus ir vadovėlius adresu https://theotherandygrove.com/octasonic/, kuriuose dabar yra informacijos apie šio projekto „Python“versiją (ši instrukcija buvo parašyta „Rust“versijai).

1 žingsnis: Ingredientai

Norėdami tai padaryti, jums reikės šių ingredientų:

  • Raspberry Pi (2 arba 3) su SD kortele
  • 8 ultragarso jutikliai HC-SR04
  • „Octasonic Breakout Board“
  • Dviejų krypčių loginio lygio keitiklis
  • 32 x 12 colių jungiamieji laidai, skirti jungti ultragarsinius jutiklius
  • 13 x 6 colių moterų ir moterų jungiamieji laidai, skirti prijungti „Raspberry Pi“, „Octasonic“ir „Logic Level Converter“
  • Tinkamas „Raspberry Pi“maitinimo šaltinis
  • PC garsiakalbiai ar pan

Jei įmanoma, rekomenduočiau naudoti „Raspberry Pi 3“, nes jis turi daugiau skaičiavimo galios, todėl garsas reaguoja geriau ir maloniau. Tai gali gerai veikti su „Raspberry Pi 2“, šiek tiek patobulinus, tačiau aš nesistengčiau šiam projektui naudoti originalios „Raspberry Pi“.

Ultragarsiniai jutikliai HC -SR04 turi 4 jungtis - 5V, GND, trigerį ir aidą. Paprastai „Trigger“ir „Echo“yra prijungti prie atskirų mikrovaldiklio arba „Raspberry Pi“kaiščių, tačiau tai reiškia, kad norint prijungti 8 jutiklius, reikės naudoti 16 kontaktų, ir tai nėra praktiška. Čia yra „Octasonic“pertraukimo plokštė. Ši plokštė jungiasi prie visų jutiklių ir turi specialų mikrovaldiklį, kuris stebi jutiklius ir palaiko ryšį su „Raspberry Pi“per SPI.

HC-SR04 reikia 5 V, o „Raspberry Pi“-tik 3,3 V, todėl mums taip pat reikia loginio lygio keitiklio, kuris prijungs „Raspberry Pi“prie „Octasonic“pertraukos plokštės.

2 veiksmas: prijunkite ultragarso jutiklius prie „Octasonic“plokštės

Prijunkite ultragarso jutiklius prie „Octasonic“plokštės
Prijunkite ultragarso jutiklius prie „Octasonic“plokštės
Prijunkite ultragarso jutiklius prie „Octasonic“plokštės
Prijunkite ultragarso jutiklius prie „Octasonic“plokštės

Kiekvienam ultragarso jutikliui prie plokštės prijungti naudokite 4 moteriškus trumpiklius, atsargiai juos prijungdami. Plokštė suprojektuota taip, kad kaiščiai būtų tokia pat tvarka kaip ir ultragarso jutiklio kaiščiai. Iš kairės į dešinę ant lentos kaiščiai yra GND, Trigger, Echo, 5V.

3 veiksmas: prijunkite loginio lygio keitiklį prie „Octasonic“plokštės

Prijunkite loginio lygio keitiklį prie „Octasonic“plokštės
Prijunkite loginio lygio keitiklį prie „Octasonic“plokštės

„Raspberry Pi“ir „Octasonic Board“bendrauja per SPI. SPI naudoja 4 laidus:

  • „Master In, Slave Out“(MISO)
  • „Master Out“, „Slave In“(MOSI)
  • Serijinis laikrodis (SCK)
  • Slave Select (SS)

Be to, turime prijungti maitinimą (5 V ir GND).

Loginio lygio keitiklis turi dvi puses - žemos įtampos (LV) ir aukštos įtampos (HV). Avietė bus prijungta prie LV pusės, nes ji yra 3.3V. „Octasonic“bus prijungtas prie HV pusės, nes jis yra 5 V.

Šis žingsnis skirtas prijungti „Octasonic“prie loginio lygio keitiklio HV pusės

Žiūrėkite prie šio veiksmo pridėtą nuotrauką, kurioje parodyta, kokie kaiščiai turi būti prijungti prie loginio lygio keitiklio.

Ryšiai iš „Octasonic“į „Logic Level“keitiklį turėtų būti tokie:

  • Nuo 5V iki HV
  • SCK į HV4
  • MISO į HV3
  • MOSI į HV2
  • Nuo SS iki HV1
  • GND į GND

4 veiksmas: prijunkite loginio lygio keitiklį prie „Raspberry Pi“

Prijunkite loginio lygio keitiklį prie Raspberry Pi
Prijunkite loginio lygio keitiklį prie Raspberry Pi

„Raspberry Pi“ir „Octasonic Board“bendrauja per SPI. SPI naudoja 4 laidus:

  • „Master In, Slave Out“(MISO)
  • „Master Out“, „Slave In“(MOSI)
  • Serijinis laikrodis (SCK)
  • Slave Select (SS)

Be to, turime prijungti maitinimą (3.3V ir GND). Loginio lygio keitiklis turi dvi puses - žemos įtampos (LV) ir aukštos įtampos (HV). Avietė bus prijungta prie LV pusės, nes ji yra 3.3V. „Octasonic“bus prijungtas prie HV pusės, nes jis yra 5 V.

Šis žingsnis skirtas „Raspberry Pi“prijungti prie loginio lygio keitiklio LV pusės

Ryšiai iš „Raspbery Pi“į loginio lygio keitiklį turėtų būti tokie:

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

Naudokite prie šio veiksmo pridėtą schemą, kad surastumėte tinkamus „Raspberry Pi“kaiščius!

5 veiksmas: prijunkite „Raspberry Pi 5V“prie „Octasonic 5V“

Prijunkite „Raspberry Pi 5V“prie „Octasonic 5V“
Prijunkite „Raspberry Pi 5V“prie „Octasonic 5V“
Prijunkite „Raspberry Pi 5V“prie „Octasonic 5V“
Prijunkite „Raspberry Pi 5V“prie „Octasonic 5V“

Yra viena paskutinė viela, kurią reikia pridėti. Turime iš tikrųjų maitinti „Octasonic“plokštę 5 V įtampa, todėl tai darome prijungę vieną iš „Raspberry Pi 5V“kaiščių prie 5 V kaiščio, esančio „Octasonic AVR“antraštėje. Tai yra apatinis kairysis kaištis AVR antraštės bloke (tai 2 x 3 blokas viršutiniame dešiniajame plokštės kampe). Žiūrėkite pridėtą nuotrauką, kurioje parodyta, kur yra AVR blokas.

Žiūrėkite kitą pridėtą schemą, kad rastumėte 5V kaištį „Raspberry Pi“.

6 veiksmas: įdiekite programinę įrangą

Įdiekite „Raspian“

Pradėkite švariai įdiegdami „Raspbian Jessie“, tada atnaujinkite ją į naujausią versiją:

sudo apt-get atnaujinimas

sudo apt-get atnaujinimas

Įgalinti SPI

Kad šis projektas veiktų, turite įjungti SPI „Raspberry Pi“! Norėdami tai padaryti, naudokite „Raspberry Pi Configuration“įrankį.

Taip pat svarbu iš naujo paleisti „Pi“, įgalinus SPI, kad jis įsigaliotų

Įdiekite „FluidSynth“

„Fluidsynth“yra nuostabi nemokama programinė įranga MIDI sintezė. Galite ją įdiegti iš komandinės eilutės naudodami šią komandą:

sudo apt-get install fluidsynth

Įdiekite „Rust“programavimo kalbą

Ultragarsinis „Pi“fortepijonas yra įdiegtas „Mozilla“programavimo kalba „Rust“(tai panašu į „C ++“, bet be blogų detalių). Tai, ką šiais laikais naudoja visi šaunūs vaikai.

Norėdami įdiegti „Rust“, vadovaukitės instrukcijomis, pateiktomis adresu https://rustup.rs/. Norėdami sutaupyti laiko, instrukcijos turi paleisti šią komandą. Diegimo metu galite priimti numatytuosius atsakymus į visus klausimus.

PASTABA: paskelbus šią instrukciją, kyla problemų dėl „Rust“diegimo „Raspberry Pi“. Blogas laikas:-/ bet aš pakeičiau toliau pateiktą komandą, kad išspręstumėte problemą. Tikimės, kad jie greitai tai ištaisys. Aš dirbu kurdamas vaizdą, kurį žmonės galėtų atsisiųsti ir įrašyti į SD kortelę. Jei to norėtumėte, susisiekite su manimi.

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

Atsisiųskite „Ultrasonic Pi Piano“šaltinio kodą

„Ultrasonic Pi Piano“kodo šaltinio kodas yra priglobtas „github“. Yra dvi galimybės gauti kodą. Jei esate susipažinę su „git“ir „github“, galite klonuoti repo:

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

Arba galite atsisiųsti naujausio kodo ZIP failą.

Sudarykite šaltinio kodą

cd ultragarsinis pianinas

krovinio konstrukcija -išleidimas

Išbandykite kodą

Prieš pradėdami kurti muziką, įsitikinkite, kad programinė įranga veikia ir ar galime nuskaityti galiojančius jutiklių duomenis.

Norėdami paleisti programą, naudokite šią komandą. Tai nuskaitys jutiklių duomenis ir išvers juos į MIDI užrašus, kurie bus išspausdinti konsolėje. Judindami ranką virš jutiklių, turėtumėte matyti generuojamus duomenis. Jei ne, pereikite prie trikčių šalinimo skyriaus šios instrukcijos pabaigoje.

krovinių paleidimas -išleidimas

Jei jums įdomu, „--release“vėliava liepia „Rust“surinkti kodą kuo efektyviau, o ne pagal numatytąjį „--debug“nustatymą.

7 žingsnis: sukurkite muziką

Įsitikinkite, kad vis dar esate kataloge, kuriame atsisiuntėte šaltinio kodą, ir paleiskite šią komandą.

Šis „run.sh“scenarijus užtikrina, kad kodas buvo sukompiliuotas, ir tada paleidžia kodą, įvesdamas išvestį į „fluidsynth“.

./bėgti.sh

Įsitikinkite, kad prie „Raspberry Pi“3,5 mm garso lizdo prijungti sustiprinti garsiakalbiai, o rankos per jutiklius turi girdėti muziką.

Jei negirdite muzikos ir turite prijungtą HDMI monitorių, greičiausiai garso išvestis eina ten. Norėdami tai išspręsti, tiesiog paleiskite šią komandą ir iš naujo paleiskite „Pi Piano“:

sudo amixer cset numid = 3 1

Garsumo keitimas

Tūris (arba „padidėjimas“) nurodomas parametru „-g“, kad skystis sintezuotųsi. Galite pakeisti run.sh scenarijų ir pakeisti šią vertę. Atminkite, kad nedideli šio parametro pakeitimai lemia didelį tūrio pasikeitimą, todėl pabandykite jį padidinti nedideliais kiekiais (pvz., 0,1 arba 0,2).

8 veiksmas: gestų valdymas

Žiūrėkite prie šio veiksmo pridėtą vaizdo įrašą, kuriame pateikiamas išsamus projekto demonstravimas, įskaitant gestų valdiklių veikimą.

Koncepcija labai paprasta. Programinė įranga stebi, kurie jutikliai yra uždengti (10 cm atstumu), o kurie ne. Tai reiškia 8 dvejetainius skaičius (1 arba 0). Tai labai patogu, nes 8 dvejetainių skaičių seka sudaro „baitą“, kuris gali reikšti skaičius nuo 0 iki 255. Jei dar nežinote apie dvejetainius skaičius, labai rekomenduoju ieškoti vadovėlio. Dvejetainiai skaičiai yra pagrindinis įgūdis, kurį reikia išmokti, jei norite daugiau sužinoti apie programavimą.

Programinė įranga susieja dabartinę jutiklių būseną į vieną baitą, vaizduojantį dabartinį gestą. Jei šis skaičius išlieka tas pats keletą ciklų, tada programinė įranga veikia pagal šį gestą.

Kadangi ultragarso jutikliai nėra itin patikimi ir gali būti trikdžių tarp jutiklių, turėsite būti kantrūs naudodami gestus. Pabandykite keisti atstumą, kuriuo laikote rankas nuo jutiklių, taip pat kampą, kuriuo laikote rankas. Jūs taip pat šaltai bandote laikyti ką nors plokščio ir tvirto virš jutiklių, kad geriau atspindėtumėte garsą.

9 žingsnis: gaubto gamyba

Jei norite, kad tai būtų nuolatinis eksponatas ir galėtumėte parodyti jį žmonėms, tikriausiai norėsite padaryti tam tikrą aptvarą. Tai gali būti pagaminta iš medžio, kartono ar daugelio kitų medžiagų. Čia yra vaizdo įrašas, rodantis aptvarą, prie kurio dirbame šiame projekte. Jis pagamintas iš medžio, išgręžtos skylės ultragarso jutikliams laikyti.

10 veiksmas: trikčių šalinimas ir kiti veiksmai

Problemų sprendimas

Jei projektas neveikia, dažniausiai tai yra laidų klaida. Neskubėkite dar kartą patikrinti visų jungčių.

Kita dažna problema yra neįgalinimas įjungti SPI ir iš naujo paleisti pi.

Apsilankykite https://theotherandygrove.com/octasonic/, kad gautumėte visą dokumentaciją, įskaitant trikčių šalinimo patarimus, konkrečius „Rust“ir „Python“straipsnius, taip pat informaciją apie tai, kaip gauti palaikymą.

Tolesni žingsniai

Kai projektas pradės veikti, rekomenduoju eksperimentuoti su kodu ir išbandyti įvairius muzikos instrumentus. MIDI prietaisų kodai yra nuo 1 iki 127 ir yra dokumentuojami čia.

Ar norite vieno muzikos instrumento, kuriame kiekvienas jutiklis groja skirtinga oktava? Galbūt norėtumėte, kad kiekvienas jutiklis būtų atskiras instrumentas? Galimybės beveik neribotos!

Tikiuosi, kad jums patiko ši pamoka. Patinka, jei patiko, ir būtinai užsiprenumeruokite mane čia ir mano „YouTube“kanale, kad pamatytumėte būsimus projektus.

Rekomenduojamas: