Оглавление:

Носимая технология: перчатка для изменения голоса: 7 шагов
Носимая технология: перчатка для изменения голоса: 7 шагов

Видео: Носимая технология: перчатка для изменения голоса: 7 шагов

Видео: Носимая технология: перчатка для изменения голоса: 7 шагов
Видео: Аудиокнига. B.Бeрeжной. Психотронные технологии воздействия 2024, Июль
Anonim
Wearable Tech: перчатка для изменения голоса
Wearable Tech: перчатка для изменения голоса
Wearable Tech: перчатка для изменения голоса
Wearable Tech: перчатка для изменения голоса

Что ж, похоже, перчатки с невероятной силой в наши дни в моде. Хотя Перчатка Бесконечности Таноса - довольно мощная перчатка, мы хотели создать перчатку, которая могла бы делать что-то еще более замечательное: изменять голос владельца в режиме реального времени.

Эта инструкция представляет собой пошаговое руководство по разработке перчаток для изменения голоса. В нашей конструкции использовались различные датчики и микроконтроллер в перчатке для обнаружения движений, которые отправлялись через код Arduino в патч Max, где наш звуковой сигнал затем изменялся и искажался забавными способами. Конкретные датчики, движения и звуковые изменения, которые мы использовали, могут быть гибкими для различных целей; это всего лишь один из способов создать перчатку, изменяющую голос!

Этот проект был частью общественного партнерства между студентами Pomona College и Fremont Academy of Engineering Femineers. Это действительно забавное сочетание электронной техники и элементов электронной музыки!

Шаг 1: материалы

Материалы
Материалы
Материалы
Материалы
Материалы
Материалы

Части:

  • Микроконтроллер HexWear (ATmega32U4) (https://hexwear.com/)
  • Акселерометр MMA8451 (https://www.adafruit.com/product/2019)
  • Короткие датчики Flex (x4) (https://www.adafruit.com/product/1070)
  • Легкая беговая перчатка
  • # 2 винты и шайбы (x8)
  • Обжимные концевые соединители; 22-18 калибра (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100шт)
  • Резистор 50 кОм (x4)
  • Проволока (~ 20 калибра)
  • Самоклеящаяся английская булавка
  • Войлок или другая ткань (~ 10 кв. Дюймов)
  • Швейная нить
  • Молнии
  • Ноутбук
  • USB-микрофон

Инструменты

  • Набор для пайки
  • Устройства для зачистки проводов и кусачки
  • Электроизоляционная лента
  • Пистолет горячего воздуха
  • Отвертка
  • Ножницы
  • Швейная иголка

Программное обеспечение:

  • Макс на велосипеде '74 (https://cycling74.com)
  • Программное обеспечение Arduino (https://www.arduino.cc/en/Main/Software)

Шаг 2: Установка программного обеспечения

Мы начинаем с того, что действительно является самой захватывающей частью любого проекта: с установки библиотек (и многого другого).

Ардуино:

Загрузите и установите программное обеспечение Arduino (https://www.arduino.cc/en/Main/Software).

HexWear:

1) (Только для Windows, пользователи Mac могут пропустить этот шаг) Установите драйвер, посетив https://www.redgerbera.com/pages/hexwear-driver-installation. Загрузите и установите драйвер (файл.exe, указанный на шаге 2 вверху связанной страницы RedGerbera).

2) Установите необходимую библиотеку для Hexware. Откройте IDE Arduino. В разделе «Файл» выберите «Настройки». В поле, предназначенном для URL-адресов Additional Boards Manager, вставьте

github.com/RedGerbera/Gerbera-Boards/raw/master/package_RedGerbera_index.json.

Затем нажмите «ОК».

Перейдите в Инструменты -> Доска: -> Менеджер доски. В меню в верхнем левом углу выберите «Внесено».

Найдите, а затем нажмите Gerbera Boards и нажмите Install. Закройте и снова откройте Arduino IDE.

Чтобы убедиться, что библиотека установлена правильно, перейдите в Инструменты -> Плата и прокрутите меню вниз. Вы должны увидеть раздел под названием «Доски с герберами», в котором должно быть хотя бы HexWear (если не больше досок, таких как mini-HexWear).

Акселерометр:

Загрузите и установите библиотеку акселерометра (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)

Шаг 3: Присоединение акселерометра

Присоединение акселерометра
Присоединение акселерометра
Присоединение акселерометра
Присоединение акселерометра

Для взаимодействия с этим проектом нам нужны два основных типа датчиков: акселерометр и датчики изгиба. Мы рассмотрим их по очереди, начиная с акселерометра. Во-первых, нам нужно согласовать аппаратные соединения.

Чтобы не повредить шестигранник, мы рекомендуем вставить винт №2 и шайбу в нужные отверстия, а затем прикрепить все соединения к этому винту. Во избежание расшатывания чего-либо при игре с перчаткой соединения следует припаять и / или обжать. Используя несколько дюймов провода для каждого подключения, выполните следующие подключения шестигранника к акселерометру (для справки см. Распиновку выше):

ВХОДНОЕ НАПРЯЖЕНИЕ ВНУТРЕННИЙ GNDSCL / D3 SCLSDA / D2 SDA

Когда все подключено, мы готовы к тестированию!

В качестве теста запустите пример кода акселерометра в Arduino (Файл-> Примеры-> Adafruit_MMA8451-> MMA8451demo), убедившись, что он может выводить на последовательный монитор. Он должен выводить ускорение свободного падения (~ 10 м / с) в направлении z, когда он удерживается на горизонтальном уровне. Наклоняя акселерометр, это ускорение будет измеряться в направлении x или y; мы будем использовать это, чтобы позволить владельцу изменять звук, вращая рукой!

Теперь нам нужно представить данные акселерометра таким образом, чтобы их можно было связать с Максом. Для этого мы должны вывести значения x и y, возможно, модифицированные для соответствия желаемому диапазону (см. Часть 6). В нашем прилагаемом коде мы делаем следующее:

// Измерьте направление оси x и направление y. Мы делим и умножаем, чтобы получить правильный диапазон для MAX (диапазон 1000 по x и диапазон 40 по y) xdir = event.acceleration.x / 0.02; ydir = abs (event.acceleration.y) * 2; // Распечатать все в удобочитаемом для Max формате - с пробелами между каждым числом Serial.print (xdir); Serial.print ("");

Это должно заставить Hex печатать измененные значения направлений x и y акселерометра каждую строку. Теперь мы готовы добавить гибкие датчики!

Шаг 4: прикрепление гибких датчиков

Присоединение датчиков Flex
Присоединение датчиков Flex
Присоединение датчиков Flex
Присоединение датчиков Flex
Присоединение датчиков Flex
Присоединение датчиков Flex

Владелец может получить множество потенциальных средств управления звуком, если мы сможем обнаружить сгибание пальцев. Сенсоры изгиба сделают именно это. Каждый датчик изгиба - это, по сути, потенциометр, где несгибаемый датчик имеет сопротивление ~ 25 кОм, а полностью изогнутый - ~ 100 кОм. Мы помещаем каждый гибкий датчик в простой делитель напряжения с резистором 50 кОм, как показано на первом изображении.

Опять же, используя довольно короткие отрезки провода (имейте в виду, что все они будут умещаться на тыльной стороне перчатки), припаяйте четыре модуля делителя напряжения. Четыре модуля будут иметь одинаковые Vin и землю - мы скрутили вместе зачищенные концы проводов, чтобы у нас был только один вывод для пайки. Наконец, возьмите четыре модуля и выполните соединения, показанные на втором изображении (если кто-то знает, как это сделать, не создавая ужасно запутанного беспорядка, пожалуйста, раскройте свои секреты).

Теперь нам нужен код Arduino для считывания напряжений с каждого датчика. Для наших целей мы рассматривали гибкие датчики как переключатели; они были либо включены, либо выключены. Таким образом, наш код просто устанавливает порог напряжения - выше этого порога мы выводим 1 на последовательный порт (это означает, что датчик изогнут), в противном случае мы выводим 0:

// Берем количество

аналоговые образцы и сложите их для каждого датчика Flex

while (sample_count <NUM_SAMPLES) {

sum10 + = analogRead (A10);

sum9 + = analogRead (A9);

sum7 + = analogRead (A7);

sum11 + = analogRead (A11);

sample_count ++;

// Небольшая задержка, чтобы не принимать их слишком быстро

задержка (5);

}

// рассчитываем напряжение, усреднение по быстрым выборкам

// используйте 5.0 для 5.0V ADC

опорное напряжение

// 5.015V откалибровано

опорное напряжение

напряжение10 = ((float) sum10 /

(с плавающей точкой) NUM_SAMPLES * 5.015) / 1024.0;

напряжение9 = ((float) sum9 /

(с плавающей точкой) NUM_SAMPLES * 5.015) / 1024.0;

напряжение7 = ((float) sum7 /

(с плавающей точкой) NUM_SAMPLES * 5.015) / 1024.0;

напряжение11 = ((float) sum11 /

(с плавающей точкой) NUM_SAMPLES * 5.015) / 1024.0;

// Проверяем, каждый ли датчик гибкости

больше порога (thresh) - если да, задайте число

// Мизинец

если (напряжение10> порог)

{

// - 5 на повышение

высота голоса на одну октаву

flex10 = -10;

}

иначе flex10 = 0;

//Безымянный палец

если (напряжение9>

(порог-0,4)) {

// от 5 до ниже

высота голоса на одну октаву

flex9 = 5;

}

иначе flex9 = 0;

//Средний палец

if (Voltage7> thresh) {

// 1 для установки

эффект реверберации

flex7 = 1;

}

иначе flex7 = 0;

//Указательный палец

если (напряжение11> порог)

{

// 50 для установки

циклы до 50

flex11 = 93;

}

иначе flex11 = 0;

// Сбросить все подсчеты

переменная до 0 для следующего цикла

sample_count = 0;

sum10 = 0;

sum9 = 0;

sum7 = 0;

sum11 = 0;

На этом этапе последовательный порт должен отображать значения ориентации акселерометра, а также наличие изгиба каждого датчика изгиба. Мы готовы поговорить с Максом по нашему коду Arduino!

Шаг 5: взаимодействие с Максом

Взаимодействие с Максом
Взаимодействие с Максом

Теперь, когда шестнадцатеричный код передает множество чисел через последовательный порт, нам нужно программное обеспечение Max для чтения этих сигналов. Блок кода, изображенный выше, делает именно это! Всегда пожалуйста.

Важное примечание: после загрузки кода в шестнадцатеричный код закройте все окна последовательного порта, затем измените обведенную букву в максимальном коде, чтобы она соответствовала шестнадцатеричному порту. Если вы не уверены, какую букву установить, нажатие на «печать» части кода Max отобразит список всех подключенных портов.

Печатная строка из последовательного порта Hex считывается через блок кода Max, а затем разделяется на основе разделителей пробелов. Выходные данные в конце блока Max позволяют захватывать каждое число индивидуально, поэтому мы подключим первое выходное пространство к тому месту, где мы хотим, чтобы направление акселерометра было направлено по оси x, второе пространство будет направлением по оси Y и т. Д. теперь просто подключите их к числовым блокам, чтобы убедиться, что они работают. Вы должны иметь возможность перемещать акселерометр и датчики изгиба и видеть изменение чисел в программном обеспечении Max.

Шаг 6. Построение остальной части кода Max

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

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

Некоторые другие советы по устранению неполадок Max:

  • Если вы не слышите звук

    • убедитесь, что Макс настроен на получение звука с вашего микрофона (Параметры устройства ввода состояния звука)
    • убедитесь, что ползунок Master Volume в Max включен, и любые другие регуляторы громкости, которые могут быть в вашем коде
  • Если код ничего не делает

    • убедитесь, что ваш патч заблокирован (символ замка в нижнем левом углу)
    • с помощью показаний в патче Max убедитесь, что ваш патч Max по-прежнему получает данные из последовательного порта Arduino. Если нет, попробуйте сбросить настройки последовательного порта (как описано в шаге 5) и / или проверить физические соединения проводки.
  • Странные шумы отсечения при изменении параметров

    это как-то связано с тем, как работают ~ tapin и ~ tapout; в частности, когда вы меняете их значения, они сбрасываются, что вызывает отсечение. Учитывая наши ограниченные знания о программе, мы почти уверены, что есть лучший способ сделать это в Max и устранить проблему …

Шаг 7: Собираем все вместе в буквальном смысле

Буквально собираем все вместе
Буквально собираем все вместе
Буквально собираем все вместе
Буквально собираем все вместе
Буквально собираем все вместе
Буквально собираем все вместе
Буквально собираем все вместе
Буквально собираем все вместе

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

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

Вы готовы испытать свою силу пения! (Мы настоятельно рекомендуем Daft Punk «Harder Better Faster Stronger», чтобы полностью продемонстрировать ваши возможности изменения голоса)

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