Përmbajtje:

Piano tejzanor Pi me kontrolle gjestesh !: 10 hapa (me fotografi)
Piano tejzanor Pi me kontrolle gjestesh !: 10 hapa (me fotografi)

Video: Piano tejzanor Pi me kontrolle gjestesh !: 10 hapa (me fotografi)

Video: Piano tejzanor Pi me kontrolle gjestesh !: 10 hapa (me fotografi)
Video: Ступни украли ► 1 Прохождение Signalis 2024, Nëntor
Anonim
Image
Image
Piano tejzanor Pi me kontrolle gjestesh!
Piano tejzanor Pi me kontrolle gjestesh!

Ky projekt përdor sensorë të lirë tejzanor HC-SR04 si hyrje dhe gjeneron shënime MIDI që mund të luhen përmes një sintetizuesi në Raspberry Pi për një tingull me cilësi të lartë.

Projekti përdor gjithashtu një formë bazë të kontrollit të gjesteve, ku instrumenti muzikor mund të ndryshohet duke mbajtur duart mbi dy sensorët më të jashtëm për disa sekonda. Një gjest tjetër mund të përdoret për të mbyllur Raspberry Pi pasi të keni mbaruar.

Videoja e mësipërme tregon produktin e përfunduar në një rrethim të thjeshtë të prerë me lazer. Ekziston një video më e thelluar më vonë në këtë udhëzues që shpjegon se si funksionon projekti.

Unë e krijova këtë projekt në lidhje me The Gizmo Dojo (hapësira ime krijuese lokale në Broomfield, CO) për të bërë disa ekspozita ndërvepruese që mund t'i marrim në ngjarjet lokale STEM/STEAM dhe Maker Faires.

Ju lutemi shikoni gjithashtu dokumentacionin dhe mësimet më të fundit në https://theotherandygrove.com/octasonic/ i cili tani përfshin informacion mbi një version Python të këtij projekti (ky udhëzues është shkruar për versionin Rust).

Hapi 1: Përbërësit

Për këtë udhëzues, do t'ju duhet përbërësit e mëposhtëm:

  • Raspberry Pi (2 ose 3) me kartë SD
  • 8 sensorë tejzanor HC-SR04
  • Bordi Breakout Octasonic
  • Konvertues i nivelit të logjikës me dy drejtime
  • Tela bluzë 32 x 12 "Femra-Femra për lidhjen e sensorëve tejzanor
  • Tela Jumper Femër-Femër 13 x 6 "për lidhjen e Konvertuesit të Raspberry Pi, Octasonic dhe Logic Level
  • Furnizimi me energji i përshtatshëm për Raspberry Pi
  • Folës PC ose të ngjashme

Unë do të rekomandoja përdorimin e një Raspberry Pi 3 nëse është e mundur pasi ka më shumë fuqi llogaritëse, duke rezultuar në një tingull më të përgjegjshëm dhe të këndshëm. Mund të funksionojë mirë me një Raspberry Pi 2 me pak ndryshime, por unë nuk do të përpiqesha të përdor Raspberry Pi origjinale për këtë projekt.

Sensorët tejzanor HC -SR04 kanë 4 lidhje - 5V, GND, Trigger dhe Echo. Në mënyrë tipike, Trigger dhe Echo janë të lidhura me kunja të ndara në një mikrokontrollues ose Raspberry Pi, por kjo do të thotë që do t'ju duhet të përdorni 16 kunja për të lidhur 8 sensorë, dhe kjo nuk është praktike. Këtu hyn bordi i daljes Octasonic. Ky bord lidhet me të gjithë sensorët dhe ka një mikrokontrollues të dedikuar që monitoron sensorët dhe më pas komunikon me Raspberry Pi mbi SPI.

HC-SR04 kërkon 5V dhe Raspberry Pi është vetëm 3.3V, kështu që kjo është arsyeja pse ne gjithashtu kemi nevojë për konvertuesin e nivelit logjik që do të lidhë Raspberry Pi me bordin e daljes Octasonic.

Hapi 2: Lidhni Sensorët tejzanor me Bordin Oktasonik

Lidhni Sensorët tejzanor me Bordin Oktasonik
Lidhni Sensorët tejzanor me Bordin Oktasonik
Lidhni Sensorët tejzanor me Bordin Oktasonik
Lidhni Sensorët tejzanor me Bordin Oktasonik

Përdorni 4 tela kërcyese femra-femra për të lidhur çdo sensor tejzanor me tabelën, duke qenë të kujdesshëm për t'i lidhur ato në mënyrë korrekte përreth. Bordi është krijuar në mënyrë që kunjat të jenë në të njëjtin rend si kunjat në sensorin tejzanor. Nga e majta në të djathtë në tabelë, kunjat janë GND, Trigger, Echo, 5V.

Hapi 3: Lidhni Konvertuesin e Nivelit Logjik në Bordin Oktasonik

Lidhni Konvertuesin e Nivelit Logjik në Bordin Oktasonik
Lidhni Konvertuesin e Nivelit Logjik në Bordin Oktasonik

Raspberry Pi dhe Bordi Octasonic komunikojnë përmes SPI. SPI përdor 4 tela:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Ora Seriale (SCK)
  • Zgjedhja e skllevërve (SS)

Për më tepër, ne duhet të lidhim energjinë (5V dhe GND).

Konvertuesi i nivelit logjik ka dy anë - një tension të ulët (LV) dhe një tension të lartë (HV). Mjedra do të lidhet me anën e LV pasi është 3.3V. Octasonic do të lidhet me anën e HV pasi është 5V.

Ky hap është për lidhjen e Octasonic me anën HV të konvertuesit të nivelit logjik

Shihni foton bashkangjitur këtij hapi që tregon se cilat kunja duhet të lidhen me konvertuesin e nivelit logjik.

Lidhjet nga konvertuesi Octasonic në nivelin logjik duhet të jenë si më poshtë:

  • 5V në HV
  • SCK në HV4
  • MISO në HV3
  • MOSI në HV2
  • SS në HV1
  • GND në GND

Hapi 4: Lidhni Konvertuesin e Nivelit Logjik me Raspberry Pi

Lidhni Konvertuesin e Nivelit Logjik me Raspberry Pi
Lidhni Konvertuesin e Nivelit Logjik me Raspberry Pi

Raspberry Pi dhe Bordi Octasonic komunikojnë përmes SPI. SPI përdor 4 tela:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Ora Seriale (SCK)
  • Zgjedhja e skllevërve (SS)

Për më tepër, ne duhet të lidhim energjinë (3.3V dhe GND). Konvertuesi i nivelit logjik ka dy anë - një tension të ulët (LV) dhe një tension të lartë (HV). Mjedra do të lidhet me anën LV pasi është 3.3V. Octasonic do të lidhet me anën e HV pasi është 5V.

Ky hap është për lidhjen e Raspberry Pi me anën LV të konvertuesit të nivelit logjik

Lidhjet nga Raspbery Pi me konvertuesin e Nivelit Logjik duhet të jenë si më poshtë:

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

Përdorni diagramin e bashkangjitur në këtë hap për të gjetur kunjat e sakta në Raspberry Pi!

Hapi 5: Lidhni Raspberry Pi 5V me Octasonic 5V

Lidheni Raspberry Pi 5V me Octasonic 5V
Lidheni Raspberry Pi 5V me Octasonic 5V
Lidheni Raspberry Pi 5V me Octasonic 5V
Lidheni Raspberry Pi 5V me Octasonic 5V

Ka një tel përfundimtar për të shtuar. Ne duhet të fuqizojmë në të vërtetë bordin Octasonic me 5V, kështu që ne e bëjmë këtë duke lidhur një nga kunjat e Raspberry Pi 5V me pinin 5V në kokën Octasonic AVR. Ky është kunja e poshtme e majtë në bllokun e kokës AVR (ky është blloku 2 x 3 në pjesën e sipërme të djathtë të tabelës). Shihni foton e bashkangjitur që tregon se ku është blloku AVR.

Shihni diagramin tjetër të bashkangjitur për të gjetur pin 5V në Raspberry Pi.

Hapi 6: Instaloni Softuerin

Instaloni Raspian

Filloni me një instalim të pastër të Raspbian Jessie, pastaj azhurnojeni atë në versionin e fundit:

përditësim sudo apt-get

sudo apt-get upgrade

Aktivizo SPI

Ju duhet të aktivizoni SPI në Raspberry Pi që ky projekt të funksionojë! Përdorni mjetin Raspberry Pi Configuration për ta bërë këtë.

Alsoshtë gjithashtu e rëndësishme të rindizni Pi pasi të aktivizoni SPI që ai të hyjë në fuqi

Instaloni FluidSynth

Fluidsynth është një softuer mahnitës falas MIDI synth. Mund ta instaloni nga linja e komandës me këtë komandë:

sudo apt-get install fluidsynth

Instaloni gjuhën e programimit Rust

Piano tejzanor zbatohet në gjuhën e programimit Rust nga Mozilla (është si C ++, por pa pjesët e këqija). Whatshtë ajo që të gjithë fëmijët e mrekullueshëm po përdorin këto ditë.

Ndiqni udhëzimet në https://rustup.rs/ për të instaluar Rust. Për të kursyer kohë, udhëzimet janë që të ekzekutoni këtë komandë. Ju mund të pranoni përgjigjet e paracaktuara për çdo pyetje gjatë instalimit.

SHENIM: Që nga postimi i këtij udhëzimi, ka disa çështje me instalimin e Rust në Raspberry Pi. Koha e keqe:-/ por unë kam modifikuar komandën më poshtë për të zgjidhur çështjen. Shpresoj se ata do ta rregullojnë këtë së shpejti. Unë jam duke punuar në krijimin e një imazhi që njerëzit mund ta shkarkojnë dhe ta djegin në një kartë SD. Nëse ju pëlqen kjo, ju lutem më kontaktoni.

eksport RUSTUP_USE_HYPER = 1 rrotullim https://sh.rustup.rs -sSf | sh

Shkarkoni kodin burimor Ultrasonic Pi Piano

Kodi burimor për kodin burimor Ultrasonic Pi Piano është i vendosur në github. Ekzistojnë dy mundësi për marrjen e kodit. Nëse jeni të njohur me git dhe github, mund të klononi repon:

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

Përndryshe, mund të shkarkoni një skedar zip të kodit të fundit.

Përpiloni kodin burimor

cd UltratingujPiPiano

ndërtimi i ngarkesave -lëshimi

Provoni kodin

Para se të kalojmë në krijimin e muzikës në hapin tjetër, le të sigurohemi që programi të funksionojë dhe se mund të lexojmë të dhëna të vlefshme nga sensorët.

Përdorni komandën e mëposhtme për të ekzekutuar aplikacionin. Kjo do të lexojë të dhënat nga sensorët dhe do t'i përkthejë ato në shënime MIDI që shtypen më pas në tastierë. Ndërsa lëvizni dorën mbi sensorët, duhet të shihni që të dhënat po gjenerohen. Nëse jo, atëherë kaloni në seksionin e zgjidhjes së problemeve në fund të këtij udhëzimi.

drejtimi i ngarkesave -lëshimi

Nëse jeni kurioz, flamuri "-lirimi" i thotë Rustit të përpilojë kodin në mënyrë sa më efikase, në krahasim me cilësimin e paracaktuar të "--debug".

Hapi 7: Bëni pak muzikë

Sigurohuni që jeni ende në drejtorinë ku keni shkarkuar kodin burimor dhe ekzekutoni komandën e mëposhtme.

Ky skenar "run.sh" sigurohet që kodi është përpiluar dhe më pas drejton kodin, duke e futur daljen në fluidsynth.

./run.sh

Sigurohuni që keni altoparlantë të përforcuar të lidhur me folenë audio 3.5 mm në Raspberry Pi dhe duhet të dëgjoni muzikë ndërsa lëvizni duart mbi sensorë.

Nëse nuk dëgjoni muzikë dhe keni një monitor HDMI të bashkangjitur, atëherë dalja audio ndoshta do të shkojë atje. Për ta rregulluar këtë, thjesht ekzekutoni këtë komandë dhe pastaj rifilloni Pi Piano:

sudo amixer cset numid = 3 1

Ndryshimi i volumit

Vëllimi (ose "fitimi") specifikohet me parametrin "-g" në fluidsynth. Mund të modifikoni skriptin run.sh dhe ta ndryshoni këtë vlerë. Ju lutemi vini re se ndryshimet e vogla në këtë parametër rezultojnë në një ndryshim të madh në vëllim, kështu që provoni ta rrisni me sasi të vogla (si 0.1 ose 0.2).

Hapi 8: Kontrolli i gjesteve

Shikoni videon bashkangjitur këtij hapi për një demonstrim të plotë të projektit, përfshirë mënyrën se si funksionojnë kontrollet e gjesteve.

Koncepti është shumë i thjeshtë. Softueri mban shënime se cilët sensorë janë të mbuluar (brenda 10cm) dhe cilët jo. Kjo përkthehet në 8 numra binarë (1 ose 0). Kjo është shumë e përshtatshme, pasi një sekuencë prej 8 numrash binarë bën një "bajt" i cili mund të përfaqësojë numra midis 0 dhe 255. Nëse nuk i dini tashmë për numrat binarë, atëherë ju rekomandoj shumë të kërkoni një tutorial. Numrat binarë janë një aftësi themelore për të mësuar nëse doni të mësoni më shumë rreth programimit.

Softueri harton gjendjen aktuale të sensorëve në një bajt të vetëm që përfaqëson gjestin aktual. Nëse ai numër qëndron i njëjtë për një numër ciklesh, atëherë softueri vepron në atë gjest.

Për shkak se sensorët tejzanor nuk janë super të besueshëm dhe mund të ketë ndërhyrje midis sensorëve, do t'ju duhet të ushtroni pak durim kur përdorni gjestet. Provoni të ndryshoni distancën që mbani nga duart nga sensorët, si dhe këndin që mbani duart. Ju gjithashtu përpiqeni të mbani diçka të sheshtë dhe të fortë mbi sensorët për të pasqyruar më mirë tingullin.

Hapi 9: Krijimi i një rrethimi

Nëse doni ta bëni këtë një ekspozitë të përhershme dhe të jeni në gjendje ta shfaqni atë para njerëzve, me siguri do të dëshironi të bëni një lloj rrethimi. Kjo mund të bëhet prej druri, kartoni ose shumë materiale të tjera. Këtu është një video që tregon rrethimin në të cilin po punojmë për këtë projekt. Kjo është bërë prej druri, me vrima të shpuara për të mbajtur sensorët tejzanor në vend.

Hapi 10: Zgjidhja e problemeve dhe hapat e ardhshëm

Zgjidhja e problemeve

Nëse projekti nuk po funksionon, zakonisht është për shkak të një gabimi në instalime elektrike. Merrni kohën tuaj për të kontrolluar dy herë të gjitha lidhjet.

Një çështje tjetër e zakonshme është dështimi për të mundësuar SPI dhe rindezjen e pi.

Ju lutemi vizitoni https://theotherandygrove.com/octasonic/ për dokumentacion të plotë duke përfshirë këshilla për zgjidhjen e problemeve, me artikuj të veçantë për Rust dhe Python, si dhe informacione se si të merrni mbështetje.

Hapat e ardhshëm

Pasi ta keni projektin në punë, unë rekomandoj të eksperimentoni me kodin dhe të provoni instrumente të ndryshëm muzikorë. Kodet e instrumenteve MIDI janë midis 1 dhe 127 dhe dokumentohen këtu.

Dëshironi një instrument të vetëm muzikor me secilin sensor që luan një oktavë të ndryshme? Ndoshta ju dëshironi që secili sensor të jetë një instrument i veçantë? Mundësitë janë pothuajse të pakufizuara!

Shpresoj se ju ka pëlqyer kjo udhëzues. Ju lutemi pëlqeni nëse e keni bërë, dhe sigurohuni që të abonoheni tek unë këtu dhe në kanalin tim në YouTube për të parë projektet e ardhshme.

Recommended: