Мазмуну:

УЗИ пианино жаңсоолор менен!: 10 кадам (сүрөттөр менен)
УЗИ пианино жаңсоолор менен!: 10 кадам (сүрөттөр менен)

Video: УЗИ пианино жаңсоолор менен!: 10 кадам (сүрөттөр менен)

Video: УЗИ пианино жаңсоолор менен!: 10 кадам (сүрөттөр менен)
Video: Пианино vs УЗИ аппарат 2024, Июль
Anonim
Image
Image
УЗИ Pi пианино жаңсоолор менен!
УЗИ Pi пианино жаңсоолор менен!

Бул долбоор арзан HC-SR04 УЗИ сенсорлорун колдонот жана MIDI ноталарын жаратат, алар Raspberry Piдеги синтезатор аркылуу жогорку сапаттагы үн үчүн ойнотулат.

Долбоордо жаңсоону башкаруунун негизги формасы колдонулат, мында музыкалык инструмент колуңузду эң сырткы эки сенсордун үстүнөн бир нече секунд кармап туруу менен өзгөртүлүшү мүмкүн. Дагы бир жаңсоону Raspberry Pi бүткөндөн кийин өчүрүү үчүн колдонсо болот.

Жогорудагы видеодо даяр продукт лазер менен кесилген жөнөкөй корпуста көрсөтүлгөн. Кийинчерээк бул көрсөтмөдө долбоордун кандай иштээрин түшүндүргөн дагы терең видео бар.

Мен бул долбоорду жергиликтүү STEM/STEAM окуяларына жана Maker Fairesке ала турган интерактивдүү экспонаттарды жасоо үчүн Gizmo Dojo (Брамфилддеги, CO) менен биргеликте түздүм.

Сураныч, https://theotherandygrove.com/octasonic/ дарегиндеги акыркы документтерди жана окуу куралдарын карап көрүңүз, анда азыр бул долбоордун Python версиясы жөнүндө маалымат камтылган (бул инструкция Rust версиясы үчүн жазылган).

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

Бул көрсөтмө үчүн сизге төмөнкү ингредиенттер керек болот:

  • Raspberry Pi (2 же 3) SD карта менен
  • 8 HC-SR04 УЗИ сенсорлору
  • Octasonic Breakout Board
  • Эки багыттуу логикалык деңгээлдеги конвертер
  • УЗИ сенсорлорун туташтыруу үчүн 32 x 12 "Аял-Аял Jumper Wires
  • Raspberry Pi, Octasonic жана Logic Level Converter туташтыруу үчүн 13 x 6 "Аял-Аял Jumper Wires
  • Raspberry Pi үчүн ылайыктуу электр энергиясы
  • PC динамиктери же ушул сыяктуу

Мен мүмкүн болсо Raspberry Pi 3 колдонууну сунуштайт элем, анткени ал көбүрөөк эсептөөчү күчкө ээ, натыйжада үн дагы жагымдуу жана жагымдуу болот. Бул Raspberry Pi 2 менен жакшы иштей алат, бирок мен бул долбоор үчүн түпнуска Raspberry Pi колдонууга аракет кылмак эмесмин.

HC -SR04 УЗИ сенсорлору 4 байланышка ээ - 5V, GND, Trigger жана Echo. Адатта, Trigger жана Echo микроконтроллердеги же Raspberry Piдеги өзүнчө казыктарга туташат, бирок бул 8 сенсорду туташтыруу үчүн 16 казыкты колдонуу керектигин билдирет жана бул практикалык эмес. Бул жерде Octasonic сындыруучу тактасы келет. Бул такта сенсорлордун баарына туташат жана сенсорлорду көзөмөлдөгөн жана андан кийин SPI аркылуу Raspberry Pi менен байланышкан атайын микроконтроллери бар.

HC-SR04 5V талап кылат, ал эми Raspberry Pi болгону 3.3V, ошондуктан биз Raspberry Pi'ди Octasonic breakout тактасына туташтыра турган логикалык деңгээлдеги конвертерге муктажбыз.

2 -кадам: Ultrasonic сенсорлорду Octasonic тактасына туташтырыңыз

Ultrasonic сенсорлорун Octasonic Boardго туташтырыңыз
Ultrasonic сенсорлорун Octasonic Boardго туташтырыңыз
Ultrasonic сенсорлорун Octasonic Boardго туташтырыңыз
Ultrasonic сенсорлорун Octasonic Boardго туташтырыңыз

Ар бир УЗИ сенсорун тактага туташтыруу үчүн 4 аял-ургаачы секирүүчү зымдарды колдонуңуз, аларды туура жолго туташтырууда этият болуңуз. Такта казыктар УЗИ сенсорундагы казыктар менен бирдей тартипте болушу үчүн иштелип чыккан. Тактада солдон оңго карай, казыктар GND, Trigger, Echo, 5V.

3 -кадам: Логикалык Даража Конвертерин Октасондук Тактага туташтырыңыз

Логикалык Даража Конвертерин Octasonic Boardго туташтырыңыз
Логикалык Даража Конвертерин Octasonic Boardго туташтырыңыз

Raspberry Pi жана Octasonic Board SPI аркылуу байланышат. SPI 4 зым колдонот:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Сериялык саат (SCK)
  • Кул тандоо (SS)

Андан тышкары, биз кубаттуулукту (5V жана GND) туташтырышыбыз керек.

Логикалык деңгээлди которгучтун эки жагы бар - төмөнкү чыңалуу (ЛВ) жана жогорку чыңалуу (ВВ). Raspberry LV жагына туташат, анткени ал 3.3V. Octasonic 5V болгондуктан HV тарапка туташат.

Бул кадам Octasonicти логикалык деңгээлдеги конвертердин HV жагына туташтыруу үчүн

Бул кадамга тиркелген сүрөттү караңыз, кайсы казыктар логикалык деңгээлди алмаштыргычка туташтырылышы керек.

Логикалык Даража Конвертерине Octasonicтен байланыштар төмөнкүдөй болушу керек:

  • 5Vдан HVга чейин
  • HV4 чейин SCK
  • MISOдан HV3кө
  • MOSIден HV2ге
  • SS HV1ге
  • GNDден GNDге

4 -кадам: Logic Level Converter'ди Raspberry Pi менен туташтырыңыз

Logic Level Converter'ди Raspberry Pi менен туташтырыңыз
Logic Level Converter'ди Raspberry Pi менен туташтырыңыз

Raspberry Pi жана Octasonic Board SPI аркылуу байланышат. SPI 4 зым колдонот:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Сериялык саат (SCK)
  • Кул тандоо (SS)

Андан тышкары, биз бийликти (3.3V жана GND) туташтырышыбыз керек. Логикалык деңгээлди которгучтун эки жагы бар - төмөнкү чыңалуу (ЛВ) жана жогорку чыңалуу (ВВ). Raspberry LV жагына туташат, анткени ал 3.3V. Octasonic 5V болгондуктан HV тарапка туташат.

Бул кадам Raspberry Pi'ди логикалык деңгээлдеги конвертердин LV жагына туташтыруу үчүн

Raspbery Piден Logic Level конвертерине туташуулар төмөнкүдөй болушу керек:

  • 3.3Vдан 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 менен туташтырыңыз

Кошуу үчүн бир акыркы зым бар. Биз чындыгында Octasonic тактасын 5В менен кубатташыбыз керек, андыктан Raspberry Pi 5V казыктарынын бирин Octasonic AVR башындагы 5V пинге туташтыруу менен жасайбыз. Бул AVR баш блогунун астындагы сол жак пин (бул тактанын жогорку оң жагындагы 2 x 3 блогу). AVR блогу кайда экенин көрсөткөн тиркелген сүрөттү караңыз.

Raspberry Piдеги 5V пинди табуу үчүн башка тиркелген диаграмманы караңыз.

6 -кадам: Программаны орнотуу

Raspian орнотуу

Raspbian Jessie программасын таза орнотуудан баштаңыз, андан кийин аны акыркы версиясына жаңыртыңыз:

sudo apt-get update

sudo apt-get жогорулатуу

SPI иштетүү

Бул долбоор иштеши үчүн Raspberry Piдеги SPIди иштетишиңиз керек! Бул үчүн Raspberry Pi Configuration утилитасын колдонуңуз.

Ал күчүнө кириши үчүн SPI иштетилгенден кийин Pi'ди кайра жүктөө дагы маанилүү

FluidSynth орнотуу

Fluidsynth укмуштуудай бекер программа MIDI synth. Сиз аны буйрук сабынан бул буйрук менен орното аласыз:

sudo apt-get install fluidsynth

Rust программалоо тилин орнотуңуз

Ultrasonic Pi Piano Mozilla -дан Rust программалоо тилинде ишке ашырылат (бул C ++ сыяктуу, бирок жаман биттери жок). Бул бардык сонун балдар ушул күндөрү колдонуп жатышат.

Русту орнотуу үчүн 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 мониторуңуз тиркелген болсо, анда анын ордуна аудио чыгышы мүмкүн. Муну оңдоо үчүн, жөн гана бул буйрукту иштетип, андан кийин Пи Пианону кайра баштаңыз:

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ди иштете албоо жана пиди кайра жүктөө.

Сураныч, https://theotherandygrove.com/octasonic/ дарегине толук документтерди, анын ичинде көйгөйлөрдү чечүү боюнча кеңештерди, Rust жана Python конкреттүү макалаларын, ошондой эле кантип колдоо алууну билүү үчүн кайрылыңыз.

Кийинки кадамдар

Долбоор иштеп баштагандан кийин, мен код менен эксперимент жүргүзүүнү жана ар кандай музыкалык аспаптарды сынап көрүүнү сунуштайм. MIDI аспап коддору 1ден 127ге чейин жана бул жерде документтештирилген.

Ар бир сенсор башка октавада ойногон бир музыкалык аспапты каалайсызбы? Балким, сен анын ордуна ар бир сенсордун өзүнчө инструмент болушун каалайсың? Мүмкүнчүлүктөр дээрлик чексиз!

Бул көрсөтмө сизге жакты деп ишенем. Сураныч, эгер жактырсаңыз, мага жаккыла жана келечектеги долбоорлорду көрүү үчүн бул жерде жана менин YouTube каналыма жазылууну унутпаңыз.

Сунушталууда: