Мазмұны:

Қимылмен басқарылатын ультрадыбыстық пианино!: 10 қадам (суреттермен)
Қимылмен басқарылатын ультрадыбыстық пианино!: 10 қадам (суреттермен)

Бейне: Қимылмен басқарылатын ультрадыбыстық пианино!: 10 қадам (суреттермен)

Бейне: Қимылмен басқарылатын ультрадыбыстық пианино!: 10 қадам (суреттермен)
Бейне: Pregnancy Weight Gain: What to Expect 2024, Шілде
Anonim
Image
Image
Қимылмен басқарылатын ультрадыбыстық пианино!
Қимылмен басқарылатын ультрадыбыстық пианино!

Бұл жоба кіріс ретінде арзан HC-SR04 ультрадыбыстық датчиктерді пайдаланады және жоғары сапалы дыбыс үшін Raspberry Pi синтезаторы арқылы ойнатылатын MIDI жазбаларын шығарады.

Сондай -ақ, жобада қимылдарды басқарудың негізгі формасы қолданылады, мұнда музыкалық аспапты қолдарыңызды екі сыртқы датчиктерге бірнеше секунд ұстап тұру арқылы өзгертуге болады. Аяқтағаннан кейін Raspberry Pi -ді өшіру үшін тағы бір қимылды қолдануға болады.

Жоғарыдағы бейнеде лазермен кесілген қарапайым корпуста дайын өнім көрсетілген. Бұл нұсқаулықта кейінірек жобаның қалай жұмыс жасайтынын түсіндіретін тереңірек бейне бар.

Мен бұл жобаны жергілікті STEM/STEAM іс -шаралары мен Maker Faires -ке ала алатын интерактивті экспонаттар жасау үшін The Gizmo Dojo -мен (Broomfield, CO -дағы менің жергілікті өндірушілер кеңістігі) бірлесіп жасадым.

Сондай -ақ, https://theotherandygrove.com/octasonic/ сайтындағы соңғы құжаттамалар мен оқулықтарды қараңыз, онда қазір осы жобаның Python нұсқасы туралы ақпарат бар (бұл нұсқаулық Rust нұсқасы үшін жазылған).

1 -қадам: ингредиенттер

Бұл нұсқаулық үшін сізге келесі ингредиенттер қажет:

  • SD картасы бар Raspberry Pi (2 немесе 3)
  • 8 HC-SR04 ультрадыбыстық датчиктер
  • Octasonic Breakout Board
  • Екі бағытты логикалық деңгей түрлендіргіші
  • Ультрадыбыстық датчиктерді қосуға арналған 32 х 12 дюймдік аналық-әйелдік сымдар
  • Raspberry Pi, Octasonic және Logic Level Converter қосуға арналған 13 х 6 дюймдік аналық-аналық сымдар
  • Raspberry Pi үшін қолайлы қуат көзі
  • ДК динамиктері немесе соған ұқсас

Мүмкіндігінше Raspberry Pi 3 пайдалануды ұсынар едім, себебі оның есептеу қабілеті жоғары, нәтижесінде жауап беруші және жағымды дыбыс шығады. Ол Raspberry Pi 2 -мен жақсы жұмыс жасай алады, бірақ мен бұл жобаға Raspberry Pi түпнұсқасын қолдануға тырыспаймын.

HC -SR04 ультрадыбыстық датчиктерінде 4 байланыс бар - 5V, GND, Trigger және Echo. Әдетте, Trigger мен Echo микроконтроллердегі немесе Raspberry Pi бөлек түйреуіштеріне қосылады, бірақ бұл сізге 8 сенсорды қосу үшін 16 түйреуішті пайдалану қажет болатынын білдіреді және бұл практикалық емес. Дәл осында сегізкөздік тақта пайда болады. Бұл тақта барлық сенсорларға қосылады және сенсорларды бақылайтын, содан кейін SPI арқылы Raspberry Pi -мен байланысатын арнайы микроконтроллерге ие.

HC-SR04 үшін 5В қажет, ал Raspberry Pi-тек 3,3 В, сондықтан бізге Raspberry Pi-ді сегіздік тақтасына қосатын логикалық деңгейдегі түрлендіргіш қажет.

2 -қадам: Ультрадыбыстық сенсорларды сегіздік тақтаға қосыңыз

Ультрадыбыстық сенсорларды сегіздік тақтаға қосыңыз
Ультрадыбыстық сенсорларды сегіздік тақтаға қосыңыз
Ультрадыбыстық сенсорларды сегіздік тақтаға қосыңыз
Ультрадыбыстық сенсорларды сегіздік тақтаға қосыңыз

Әрбір ультрадыбыстық сенсорды тақтаға қосу үшін 4 әйел мен әйелдің қосқыш сымдарын қолданып, оларды дұрыс қосуға мұқият болыңыз. Тақта түйреуіштер ультрадыбыстық сенсордағы түйреуіштермен бір тәртіпте болатындай етіп жасалған. Тақтада солдан оңға қарай түйреуіштер GND, Trigger, Echo, 5V.

3 -қадам: Логикалық деңгей түрлендіргішін сегіздік тақтаға қосыңыз

Логикалық деңгей түрлендіргішін сегіздік тақтаға қосыңыз
Логикалық деңгей түрлендіргішін сегіздік тақтаға қосыңыз

Raspberry Pi және Octasonic Board SPI арқылы байланысады. SPI 4 сымды қолданады:

  • Мастерлік, құлдық (MISO)
  • Шығу, құлдыққа кіру (MOSI)
  • Сериялық сағат (SCK)
  • Құл таңдау (SS)

Сонымен қатар, біз қуатты қосуымыз керек (5V және GND).

Логикалық деңгей түрлендіргішінің екі жағы бар - төмен кернеу (ЖЖ) және жоғары кернеу (ЖЖ). Raspberry LV жағына қосылады, себебі ол 3.3V. Octasonic 5В болғандықтан, HV жағына қосылады.

Бұл қадам Octasonic логикалық деңгей түрлендіргішінің HV жағына қосуға арналған

Логикалық деңгей түрлендіргішіне қандай түйреуіштерді қосу керектігін көрсететін осы қадамға бекітілген фотосуретті қараңыз.

Octasonic -тен логикалық деңгей түрлендіргішіне қосылымдар келесідей болуы керек:

  • 5В -тан жоғары кернеуге дейін
  • HV4 -ке SCK
  • MISO HV3
  • MOSI - HV2
  • SS - HV1
  • GND - GND

4 -қадам: логикалық деңгей түрлендіргішін Raspberry Pi -ге қосыңыз

Логикалық деңгей түрлендіргішін Raspberry Pi -ге қосыңыз
Логикалық деңгей түрлендіргішін Raspberry Pi -ге қосыңыз

Raspberry Pi және Octasonic Board SPI арқылы байланысады. SPI 4 сымды қолданады:

  • Мастерлік, құлдық (MISO)
  • Шығу, құлдыққа кіру (MOSI)
  • Сериялық сағат (SCK)
  • Құл таңдау (SS)

Сонымен қатар, біз қуатты қосуымыз керек (3.3V және GND). Логикалық деңгей түрлендіргішінің екі жағы бар - төмен кернеу (ЖЖ) және жоғары кернеу (ЖЖ). Таңқурай LV жағына қосылады, себебі ол 3.3В. Octasonic 5В болғандықтан, HV жағына қосылады.

Бұл қадам Raspberry Pi логикалық деңгей түрлендіргішінің LV жағына қосуға арналған

Raspbery Pi -ден логикалық деңгей түрлендіргішіне қосылымдар келесідей болуы керек:

  • 3.3 В -тан LV -ге дейін
  • GPIO11 (SPI_SCLK) LV4
  • GPIO09 (SPI_MISO) LV3 дейін
  • GPIO10 (SPI_MOSI) LV2 дейін
  • GPIO08 (SPI_CE0_N) SS - LV1
  • GND - GND

Raspberry Pi -ге дұрыс түйреуіштерді табу үшін осы қадамға бекітілген схеманы қолданыңыз!

5 -қадам: Raspberry Pi 5V -ді Octasonic 5V -ге қосыңыз

Raspberry Pi 5V -ді Octasonic 5V -ге қосыңыз
Raspberry Pi 5V -ді Octasonic 5V -ге қосыңыз
Raspberry Pi 5V -ді Octasonic 5V -ге қосыңыз
Raspberry Pi 5V -ді Octasonic 5V -ге қосыңыз

Қосылатын бір соңғы сым бар. Біз Octagonic тақтасын 5В қуатымен қамтамасыз етуіміз керек, сондықтан мұны Raspberry Pi 5V түйреуіштерінің бірін Octasonic AVR тақырыбындағы 5V істігіне қосу арқылы жасаймыз. Бұл AVR тақырыптар блогындағы төменгі сол жақ түйреуіш (бұл тақтаның жоғарғы оң жақ бөлігіндегі 2 x 3 блогы). AVR блогы қай жерде орналасқанын қоса берілген фотосуретті қараңыз.

Raspberry Pi -дегі 5В түйреуішті табу үшін басқа бекітілген диаграмманы қараңыз.

6 -қадам: Бағдарламалық жасақтаманы орнатыңыз

Raspian орнатыңыз

Raspbian Jessie -ді таза орнатудан бастаңыз, содан кейін оны соңғы нұсқаға жаңартыңыз:

sudo apt-get жаңартуы

sudo apt-get жаңарту

SPI қосу

Бұл жоба жұмыс істеуі үшін Raspberry Pi -де SPI қосу керек! Ол үшін Raspberry Pi Configuration утилитасын пайдаланыңыз.

Сондай -ақ, SPI қосылғаннан кейін Pi -ні қайта жүктеу маңызды

FluidSynth орнатыңыз

Fluidsynth - бұл керемет ақысыз MIDI синтезі. Сіз оны пәрмен жолынан осы пәрменмен орната аласыз:

sudo apt-get install fluidsynth

Rust бағдарламалау тілін орнатыңыз

Ультрадыбыстық Pi фортепиано Mozilla -ның Rust бағдарламалау тілінде енгізілген (бұл C ++ сияқты, бірақ нашар битсіз). Бұл қазіргі таңда барлық керемет балалар қолданады.

Rust орнату үшін https://rustup.rs/ нұсқауларын орындаңыз. Уақытты үнемдеу үшін нұсқаулар осы бір пәрменді орындау болып табылады. Орнату кезінде кез келген сұрақтарға әдепкі жауаптарды қабылдауға болады.

ЕСКЕРТПЕ: Бұл нұсқаулықты жариялағаннан кейін, Raspberry Pi -де Rust орнатуда кейбір мәселелер бар. Нашар уақыт:-/ бірақ мен мәселені шешу үшін төмендегі пәрменді өзгерттім. Олар мұны жақын арада жөндейді деп үміттенемін. Мен адамдар SD картасына жүктей алатын және жазатын сурет жасаймын. Егер сіз мұны қаласаңыз, маған хабарласыңыз.

экспорттау RUSTUP_USE_HYPER = 1curl https://sh.rustup.rs -sSf | ш

Ultrasonic Pi Piano бастапқы кодын жүктеп алыңыз

Ultrasonic Pi Piano бастапқы кодының бастапқы коды github -да орналасқан. Кодты алудың екі нұсқасы бар. Егер сіз git және github -пен таныс болсаңыз, репо клондауыңызға болады:

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

Сонымен қатар, сіз соңғы кодтың ZIP файлын жүктей аласыз.

Бастапқы кодты құрастырыңыз

CD UltrasonicPiPiano

жүк құрастыру -шығару

Кодты тексеріңіз

Келесі қадамда музыка жасауға көшпес бұрын, бағдарламалық қамтамасыз ету жұмыс істейтініне және сенсорлардан жарамды деректерді оқи алатындығымызға көз жеткізіңіз.

Бағдарламаны іске қосу үшін келесі пәрменді пайдаланыңыз. Бұл сенсорлардан алынған мәліметтерді оқиды және оларды консольде басып шығарылатын MIDI жазбаларына аударады. Датчиктерге қолыңызды жылжытқанда, сіз деректердің пайда болуын көресіз. Олай болмаса, нұсқаулықтың соңындағы ақауларды жою бөліміне өтіңіз.

жүк жүгіру -босату

Егер сіз білгіңіз келсе, «-босату» жалаушасы Русты кодты әдепкі «-жөндеуге» қарағанда мүмкіндігінше тиімді құрастыруды айтады.

7 -қадам: Музыка жасаңыз

Сіз бастапқы кодты жүктеген каталогта екеніңізге көз жеткізіңіз және келесі пәрменді іске қосыңыз.

Бұл «run.sh» сценарийі кодтың құрастырылғанына көз жеткізеді, содан кейін шығуды fluidsynth -ке жіберіп, кодты іске қосады.

./run.sh

Raspberry Pi -дегі 3,5 мм аудио ұясына күшейтілген динамиктер қосылғанына көз жеткізіңіз, сенсорды қолмен жылжытқанда музыка естілуі керек.

Егер сіз музыка естімесеңіз және сізде HDMI мониторы болса, онда аудио шығыс орнына баруы мүмкін. Мұны түзету үшін осы пәрменді орындаңыз, содан кейін Pi Piano-ны қайта іске қосыңыз:

sudo amixer cset numid = 3 1

Дыбыс деңгейін өзгерту

Көлем (немесе «пайда») «-g» параметрімен fluidsynth үшін көрсетіледі. Run.sh сценарийін өзгертуге және бұл мәнді өзгертуге болады. Назар аударыңыз, бұл параметрдегі кішкене өзгерістер дыбыстың үлкен өзгеруіне әкеледі, сондықтан оны аз мөлшерге көбейтуге тырысыңыз (мысалы, 0,1 немесе 0,2).

8 -қадам: Қимылды басқару

Жобаның толық демонстрациясы үшін осы қадамға бекітілген бейнені қараңыз, оның ішінде қимылмен басқару элементтері қалай жұмыс істейді.

Тұжырымдама өте қарапайым. Бағдарлама қай датчиктердің жабылғанын (10см ішінде), ал қайсысы жабылмағанын қадағалайды. Бұл 8 екілік санға аударылады (1 немесе 0). Бұл өте ыңғайлы, өйткені 8 екілік сандардың тізбегі 0 -ден 255 -ке дейінгі сандарды білдіретін «байтты» құрайды. Егер сіз екілік сандар туралы білмесеңіз, мен сізге оқулықты іздеуді ұсынамын. Егер сіз бағдарламалау туралы көбірек білгіңіз келсе, екілік сандар - үйренудің негізгі дағдысы.

Бағдарламалық қамтамасыз ету сенсорлардың ағымдағы күйін ағымдағы қимылды білдіретін бір байтқа салыстырады. Егер бұл сан бірнеше цикл үшін өзгеріссіз қалса, онда бағдарламалық жасақтама осы қимылмен әрекет етеді.

Ультрадыбыстық сенсорлар өте сенімді емес және сенсорлар арасында кедергі болуы мүмкін болғандықтан, қимылдарды қолданғанда шыдамдылық таныту қажет болады. Сенсорлардан қолды ұстайтын қашықтықты, сондай -ақ бұрышты өзгертуге тырысыңыз. Сіз сондай -ақ дыбысты жақсы көрсету үшін сенсорлардың үстінен тегіс және қатты нәрсені ұстауға тырысасыз.

9 -қадам: қоршау жасау

Егер сіз мұны тұрақты экспонатқа айналдырғыңыз келсе және оны адамдарға көрсеткіңіз келсе, сіз қоршаудың бір түрін жасағыңыз келуі мүмкін. Бұл ағаштан, картоннан немесе басқа материалдардан жасалуы мүмкін. Міне, біз осы жобада жұмыс жасайтын корпусты көрсететін бейне. Бұл ағаштан жасалған, ультрадыбыстық датчиктерді ұстау үшін тесіктер бұрғыланады.

10 -қадам: Ақаулықтарды жою және келесі қадамдар

Ақаулық себебін іздеу және түзету

Егер жоба жұмыс істемесе, ол әдетте сымдар қатесіне байланысты болады. Барлық қосылымдарды қайталап тексеруге уақыт бөліңіз.

Тағы бір жиі кездесетін мәселе - SPI қосылмауы және pi қайта жүктелуі.

Rust және Python арнайы мақалалары бар ақаулықтарды жою бойынша кеңестерді қоса, толық құжаттаманы алу үшін https://theotherandygrove.com/octasonic/ сайтына кіріңіз, сонымен қатар қолдауды алу туралы ақпарат алыңыз.

Келесі қадамдар

Жоба жұмыс істеп болғаннан кейін, мен кодпен тәжірибе жасауды және әр түрлі музыкалық аспаптарды сынап көруді ұсынамын. MIDI құралдарының кодтары 1 -ден 127 -ге дейін және осы жерде құжатталған.

Әр сенсоры әр түрлі октавада ойнайтын жалғыз музыкалық аспапты қалайсыз ба? Мүмкін сіз әр сенсордың жеке құрал болғанын қалайсыз ба? Мүмкіндіктер шексіз!

Сізге бұл нұсқаулық ұнады деп сенемін. Егер ұнаған болса, ұнайды, алдағы жобаларды көру үшін маған және YouTube каналыма жазылуды ұмытпаңыз.

Ұсынылған: