Spisu treści:
- Krok 1: Materiały
- Krok 2: Instalacja oprogramowania
- Krok 3: Podłączanie akcelerometru
- Krok 4: Mocowanie czujników Flex
- Krok 5: Połączenie z Max
- Krok 6: Budowanie reszty kodu Max
- Krok 7: Dosłowne połączenie wszystkiego
Wideo: Technika do noszenia: rękawica do zmiany głosu: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Wygląda na to, że rękawice o niesamowitych mocach są w dzisiejszych czasach modne. Rękawica Nieskończoności Thanosa to dość potężna rękawica, ale chcieliśmy stworzyć rękawicę, która mogłaby zrobić coś jeszcze bardziej niezwykłego: zmienić głos użytkownika w czasie rzeczywistym.
Ta instrukcja zawiera opis sposobu, w jaki zaprojektowaliśmy rękawicę do zmiany głosu. Nasz projekt wykorzystywał różne czujniki i mikrokontroler w rękawicy do wykrywania ruchów, które były wysyłane za pomocą kodu Arduino do patcha Max, gdzie nasz sygnał audio był następnie zmieniany i zniekształcany w zabawny sposób. Konkretne czujniki, ruchy i zmiany dźwięku, których używaliśmy, są elastyczne dla różnych rozważań; to tylko jeden sposób na stworzenie rękawicy zmieniającej głos!
Projekt ten był częścią partnerstwa społeczności pomiędzy studentami Pomona College i Akademią Inżynierii Feministycznej Fremont. To naprawdę zabawna mieszanka inżynierii elektronicznej i elementów muzyki elektronicznej!
Krok 1: Materiały
Części:
- Mikrokontroler HexWear (ATmega32U4) (https://hexwear.com/)
- Akcelerometr MMA8451 (https://www.adafruit.com/product/2019)
- Czujniki krótkiego ugięcia (x4) (https://www.adafruit.com/product/1070)
- Lekkie rękawice do biegania
- #2 śruby i podkładki (x8)
- Złącza zaciskane; Wskaźnik 22-18 (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100pk)
- Rezystor 50kΩ (x4)
- Drut (grubość ~20)
- Samoprzylepna agrafka
- Filc lub inna tkanina (~10 cali kwadratowych)
- Nić
- Zipties
- Laptop
- Mikrofon USB
Narzędzia
- Zestaw lutowniczy
- Narzędzia do ściągania izolacji i przecinaki do drutu
- Taśma elektryczna
- Pistolet na gorące powietrze
- Śrubokręt
- Nożyce
- Igła
Oprogramowanie:
- Max rowerem '74 (https://cycling74.com)
- Oprogramowanie Arduino (https://www.arduino.cc/en/Main/Software)
Krok 2: Instalacja oprogramowania
Zaczynamy od tego, co jest naprawdę najbardziej ekscytującą częścią każdego projektu: instalacją bibliotek (i nie tylko).
Arduino:
Pobierz i zainstaluj oprogramowanie Arduino (https://www.arduino.cc/en/Main/Software).
HexWear:
1) (Tylko Windows, użytkownicy komputerów Mac mogą pominąć ten krok) Zainstaluj sterownik, odwiedzając stronę https://www.redgerbera.com/pages/hexwear-driver-installation. Pobierz i zainstaluj sterownik (plik.exe wymieniony w kroku 2 u góry połączonej strony RedGerbera).
2) Zainstaluj wymaganą bibliotekę dla Hexware. Otwórz środowisko Arduino IDE. W sekcji „Plik” wybierz „Preferencje”. W miejscu przewidzianym na adresy URL Menedżera tablic dodatkowych wklej
github.com/RedGerbera/Gerbera-Boards/raw/master/package_RedGerbera_index.json.
Następnie kliknij "OK".
Przejdź do Narzędzia -> Tablica: -> Zarządca tablicy. Z menu w lewym górnym rogu wybierz "Wkład".
Wyszukaj, a następnie kliknij Tablice Gerbera i kliknij Zainstaluj. Zamknij i ponownie otwórz Arduino IDE.
Aby upewnić się, że biblioteka jest poprawnie zainstalowana, przejdź do Narzędzia -> Tablica i przewiń na dół menu. Powinieneś zobaczyć sekcję zatytułowaną „Tablica Gerbera”, pod którą powinna pojawić się przynajmniej HexWear (jeśli nie więcej płyt jak mini-HexWear).
Akcelerometr:
Pobierz i zainstaluj bibliotekę akcelerometrów (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)
Krok 3: Podłączanie akcelerometru
Aby móc współpracować z tym projektem, potrzebujemy dwóch głównych typów czujników: akcelerometru i czujników giętkich. Będziemy je badać pojedynczo, zaczynając od akcelerometru. Najpierw musimy dopasować połączenia sprzętowe.
Aby uniknąć uszkodzenia sześciokąta, zalecamy włożenie śruby nr 2 i podkładki przez żądane porty, a następnie przymocowanie wszystkich połączeń do tej śruby. Aby nic nie poluzowało się podczas zabawy rękawicą, połączenia powinny być przylutowane i/lub zaciśnięte. Używając kilku cali drutu do każdego połączenia, wykonaj następujące połączenia od Hex do akcelerometru (patrz powyższe wyprowadzenia w celach informacyjnych):
NAPIĘCIE WEJŚCIOWE VINGROUND GNDSCL/D3 SCLSDA/D2 SDA
Po podłączeniu wszystkiego jesteśmy gotowi do testów!
W ramach testu uruchom przykładowy kod akcelerometru w Arduino (File->Examples->Adafruit_MMA8451->MMA8451demo), upewniając się, że może on wysyłać dane do monitora szeregowego. Powinien generować przyspieszenie ziemskie (~10 m/s) w kierunku z, gdy jest utrzymywane w poziomie. Przy przechylaniu akcelerometru przyspieszenie to będzie mierzone w kierunku x lub y; użyjemy tego, aby umożliwić użytkownikowi zmianę dźwięku, obracając ręką!
Teraz musimy przedstawić dane akcelerometru w taki sposób, aby mógł być połączony z Maxem. Aby to zrobić, musimy wydrukować wartości x i y, być może zmodyfikowane tak, aby pasowały do pożądanego zakresu (patrz część 6). W naszym kodzie załączonym tutaj wykonujemy następujące czynności:
//Zmierz kierunek-x i y-kierunek. Dzielimy i mnożymy, aby uzyskać odpowiednie zakresy dla MAX (zakres 1000 w x i zakres 40 w y) xdir = event.acceleration.x/0.02; ydir = abs(zdarzenie.przyspieszenie.y)*2; //Wydrukuj wszystko w formacie czytelnym dla Maxa - ze spacjami między każdą liczbą Serial.print(xdir); Serial.print(" ");
Powinno to spowodować, że Hex wydrukuje zmodyfikowane wartości kierunków x i y akcelerometru w każdej linii. Teraz jesteśmy gotowi do dodania czujników flex!
Krok 4: Mocowanie czujników Flex
Użytkownik może uzyskać wiele potencjalnych kontroli dźwięku, jeśli wykryjemy zginanie palców. Czujniki flex zrobią właśnie to. Każdy czujnik wygięcia jest zasadniczo potencjometrem, w którym niewygięty ma rezystancję ~25KΩ, podczas gdy w pełni wygięty ma rezystancję ~100KΩ. Każdy czujnik flex umieszczamy w prostym dzielniku napięcia z rezystorem 50K, jak pokazano na pierwszym obrazku.
Ponownie używając dość krótkich odcinków drutu (pamiętaj, że wszystko będzie pasować do tyłu rękawicy), przylutuj cztery moduły dzielnika napięcia. Cztery moduły będą dzielić ten sam Vin i uziemienie - skręciliśmy razem pozbawione izolacji końce przewodów, więc mielibyśmy tylko jeden przewód do lutowania. Na koniec weź cztery moduły i wykonaj połączenia pokazane na drugim obrazku (jeśli ktoś wie, jak to zrobić bez robienia strasznego bałaganu, ujawnij swoje sekrety).
Teraz potrzebujemy kodu Arduino, aby odczytać napięcia z każdego czujnika. Dla naszych celów potraktowaliśmy czujniki flex jako przełączniki; były albo włączone, albo wyłączone. W związku z tym nasz kod po prostu ustawia próg napięcia - powyżej tego progu wyprowadzamy 1 na port szeregowy (co oznacza, że czujnik jest zgięty), w przeciwnym razie wyprowadzamy 0:
// Weź liczbę
próbki analogowe i dodaj je dla każdego czujnika Flex
while (liczba próbek < NUM_SAMPLES) {
sum10 += odczyt analogowy(A10);
sum9 += odczyt analogowy(A9);
suma7 += odczyt analogowy(A7);
suma11 += odczyt analogowy(A11);
liczba_próbek++;
//Krótkie opóźnienie, aby nie robić ich zbyt szybko
opóźnienie(5);
}
// oblicz napięcie, uśrednianie szybkich próbek
// użyj 5.0 dla ADC 5.0 V
napięcie odniesienia
// 5.015 V jest skalibrowany
napięcie odniesienia
napięcie10 = ((zmiennoprzecinkowa)suma10 /
(liczba zmiennoprzecinkowa) NUM_SAMPLES * 5,015) / 1024,0;
napięcie9 = ((zmiennoprzecinkowa)suma9/
(liczba zmiennoprzecinkowa) NUM_SAMPLES * 5,015) / 1024,0;
napięcie7 = ((zmiennoprzecinkowa)suma7 /
(liczba zmiennoprzecinkowa) NUM_SAMPLES * 5,015) / 1024,0;
napięcie11 = ((zmiennoprzecinkowa)suma11 /
(liczba zmiennoprzecinkowa) NUM_SAMPLES * 5,015) / 1024,0;
//Sprawdź, czy każdy czujnik flex
jest większa niż próg (thresh) - jeśli tak, ustaw liczbę
//Różowy palec
jeśli (napięcie10 > thresh)
{
//-5 do podbicia
wysokość głosu o jedną oktawę
flex10 = -10;
}
w przeciwnym razie flex10 = 0;
//Palec serdeczny
jeśli (napięcie9 >
(próg-0,4)) {
//5 aby obniżyć
wysokość głosu o jedną oktawę
elastyczność9 = 5;
}
w przeciwnym razie flex9 = 0;
//Środkowy palec
jeśli (napięcie7 > próg) {
//1 do ustawienia
efekt pogłosu
elastyczność7 = 1;
}
inaczej flex7 = 0;
//Palec wskazujący
jeśli (napięcie11 > próg)
{
//50 do ustawienia
cykli do 50
zginanie11 = 93;
}
w przeciwnym razie flex11 = 0;
//Zresetuj wszystkie liczenia
zmienna na 0 dla następnej pętli
liczba_próbek = 0;
suma10 = 0;
suma9 = 0;
suma7 = 0;
suma11 = 0;
W tym momencie port szeregowy powinien pokazywać wartości orientacji akcelerometru, a także to, czy każdy czujnik zgięcia jest wygięty. Jesteśmy gotowi, aby nasz kod Arduino porozmawiał z Maxem!
Krok 5: Połączenie z Max
Teraz, gdy kod szesnastkowy wysyła wiele liczb przez port szeregowy, potrzebujemy oprogramowania Max, aby odczytać te sygnały. Przedstawiony powyżej blok kodu właśnie to robi! Nie ma za co.
Ważna uwaga: po przesłaniu kodu do Hex, zamknij wszystkie okna portu szeregowego, a następnie zmień zakreśloną literę w kodzie Max, aby pasowała do portu Hex. Jeśli nie masz pewności, którą literę ustawić, naciśnięcie części „drukuj” kodu Max spowoduje wyświetlenie listy wszystkich podłączonych portów.
Wydrukowana linia z portu szeregowego Hex jest odczytywana przez blok kodu Max, a następnie dzielona na podstawie ograniczników spacji. Wyjście na końcu bloku Max pozwala pobrać każdą liczbę indywidualnie, więc połączymy pierwszą przestrzeń wyjściową tam, gdzie chcemy, aby kierunek x akcelerometru poszedł, druga przestrzeń będzie kierunkiem y, itd. Dla teraz po prostu połącz je z blokami liczb, aby upewnić się, że działają. Powinieneś być w stanie poruszać akcelerometrem i czujnikami zgięcia i widzieć zmiany liczb w oprogramowaniu Max.
Krok 6: Budowanie reszty kodu Max
Biorąc pod uwagę moc języka Max, możesz naprawdę puścić wodze fantazji dzięki wszystkim sposobom, w jakie możesz zmienić przychodzący sygnał dźwiękowy za pomocą magicznej rękawicy mocy. Mimo to, jeśli skończą Ci się pomysły, powyżej znajduje się podsumowanie tego, co robi nasz kod Max i jak działa.
Dla każdego parametru, który próbujesz zmienić, prawdopodobnie będziesz chciał poeksperymentować z zakresem wartości pochodzących z kodu Arduino, aby uzyskać odpowiednią czułość.
Kilka innych wskazówek dotyczących rozwiązywania problemów z Maxem:
-
Jeśli nie słyszysz dźwięku
- upewnij się, że Max jest ustawiony na odbiór dźwięku z mikrofonu (Opcje Urządzenie wejściowe stanu dźwięku)
- upewnij się, że suwak Master Volume w Max jest podkręcony, a wszelkie inne regulatory głośności, które możesz mieć w swoim kodzie
-
Jeśli kod wydaje się nic nie robić
- upewnij się, że twoja łatka jest zablokowana (symbol kłódki w lewym dolnym rogu)
- upewnij się poprzez odczyty w łatce Max, że twoja łatka Max nadal pobiera dane z portu szeregowego Arduino. Jeśli nie, spróbuj zresetować port szeregowy (jak opisano w kroku 5) i/lub sprawdź fizyczne połączenia okablowania.
-
Dziwne odgłosy przycinania podczas zmiany parametrów
ma to związek z działaniem ~tapin i ~tapout; konkretnie, że po zmianie ich wartości resetują się, co powoduje obcinanie. Biorąc pod uwagę naszą ograniczoną wiedzę na temat programu, jesteśmy prawie pewni, że istnieje lepszy sposób na zrobienie tego w programie Max i wyeliminowanie problemu…
Krok 7: Dosłowne połączenie wszystkiego
Teraz pozostało tylko dołączyć nasze obwody do naszej rękawicy. Weź dodatkowy materiał i wytnij paski nieco większe niż czujniki flex. Przyszyj dodatkową tkaninę do palca rękawicy w miejscu zgięcia kostki, pozostawiając rodzaj rękawa, w którym czujnik zgięcia będzie mógł się osadzić (nie możemy po prostu przykleić czujników zgięcia bezpośrednio do rękawicy, ponieważ materiał rękawicy rozciąga się podczas zginania palców). Gdy rękaw jest już w większości zszyty, wsuń czujnik zgięcia i ostrożnie przyszyj smycze do rękawicy, mocując czujnik na miejscu. Powtórz to dla każdego czujnika flex.
Następnie użyj samoprzylepnej agrafki, aby przymocować Hex do tylnej części rękawicy (możesz nałożyć trochę gorącego kleju na szpilkę, aby upewnić się, że nie rozpuści się podczas noszenia). Przyszyj akcelerometr do nadgarstka rękawicy. Na koniec użyj magii zamków błyskawicznych, aby pięknie wyczyścić wszelkie nieestetyczne przewody.
Jesteś gotowy, aby przetestować swoją najlepszą rękawicę do śpiewania! (Możemy gorąco polecić „Harder Better Faster Stronger” Daft Punk, aby w pełni pokazać swoje możliwości zmiany głosu)
Zalecana:
Technika do noszenia w chorobie Parkinsona: 4 kroki
Technologia Wearable Parkinsona: Ponad 10 milionów ludzi na całym świecie cierpi na chorobę Parkinsona (PD). Postępujące zaburzenie układu nerwowego, które powoduje sztywność i wpływa na ruchy pacjenta. Mówiąc prościej, wiele osób cierpiało na chorobę Parkinsona, ale
[Mysz do noszenia] Kontroler myszy do noszenia z interfejsem Bluetooth dla systemów Windows 10 i Linux: 5 kroków
[Wearable Mouse] Kontroler myszy do noszenia oparty na technologii Bluetooth dla systemów Windows 10 i Linux: Stworzyłem kontroler myszy oparty na technologii Bluetooth, który może być używany do sterowania wskaźnikiem myszy i wykonywania operacji związanych z myszą komputera w locie, bez dotykania jakichkolwiek powierzchni. Obwód elektroniczny, który jest osadzony na rękawicy, może służyć do śledzenia h
Technika do noszenia: Bębny pneumatyczne: 5 kroków
Wearable Tech: Air Drums: Naszym celem w tym projekcie było stworzenie zestawu perkusyjnego do noszenia z niektórych przyspieszeniomierzy i dysków piezoelektrycznych. Pomysł polegał na tym, że po uderzeniu ręką odezwał się dźwięk werbla; lub po naciśnięciu stopy grał hi-hat lub dźwięk bębna basowego. Kontrolować
Infigo - (rękawica do noszenia zasilana sztuczną inteligencją): 9 kroków
Infigo - (rękawica do noszenia zasilana sztuczną inteligencją): Infigo to rękawica do noszenia zasilana sztuczną inteligencją, oparta na zasadach technologii wspomagającej (AT), która zwiększy produktywność upośledzonego społeczeństwa Sztuczna inteligencja i uczenie maszynowe nie mogą zastąpić ludzkiej inteligencji
Rękawica kreatora: rękawica kontrolera Arduino: 4 kroki (ze zdjęciami)
Wizard Glove: rękawica kontrolera Arduino: The Wizard Glove. W moim projekcie stworzyłem rękawicę, której możesz użyć do grania w swoje ulubione gry związane z magią w fajny i wciągający sposób, używając tylko kilku podstawowych zasobów arduino i arduino. możesz grać w takie gry, jak starsze zwoje lub