Sadržaj:

Ultrazvučni Pi klavir sa kontrolom pokreta! 10 koraka (sa slikama)
Ultrazvučni Pi klavir sa kontrolom pokreta! 10 koraka (sa slikama)

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

Video: Ultrazvučni Pi klavir sa kontrolom pokreta! 10 koraka (sa slikama)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Novembar
Anonim
Image
Image
Ultrazvučni Pi klavir sa kontrolom pokreta!
Ultrazvučni Pi klavir sa 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-u za zvuk visoke kvalitete.

Projekt također koristi osnovni oblik upravljanja pokretima, gdje se muzički instrument može promijeniti držanjem ruku nad dva krajnja senzora na nekoliko sekundi. Još jedna gesta može se koristiti za gašenje Raspberry Pi -a kada završite.

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

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

Molimo pogledajte i 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 instrukciju trebat će vam sljedeći sastojci:

  • Raspberry Pi (2 ili 3) sa SD karticom
  • 8 HC-SR04 ultrazvučni senzori
  • Octasonic Breakout Board
  • Dvosmjerni pretvarač logičke razine
  • 32 x 12 "žensko-ženske kratkospojnice za povezivanje ultrazvučnih senzora
  • 13 x 6 "žensko-ženske kratkospojne žice za povezivanje Raspberry Pi, Octasonic i pretvarača logičkog nivoa
  • Prikladno napajanje za Raspberry Pi
  • PC zvučnici ili slično

Preporučio bih upotrebu 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 Octasonic ploča za probijanje. Ova ploča se povezuje sa svim senzorima i ima namjenski mikrokontroler koji nadgleda senzore i zatim komunicira s Raspberry Pi preko SPI.

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

Korak 2: Priključite ultrazvučne senzore na Octasonic ploču

Priključite ultrazvučne senzore na Octasonic ploču
Priključite ultrazvučne senzore na Octasonic ploču
Priključite ultrazvučne senzore na Octasonic ploču
Priključite ultrazvučne senzore na Octasonic ploču

Upotrijebite 4 žice žensko-ženski kratkospojnik za povezivanje svakog ultrazvučnog senzora na ploču, pazeći da ih pravilno povežete. Ploča je dizajnirana tako da pinovi budu 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čkog nivoa 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 Board komuniciraju preko 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čkog nivoa ima dvije strane - niskonaponski (LV) i visoki naponski (HV). Raspberry ć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 Octasonica na HV stranu pretvarača logičkog nivoa

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

Priključci s pretvarača Octasonic na logički nivo 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čkog nivoa na Raspberry Pi

Povežite pretvarač logičkog nivoa na Raspberry Pi
Povežite pretvarač logičkog nivoa na Raspberry Pi

Raspberry Pi i Octasonic Board komuniciraju preko 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čkog nivoa ima dvije strane - niskonaponski (LV) i visoki naponski (HV). Raspberry ć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čkog nivoa

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

  • 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 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

Postoji još jedna posljednja žica za dodavanje. Moramo zapravo napajati Octasonic ploču sa 5V, pa to radimo spajanjem jednog od Raspberry Pi 5V pinova na 5V pin na Octasonic AVR zaglavlju. Ovo je donji lijevi pin u AVR bloku zaglavlja (ovo je 2 x 3 blok 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 update

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 -a da 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 kao 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. Da biste uštedjeli vrijeme, upute su da pokrenete ovu jednu naredbu. Možete prihvatiti zadane odgovore na sva pitanja tokom instalacije.

NAPOMENA: Od objavljivanja ovog uputstva postoje neki problemi s instaliranjem Rusta na Raspberry Pi. Loše vrijeme:-/ ali izmijenio sam naredbu ispod 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 želite, kontaktirajte me.

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

Preuzmite izvorni kod za ultrazvučni Pi Piano

Izvorni kod za ultrazvučni izvorni klavir Pi Piano nalazi se na githubu. Postoje dvije mogućnosti za dobijanje koda. Ako ste upoznati s git -om i github -om, možete klonirati repo:

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

Alternativno, možete preuzeti zip datoteku najnovijeg koda.

Sastavite izvorni kod

cd UltrasonicPiPiano

izrada tereta --izdavanje

Testirajte kod

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

Koristite sljedeću naredbu za pokretanje aplikacije. Ovo ć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 nije, preskočite odjeljak za rješavanje problema na kraju ovog uputstva.

cargo run --izdavanje

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

Korak 7: Napravite muziku

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

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

./run.sh

Uverite se da imate pojačane zvučnike povezane na 3,5 -milimetarski audio priključak na Raspberry Pi -u i da biste trebali čuti muziku dok pomerate ruke preko senzora.

Ako ne čujete muziku i imate priključen HDMI monitor, tada će vjerojatno 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

Promena jačine zvuka

Jačina zvuka (ili "pojačanje") je specificirana parametrom "-g" do fluidsynth. Možete izmijeniti skriptu run.sh i promijeniti ovu vrijednost. Imajte na umu da male promjene u ovom parametru rezultiraju velikom promjenom volumena, pa ga pokušajte povećati za male količine (poput 0,1 ili 0,2).

Korak 8: Kontrola pokreta

Pogledajte videozapis priložen ovom koraku za potpunu demonstraciju projekta, uključujući kako funkcioniraju kontrole pokreta.

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). Ovo 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 su osnovna vještina koju treba naučiti ako želite naučiti više o programiranju.

Softver preslikava trenutno stanje senzora u jedan bajt koji predstavlja trenutni pokret. Ako taj broj ostane isti tijekom brojnih ciklusa, 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

Ako želite da ovo bude stalna postavka i moći ćete to pokazati ljudima, vjerojatno ćete htjeti napraviti neku vrstu ograde. To se može napraviti od drveta, kartona ili mnogih drugih materijala. Evo videozapisa koji prikazuje kućište na kojem radimo za ovaj projekt. Napravljen je od drveta, sa 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.

Još jedan 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 muzičke instrumente. MIDI kodovi instrumenata su između 1 i 127 i ovdje su dokumentirani.

Želite li jedan muzički instrument sa svakim senzorom koji svira drugu oktavu? Možda biste umjesto toga željeli da svaki senzor 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 obavezno se pretplatite na mene ovdje i na moj YouTube kanal da vidite buduće projekte.

Preporučuje se: