İçindekiler:

Mood Projektörü (GSR ile Hacklenmiş Philips Hue Light) TfCD: 7 Adım (Resimlerle)
Mood Projektörü (GSR ile Hacklenmiş Philips Hue Light) TfCD: 7 Adım (Resimlerle)

Video: Mood Projektörü (GSR ile Hacklenmiş Philips Hue Light) TfCD: 7 Adım (Resimlerle)

Video: Mood Projektörü (GSR ile Hacklenmiş Philips Hue Light) TfCD: 7 Adım (Resimlerle)
Video: Kendini tornaci sanan mal 2024, Temmuz
Anonim
Image
Image
Ton Işığını Ayırın
Ton Işığını Ayırın

Laura Ahsmann ve Maaike Weber

Amaç: Düşük ruh halleri ve stres, modern hızlı yaşamın büyük bir parçasıdır. Aynı zamanda dışarıdan görünmeyen bir şeydir. Nasıl hissettiğinizi gösterebilmek için stres seviyemizi bir ürünle hem görsel hem de işitsel olarak yansıtabilseydik ne olurdu? Bu sorunlar hakkında iletişim kurmayı kolaylaştıracaktır. Kendi tepkiniz, stres seviyeniz hakkında geri bildirim aldığınız an için daha yeterli olabilir.

GSR veya bir kullanıcının parmak uçlarında alınan bir ölçüm olan galvanik cilt direncinin, stresin gerçekten iyi bir göstergesi olduğu kanıtlanmıştır. Eldeki ter bezleri çoğunlukla strese tepki verdiğinden (sadece fiziksel egzersiz değil), artan stres seviyeleri daha yüksek bir iletkenlik oluşturur. Bu değişken bu projede kullanılmaktadır.

Fikir: Stresi veya ruh halini çabucak tespit edip renkli ışık ve müzikle temsil edebilseydik ne olurdu? Bir GSR sistemi bunu gerçekleştirebilir. Bu Eğitilebilir Tabloda, bunu yapmak için Arduino tabanlı bir sistem yapacağız! Hem Arduino Yazılımı hem de İşleme Yazılımı tarafından çalıştırıldığında, cilt iletkenlik değerlerini belirli bir renk ışığına ve belirli bir müzik türüne çevirecektir.

Ne istiyorsun?

  • Arduino Uno
  • teller
  • Philips Hue ışığı (Canlı Renkler)
  • Üç adet 100 Ohm direnç (RGB LED için)
  • Bir adet 100 KOhm direnç (GSR sensörü için)
  • Alüminyum folyo gibi iletkenlik sensörleri görevi görecek bir şey
  • Arduino Yazılımı
  • İşleme Yazılımı (v2.2.1 kullandık, daha yenileri çökme eğilimindedir)
  • Muhafazayı tasarlamak için SolidWorks (isteğe bağlı)
  • CNC frezeye erişim (isteğe bağlı)
  • Yeşil modelleme köpüğü (EPS)
  • Breadboard (isteğe bağlı, ayrıca lehimlenebilir)

Adım 1: Ton Işığını Ayırın

Bu adım kolaydır, sadece biraz güç (veya bir tornavida) kullanın, ışığı kaybetmesine ve çatlamasına izin verin. Bazı çıtçıtlı bağlantılar ürünü bir arada tutar, bu nedenle sökülmesi kolaydır.

Şimdi, üst kısımdaki ışık vidalanabilir ve elektroniklerin geri kalanından ayrılabilir. Sadece ışığa ve muhafazanın tepesine ihtiyacımız olacak. Gerisini kaydedin veya atın, size kalmış!

Adım 2: Donanımı Hazırlama

Donanımın Hazırlanması
Donanımın Hazırlanması
Donanımın Hazırlanması
Donanımın Hazırlanması
Donanımın Hazırlanması
Donanımın Hazırlanması
Donanımın Hazırlanması
Donanımın Hazırlanması

Bu proje için, düzenlemeyi daha güzel ve daha hızlı hale getirmek için bir Philips Hue ışığı kullandık. Bununla birlikte, resimde breadboard ile gösterildiği gibi normal bir RGB LED de kullanabilirsiniz.

RGB LED'i çalıştırmak için, pinleri Arduino'nun üç farklı PWM portuna bağlayın (ba a ~ ile gösterilir). Bu bağlantı için 100Ohm dirençleri kullanın. En uzun pini Arduino'nun 5V çıkışına bağlayın. Hangi pinin hangi renge karşılık geldiğini görmek için bu adımın son resmine bakın.

Ton Işığı için aynı adımlar gider. LED, kabloları belirlenen yuvalara lehimleyerek Arduino'ya kolayca bağlanır, bu adımdaki üçüncü resme bakın. Yuvalarda, hangi telin nereye gitmesi gerektiğini gösteren bir R, bir G ve bir B bulunur. Ayrıca sırasıyla Arduino'nun 5V'sine ve Arduino'nun topraklamasına bağlanacak bir + ve bir - yuvasına sahiptir. LED'i bağladıktan sonra muhafazaya geri vidalayabilirsiniz.

Alüminyum folyodan yapılmış GSR sensörlerini bağlamak için (veya biraz daha hoş görünen bu alüminyum kapları kullanın), lehimleyin veya bir kabloya bantlayın ve birini 5V'a bağlayın. Diğerini 100Kohm'luk rezistöre ve 0,1mF'lik (paralel) bir kondansatöre bağlayın, bu daha sonra toprağa ve Arduino üzerindeki A1 yuvasına bağlanmalıdır. Bu, daha sonra ışık rengi ve müzik için girdi olarak kullanılacak olan stres seviyesinin çıktısını verecektir. Sensörleri lambaya yapıştırdık, bu yüzden stresinizi ölçerken kapmak için güzel bir ürün haline geldi. Ancak sensörlerin temas etmemesine dikkat edin!

Son resim, breadboard olmadan nasıl yapılabileceğini gösteriyor.

Adım 3: Stres Seviyesini Ölçme

Stres Seviyesini Ölçme
Stres Seviyesini Ölçme

Sadece bu ev yapımı sensörlerle stres seviyesini ölçmek, kesinlikle tam olarak ne kadar stresli olduğunuza dair doğru ölçümler vermeyecektir. Ancak, doğru kalibre edildiğinde bir yaklaşıklık verebilir.

GSR seviyelerini ölçmek için Arduino ortamında aşağıdaki kod parçasını kullanacağız. Daha az dalgalı bir ölçüm elde etmek için her 10 okumada bir ortalama alınır.

const int numOkumalar = 10; int okumalar[numReadings]; // A1'den giriş int indeks = 0; // mevcut okumanın indeksi int toplam = 0; // çalışan toplam işaretsiz uzun ortalama = 0; // ortalama

int inputPin = A1;

geçersiz kurulumGSR()

{ // tüm okumaları 0'a ayarlayın:

(int i = 0; i < numReadings; i++) okumaları için = 0; }

imzasız uzun runGSR() {

toplam = toplam - okumalar[indeks]; // GSR sensör okumalarından oku[index] = analogRead(inputPin); // toplam toplam = toplam + okumalar[index]'e yeni okuma ekle; // dizi dizininin sonraki konumu = dizin + 1;

// dizinin sonunu test et

if (index >= numReadings) // ve baştan başla index = 0;

// ortalama nedir

ortalama = toplam / numOkumalar; // bilgisayara ASCII hane dönüş ortalaması olarak gönder;

}

Başka bir sekmede (işleri düzenli tutmak için), ölçümlere tepki verecek kodu yapacağız, bir sonraki adıma bakın!

Adım 4: Işıkları Yönetmek

Işıkları Yönetmek
Işıkları Yönetmek
Işıkları Yönetmek
Işıkları Yönetmek
Işıkları Yönetmek
Işıkları Yönetmek

Işıkları yönetmek için önce ölçümleri kalibre etmeliyiz. Seri monitörü açarak ölçümlerinizin üst sınırının ne olduğunu kontrol edin. Bizim için ölçümler 150 (gerçekten rahatlamaya çalıştığımız zaman) ve 300 (stres haline gelmek için gerçekten çok uğraştığımız zaman) arasında bir şeydi.

Ardından, hangi rengin hangi stres düzeyini temsil etmesi gerektiğine karar verin. Biz öyle yaptık:

1. Düşük stres düzeyi: beyaz ışık, artan stresle yeşil ışığa dönüşüyor

2. Orta stres düzeyi: yeşil ışık, artan stresle mavi ışığa dönüşüyor

3. Yüksek stres seviyesi: mavi ışık, artan stresle kırmızıya dönüşüyor

Ölçümleri işlemek ve LED'e göndermek için değerlere dönüştürmek için aşağıdaki kod kullanıldı:

//MASTER #define DEBUG 0

//GSR = A1

int gsrVal = 0; // Sensörlerden gelen girişi depolamak için değişken

// Belirtildiği gibi, Darbe Genişliği Modülasyonu (PWM) pinlerini kullanın

int redPin = 9; // Kırmızı LED, dijital pin 9'a bağlı int grnPin = 9; // Yeşil LED, dijital pin 10'a bağlı int bluPin = 5; // Mavi LED, dijital pin 11'e bağlı

// Program değişkenleri

int redVal = 0; // Pinlere gönderilecek değerleri saklayacak değişkenler int grnVal = 0; int bluVal = 0;

imzasız uzun gsr = 0;

geçersiz kurulum()

{ pinMode(bluPin, ÇIKIŞ); pinMode(grnPin, ÇIKIŞ); pinMode(redPin, OUTPUT); pinMode(A1, GİRİŞ);

Seri.başla(9600);

kurulumGSR(); }

boşluk döngüsü()

{ gsrVal=gsr; if (gsrVal < 150) // gsr aralığının en düşük üçte biri (0-149) { gsr = (gsrVal /10) * 17; // 0-255'e normalleştir redVal = gsrVal; // tam olarak kapalı grnVal = gsrVal; // Kapalıdan tam yeşile bluVal = gsrVal; // Maviyi tamamen kapatString SoundA = "A"; Seri.println(SesA); //işletim müziğinde daha sonra kullanmak için } else if (gsrVal < 250) // gsr aralığının orta üçte biri (150-249) { gsrVal = ((gsrVal-250) /10) * 17; // 0-255'e normalleştir redVal = 1; // Kırmızı kapalı grnVal = gsrVal; // Tamdan kapalıya yeşil bluVal = 256 - gsrVal; // Mavi kapalıdan tama String SoundB = "B"; Seri.println(SoundB); } else // gsr aralığının üst üçte biri (250-300) { gsrVal = ((gsrVal-301) /10) * 17; // 0-255'e normalleştir redVal = gsrVal; // Kapalıdan tama kırmızı grnVal = 1; // Yeşil kapalı tam bluVal = 256 - gsrVal; // Mavi tamdan kapalıya String SoundC = "C"; Seri.println(SoundC); }

analogWrite(redPin, redVal); // LED pinlerine değer yaz analogWrite(grnPin, grnVal); analogWrite(bluPin, bluVal); gsr = runGSR(); gecikme(100); }

Şimdi LED stres seviyenize tepki veriyor, bir sonraki adımda ruh halinizi temsil etmek için biraz müzik ekleyelim.

Adım 5: Müziği Yönetme

Müziği Yönetmek
Müziği Yönetmek

Aşağıdaki müzikle 3 stres düzeyini temsil etmeyi seçtik:

1. Düşük seviye (A): şarkı söyleyen kaseler ve kuş cıvıltıları, çok hafif bir ses

2. Orta seviye (B): melankolik bir piyano, biraz daha ağır bir ses

3. Yüksek stres seviyesi (C): Gök gürültüsü, karanlık bir ses (oldukça rahatlatıcı olsa da)

Kod, Arduino'nun yazılım geri bildirim bölümünü sağlayan bir yazılım olan Processing'de yazılmıştır:

içe aktarma işleme. seri.*; içe aktarma ddf.minim.*;

minimum minimum;

AudioPlayer oynatıcılar;

int lf = 10; // ASCII'de satır besleme

String myString = boş; Seri myPort; // Seri port int sensorValue = 0;

geçersiz kurulum() {

// Mevcut tüm seri portları listele printArray(Serial.list()); // Arduino ile aynı hızda kullandığınız portu açın myPort = new Serial(this, Serial.list()[2], 9600); myPort.clear(); // ölçümleri temizle myString = myPort.readStringUntil(lf); myString = boş; // Dosyaları yükleyebilmesi için bunu Minim'e iletiyoruz minim = new Minim(this); oyuncular = yeni AudioPlayer[3]; // Ses dosyasının adını buradan değiştirin ve onu kütüphanelere ekleyin oyuncular[0] = minim.loadFile("Singing-bowls-and-birds-chirping-sleep-music.mp3"); oyuncular[1] = minim.loadFile("Melankolik-piyano-müzik.mp3"); oyuncular[2] = minim.loadFile("Storm-sound.mp3"); }

geçersiz beraberlik() {

// yeni bir değer olup olmadığını kontrol edin while (myPort.available () > 0) { // verileri myString içinde saklayın myString = myPort.readString(); // gerçekten elimizde bir şey olup olmadığını kontrol et if (myString != null) { myString = myString.trim(); // bir şey olup olmadığını kontrol et if (myString.length() > 0) { println(myString); try { sensorValue = Integer.parseInt(myString); } catch(Exception e) { } if (myString.equals("A")) // hangi stres düzeyini ölçtüğünü görün { oyuncular[0].play(); //müziğe göre çal } else { oyuncular[0].pause(); //düşük stres seviyesini ölçmüyorsa, uygun şarkıyı çalmayın } if (myString.equals("B")) {player[1].play(); } else { oyuncular[1].pause(); } if (myString.equals("C")) { oyuncular[2].play(); } else { oyuncular[2].pause(); } } } } }

Bu kod, müziği dizüstü bilgisayar hoparlörlerimizdeki stres düzeyine göre çalmalıdır.

Adım 6: Düzenlemeyi Tasarlayın

Image
Image
Düzenlemeyi Tasarla
Düzenlemeyi Tasarla

Philips Hue Light'ın üst kısmını kullandık, ancak yeşil köpük alt kısmını cnc yaptık. SolidWorks dosyası burada, ancak lambayı kendiniz ölçmek ve zevkinize göre bir şeyler tasarlamak da eğlenceli olabilir!

Alt kısmın şeklinin üst kısımdaki eğriyi takip ettiğinden emin olmak için lambanın üst kısmının bir fotoğrafını SW'de alt katman olarak kullandık (ilk fotoğrafa bakın).

Modeli cnc'd olarak almak için, onu bir STL dosyası olarak kaydedin ve yerel değirmencinizi bulun (örneğin uni'de).

7. Adım: Kaynaklar

Bu konu hakkında daha fazla bilgi edinmek veya stresi ölçmek için daha kapsamlı kodlar görmek isterseniz, aşağıdaki web sitelerine ve projelere bakın:

  • İşleme'de (bizim kullandığımız) ses dosyalarını tetikleme hakkında daha fazla açıklama
  • GSR hakkında güzel bir el kitabı
  • Ruh hali yansıtmaya havalı farklı yaklaşım
  • Birden fazla sensöre sahip gerçekten harika stres dedektörü (bu proje için büyük ilham kaynağı)
  • RGB LED'li ses (stres yerine) projektörü
  • GSR hakkında iyi makale

Önerilen: