Съдържание:

Ултразвуково пиано Pi с контрол на жестовете!: 10 стъпки (със снимки)
Ултразвуково пиано Pi с контрол на жестовете!: 10 стъпки (със снимки)

Видео: Ултразвуково пиано Pi с контрол на жестовете!: 10 стъпки (със снимки)

Видео: Ултразвуково пиано Pi с контрол на жестовете!: 10 стъпки (със снимки)
Видео: 🎶 DIMASH SOS. История на изпълнението и анализ на успеха 2024, Юли
Anonim
Image
Image
Ултразвуково пиано Pi с контрол на жестовете!
Ултразвуково пиано Pi с контрол на жестовете!

Този проект използва евтини ултразвукови сензори HC-SR04 като входове и генерира MIDI бележки, които могат да се възпроизвеждат чрез синтезатор на Raspberry Pi за висококачествен звук.

Проектът използва и основна форма на управление с жестове, където музикалният инструмент може да бъде променен, като държите ръцете си над двата най -външни сензора за няколко секунди. Друг жест може да се използва за изключване на Raspberry Pi, след като приключите.

Видеото по-горе показва готовия продукт в обикновен лазерно изрязан корпус. Има по-задълбочен видеоклип по-късно в тази инструкция, който обяснява как работи проектът.

Създадох този проект съвместно с The Gizmo Dojo (моят местен производител в Брумфийлд, Колорадо), за да направя някои интерактивни експонати, които можем да вземем за местни събития STEM/STEAM и Maker Faires.

Моля, вижте също най -новата документация и уроци на адрес https://theotherandygrove.com/octasonic/, които сега включват информация за версията на Python на този проект (тази инструкция е написана за версията Rust).

Стъпка 1: Съставки

За тази инструкция ще ви трябват следните съставки:

  • Raspberry Pi (2 или 3) със SD карта
  • 8 ултразвукови сензора HC-SR04
  • Octasonic Breakout Board
  • Двупосочен преобразувател на логически нива
  • 32 x 12 "женско-женски джъмпер проводници за свързване на ултразвукови сензори
  • 13 x 6 "женско-женски джъмперни кабели за свързване на Raspberry Pi, Octasonic и преобразувател на логическо ниво
  • Подходящо захранване за Raspberry Pi
  • Компютърни високоговорители или подобни

Бих препоръчал да използвате Raspberry Pi 3, ако е възможно, тъй като има по -голяма изчислителна мощ, което води до по -отзивчив и приятен звук. Може да работи добре с Raspberry Pi 2 с малко промяна, но не бих се опитал да използвам оригиналния Raspberry Pi за този проект.

Ултразвуковите сензори HC -SR04 имат 4 връзки - 5V, GND, Trigger и Echo. Обикновено Trigger и Echo са свързани към отделни щифтове на микроконтролер или Raspberry Pi, но това означава, че ще трябва да използвате 16 пина за свързване на 8 сензора, а това не е практично. Тук идва Octasonic пробивната платка. Тази платка се свързва с всички сензори и има специален микроконтролер, който следи сензорите и след това комуникира с Raspberry Pi през SPI.

HC-SR04 изискват 5V, а Raspberry Pi е само 3.3V, така че затова се нуждаем и от преобразувател на логическо ниво, който ще свърже Raspberry Pi към платката Octasonic.

Стъпка 2: Свържете ултразвуковите сензори към Octasonic борда

Свържете ултразвуковите сензори към Octasonic борда
Свържете ултразвуковите сензори към Octasonic борда
Свържете ултразвуковите сензори към Octasonic борда
Свържете ултразвуковите сензори към Octasonic борда

Използвайте 4 проводника женски-женски, за да свържете всеки ултразвуков сензор към платката, като внимавате да ги свържете правилно. Платката е проектирана така, че щифтовете да са в същия ред като щифтовете на ултразвуковия сензор. Отляво надясно на дъската щифтовете са GND, Trigger, Echo, 5V.

Стъпка 3: Свържете преобразувателя на логическо ниво към Octasonic Board

Свържете преобразувателя на логическо ниво към Octasonic Board
Свържете преобразувателя на логическо ниво към Octasonic Board

Raspberry Pi и Octasonic Board комуникират по SPI. SPI използва 4 проводника:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Сериен часовник (SCK)
  • Slave Select (SS)

Освен това трябва да свържем захранване (5V и GND).

Логическият преобразувател на ниво има две страни - ниско напрежение (LV) и високо напрежение (HV). Raspberry ще се свърже към LV страната, тъй като е 3.3V. Octasonic ще се свърже към HV страната, тъй като е 5V.

Тази стъпка е за свързване на Octasonic към HV страната на преобразувателя на логическо ниво

Вижте снимката, приложена към тази стъпка, показваща кои изводи трябва да бъдат свързани към преобразувателя на логическо ниво.

Връзките от преобразувателя на Octasonic към логическо ниво трябва да бъдат както следва:

  • 5V към HV
  • SCK към HV4
  • MISO към HV3
  • MOSI към HV2
  • SS към HV1
  • GND към GND

Стъпка 4: Свържете конвертора на логическо ниво към Raspberry Pi

Свържете конвертора на логическо ниво към Raspberry Pi
Свържете конвертора на логическо ниво към Raspberry Pi

Raspberry Pi и Octasonic Board комуникират по SPI. SPI използва 4 проводника:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Сериен часовник (SCK)
  • Slave Select (SS)

Освен това трябва да свържем захранване (3.3V и GND). Логическият преобразувател на ниво има две страни - ниско напрежение (LV) и високо напрежение (HV). Raspberry ще се свърже към страната на НН, тъй като е 3.3V. Octasonic ще се свърже към HV страната, тъй като е 5V.

Тази стъпка е за свързване на Raspberry Pi към LV страната на преобразувателя на логическо ниво

Връзките от Raspbery Pi към конвертора на логическо ниво трябва да бъдат както следва:

  • 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 с 5V, затова правим това, като свържем един от пиновете Raspberry Pi 5V към 5V щифта на заглавието на Octasonic AVR. Това е долният ляв щифт в заглавния блок на AVR (това е блокът 2 x 3 в горния десен ъгъл на дъската). Вижте приложената снимка, показваща къде е AVR блокът.

Вижте другата приложена диаграма, за да намерите 5V щифта на Raspberry Pi.

Стъпка 6: Инсталирайте софтуер

Инсталирайте Raspian

Започнете с чиста инсталация на Raspbian Jessie, след което я актуализирайте до най -новата версия:

sudo apt-get update

sudo apt-get надстройка

Активиране на SPI

Трябва да активирате SPI на Raspberry Pi, за да работи този проект! Използвайте помощната програма за конфигуриране на Raspberry Pi, за да направите това.

Също така е важно да рестартирате Pi, след като активирате SPI, за да влезе в сила

Инсталирайте FluidSynth

Fluidsynth е невероятен безплатен софтуерен MIDI синтезатор. Можете да го инсталирате от командния ред с тази команда:

sudo apt-get install fluidsynth

Инсталирайте езика за програмиране Rust

Ултразвуковото пиано Pi е внедрено в езика за програмиране на Rust от Mozilla (това е като C ++, но без лошите битове). Това е, което всички готини деца използват тези дни.

Следвайте инструкциите на https://rustup.rs/, за да инсталирате Rust. За да спестите време, инструкциите са да изпълните тази команда. Можете да приемете отговорите по подразбиране на всички въпроси по време на инсталацията.

ЗАБЕЛЕЖКА: След публикуването на тази инструкция има някои проблеми с инсталирането на Rust на Raspberry Pi. Лошо време:-/ но промених командата по-долу, за да заобиколя проблема. Дано скоро поправят това. Работя върху създаването на изображение, което хората могат да изтеглят и записват на 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 бележки, които след това се отпечатват на конзолата. Докато премествате ръката си над сензорите, трябва да видите генерирането на данни. Ако не, преминете към раздела за отстраняване на неизправности в края на тази инструкция.

товарен пробег -освобождаване

Ако сте любопитни, флагът "--release" казва на Rust да компилира кода възможно най-ефективно, за разлика от настройката по подразбиране "--debug".

Стъпка 7: Направете малко музика

Уверете се, че все още сте в директорията, където сте изтеглили изходния код, и изпълнете следната команда.

Този скрипт "run.sh" гарантира, че кодът е компилиран и след това изпълнява кода, превеждайки изхода във fluidsynth.

./ run.sh

Уверете се, че имате усилени високоговорители, свързани към 3,5 -милиметровия аудио жак на Raspberry Pi и трябва да чувате музика, докато премествате ръцете си над сензорите.

Ако не чувате музика и имате свързан 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.

Моля, посетете https://theotherandygrove.com/octasonic/ за пълна документация, включително съвети за отстраняване на неизправности, с конкретни статии за Rust и Python, както и информация за това как да получите поддръжка.

Следващи стъпки

След като стартирате проекта, препоръчвам да експериментирате с кода и да изпробвате различни музикални инструменти. Кодовете на инструментите MIDI са между 1 и 127 и са документирани тук.

Искате ли един музикален инструмент с всеки сензор да свири различна октава? Може би бихте искали всеки сензор да бъде отделен инструмент вместо това? Възможностите са почти неограничени!

Надявам се да ви хареса тази инструкция. Моля, харесайте, ако сте го направили, и не забравяйте да се абонирате за мен тук и за канала ми в YouTube, за да видите бъдещи проекти.

Препоръчано: