Съдържание:

Носеща се технология: Ръкавица за смяна на глас: 7 стъпки
Носеща се технология: Ръкавица за смяна на глас: 7 стъпки

Видео: Носеща се технология: Ръкавица за смяна на глас: 7 стъпки

Видео: Носеща се технология: Ръкавица за смяна на глас: 7 стъпки
Видео: Детето ми се храни само със зеленчуци 2024, Ноември
Anonim
Носима технология: Ръкавица за промяна на гласа
Носима технология: Ръкавица за промяна на гласа
Носима технология: Ръкавица за промяна на гласа
Носима технология: Ръкавица за промяна на гласа

Е, изглежда, че ръкавиците с невероятни сили са ярост в наши дни. Докато Innosity Gauntlet на Thanos е доста мощна ръкавица, ние искахме да направим ръкавица, която би могла да направи нещо още по-забележително: да промени гласа на потребителя в реално време.

Тази инструкция предоставя подробна информация за това как проектирахме ръкавица за промяна на гласа. Нашият дизайн използва различни сензори и микроконтролер в ръкавицата, за да открие движения, които бяха изпратени чрез код на Arduino до макс кръпка, където след това нашият аудио сигнал беше променен и изкривен по забавни начини. Конкретните сензори, движения и звукови промени, които използвахме, са гъвкави за различни съображения; това е само един от начините за създаване на променяща гласа ръкавица!

Този проект беше част от партньорство на общността между студентите от колежа Pomona и Академията за инженерни феминисти във Фремонт. Това е истинска забавна комбинация от електронно инженерство и елементи от електронна музика!

Стъпка 1: Материали

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

Части:

  • Микроконтролер HexWear (ATmega32U4) (https://hexwear.com/)
  • Акселерометър MMA8451 (https://www.adafruit.com/product/2019)
  • Къси гъвкави сензори (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- 100pk)
  • 50kΩ резистор (x4)
  • Тел (~ 20 габарит)
  • Самозалепващ се щифт за безопасност
  • Филц или друг плат (~ 10 кв. Инча)
  • Конец за шиене
  • Ципове
  • Лаптоп
  • USB микрофон

Инструменти

  • Комплект за запояване
  • Машини за отстраняване на тел и ножове за тел
  • Електрическо тиксо
  • Пистолет с горещ въздух
  • Отвертка
  • Ножици
  • Игла за шиене

Софтуер:

  • Макс от колоездене '74 (https://cycling74.com)
  • Софтуер Arduino (https://www.arduino.cc/en/Main/Software)

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

Започваме с това, което наистина е най -вълнуващата част от всеки проект: инсталиране на библиотеки (и повече).

Arduino:

Изтеглете и инсталирайте софтуера 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. Отворете Arduino IDE. Под „Файл“изберете „Предпочитания“. Поставете в предвиденото място за допълнителни URL адреси на мениджъра на дъски

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

След това кликнете върху „OK“.

Отидете на Инструменти -> Борд: -> Управител на борда. От менюто в горния ляв ъгъл изберете „Принос“.

Потърсете и след това щракнете върху Gerbera Boards и щракнете върху Install. Затворете и отворете отново Arduino IDE.

За да се уверите, че библиотеката е инсталирана правилно, отидете на Инструменти -> Борд и превъртете до дъното на менюто. Трябва да видите раздел, озаглавен „Табла Gerbera“, под който поне трябва да се появи HexWear (ако не и повече дъски като mini-HexWear).

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

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

Стъпка 3: Прикрепване на акселерометъра

Прикрепване на акселерометъра
Прикрепване на акселерометъра
Прикрепване на акселерометъра
Прикрепване на акселерометъра

Нуждаем се от два основни типа сензори, за да взаимодействаме с този проект: акселерометър и сензори за огъване. Ще ги разгледаме наведнъж, като започнем с акселерометъра. Първо, имаме нужда от хардуерни връзки, за да съвпадат.

За да избегнете повреда на вашия Hex, препоръчваме да поставите винт #2 и шайба през желаните портове, след което да прикрепите всички връзки към този винт. За да се предотврати разхлабването на нещо при игра с ръкавицата, връзките трябва да бъдат запоени и/или нагънати. Използвайки няколко сантиметра проводник за всяка връзка, направете следните връзки от Hex към акселерометъра (вижте изводите по -горе за справка):

ВХОДНО НАПРЕЖЕНИЕ VINGROUND GNDSCL/D3 SCLSDA/D2 SDA

С всичко свързано, ние сме готови да тестваме!

Като тест стартирайте примерния код на акселерометъра в Arduino (Файл-> Примери-> Adafruit_MMA8451-> MMA8451demo), като се уверите, че той може да извежда на серийния монитор. Той трябва да извежда ускорението поради гравитацията (~ 10m/s) в посока z, когато се държи на ниво. Чрез накланяне на акселерометъра, това ускорение ще бъде измерено в посока x или y; ще използваме това, за да позволим на потребителя да промени звука, като завърти ръката си!

Сега трябва да представим данните за акселерометъра по такъв начин, че да могат да бъдат свързани с Max. За да направим това, трябва да отпечатаме стойностите на 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: Прикрепване на гъвкавите сензори

Прикрепване на гъвкавите сензори
Прикрепване на гъвкавите сензори
Прикрепване на гъвкавите сензори
Прикрепване на гъвкавите сензори
Прикрепване на гъвкавите сензори
Прикрепване на гъвкавите сензори

Носителят може да получи много потенциални звукови контроли, ако можем да открием огъване на пръстите. Гъвкавите сензори ще направят точно това. Всеки гъвкав сензор е по същество потенциометър, където негънат има съпротивление ~ 25KΩ, докато напълно огънат има съпротивление ~ 100KΩ. Поставяме всеки гъвкав сензор в обикновен делител на напрежение с 50K резистор, както е показано на първото изображение.

Отново използвайки сравнително къси дължини на проводника (имайте предвид, че всичко това ще се монтира на гърба на ръкавица), запоявайте четири разделителни модула на напрежението. Четирите модула ще споделят един и същ 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 = ((плаваща) сума10 /

(плаващ) NUM_SAMPLES * 5.015) / 1024.0;

напрежение9 = ((плаваща) сума9/

(плаващ) NUM_SAMPLES * 5.015) / 1024.0;

напрежение7 = ((плаваща) сума7 /

(плаващ) NUM_SAMPLES * 5.015) / 1024.0;

напрежение11 = ((плаваща) сума11 /

(плаващ) NUM_SAMPLES * 5.015) / 1024.0;

// Проверете дали всеки сензор за огъване

е по -голямо от прага (thresh) - ако е така, задайте номера

// Pinkie пръст

ако (напрежение10> праг)

{

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

височина на гласа с една октава

flex10 = -10;

}

иначе flex10 = 0;

//Безименен пръст

ако (напрежение9>

(thresh-0.4)) {

// 5 за понижаване

височина на гласа с една октава

flex9 = 5;

}

else flex9 = 0;

//Среден пръст

ако (напрежение7> прах) {

// 1 за задаване

ефект на реверберация

flex7 = 1;

}

else flex7 = 0;

//Показалец

ако (напрежение11> праг)

{

// 50 за задаване

цикли до 50

flex11 = 93;

}

иначе flex11 = 0;

// Нулиране на цялото броене

променлива на 0 за следващия цикъл

sample_count = 0;

сума10 = 0;

сума9 = 0;

сума7 = 0;

sum11 = 0;

В този момент серийният порт трябва да показва стойности за ориентацията на акселерометъра, както и дали всеки гъвкав сензор е огънат. Готови сме да получим нашия код на Arduino, разговаряйки с Макс!

Стъпка 5: Взаимодействие с Макс

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

Сега, когато шестнадесетичният код изплюва много числа през серийния порт, се нуждаем от софтуера Max за четене на тези сигнали. Блокът код, показан по -горе, прави точно това! Вие сте добре дошли.

Важна забележка: след като качите кода в Hex, затворете всички прозорци на серийния порт, след това променете закръглената буква в кода Max, така че да съответства на Hex порта. Ако не сте сигурни коя буква да зададете, натискането на частта „печат“на макс кода ще изброи всички свързани портове.

Отпечатаният ред от серийния порт на Hex се чете през кодовия блок Max и след това се разделя въз основа на разделителите на пространството. Изходът в края на блока Max ви позволява да вземете всяко число поотделно, така че ще свържем първото изходно пространство с мястото, където искаме да отиде посоката x на акселерометъра, второто пространство ще бъде посоката y и т.н. сега просто ги свържете към числови блокове, за да сте сигурни, че работят. Трябва да можете да преместите акселерометъра и сензорите за гъвкавост и да видите как се променят числата в софтуера Max.

Стъпка 6: Изграждане на останалата част от максималния код

Като се има предвид силата на езика Max, тук наистина можете да развихрите въображението си с всички начини, по които можете да промените входящия звуков сигнал с магическата си ръкавица. И все пак, ако ви свършат идеите, по -горе е даден преглед на това, което прави нашият Max код и как работи.

За всеки параметър, който се опитвате да промените, вероятно ще искате да се забъркате с диапазона от стойности, идващи от кода на Arduino, за да получите точно подходящата чувствителност.

Някои други съвети за отстраняване на неизправности на Max:

  • Ако не чувате звук

    • уверете се, че Max е настроен да получава аудио от вашия микрофон (Опции Аудио Състояние Входно устройство)
    • уверете се, че плъзгачът Master Volume в Max е включен и всички други контроли за сила на звука, които може да имате в кода си
  • Ако кодът не изглежда да прави нищо

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

    това е свързано с начина, по който ~ тапин и ~ тапуут работят; по -специално, че когато промените техните стойности, те се нулират, което причинява изрязването. Предвид нашите ограничени познания за програмата, ние сме почти сигурни, че има по -добър начин да направите това в Max и да отстраните проблема …

Стъпка 7: Буквално всичко заедно

Буквално сглобявайки всичко
Буквално сглобявайки всичко
Буквално сглобявайки всичко
Буквално сглобявайки всичко
Буквално сглобявайки всичко
Буквално сглобявайки всичко
Буквално всичко заедно
Буквално всичко заедно

Сега остава само да прикрепим веригата си към ръкавицата. Вземете допълнителната си тъкан и изрежете ленти, малко по -големи от сензорите за огъване. Зашийте допълнителната тъкан към пръста на ръкавицата, където коляното се огъва, оставяйки нещо като втулка, в която сензорът за гъвкавост може да седне (не можем просто да залепим сензорите за гъвкавост директно към ръкавицата, защото тъканта на ръкавицата се разтяга, докато пръстите се огъват). След като ръкавът е предимно зашит, плъзнете гъвкавия сензор навътре и внимателно зашийте проводниците към ръкавицата, като фиксирате гъвкавия сензор на място. Повторете това за всеки гъвкав сензор.

След това използвайте самозалепващия предпазен щифт, за да прикрепите шестоъгълника към задната част на ръкавицата (може да искате да поставите малко горещо лепило върху щифта, за да сте сигурни, че той не се разпада по време на износване). Зашийте акселерометъра към китката на ръкавицата. И накрая, използвайте магията на ципове, за да почистите красиво всички грозни проводници.

Готови сте да подложите на изпитание най -добрата си пееща ръкавица! (Можем силно да препоръчаме „Harder Better Faster Stronger“на Daft Punk, за да покажете напълно способностите си за промяна на гласа)

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