Sadržaj:

Ultrazvučni Pi klavir s kontrolom pokretima!: 10 koraka (sa slikama)
Ultrazvučni Pi klavir s kontrolom pokretima!: 10 koraka (sa slikama)

Video: Ultrazvučni Pi klavir s kontrolom pokretima!: 10 koraka (sa slikama)

Video: Ultrazvučni Pi klavir s kontrolom pokretima!: 10 koraka (sa slikama)
Video: Pain Management in Dysautonomia 2024, Studeni
Anonim
Image
Image
Ultrazvučni Pi klavir s kontrolom pokreta!
Ultrazvučni Pi klavir s kontrolom pokreta!

Ovaj projekt koristi jeftine ultrazvučne senzore HC-SR04 kao ulaze i generira MIDI note koje se mogu reproducirati putem sintisajzera na Raspberry Pi za visokokvalitetan zvuk.

Projekt također koristi osnovni oblik kontrole gestama, gdje se glazbeni instrument može promijeniti držanjem ruku iznad dva najudaljenija senzora nekoliko sekundi. Još jedna gesta može se upotrijebiti za gašenje Raspberry Pi nakon što završite.

Gornji video prikazuje gotov proizvod u jednostavnom kućištu izrezanom laserom. Kasnije u ovom uputstvu postoji detaljniji video koji objašnjava kako projekt funkcionira.

Ovaj projekt sam stvorio zajedno s The Gizmo Dojo (mojim lokalnim proizvođačkim prostorom u Broomfieldu, CO) kako bih napravio neke interaktivne izložbe koje možemo odnijeti na lokalna STEM/STEAM događanja i Maker Faires.

Također pogledajte najnoviju dokumentaciju i vodiče na https://theotherandygrove.com/octasonic/ koji sada sadrže informacije o Python verziji ovog projekta (ovo uputstvo je napisano za verziju Rust).

Korak 1: Sastojci

Za ovu uputu trebat će vam sljedeći sastojci:

  • Raspberry Pi (2 ili 3) sa SD karticom
  • 8 ultrazvučnih senzora HC-SR04
  • Octasonic ploča za probijanje
  • Dvosmjerni pretvarač logičke razine
  • 32 x 12 "žensko-ženske kratkospojnice za spajanje ultrazvučnih senzora
  • 13 x 6 "žensko-ženska spojnica za spajanje Raspberry Pi, Octasonic i pretvarača logičke razine
  • Prikladno napajanje za Raspberry Pi
  • PC zvučnici ili slično

Preporučio bih korištenje Raspberry Pi 3 ako je moguće jer ima veću računalnu snagu, što rezultira osjetljivijim i ugodnijim zvukom. Može raditi dobro s Raspberry Pi 2 uz malo dotjerivanja, ali ne bih pokušao koristiti originalni Raspberry Pi za ovaj projekt.

HC -SR04 ultrazvučni senzori imaju 4 veze - 5V, GND, Trigger i Echo. Obično su Trigger i Echo spojeni na zasebne pinove na mikrokontroleru ili Raspberry Pi, ali to znači da ćete za povezivanje 8 senzora morati koristiti 16 pinova, što nije praktično. Ovdje dolazi Octasonicova ploča za probijanje. Ova se ploča povezuje sa svim senzorima i ima namjenski mikrokontroler koji nadgleda senzore i zatim komunicira s Raspberry Pi preko SPI -ja.

HC-SR04 zahtijevaju 5V, a Raspberry Pi je samo 3.3V, pa nam je zato potreban i pretvarač logičke razine koji će povezati Raspberry Pi s Octasonic probojnom pločom.

Korak 2: Spojite ultrazvučne senzore na Octasonic ploču

Spojite ultrazvučne senzore na Octasonic ploču
Spojite ultrazvučne senzore na Octasonic ploču
Spojite ultrazvučne senzore na Octasonic ploču
Spojite ultrazvučne senzore na Octasonic ploču

Za povezivanje svakog ultrazvučnog senzora s pločom upotrijebite 4 žice žensko-ženski kratkospojnik, pazeći da ih ispravno spojite. Ploča je dizajnirana tako da su igle u istom redoslijedu kao i pinovi na ultrazvučnom senzoru. S lijeva na desno na ploči, pinovi su GND, Trigger, Echo, 5V.

Korak 3: Priključite pretvarač logičke razine na Octasonic ploču

Priključite pretvarač logičke razine na Octasonic ploču
Priključite pretvarač logičke razine na Octasonic ploču

Raspberry Pi i Octasonic ploča komuniciraju putem SPI -ja. SPI koristi 4 žice:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Serijski sat (SCK)
  • Slave Select (SS)

Dodatno, moramo spojiti napajanje (5V i GND).

Pretvarač logičke razine ima dvije strane - niskonaponski (LV) i visoki naponski (HV). Malina će se spojiti na niskonaponsku stranu budući da je 3.3V. Octasonic će se spojiti na HV stranu budući da je 5V.

Ovaj korak služi za spajanje Octasonica na HV stranu pretvarača logičke razine

Pogledajte fotografiju priloženu ovom koraku koja prikazuje koje pinove treba spojiti na pretvarač logičke razine.

Priključci s pretvarača Octasonic na pretvarač logičke razine trebali bi biti sljedeći:

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

Korak 4: Povežite pretvarač logičke razine s Raspberry Pi

Povežite pretvarač logičke razine s Raspberry Pi
Povežite pretvarač logičke razine s Raspberry Pi

Raspberry Pi i Octasonic ploča komuniciraju putem SPI -ja. SPI koristi 4 žice:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Serijski sat (SCK)
  • Slave Select (SS)

Dodatno, moramo spojiti napajanje (3,3 V i GND). Pretvarač logičke razine ima dvije strane - niskonaponski (LV) i visoki naponski (HV). Malina će se spojiti na niskonaponsku stranu budući da je 3.3V. Octasonic će se spojiti na HV stranu budući da je 5V.

Ovaj korak služi za povezivanje Raspberry Pi na LV stranu pretvarača logičke razine

Veze s Raspbery Pi -a na pretvarač logičke razine trebale bi biti sljedeće:

  • 3,3 V na NN
  • GPIO11 (SPI_SCLK) do LV4
  • GPIO09 (SPI_MISO) do LV3
  • GPIO10 (SPI_MOSI) do LV2
  • GPIO08 (SPI_CE0_N) SS do LV1
  • GND u GND

Pomoću dijagrama priloženog ovom koraku locirajte ispravne pinove na Raspberry Pi!

Korak 5: Spojite Raspberry Pi 5V na Octasonic 5V

Spojite Raspberry Pi 5V na Octasonic 5V
Spojite Raspberry Pi 5V na Octasonic 5V
Spojite Raspberry Pi 5V na Octasonic 5V
Spojite Raspberry Pi 5V na Octasonic 5V

Treba dodati još jednu posljednju žicu. Moramo zapravo napajati Octasonic ploču s 5V, pa to radimo spajanjem jednog od Raspberry Pi 5V pinova na 5V pin na Octasonic AVR zaglavlju. Ovo je donji lijevi pin u bloku zaglavlja AVR -a (ovo je blok 2 x 3 u gornjem desnom kutu ploče). Pogledajte priloženu fotografiju koja prikazuje gdje se nalazi AVR blok.

Pogledajte drugi priloženi dijagram kako biste pronašli pin od 5 V na Raspberry Pi.

Korak 6: Instalirajte softver

Instalirajte Raspian

Počnite s čistom instalacijom Raspbian Jessie, a zatim je ažurirajte na najnoviju verziju:

sudo apt-get ažuriranje

sudo apt-get nadogradnja

Omogući SPI

Morate omogućiti SPI na Raspberry Pi da bi ovaj projekt funkcionirao! Za to upotrijebite uslužni program za konfiguraciju Raspberry Pi.

Također je važno ponovno pokrenuti Pi nakon omogućavanja SPI -ja kako bi stupio na snagu

Instalirajte FluidSynth

Fluidsynth je nevjerojatan besplatni softverski MIDI sintisajzer. Možete ga instalirati iz naredbenog retka pomoću ove naredbe:

sudo apt-get install fluidsynth

Instalirajte jezik za programiranje Rust

Ultrazvučni Pi klavir implementiran je u programskom jeziku Rust iz Mozille (to je poput C ++, ali bez loših bitova). To je ono što sva cool djeca koriste ovih dana.

Slijedite upute na https://rustup.rs/ da biste instalirali Rust. Kako biste uštedjeli vrijeme, upute su da pokrenete ovu jednu naredbu. Tijekom instalacije možete prihvatiti zadane odgovore na sva pitanja.

NAPOMENA: Od objavljivanja ovog uputstva postoje neki problemi s instaliranjem Rusta na Raspberry Pi. Loše vrijeme:-/ ali izmijenio sam naredbu u nastavku kako bih zaobišao problem. Nadam se da će to uskoro popraviti. Radim na stvaranju slike koju ljudi mogu preuzeti i snimiti na SD karticu. Ako to želite, slobodno me kontaktirajte.

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

Preuzmite izvorni kod za ultrazvučni Pi Piano

Izvorni kôd za izvorni kôd ultrazvučnog Pi Piana nalazi se na githubu. Postoje dvije mogućnosti za dobivanje koda. Ako ste upoznati s gitom i githubom, možete klonirati repo:

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

Alternativno, možete preuzeti zip datoteku s najnovijim kodom.

Sastavite izvorni kod

cd UltrasonicPiPiano

cargo build --puštanje

Testirajte kod

Prije nego što krenemo s stvaranjem glazbe u sljedećem koraku, provjerimo radi li softver i možemo li čitati valjane podatke sa senzora.

Za pokretanje aplikacije upotrijebite sljedeću naredbu. To će očitati podatke sa senzora i prevesti ih u MIDI bilješke koje se zatim ispisuju na konzoli. Dok pomičete ruku preko senzora, trebali biste vidjeti generiranje podataka. Ako ne, preskočite odjeljak za rješavanje problema na kraju ovog uputstva.

cargo run --izdavanje

Ako ste znatiželjni, zastavica "--release" govori Rustu da sastavi kôd što je moguće učinkovitije, za razliku od zadane postavke "--debug".

Korak 7: Napravite glazbu

Provjerite jeste li još uvijek u direktoriju u koji ste preuzeli izvorni kod i pokrenite sljedeću naredbu.

Ova skripta "run.sh" osigurava da je kôd preveden, a zatim pokreće kôd, prenoseći izlaz u fluidsynth.

./ run.sh

Provjerite jesu li pojačani zvučnici spojeni na 3,5 -milimetarski audio priključak na Raspberry Pi -u i trebali biste čuti glazbu dok pomičete ruke preko senzora.

Ako ne čujete glazbu, a priključen vam je HDMI monitor, vjerojatno će umjesto toga ići audio izlaz. Da biste to riješili, jednostavno pokrenite ovu naredbu, a zatim ponovno pokrenite Pi Piano:

sudo amixer cset numid = 3 1

Promjena glasnoće

Glasnoća (ili "dobitak") je specificirana parametrom "-g" do fluidsynth. Možete izmijeniti skriptu run.sh i promijeniti ovu vrijednost. Imajte na umu da male promjene ovog parametra rezultiraju velikom promjenom volumena, pa ga pokušajte povećati za male količine (poput 0,1 ili 0,2).

Korak 8: Kontrola pokreta

Za potpunu demonstraciju projekta, uključujući i način rada kontrola gestama, pogledajte video prilog ovom koraku.

Koncept je vrlo jednostavan. Softver prati koji su senzori pokriveni (unutar 10 cm), a koji nisu. To znači 8 binarnih brojeva (1 ili 0). To je vrlo zgodno jer niz od 8 binarnih brojeva čini "bajt" koji može predstavljati brojeve između 0 i 255. Ako već ne znate o binarnim brojevima, toplo preporučujem da potražite vodič. Binarni brojevi temeljna su vještina za učenje ako želite naučiti više o programiranju.

Softver preslikava trenutno stanje senzora u jedan bajt koji predstavlja trenutnu gestu. Ako taj broj ostane isti tijekom brojnih ciklusa, tada softver djeluje na tu gestu.

Budući da ultrazvučni senzori nisu super pouzdani i može doći do smetnji među senzorima, morat ćete biti strpljivi pri upotrebi pokreta. Pokušajte promijeniti udaljenost koju držite rukama od senzora, kao i kut držanja ruku. Hladno vam je i da pokušate držati nešto ravno i čvrsto iznad senzora kako bi bolje odražavali zvuk.

Korak 9: Izrada kućišta

Želite li od ovoga učiniti stalni postav i moći ga pokazati ljudima, vjerojatno ćete htjeti napraviti neku vrstu ograđenog prostora. To bi moglo biti izrađeno od drva, kartona ili mnogih drugih materijala. Ovdje je video koji prikazuje kućište na kojem radimo za ovaj projekt. Napravljen je od drveta, s izbušenim rupama za držanje ultrazvučnih senzora na mjestu.

Korak 10: Rješavanje problema i sljedeći koraci

Rješavanje problema

Ako projekt ne funkcionira, obično se radi o grešci ožičenja. Odvojite vrijeme da dvaput provjerite sve veze.

Drugi uobičajen problem je nemogućnost omogućavanja SPI -a i ponovno pokretanje pi.

Posjetite https://theotherandygrove.com/octasonic/ za potpunu dokumentaciju, uključujući savjete za rješavanje problema, sa člancima specifičnim za Rust i Python, kao i informacije o tome kako dobiti podršku.

Sljedeći koraci

Nakon što projekt počne raditi, preporučujem da eksperimentirate s kodom i isprobate različite glazbene instrumente. MIDI kodovi instrumenata su između 1 i 127 i ovdje su dokumentirani.

Želite li jedan glazbeni instrument sa svakim senzorom koji svira drugu oktavu? Možda biste htjeli da svaki senzor umjesto toga bude zaseban instrument? Mogućnosti su gotovo neograničene!

Nadam se da ste uživali u ovom uputstvu. Molimo vas da vam se sviđa ako jeste, i svakako se pretplatite na mene ovdje i na moj YouTube kanal da vidite buduće projekte.

Preporučeni: