Obsah:

Ultrazvukový pi klavír s ovládaním gestami: 10 krokov (s obrázkami)
Ultrazvukový pi klavír s ovládaním gestami: 10 krokov (s obrázkami)

Video: Ultrazvukový pi klavír s ovládaním gestami: 10 krokov (s obrázkami)

Video: Ultrazvukový pi klavír s ovládaním gestami: 10 krokov (s obrázkami)
Video: Arduino návody - Měření vzdálenosti s ultrazvukovým senzorem 2024, November
Anonim
Image
Image
Ultrazvukový pi klavír s ovládaním gestami!
Ultrazvukový pi klavír s ovládaním gestami!

Tento projekt používa ako vstupy lacné ultrazvukové senzory HC-SR04 a generuje MIDI noty, ktoré je možné prehrávať prostredníctvom syntetizátora na Raspberry Pi, a dosiahnuť tak vysoko kvalitný zvuk.

Projekt tiež používa základnú formu ovládania gestami, kde je možné hudobný nástroj zmeniť tak, že na niekoľko sekúnd podržíte ruky nad dvoma najvzdialenejšími senzormi. Ďalším gestom môžete vypnúť Raspberry Pi, keď skončíte.

Video vyššie ukazuje hotový výrobok v jednoduchom kryte rezanom laserom. Neskôr v tomto návode je podrobnejšie video, ktoré vysvetľuje, ako projekt funguje.

Tento projekt som vytvoril v spolupráci s The Gizmo Dojo (môj miestny makerspace v Broomfielde, CO), aby som vytvoril niekoľko interaktívnych exponátov, ktoré môžeme vziať na miestne akcie STEM/STEAM a Maker Faires.

Pozrite si tiež najnovšiu dokumentáciu a návody na https://theotherandygrove.com/octasonic/, ktoré teraz obsahujú informácie o verzii tohto projektu v jazyku Python (tento návod bol napísaný pre verziu Rust).

Krok 1: Prísady

Na tento pokyn budete potrebovať nasledujúce zložky:

  • Raspberry Pi (2 alebo 3) s kartou SD
  • 8 ultrazvukových senzorov HC-SR04
  • Octasonic Breakout Board
  • Obojsmerný prevodník logickej úrovne
  • 32 x 12 "prepojovacie vodiče pre ženy a ženy na pripojenie ultrazvukových senzorov
  • 13 x 6 "prepojovacie vodiče pre ženy a ženy na pripojenie prevodníka úrovní Raspberry Pi, Octasonic a Logic
  • Vhodný napájací zdroj pre Raspberry Pi
  • Reproduktory k PC alebo podobné

Odporúčam používať Raspberry Pi 3, ak je to možné, pretože má väčší výpočtový výkon, čo má za následok pohotovejší a príjemnejší zvuk. Môže to fungovať dobre s Raspberry Pi 2 s malým vyladením, ale nepokúšal by som sa použiť pôvodný Raspberry Pi na tento projekt.

Ultrazvukové snímače HC -SR04 majú 4 pripojenia - 5 V, GND, spúšť a ozvenu. Trigger a Echo sú zvyčajne pripojené k oddeleným kolíkom na mikrokontroléri alebo Raspberry Pi, ale to znamená, že na pripojenie 8 senzorov budete potrebovať 16 pinov, čo nie je praktické. Tu prichádza na rad palubná doska Octasonic. Táto doska sa pripája ku všetkým senzorom a má k dispozícii špeciálny mikrokontrolér, ktorý monitoruje senzory a potom komunikuje s Raspberry Pi cez SPI.

HC-SR04 vyžaduje 5 V a Raspberry Pi je iba 3,3 V, preto potrebujeme aj logický prevodník úrovní, ktorý prepojí Raspberry Pi s oddeľovacou doskou Octasonic.

Krok 2: Pripojte ultrazvukové snímače k doske Octasonic

Pripojte ultrazvukové snímače k doske Octasonic
Pripojte ultrazvukové snímače k doske Octasonic
Pripojte ultrazvukové snímače k doske Octasonic
Pripojte ultrazvukové snímače k doske Octasonic

Na prepojenie každého ultrazvukového senzora s doskou použite 4 prepojovacie vodiče žena-žena, dávajte pozor, aby ste ich zapojili správnym spôsobom. Doska je navrhnutá tak, aby boli kolíky v rovnakom poradí ako kolíky na ultrazvukovom senzore. Na doske zľava doprava sú kolíky GND, Trigger, Echo, 5V.

Krok 3: Pripojte prevodník logickej úrovne k doske Octasonic

Pripojte prevodník logickej úrovne k doske Octasonic
Pripojte prevodník logickej úrovne k doske Octasonic

Raspberry Pi a Octasonic Board komunikujú prostredníctvom SPI. SPI používa 4 vodiče:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Sériové hodiny (SCK)
  • Slave Select (SS)

Okrem toho musíme pripojiť napájanie (5 V a GND).

Logický prevodník úrovní má dve strany - nízke napätie (NN) a vysoké napätie (VN). Malina sa pripojí na stranu NN, pretože je 3,3 V. Octasonic sa pripojí na stranu VN, pretože je 5V.

Tento krok je pre pripojenie Octasonicu na VN stranu prevodníka logickej úrovne

Pozrite si fotografiu priloženú k tomuto kroku, ktorá ukazuje, ktoré piny by mali byť pripojené k prevodníku logickej úrovne.

Pripojenia z prevodníka Octasonic na logickú úroveň by mali byť nasledujúce:

  • 5V až HV
  • SCK až HV4
  • MISO až HV3
  • MOSI až HV2
  • SS na HV1
  • GND až GND

Krok 4: Pripojte prevodník logickej úrovne k Raspberry Pi

Pripojte prevodník logickej úrovne k Raspberry Pi
Pripojte prevodník logickej úrovne k Raspberry Pi

Raspberry Pi a Octasonic Board komunikujú prostredníctvom SPI. SPI používa 4 vodiče:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Sériové hodiny (SCK)
  • Slave Select (SS)

Okrem toho musíme pripojiť napájanie (3,3 V a GND). Logický prevodník úrovní má dve strany - nízke napätie (NN) a vysoké napätie (VN). Malina sa pripojí na stranu NN, pretože je 3,3 V. Octasonic sa pripojí na stranu VN, pretože je 5V.

Tento krok je pre pripojenie Raspberry Pi na NN stranu prevodníka logickej úrovne

Pripojenia z prevodníka Raspbery Pi na logickú úroveň by mali byť nasledujúce:

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

Pomocou diagramu priloženého k tomuto kroku vyhľadajte správne piny na Raspberry Pi!

Krok 5: Pripojte Raspberry Pi 5V k Octasonic 5V

Pripojte Raspberry Pi 5V k Octasonic 5V
Pripojte Raspberry Pi 5V k Octasonic 5V
Pripojte Raspberry Pi 5V k Octasonic 5V
Pripojte Raspberry Pi 5V k Octasonic 5V

Je potrebné pridať jeden posledný drôt. Potrebujeme skutočne napájať dosku Octasonic s 5V, takže to urobíme pripojením jedného z pinov Raspberry Pi 5V k pinu 5V na hlavičke Octasonic AVR. Toto je dolný ľavý kolík v bloku záhlavia AVR (toto je blok 2 x 3 v pravom hornom rohu dosky). Pozrite sa na priloženú fotografiu, ktorá ukazuje, kde je blok AVR.

Pozrite sa na ďalší priložený diagram, kde nájdete 5V pin na Raspberry Pi.

Krok 6: Nainštalujte softvér

Nainštalujte Raspian

Začnite čistou inštaláciou Raspbian Jessie a potom ju aktualizujte na najnovšiu verziu:

sudo apt-get aktualizácia

sudo apt-get upgrade

Povoliť SPI

Aby tento projekt fungoval, musíte na Raspberry Pi povoliť SPI! Na to použite konfiguračný nástroj Raspberry Pi.

Je tiež dôležité reštartovať Pi po povolení SPI, aby sa prejavilo

Nainštalujte program FluidSynth

Fluidsynth je úžasný bezplatný softvér MIDI syntetizátor. Môžete ho nainštalovať z príkazového riadka pomocou tohto príkazu:

sudo apt-get install fluidsynth

Nainštalujte programovací jazyk Rust

Ultrasonic Pi Piano je implementovaný v programovacom jazyku Rust od Mozilly (je to ako C ++, ale bez zlých bitov). Práve to dnes používajú všetky skvelé deti.

Rust nainštalujte podľa pokynov na https://rustup.rs/. Aby ste ušetrili čas, pokyny sú na spustenie tohto jedného príkazu. Počas inštalácie môžete prijať predvolené odpovede na všetky otázky.

POZNÁMKA: Od uverejnenia tohto návodu na používanie existujú určité problémy s inštaláciou hry Rust na Raspberry Pi. Zlé načasovanie:-/ ale na vyriešenie problému som upravil nižšie uvedený príkaz. Dúfam, že to čoskoro napravia. Pracujem na vytvorení obrázka, ktorý si ľudia môžu stiahnuť a napáliť na kartu SD. Ak by ste to chceli, prosím kontaktujte ma.

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

Stiahnite si zdrojový kód Ultrasonic Pi Piano

Zdrojový kód pre zdrojový kód Ultrasonic Pi Piano je hostený na github. Existujú dve možnosti získania kódu. Ak poznáte git a github, môžete klonovať repo:

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

Prípadne si môžete stiahnuť súbor zip s najnovším kódom.

Zostavte zdrojový kód

cd UltrasonicPiPiano

stavba nákladu -uvoľniť

Otestujte kód

Predtým, ako v nasledujúcom kroku prejdeme k tvorbe hudby, uistite sa, že softvér beží a že môžeme zo senzorov čítať platné údaje.

Na spustenie aplikácie použite nasledujúci príkaz. Tým sa načítajú údaje zo senzorov a prevedú sa do MIDI poznámok, ktoré sa potom vytlačia na konzolu. Keď presuniete ruku nad senzory, mali by ste vidieť generovanie údajov. Ak nie, preskočte na časť návodu na riešenie problémov na konci tohto návodu.

nákladný beh -uvoľnenie

Ak vás to zaujíma, príznak „--release“hovorí Rustovi, aby kód zostavil čo najefektívnejšie, na rozdiel od predvoleného nastavenia „--debug“.

Krok 7: Vytvorte nejakú hudbu

Uistite sa, že ste stále v adresári, kam ste stiahli zdrojový kód, a spustite nasledujúci príkaz.

Tento skript „run.sh“zaisťuje, že bol kód skompilovaný, a potom spustí kód a prepojí výstup do súboru fluidsynth.

./run.sh

Uistite sa, že máte zosilnené reproduktory pripojené k 3,5 mm zvukovému konektoru na Raspberry Pi a pri pohybe rukami po senzoroch by ste mali počuť hudbu.

Ak nepočujete hudbu a máte pripojený monitor HDMI, pravdepodobne bude namiesto toho smerovať zvukový výstup. Ak to chcete opraviť, jednoducho spustite tento príkaz a potom znova spustite Pi Piano:

sudo amixer cset numid = 3 1

Zmena hlasitosti

Objem (alebo "zisk") je zadaný pomocou parametra "-g" pre fluidnú syntézu. Môžete upraviť skript run.sh a zmeniť túto hodnotu. Upozorňujeme, že malé zmeny v tomto parametri majú za následok veľkú zmenu objemu, skúste ho teda zvýšiť o malé množstvá (napríklad 0,1 alebo 0,2).

Krok 8: Ovládanie gestami

Vo videu priloženom k tomuto kroku nájdete úplnú ukážku projektu vrátane toho, ako fungujú ovládacie prvky gest.

Koncept je veľmi jednoduchý. Softvér sleduje, ktoré snímače sú zakryté (do 10 cm) a ktoré nie. To sa premieta do 8 binárnych čísel (1 alebo 0). Je to veľmi výhodné, pretože postupnosť 8 binárnych čísel vytvára „bajt“, ktorý môže predstavovať čísla od 0 do 255. Ak ešte o binárnych číslach neviete, dôrazne odporúčam vyhľadať návod. Binárne čísla sú základnou zručnosťou, ktorú sa musíte naučiť, ak sa chcete dozvedieť viac o programovaní.

Softvér mapuje aktuálny stav senzorov do jedného bajtu predstavujúceho aktuálne gesto. Ak toto číslo zostane po niekoľko cyklov rovnaké, softvér na základe tohto gesta koná.

Pretože ultrazvukové senzory nie sú veľmi spoľahlivé a medzi senzormi môže dochádzať k rušeniu, budete musieť pri gestách používať trocha trpezlivosti. Skúste zmeniť vzdialenosť, v ktorej sa ruky držíte od senzorov, ako aj uhol, v ktorom sa držíte za ruky. Tiež sa pokúšate držať niečo ploché a pevné nad senzormi, aby lepšie odrážali zvuk.

Krok 9: Vytvorenie prílohy

Ak chcete, aby to bola trvalá expozícia a mohli ju predvádzať ľuďom, pravdepodobne budete chcieť urobiť nejaký druh ohrady. Mohlo by to byť vyrobené z dreva, lepenky alebo z mnohých ďalších materiálov. Tu je video, ktoré ukazuje prílohu, na ktorej pracujeme pre tento projekt. Je vyrobený z dreva s vyvŕtanými otvormi, ktoré držia ultrazvukové senzory na mieste.

Krok 10: Riešenie problémov a ďalšie kroky

Riešenie problémov

Ak projekt nefunguje, zvyčajne ide o chybu zapojenia. Nájdite si čas a dôkladne skontrolujte všetky pripojenia.

Ďalším bežným problémom je neschopnosť povoliť SPI a reštartovanie súboru pi.

Na stránke https://theotherandygrove.com/octasonic/ nájdete kompletnú dokumentáciu vrátane tipov na riešenie problémov s článkami špecifickými pre Rust a Python a tiež informácie o tom, ako získať podporu.

Ďalšie kroky

Keď už máte projekt za sebou, odporúčam experimentovať s kódom a vyskúšať rôzne hudobné nástroje. Kódy MIDI nástrojov sú medzi 1 a 127 a sú tu zdokumentované.

Chcete jeden hudobný nástroj s každým senzorom hrať inú oktávu? Možno by ste chceli, aby bol každý senzor namiesto toho samostatným nástrojom? Možnosti sú takmer neobmedzené!

Dúfam, že sa vám tento návod páčil. Páči sa vám to, ak sa vám to páči, a nezabudnite sa prihlásiť na odber môjho kanála tu a na mojom kanáli YouTube, aby ste videli budúce projekty.

Odporúča: