Оглавление:

Ультразвуковое пианино с управлением жестами !: 10 шагов (с изображениями)
Ультразвуковое пианино с управлением жестами !: 10 шагов (с изображениями)

Видео: Ультразвуковое пианино с управлением жестами !: 10 шагов (с изображениями)

Видео: Ультразвуковое пианино с управлением жестами !: 10 шагов (с изображениями)
Видео: Математика это не Ислам 2024, Ноябрь
Anonim
Image
Image
Ультразвуковое пианино с управлением жестами!
Ультразвуковое пианино с управлением жестами!

В этом проекте используются недорогие ультразвуковые датчики HC-SR04 в качестве входов и генерируются MIDI-ноты, которые можно воспроизводить через синтезатор на Raspberry Pi для получения высококачественного звука.

В проекте также используется базовая форма управления жестами, когда музыкальный инструмент можно менять, удерживая руки над двумя крайними датчиками в течение нескольких секунд. Другой жест можно использовать для выключения Raspberry Pi после того, как вы закончите.

На видео выше показан готовый продукт в простом корпусе, вырезанном лазером. Позже в этом руководстве вы найдете более подробное видео, в котором объясняется, как работает проект.

Я создал этот проект вместе с 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. Обычно триггер и эхо подключаются к отдельным контактам микроконтроллера или Raspberry Pi, но это означает, что вам потребуется использовать 16 контактов для подключения 8 датчиков, а это непрактично. Вот где вступает в действие коммутационная плата Octasonic. Эта плата подключается ко всем датчикам и имеет специальный микроконтроллер, который контролирует датчики, а затем обменивается данными с Raspberry Pi через SPI.

HC-SR04 требует 5 В, а Raspberry Pi только 3,3 В, поэтому нам также нужен преобразователь логического уровня, который будет подключать Raspberry Pi к коммутационной плате Octasonic.

Шаг 2: Подключите ультразвуковые датчики к плате Octasonic

Подключите ультразвуковые датчики к плате Octasonic
Подключите ультразвуковые датчики к плате Octasonic
Подключите ультразвуковые датчики к плате Octasonic
Подключите ультразвуковые датчики к плате Octasonic

Используйте 4 перемычки «мама-мама» для подключения каждого ультразвукового датчика к плате, соблюдая правила их подключения. Плата сконструирована таким образом, что контакты расположены в том же порядке, что и контакты ультразвукового датчика. Слева направо на плате контакты: GND, Trigger, Echo, 5V.

Шаг 3. Подключите преобразователь логического уровня к плате Octasonic

Подключите преобразователь логического уровня к плате Octasonic
Подключите преобразователь логического уровня к плате Octasonic

Raspberry Pi и Octasonic Board общаются через SPI. SPI использует 4 провода:

  • Главный вход, подчиненный выход (MISO)
  • Главный выход, подчиненный вход (MOSI)
  • Последовательные часы (SCK)
  • Выбор ведомого (SS)

Дополнительно нам нужно подключить питание (5В и GND).

Преобразователь логического уровня имеет две стороны - низкое напряжение (LV) и высокое напряжение (HV). Raspberry будет подключаться к низковольтной стороне, так как это 3,3 В. Octasonic будет подключаться к стороне ВН, так как это 5 В.

Этот шаг предназначен для подключения Octasonic к стороне высокого напряжения преобразователя логического уровня

См. Прилагаемую к этому шагу фотографию, на которой показано, какие контакты должны быть подключены к преобразователю логического уровня.

Подключения 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 провода:

  • Главный вход, подчиненный выход (MISO)
  • Главный выход, подчиненный вход (MOSI)
  • Последовательные часы (SCK)
  • Выбор ведомого (SS)

Дополнительно нам нужно подключить питание (3,3 В и GND). Преобразователь логического уровня имеет две стороны - низкое напряжение (LV) и высокое напряжение (HV). Raspberry будет подключаться к низковольтной стороне, так как это 3,3 В. Octasonic будет подключаться к стороне ВН, так как это 5 В.

Этот шаг предназначен для подключения 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

Остается добавить еще один провод. Нам действительно нужно запитать плату Octasonic с помощью 5 В, поэтому мы делаем это, подключив один из контактов 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 upgrade

Включить SPI

Вы должны включить SPI на Raspberry Pi, чтобы этот проект работал! Для этого используйте утилиту настройки Raspberry Pi.

Также важно перезагрузить Pi после включения SPI, чтобы он вступил в силу

Установить FluidSynth

Fluidsynth - это потрясающий бесплатный MIDI-синтезатор. Вы можете установить его из командной строки с помощью этой команды:

sudo apt-get install fluidsynth

Установите язык программирования Rust

Ultrasonic Pi Piano реализован на языке программирования 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 Ультразвуковое пианино

сборка груза - выпуск

Протестируйте код

Прежде чем перейти к созданию музыки на следующем этапе, давайте убедимся, что программное обеспечение работает и мы можем считывать достоверные данные с датчиков.

Используйте следующую команду для запуска приложения. Это будет считывать данные с датчиков и переводить их в 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 и перезагрузка пи.

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

Следующие шаги

Когда проект заработает, я рекомендую поэкспериментировать с кодом и попробовать разные музыкальные инструменты. Коды MIDI-инструментов находятся в диапазоне от 1 до 127 и задокументированы здесь.

Вы хотите, чтобы один музыкальный инструмент с каждым датчиком играл на разную октаву? Возможно, вы хотите, чтобы каждый датчик был отдельным прибором? Возможности практически безграничны!

Надеюсь, вам понравилось это наставление. Пожалуйста, понравитесь, если да, и не забудьте подписаться на меня здесь и на мой канал YouTube, чтобы увидеть будущие проекты.

Рекомендуемые: