İçindekiler:

Giyilebilir Teknoloji: Sesi Değiştiren Eldiven: 7 Adım
Giyilebilir Teknoloji: Sesi Değiştiren Eldiven: 7 Adım

Video: Giyilebilir Teknoloji: Sesi Değiştiren Eldiven: 7 Adım

Video: Giyilebilir Teknoloji: Sesi Değiştiren Eldiven: 7 Adım
Video: AirPods Çakma olduğunu Kolayca Nasıl Anlarsınız ? 2024, Kasım
Anonim
Giyilebilir Teknoloji: Sesi Değiştiren Eldiven
Giyilebilir Teknoloji: Sesi Değiştiren Eldiven
Giyilebilir Teknoloji: Sesi Değiştiren Eldiven
Giyilebilir Teknoloji: Sesi Değiştiren Eldiven

Görünüşe göre inanılmaz güçleri olan eldivenler bugünlerde çok revaçta. Thanos'un Infinity Gauntlet oldukça güçlü bir eldiven olsa da, daha da dikkat çekici bir şey yapabilecek bir eldiven yapmak istedik: kullanıcının sesini gerçek zamanlı olarak değiştirmek.

Bu Eğitilebilir Tablo, sesi değiştiren bir eldiveni nasıl tasarladığımızın bir özetini sunar. Tasarımımız, bir Arduino kodu aracılığıyla bir Max yamasına gönderilen hareketleri algılamak için eldivende çeşitli sensörler ve bir mikro denetleyici kullandı; burada ses sinyalimiz daha sonra değiştirilip eğlenceli şekillerde bozuldu. Kullandığımız belirli sensörler, hareketler ve ses değişikliklerinin tümü farklı hususlar için esnektir; bu, sesi değiştiren bir eldiven yaratmanın sadece bir yolu!

Bu proje, Pomona Koleji öğrencileri ve Fremont Mühendislik Femineers Akademisi arasındaki topluluk ortaklığının bir parçasıydı. Elektronik mühendisliği ve elektronik müzik öğelerinin gerçekten eğlenceli bir karışımı!

Adım 1: Malzemeler

Malzemeler
Malzemeler
Malzemeler
Malzemeler
Malzemeler
Malzemeler

Parçalar:

  • HexWear Mikrodenetleyici (ATmega32U4) (https://hexwear.com/)
  • MMA8451 İvmeölçer (https://www.adafruit.com/product/2019)
  • Kısa Flex Sensörler (x4) (https://www.adafruit.com/product/1070)
  • Hafif koşu eldiveni
  • #2 vida ve pullar (x8)
  • Kıvrımlı terminal konektörleri; 22-18 ayar (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100pk)
  • 50kΩ direnç (x4)
  • Tel (~20 ölçü)
  • Kendinden yapışkanlı emniyet pimi
  • Keçe veya başka bir kumaş (~10 sq. inç)
  • Dikiş ipliği
  • fermuarlar
  • dizüstü bilgisayar
  • USB Mikrofon

Aletler

  • Lehimleme kiti
  • Tel sıyırıcılar ve tel kesiciler
  • Elektrik bandı
  • Sıcak hava silahı
  • Tornavida
  • Makas
  • Dikiş iğnesi

Yazılım:

  • Max by Cycling '74 (https://cycling74.com)
  • Arduino yazılımı (https://www.arduino.cc/en/Main/Software)

Adım 2: Yazılımı Yükleme

Herhangi bir projenin gerçekten en heyecan verici kısmıyla başlıyoruz: kütüphaneler kurmak (ve daha fazlası).

Arduino:

Arduino yazılımını indirin ve kurun (https://www.arduino.cc/en/Main/Software).

Altıgen Aşınma:

1) (Yalnızca Windows, Mac kullanıcıları bu adımı atlayabilir) https://www.redgerbera.com/pages/hexwear-driver-installation adresini ziyaret ederek sürücüyü yükleyin. Sürücüyü indirin ve kurun (bağlantılı RedGerbera sayfasının en üstünde Adım 2'de listelenen.exe dosyası).

2) Hexware için gerekli kütüphaneyi kurun. Arduino IDE'yi açın. "Dosya"nın altında "Tercihler"i seçin. Ek Pano Yöneticisi URL'leri için sağlanan alana yapıştırın

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

Ardından "Tamam" ı tıklayın.

Araçlar -> Pano: -> Pano Yöneticisi'ne gidin. Sol üst köşedeki menüden "Katkıda Bulunanlar"ı seçin.

Arayın ve ardından Gerbera Boards'a tıklayın ve Install'a tıklayın. Arduino IDE'den çıkın ve yeniden açın.

Kitaplığın doğru şekilde kurulduğundan emin olmak için Araçlar -> Pano'ya gidin ve menünün en altına gidin. Altında en azından HexWear'ın (mini-HexWear gibi daha fazla pano değilse) görünmesi gereken “Gerbera Boards” başlıklı bir bölüm görmelisiniz.

ivmeölçer:

İvmeölçer kitaplığını indirin ve kurun (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)

Adım 3: İvmeölçerin Takılması

İvmeölçerin Takılması
İvmeölçerin Takılması
İvmeölçerin Takılması
İvmeölçerin Takılması

Bu projeyle etkileşimde bulunmak için iki ana sensör tipine ihtiyacımız var: bir ivmeölçer ve esnek sensörler. Bunları ivmeölçerden başlayarak teker teker inceleyeceğiz. İlk olarak, eşleştirmek için donanım bağlantılarına ihtiyacımız var.

Hex'inize zarar vermemek için, 2 numaralı vidayı ve rondelayı istenen bağlantı noktalarından geçirmenizi ve ardından tüm bağlantıları bu vidaya takmanızı öneririz. Eldivenle oynarken herhangi bir şeyin gevşemesini önlemek için bağlantılar lehimlenmeli ve/veya kıvrılmalıdır. Her bağlantı için birkaç inç tel kullanarak, Hex'ten ivmeölçere aşağıdaki bağlantıları yapın (referans için yukarıdaki pin çıkışlarına bakın):

GİRİŞ GERİLİMİ VINGROUND GNDSCL/D3 SCLSDA/D2 SDA

Her şey bağlıyken, test etmeye hazırız!

Bir test olarak, Arduino'da ivmeölçer örnek kodunu çalıştırın (Dosya->Örnekler->Adafruit_MMA8451->MMA8451demo), Seri monitöre çıktı verebildiğinden emin olun. Düz tutulduğunda yerçekimi ivmesini (~10m/s) z yönünde vermelidir. İvmeölçeri eğerek, bu ivme x veya y yönünde ölçülecektir; Bunu, kullanıcının elini çevirerek sesi değiştirmesine izin vermek için kullanacağız!

Şimdi ivmeölçer verilerini Max ile arayüzlenebilecek şekilde sunmamız gerekiyor. Bunu yapmak için, belki de istenen aralığa uyacak şekilde değiştirilmiş x ve y değerlerini yazdırmalıyız (bkz. Bölüm 6). Buraya ekli kodumuzda aşağıdakileri yapıyoruz:

//x-yönünü ve y-yönünü ölçün. MAX için doğru aralıklara ulaşmak için böler ve çarparız (x cinsinden 1000 aralığı ve y cinsinden 40 aralığı) xdir = event.acceleration.x/0.02; ydir = abs(event.acceleration.y)*2; //Her şeyi Max için okunabilir bir biçimde yazdırın - her sayı arasında boşluk bırakarak Serial.print(xdir); Seri.print(" ");

Bu, her satırda ivmeölçerin x ve y yönlerinin değiştirilmiş değerlerini basan Hex'e sahip olmalıdır. Artık esnek sensörleri eklemeye hazırız!

Adım 4: Esnek Sensörlerin Takılması

Esnek Sensörlerin Takılması
Esnek Sensörlerin Takılması
Esnek Sensörlerin Takılması
Esnek Sensörlerin Takılması
Esnek Sensörlerin Takılması
Esnek Sensörlerin Takılması

Eğer bükülen parmakları tespit edebilirsek, kullanıcı çok sayıda potansiyel ses kontrolü elde edebilir. Esnek sensörler tam da bunu yapacak. Her bir esnek sensör esasen bir potansiyometredir, burada bükülmemiş ~ 25KΩ, tamamen bükülmüş ise ~ 100KΩ dirence sahiptir. Her bir esnek sensörü, ilk resimde gösterildiği gibi 50K dirençli basit bir voltaj bölücüye yerleştirdik.

Yine oldukça kısa kablo uzunlukları kullanarak (bunların hepsinin bir eldivenin arkasına sığacağını unutmayın), dört voltaj bölücü modülü lehimleyin. Dört modül aynı Vin'i ve toprağı paylaşacak - tellerin soyulmuş uçlarını birlikte büktük, böylece lehim için sadece bir ucumuz olacak. Son olarak, dört modülü alın ve ikinci resimde gösterilen bağlantıları yapın (bunu korkunç bir karışıklık yaratmadan nasıl yapacağını bilen varsa, lütfen sırlarınızı açıklayın).

Şimdi, her sensörden gelen voltajları okumak için Arduino koduna ihtiyacımız var. Amaçlarımız için esnek sensörleri anahtarlar olarak ele aldık; ya açık ya da kapalıydılar. Bu nedenle, kodumuz basitçe bir voltaj eşiği belirler - bu eşiğin üzerinde, Seri bağlantı noktasına 1 veririz (sensörün büküldüğü anlamına gelir), aksi takdirde 0 veririz:

// bir dizi al

analog örnekler ve bunları her Flex sensörü için ekleyin

while (örnek_sayısı < NUM_SAMPLES) {

sum10 += analogRead(A10);

sum9 += analogRead(A9);

sum7 += analogRead(A7);

sum11 += analogRead(A11);

örnek_sayısı++;

// Çok hızlı almamak için kısa gecikme

gecikme(5);

}

// voltajı hesapla, hızlı numuneler üzerinden ortalama alma

// 5.0V ADC için 5.0 kullanın

referans voltajı

// 5.015V kalibre edilmiş

referans voltajı

voltaj10 = ((kayan)toplam10 /

(kayan)NUM_SAMPLES * 5.015) / 1024.0;

voltaj9 = ((kayan)toplam9/

(kayan)NUM_SAMPLES * 5.015) / 1024.0;

voltaj7 = ((kayan)toplam7 /

(kayan)NUM_SAMPLES * 5.015) / 1024.0;

voltaj11 = ((kayan)toplam11 /

(kayan)NUM_SAMPLES * 5.015) / 1024.0;

//Her bir esnek sensörün olup olmadığını kontrol edin

eşikten daha büyük (eşik) - öyleyse, sayıyı ayarlayın

//Küçük parmak

if (voltaj10 > harman)

{

//-5 yükseltmek

bir oktav ses perdesi

esnek10 = -10;

}

başka esnek10 = 0;

//Yüzük parmağı

if (voltaj9 >

(eşik-0.4)) {

//5 daha düşük

bir oktav ses perdesi

esnek9 = 5;

}

başka esnek9 = 0;

//Orta parmak

if (voltage7 > thresh) {

// ayarlamak için

yankı efekti

esnek7 = 1;

}

başka esnek7 = 0;

//İşaret parmağı

if (voltage11 > harman)

{

// 50 ayarlamak için

50'ye kadar döngü

esnek11 = 93;

}

başka esnek11 = 0;

// Tüm sayımı sıfırla

sonraki döngü için 0'a değişken

örnek_sayısı = 0;

toplam10 = 0;

toplam9 = 0;

toplam7 = 0;

toplam11 = 0;

Bu noktada, Seri port, ivmeölçer oryantasyonu için değerleri ve ayrıca her bir esnek sensörün bükülüp bükülmediğini göstermelidir. Arduino kodumuzu Max ile konuşmaya hazırız!

Adım 5: Max ile Arayüz Oluşturma

Max ile Arayüz Oluşturma
Max ile Arayüz Oluşturma

Artık Hex kodu Seri bağlantı noktasından çok sayıda sayı tükürdüğüne göre, bu sinyalleri okumak için Max yazılımına ihtiyacımız var. Yukarıda resmedilen kod bloğu tam da bunu yapıyor! Çok rica ederim.

Önemli not: Kodu Hex'e yükledikten sonra, tüm seri bağlantı noktası pencerelerini kapatın, ardından Max kodundaki daire içine alınmış harfi Hex bağlantı noktasına uyacak şekilde değiştirin. Hangi harfi ayarlayacağınızdan emin değilseniz, Max kodunun "yazdır" kısmına basmak tüm bağlı portları listeleyecektir.

Hex'in seri bağlantı noktasından yazdırılan satır, Max kod bloğu aracılığıyla okunur ve ardından boşluk sınırlayıcılara göre bölünür. Max bloğunun sonundaki çıktı, her bir sayıyı tek tek yakalamanıza izin verir, bu nedenle ilk çıktı alanını ivmeölçerin x yönünün gitmesini istediğimiz yere bağlayacağız, ikinci boşluk y yönü olacak, vb. şimdi, çalıştıklarından emin olmak için bunları sayı bloklarına bağlayın. İvmeölçer ve esnek sensörleri hareket ettirebilmeli ve Max yazılımında sayıların değiştiğini görebilmelisiniz.

Adım 6: Max Kodun Geri Kalanını Oluşturma

Max dilinin gücü göz önüne alındığında, sihirli güç eldiveninizle gelen ses sinyalini değiştirebileceğiniz tüm yollarla burada hayal gücünüzü gerçekten serbest bırakabilirsiniz. Yine de, fikirleriniz tükenirse, yukarıda Max kodumuzun ne yaptığı ve nasıl çalıştığının bir özeti bulunmaktadır.

Değiştirmeye çalıştığınız her parametre için, muhtemelen doğru hassasiyeti elde etmek için Arduino kodundan gelen değer aralığıyla uğraşmak isteyeceksiniz.

Diğer bazı Max sorun giderme ipuçları:

  • Ses duymuyorsanız

    • Max'in mikrofonunuzdan ses alacak şekilde ayarlandığından emin olun (Seçenekler Ses Durumu Giriş Aygıtı)
    • Max'teki Master Volume kaydırıcısının açık olduğundan ve kodunuzda olabilecek diğer ses kontrollerinin açık olduğundan emin olun.
  • Kod hiçbir şey yapmıyor gibi görünüyorsa
    • yamanızın kilitli olduğundan emin olun (sol alt köşedeki kilit sembolü)
    • Max yamadaki okumalar aracılığıyla, Max yamanızın hala Arduino seri bağlantı noktasından veri aldığından emin olun. Değilse, seri bağlantı noktasını sıfırlamayı deneyin (5. Adımda özetlendiği gibi) ve/veya fiziksel kablo bağlantılarınızı kontrol edin.
  • Parametreleri değiştirirken garip kırpma sesleri

    bu, ~tapin ve ~tapout'un nasıl çalıştığıyla ilgili bir şeydir; özellikle, değerlerini değiştirdiğinizde sıfırlanırlar ve bu da kırpılmaya neden olur. Programla ilgili sınırlı bilgimiz göz önüne alındığında, bunu Max'te yapmanın ve sorunu ortadan kaldırmanın daha iyi bir yolu olduğundan neredeyse eminiz…

Adım 7: Kelimenin Tam Anlamıyla Her Şeyi Bir Araya Getirmek

Kelimenin tam anlamıyla hepsini bir araya getirmek
Kelimenin tam anlamıyla hepsini bir araya getirmek
Kelimenin tam anlamıyla hepsini bir araya getirmek
Kelimenin tam anlamıyla hepsini bir araya getirmek
Kelimenin tam anlamıyla hepsini bir araya getirmek
Kelimenin tam anlamıyla hepsini bir araya getirmek
Kelimenin tam anlamıyla hepsini bir araya getirmek
Kelimenin tam anlamıyla hepsini bir araya getirmek

Şimdi geriye kalan tek şey devremizi eldivenimize bağlamak. Ek kumaşınızı alın ve esnek sensörlerden biraz daha büyük şeritler kesin. Ek kumaşı, bükülme sensörünün oturması için bir tür manşon bırakarak, parmak ekleminin büküldüğü yere eldivenin parmağına dikin (esnek sensörleri doğrudan eldivene yapıştıramayız çünkü parmaklar büküldükçe eldiven kumaşı esner). Kol çoğunlukla dikildikten sonra, esnek sensörü içeri kaydırın ve esnek sensörü yerine sabitleyerek uçları eldivene dikkatlice dikin. Bunu her esnek sensör için tekrarlayın.

Ardından, Hex'i eldivenin arkasına tutturmak için kendinden yapışkanlı emniyet pimini kullanın (aşınma sırasında çözülmediğinden emin olmak için pimin üzerine biraz sıcak tutkal koymak isteyebilirsiniz). İvmeölçeri eldivenin bileğine dikin. Son olarak, göze hoş gelmeyen kabloları güzelce temizlemek için fermuarlı bağların büyüsünü kullanın.

Nihai şarkı söyleme gücü eldiveninizi test etmeye hazırsınız! (Ses değiştirme yeteneklerinizi tam olarak göstermek için Daft Punk'ın "Harder Better Faster Stronger"ını şiddetle tavsiye edebilir miyiz?)

Önerilen: