Obsah:

Ultrazvukový pi klavír s ovládáním gesty: 10 kroků (s obrázky)
Ultrazvukový pi klavír s ovládáním gesty: 10 kroků (s obrázky)

Video: Ultrazvukový pi klavír s ovládáním gesty: 10 kroků (s obrázky)

Video: Ultrazvukový pi klavír s ovládáním gesty: 10 kroků (s obrázky)
Video: Shopaholicadel se nám uhodila😭 2024, Červenec
Anonim
Image
Image
Ultrazvukový pi klavír s ovládáním gesty!
Ultrazvukový pi klavír s ovládáním gesty!

Tento projekt využívá jako vstupy levné ultrazvukové senzory HC-SR04 a generuje MIDI noty, které lze přehrávat prostřednictvím syntetizátoru na Raspberry Pi pro vysoce kvalitní zvuk.

Projekt také využívá základní formu ovládání gesty, kdy lze hudební nástroj změnit podržením rukou nad dvěma krajními senzory na několik sekund. Další gesto lze použít k vypnutí Raspberry Pi, jakmile skončíte.

Video výše ukazuje hotový výrobek v jednoduchém laserem řezaném pouzdře. Později v tomto pokynu je podrobnější video, které vysvětluje, jak projekt funguje.

Tento projekt jsem vytvořil ve spojení s The Gizmo Dojo (můj lokální makerspace v Broomfieldu, CO), abych vytvořil nějaké interaktivní exponáty, které můžeme vzít na místní akce STEM/STEAM a Maker Faires.

Podívejte se také na nejnovější dokumentaci a návody na https://theotherandygrove.com/octasonic/, které nyní obsahují informace o verzi tohoto projektu v Pythonu (tato instrukce byla napsána pro verzi Rust).

Krok 1: Ingredience

K tomuto pokynu budete potřebovat následující přísady:

  • Raspberry Pi (2 nebo 3) s kartou SD
  • 8 ultrazvukových senzorů HC-SR04
  • Octasonic Breakout Board
  • Obousměrný převodník logické úrovně
  • Propojovací vodiče 32 x 12 "Žena-Žena pro připojení ultrazvukových senzorů
  • Propojovací vodiče 13 x 6 palců pro ženy a ženy pro připojení převodníku úrovní Raspberry Pi, Octasonic a Logic
  • Vhodný napájecí zdroj pro Raspberry Pi
  • PC reproduktory nebo podobné

Doporučil bych použít Raspberry Pi 3, pokud je to možné, protože má větší výpočetní výkon, což má za následek citlivější a příjemnější zvuk. Může to fungovat dobře s Raspberry Pi 2 s malým vyladěním, ale nepokoušel bych se použít původní Raspberry Pi pro tento projekt.

Ultrazvukové senzory HC -SR04 mají 4 připojení - 5V, GND, Trigger a Echo. Trigger a Echo jsou obvykle připojeny k samostatným pinům na mikrokontroléru nebo Raspberry Pi, ale to znamená, že k připojení 8 senzorů budete potřebovat 16 pinů, což není praktické. Zde přichází na řadu rozbíjecí deska Octasonic. Tato deska se připojuje ke všem senzorům a má speciální mikrokontrolér, který monitoruje senzory a poté komunikuje s Raspberry Pi přes SPI.

HC-SR04 vyžadují 5V a Raspberry Pi je pouze 3,3V, proto také potřebujeme převodník logické úrovně, který připojí Raspberry Pi k odpojovací desce Octasonic.

Krok 2: Připojte ultrazvukové senzory k desce Octasonic

Připojte ultrazvukové senzory k desce Octasonic
Připojte ultrazvukové senzory k desce Octasonic
Připojte ultrazvukové senzory k desce Octasonic
Připojte ultrazvukové senzory k desce Octasonic

Pomocí 4 propojovacích kabelů žena-žena připojte každý ultrazvukový senzor k desce, dávejte pozor, abyste je připojili správným způsobem. Deska je navržena tak, aby kolíky byly ve stejném pořadí jako kolíky na ultrazvukovém senzoru. Zleva doprava na desce jsou kolíky GND, Trigger, Echo, 5V.

Krok 3: Připojte převodník logické úrovně k desce Octasonic

Připojte převodník logické úrovně k desce Octasonic
Připojte převodník logické úrovně k desce Octasonic

Raspberry Pi a Octasonic Board komunikují přes SPI. SPI používá 4 vodiče:

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

Kromě toho musíme připojit napájení (5 V a GND).

Převodník logické úrovně má dvě strany - nízké napětí (NN) a vysoké napětí (VN). Raspberry se připojí na stranu NN, protože je 3,3V. Octasonic se připojí na stranu VN, protože je 5V.

Tento krok je pro připojení Octasonicu k VN straně převodníku logické úrovně

Podívejte se na fotografii připojenou k tomuto kroku, která ukazuje, které piny by měly být připojeny k převodníku logické úrovně.

Připojení z převodníku Octasonic na logickou úroveň by mělo být následující:

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

Krok 4: Připojte převodník logické úrovně k Raspberry Pi

Připojte převodník logické úrovně k Raspberry Pi
Připojte převodník logické úrovně k Raspberry Pi

Raspberry Pi a Octasonic Board komunikují přes SPI. SPI používá 4 vodiče:

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

Kromě toho musíme připojit napájení (3,3 V a GND). Převodník logické úrovně má dvě strany - nízké napětí (NN) a vysoké napětí (VN). Raspberry se připojí na stranu NN, protože je 3,3V. Octasonic se připojí na stranu VN, protože je 5V.

Tento krok je pro připojení Raspberry Pi na LV stranu převodníku logické úrovně

Připojení z převaděče Raspbery Pi na převodník logické úrovně by mělo být následující:

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

Pomocí diagramu připojeného k tomuto kroku vyhledejte správné piny na Raspberry Pi!

Krok 5: Připojte Raspberry Pi 5V k Octasonic 5V

Připojte Raspberry Pi 5V k Octasonic 5V
Připojte Raspberry Pi 5V k Octasonic 5V
Připojte Raspberry Pi 5V k Octasonic 5V
Připojte Raspberry Pi 5V k Octasonic 5V

Je třeba přidat jeden poslední vodič. Potřebujeme skutečně napájet desku Octasonic s 5V, takže to uděláme připojením jednoho z pinů Raspberry Pi 5V k pinu 5V na záhlaví Octasonic AVR. Toto je levý dolní kolík v bloku záhlaví AVR (toto je blok 2 x 3 v pravé horní části desky). Podívejte se na přiloženou fotografii, která ukazuje, kde je blok AVR.

Podívejte se na další přiložený diagram, kde najdete pin 5V na Raspberry Pi.

Krok 6: Nainstalujte software

Nainstalujte si Raspian

Začněte čistou instalací Raspbian Jessie a poté ji aktualizujte na nejnovější verzi:

sudo apt-get update

sudo apt-get upgrade

Povolit SPI

Aby tento projekt fungoval, musíte povolit SPI na Raspberry Pi! K tomu použijte konfigurační nástroj Raspberry Pi.

Je také důležité restartovat Pi po povolení SPI, aby se projevilo

Nainstalujte si FluidSynth

Fluidsynth je úžasný MIDI syntetizátor se svobodným softwarem. Můžete jej nainstalovat z příkazového řádku pomocí tohoto příkazu:

sudo apt-get install fluidsynth

Nainstalujte si programovací jazyk Rust

Ultrasonic Pi Piano je implementováno v Rust Programming Language od Mozilly (je to jako C ++, ale bez špatných bitů). To dnes používají všechny skvělé děti.

Při instalaci Rust postupujte podle pokynů na https://rustup.rs/. Abychom vám ušetřili čas, je třeba spustit tento jeden příkaz. Během instalace můžete přijmout výchozí odpovědi na jakékoli otázky.

POZNÁMKA: Od zveřejnění tohoto pokynu existují určité problémy s instalací Rustu na Raspberry Pi. Špatné načasování:-/ ale upravil jsem níže uvedený příkaz, abych problém vyřešil. Snad to brzy napraví. Pracuji na vytvoření obrázku, který si lidé mohou stáhnout a vypálit na SD kartu. Pokud byste to chtěli, prosím kontaktujte mě.

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

Stáhněte si zdrojový kód Ultrasonic Pi Piano

Zdrojový kód pro zdrojový kód Ultrasonic Pi Piano je umístěn na github. Existují dvě možnosti získání kódu. Pokud znáte git a github, můžete klonovat repo:

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

Případně si můžete stáhnout zip soubor s nejnovějším kódem.

Zkompilujte zdrojový kód

cd UltrasonicPiPiano

stavba nákladu -uvolněte

Otestujte kód

Než se v dalším kroku přesuneme k tvorbě hudby, ujistěte se, že software běží a že můžeme ze senzorů číst platná data.

Ke spuštění aplikace použijte následující příkaz. Tím se načtou data ze senzorů a převede se do MIDI not, které se poté vytisknou na konzolu. Když přesunete ruku nad senzory, měli byste vidět generování dat. Pokud ne, přejděte k části odstraňování problémů na konci tohoto pokynu.

nákladní provoz -uvolněte

Pokud jste zvědaví, příznak „--release“řekne Rustovi, aby kód zkompiloval co nejefektivněji, na rozdíl od výchozího nastavení „--debug“.

Krok 7: Vytvořte nějakou hudbu

Ujistěte se, že jste stále v adresáři, kam jste stáhli zdrojový kód, a spusťte následující příkaz.

Tento skript „run.sh“zajišťuje, že byl kód zkompilován, a poté spustí kód a propojí výstup do fluidsynth.

./run.sh

Ujistěte se, že máte zesílené reproduktory připojené k 3,5mm audio konektoru na Raspberry Pi a při pohybu rukou nad senzory byste měli slyšet hudbu.

Pokud neslyšíte hudbu a máte připojený monitor HDMI, bude místo toho pravděpodobně směřovat zvukový výstup. Chcete-li to opravit, jednoduše spusťte tento příkaz a poté znovu spusťte Pi Piano:

sudo amixer cset numid = 3 1

Změna hlasitosti

Objem (nebo "zisk") je zadán pomocí parametru "-g" do fluidsynth. Můžete upravit skript run.sh a změnit tuto hodnotu. Pamatujte, že malé změny v tomto parametru mají za následek velkou změnu objemu, zkuste ho tedy zvýšit o malé částky (například 0,1 nebo 0,2).

Krok 8: Ovládání gesty

Úplnou ukázku projektu včetně toho, jak fungují ovládací prvky gest, najdete ve videu připojeném k tomuto kroku.

Koncept je velmi jednoduchý. Software sleduje, které senzory jsou zakryty (do 10 cm) a které nikoli. To znamená 8 binárních čísel (1 nebo 0). To je velmi výhodné, protože posloupnost 8 binárních čísel vytváří „bajt“, který může představovat čísla mezi 0 a 255. Pokud o binárních číslech ještě nevíte, vřele doporučuji vyhledat návod. Binární čísla jsou základní dovedností, kterou je třeba se naučit, pokud se chcete dozvědět více o programování.

Software mapuje aktuální stav senzorů na jeden bajt představující aktuální gesto. Pokud toto číslo zůstane stejné pro několik cyklů, pak software na toto gesto působí.

Protože ultrazvukové senzory nejsou super spolehlivé a mezi senzory může docházet k interferencím, budete při používání gest muset být trochu trpěliví. Zkuste změnit vzdálenost, kterou držíte ruce od senzorů, a také úhel, který držíte za ruce. Můžete také zkusit držet něco plochého a pevného nad senzory, aby lépe odrážely zvuk.

Krok 9: Vytvoření přílohy

Pokud z toho chcete udělat trvalou výstavu a být schopni ji předvést lidem, pravděpodobně budete chtít udělat nějaký druh ohrady. Mohlo by to být vyrobeno ze dřeva, lepenky nebo mnoha dalších materiálů. Zde je video ukazující přílohu, na které pro tento projekt pracujeme. Je vyroben ze dřeva s vyvrtanými otvory, které drží ultrazvukové senzory na místě.

Krok 10: Řešení potíží a další kroky

Odstraňování problémů

Pokud projekt nefunguje, obvykle jde o chybu zapojení. Udělejte si čas na kontrolu všech připojení.

Dalším běžným problémem je selhání povolení SPI a restartování pí.

Na adrese https://theotherandygrove.com/octasonic/ naleznete úplnou dokumentaci včetně tipů pro řešení potíží s články specifickými pro Rust a Python a také informace o tom, jak získat podporu.

Další kroky

Jakmile bude projekt fungovat, doporučuji experimentovat s kódem a vyzkoušet různé hudební nástroje. Kódy MIDI nástrojů jsou mezi 1 a 127 a jsou zde zdokumentovány.

Chcete jeden hudební nástroj s každým senzorem hrát jinou oktávu? Možná byste chtěli, aby každý senzor byl místo toho samostatný nástroj? Možnosti jsou téměř neomezené!

Doufám, že se vám tento návod líbil. Ať se vám to líbí, nezapomeňte se přihlásit k odběru zde a na mém kanálu YouTube, abyste viděli budoucí projekty.

Doporučuje: