İçindekiler:

Vibrotactile Duyusal Yer Değiştirme ve Büyütme Cihazı (SSAD): 4 Adım
Vibrotactile Duyusal Yer Değiştirme ve Büyütme Cihazı (SSAD): 4 Adım

Video: Vibrotactile Duyusal Yer Değiştirme ve Büyütme Cihazı (SSAD): 4 Adım

Video: Vibrotactile Duyusal Yer Değiştirme ve Büyütme Cihazı (SSAD): 4 Adım
Video: CELLAT36 DAMARLARI SAHTEYMİŞ İŞTE KANITI HERŞEY KURGU 2024, Kasım
Anonim
Vibrotactile Duyusal Yer Değiştirme ve Büyütme Cihazı (SSAD)
Vibrotactile Duyusal Yer Değiştirme ve Büyütme Cihazı (SSAD)
Vibrotactile Duyusal Yer Değiştirme ve Büyütme Cihazı (SSAD)
Vibrotactile Duyusal Yer Değiştirme ve Büyütme Cihazı (SSAD)

Bu proje, Duyusal Yer Değiştirme ve Büyütme alanındaki araştırmaları kolaylaştırmayı amaçlamaktadır. Yüksek lisans tezimde vibrotaktil SSAD prototipleri oluşturmanın farklı yollarını keşfetme olanağım oldu. Duyusal Yer Değiştirme ve Büyütme, yalnızca bilgisayar bilimcilerini değil, aynı zamanda bilişsel bilim gibi diğer alanlardan araştırmacıları da ilgilendiren bir konu olduğundan, adım adım bir talimat, elektronik ve bilgisayar bilimlerinde uzman olmayanların bu prototipi kendi başlarına bir araya getirmelerini sağlamalıdır. Araştırma nedenleri.

Tek bir marka/ürün için reklam yapmak niyetinde değilim. Bu proje herhangi bir şirket tarafından desteklenmedi. Kullandığım malzeme teknik özellikler ve kolaylık (hız/teslimat maliyeti, bulunabilirlik vb.) nedeniyle seçildi. Bu Talimatta belirtilen tüm ürünler için eşit derecede uygun alternatifler mevcuttur.

Mevcut Instructable, 4 adede kadar motor ve analog sensör ile temel bir SSAD prototipinin nasıl oluşturulacağına dair adım adım talimatlar içerir.

Bu Eğitilebilir Dosyaya ek olarak üç uzantı oluşturdum: İlk olarak, bu SSAD prototipiyle dörtten fazla motorun nasıl kullanılacağına ilişkin talimatlar yayınladım (https://www.instructables.com/id/Using-More-Than-4…). İkinci olarak, bu prototipin nasıl giyilebilir hale getirileceğine (https://www.instructables.com/id/Making-the-SSAD-W…) ve kapsüllenmiş döner kütlesi olmayan ERM motorlarının nasıl kaplanacağına (https:/ /www.instructables.com/id/Covering-Rotating…). Ayrıca, analog sensörler dışındaki sensörlerin (bu durumda bir yakınlık sensörleri) prototipe nasıl entegre edileceğine dair bir örnek de yayınlanmıştır (https://www.instructables.com/id/Including-a-Proxi…).

"Duyusal Yer Değiştirme ve Büyütme" nedir?

Duyusal Değiştirme ile bir duyusal modalite (örneğin görme) tarafından toplanan bilgiler başka bir duyu (örneğin ses) aracılığıyla algılanabilir. İnsanların duyusal kayıp veya bozulmanın üstesinden gelmesine yardımcı olan umut verici bir non-invaziv tekniktir.

Çevrilen duyusal uyaran normalde insanlar tarafından algılanamıyorsa (örneğin UV ışığı), bu yaklaşıma Duyusal Artırma denir.

Bu prototipi oluşturmak için hangi becerilere ihtiyaç var?

Temel olarak, aşağıda verilen talimatları takip etmek için gelişmiş programlama becerilerine gerek yoktur. Bununla birlikte, lehimleme konusunda yeniyseniz, bu tekniği öğrenmek için fazladan zaman planlayın. Daha önce hiç programlama yapmadıysanız, programlama konusunda daha deneyimli birinden yardım almanız gerekebilir.

Pahalı veya kolayca bulunamayan gerekli makineler veya aletler var mı?

İnternetten veya bir sonraki ev mağazasından kolayca satın alamayacağınız bu prototipi oluşturmak için havya dışında hiçbir makine veya alet gerekmez. Bu SSAD, hızlı prototip oluşturmaya izin verecek şekilde tasarlanmıştır; bu, hızlı bir şekilde yeniden üretilebilir olması ve fikirlerin ucuz bir şekilde keşfedilmesine olanak sağlaması gerektiği anlamına gelir.

Gereçler

Ana bileşenler (4 motor için yaklaşık 65 £, lehimleme ekipmanı hariç)

  • Arduino Uno (ör. https://store.arduino.cc/arduino-uno-rev3, 20£)
  • Adafruit Motorshield v2.3 (ör. https://www.adafruit.com/product/1438, 20£) ve erkek istifleme başlıkları (normalde motor kalkanı satın alırken dahildir)
  • Silindirik ERM motorları (ör. https://www.adafruit.com/product/1438, 5, 50£ / motor)
  • Havya ve havya teli
  • teller

İsteğe bağlı (bkz. Uzantılar)

ERM motoru açıkta dönen kütleli satın alınırsa:

  • vinil tüp
  • İnce yumuşak tahta
  • 3D yazıcı (Arduino kasası için)

4'ten fazla motor kullanmak istiyorsanız (8'den fazla aynı zaman için):

  • Adafruit Motorshield v2.3 ve erkek istifleme başlıkları
  • Dişi istifleme başlıkları (ör.
  • 6'dan fazla motor için Arduino Mega (ör.

Adım 1: Lehimleme

Lehimleme
Lehimleme

Pimleri motor kalkanına lehimleyin

Adafruit, başlıkların bir motor kalkanına nasıl lehimleneceğine dair çok kapsamlı bir eğitim sunuyor (https://learn.adafruit.com/adafruit-motor-shield-v…):

  1. Öncelikle stacking başlıklarını Arduino Uno üzerindeki pinlere yerleştirin,
  2. Ardından, koruyucuyu pimlerin kısa tarafı dışarı çıkacak şekilde üstüne yerleştirin.
  3. Bundan sonra, tüm pimleri kalkana lehimleyin ve lehimin pimin etrafından aktığından ve bir yanardağ şekli oluşturduğundan emin olun (https://cdn.sparkfun.com/assets/c/d/ adresinden alınan yukarıdaki resme bakın) a/a/9/523b1189…).

Lehimlemeye yeni başlıyorsanız, https://learn.sparkfun.com/tutorials/how-to-solder… gibi daha fazla öğretici ile kendinize yardımcı olun.

Daha uzun kabloları motora lehimleyin

Motorların çoğu telsiz veya çok kısa ve ince tellerle geldiğinden, onları daha uzun ve daha sağlam tellere lehimleyerek uzatmak mantıklıdır. Bunu şu şekilde yapabilirsiniz:

  1. Tellerin ucundaki plastiği çıkarın ve resimdeki gibi açıktaki teller boyunca birbirleriyle temas edecek şekilde konumlandırın.
  2. Her iki telin dişlerine dokunarak ve lehimin üzerlerinden akmasına izin vererek bunları birbirine lehimleyin.

Adım 2: Kablolama

kablolama
kablolama
  1. Arduino'nun üzerine motor kalkanı yerleştirin.
  2. Motorları motor muhafazasına vidalayın.
  3. Analog sensörleri Arduino'ya bağlayın (resimde bu, ışık sensörleriyle yapılır, ancak aynı devre diğer analog sensörler için aynı görünüyor).

Adım 3: Kodlama

kodlama
kodlama
kodlama
kodlama
kodlama
kodlama
kodlama
kodlama

1. İndir

Aşağıda eklenmiş olan zip klasörünü (SSAD_analogueInputs.zip) indirin. Açın.

Arduino IDE'yi indirin (https://www.arduino.cc/en/main/software).

Açılan klasörün içindeki Arduino dosyasını (SSAD_analogueInputs.ino) Arduino IDE ile açın.

2. Kitaplıkları Yükleyin

Sağlanan kodu çalıştırmak için bazı kütüphaneler kurmanız gerekir. Bu nedenle, bu makalenin sonunda ekli olan Arduino dosyası Arduino IDE'nin içinde açıksa aşağıdakileri yapın:

  1. Tıklayın: Araçlar → Kitaplıkları Yönet…
  2. Aramanızı filtreleyin alanında "Adafruit Motor Shield V2 Kitaplığı" arayın
  3. Yükle Düğmesine tıklayarak yükleyin

Bu kitaplıkları indirdikten sonra, şimdi sağlanan kodlardaki #include ifadeleri çalışmalıdır. "Doğrula" Düğmesine tıklayarak bunu kontrol edin (Sol üstteki işaretleyin). Programın en altında "Derleme tamamlandı" mesajını alırsanız, tüm kütüphanelerin çalıştığını bilirsiniz. Aksi takdirde kırmızı bir çubuk görünür ve neyin yanlış gittiğine dair bir mesaj alırsınız.

3. Kodu Değiştirin

Aşağıdaki talimatları izleyerek kodu kullanım durumunuza göre değiştirin:

Başlatma Motorları ve Duyusal Çıktıları

Her şeyden önce, motorların hangi pimleri kullandığını ve ayrıca motorların hangi aralıkta çalıştığını belirtin. Örneğin, M4'e bağlı ve (hız) 25 ile 175 aralığında çalışan bir motor şu şekilde bildirilir (ANA yorumun altında):

Motor motor1 = Motor(4, 25, 175);

3V'a kadar bir aralıkta sürülen küçük titreşim motorlarıyla çalışırken, motor koruması 4.5VDC ila 13.5VDC arasında çalışan motorlar için yapıldığından dikkatli kullanılmalıdır. 3V motorlara zarar vermemek için, blendajın Volt çıkışını programlı olarak maksimum 3V (tam olarak 2.95V) ile sınırlandırdım. Bunu, 255'in maksimum hızının Volt cinsinden ne kadar olduğunu ölçerek yaptım ve bunun 4.3V olduğunu bir multimetre ile ölçtüm. Bu nedenle motorlara asla 175'ten, yani yaklaşık 3V'dan daha yüksek bir hıza izin vermedim.

Her motor bir SensoryOutput ile bağlanacaktır.

Bir Duyusal Çıktı, bir veya daha fazla duyusal uyarandan oluşur. Örneğin, bir motor ya tek bir sensöre göre titreşebilir ya da birden çok, farklı şekilde konumlandırılmış sensörün ortalamasına göre titreşebilir.

Bu nedenle öncelikle her motor için bir SensoryOutput bildirilmelidir. Parantez içindeki sayılar sensörün (grubun) algılayabileceğinin minimum ve maksimum değeridir. Analog sensörler için bu çoğunlukla 0 ve 1023'tür:

DuyusalÇıkış çıkışı1 = DuyusalÇıkış(0, 1023);

loop() işlevinde her motor daha sonra bir çıkış değerine atanır. Buraya her motor için aşağıdaki ifadeyi yazın ve "output1" yerine SensoryOutput değeri ne olursa olsun ona bağlanın. Bunun için başka bir ad kullanıyorsanız, bu satırdaki tüm "çıkış1" adlarını da değiştirmeyi unutmayın.

motor1.drive(output1.getValue(), output1.getMin(), output1.getMax());

İsterseniz birden fazla motora (ör. motor1 ve motor2) aynı Duyusal Çıkışı (ör. çıkış1) verebilirsiniz.

Ayrıca, bir motora birden fazla sensörün değerlerini verebilirsiniz (bir sonraki bölüme bakın).

Sensörleri Tanımlama

setup() işlevinde, hangi sensörlerin hangi motor titreşiminin (SensoryOutput) parçası olacağı bildirilmelidir. Arduino Pin A0'a bağlı sensörün motor1 ve dolayısıyla çıkış1 ile titreşimlere dönüştürülmesi gerektiğini nasıl tanımladığınıza bir örnek:

çıktı1.include(A0);

Bir motor titreşiminde birden fazla duyusal çıkışın birleştirilmesi gerekiyorsa, çıkış1'e başka bir analog giriş pini ekleyebilirsiniz:

çıktı1.include(A1);

Aksi takdirde, bir sonraki çıktıyla devam edin:

çıktı2.include(A1);

Birden Fazla Sensörü Birleştirme

Yukarıda bahsedildiği gibi, birden fazla sensör girişi (örn. A0, A1 ve A2'den) bir motora yönlendirilebilir. Sağladığım kod, dahil edilen tüm sensörler tarafından okunan değerlerin ortalamasını hesaplıyor. Bu nedenle, kullanım durumunuz için bu yeterliyse ve örneğin düşük bir duyusal girdiyi düşük bir titreşime doğrudan eşlemek istiyorsanız, işiniz bitti ve aşağıdakileri düşünmek zorunda değilsiniz:

Bununla birlikte, bir veya daha fazla ham duyusal girdiyle ne yapmak istediğinize dair başka fikirleriniz varsa, SensoryOutput sınıfındaki int getValue() işlevindeki değişikliklere göre yapabilirsiniz:

int getValue(){

finalOutput = 0; // TODO duyusal değerlerle ne istersen yap // burada birden fazla değer birleştirilirse ortalama oluşturulur for (int i = 0; i < curArrayLength; i++) { finalOutput += analogRead(valueArray); } finalOutput / curArrayLength döndür; }

4. Kodu Arduino Prototipinize Yükleyin

Arduino Prototipini (2. Adımdan) PC'nize takın.

Araçlar → Bağlantı Noktası → Arduino/Genuino Uno'nun parantez içinde yazıldığı Bağlantı Noktasını Seç'i tıklayın.

Araçlar → Anakart → Arduino/Genuino Uno'ya tıklayın

Artık motorlar analog sensörlerin girişlerine göre çalışmalıdır. İsterseniz Arduino'yu PC'nizden ayırabilir ve 9V pil gibi başka bir güç kaynağına takabilirsiniz.

4. Adım: Olası Uzantılar

Olası Uzantılar
Olası Uzantılar
Olası Uzantılar
Olası Uzantılar
Olası Uzantılar
Olası Uzantılar

Yeni oluşturduğunuz prototip, yalnızca analog girişlere izin verir ve dört adede kadar motoru çalıştırabilir. Ayrıca, henüz giyilebilir değil. Bu özellikleri genişletmek istiyorsanız, aşağıdaki talimatlara göz atın:

  • ERM Motorlarının Dönen Kütlelerini Kapatma:
  • SSAD'yi Giyilebilir Hale Getirmek:
  • 4'ten Fazla Motor Kullanma - Birden çok motor kalkanını istifleme:
  • SSAD girişi olarak bir ultrasonik yakınlık sensörü kullanma:

Önerilen: