Mündəricat:

Əhval Projektoru (GSR ilə Philips Hue Light Hacked) TfCD: 7 Addım (Şəkillərlə)
Əhval Projektoru (GSR ilə Philips Hue Light Hacked) TfCD: 7 Addım (Şəkillərlə)

Video: Əhval Projektoru (GSR ilə Philips Hue Light Hacked) TfCD: 7 Addım (Şəkillərlə)

Video: Əhval Projektoru (GSR ilə Philips Hue Light Hacked) TfCD: 7 Addım (Şəkillərlə)
Video: Мощный LED прожектор на 100 Ватт - белый и цветной свет, с zigbee и защитой IP 66 2024, Iyul
Anonim
Image
Image
Rəng işığını ayırın
Rəng işığını ayırın

Müəllif: Laura Ahsmann və Maaike Weber

Məqsəd: Düşük əhval-ruhiyyə və stress müasir sürətli həyatın böyük bir hissəsidir. Həm də kənardan görünməyən bir şeydir. Nə hiss etdiyimizi göstərə bilmək üçün stress səviyyəmizi bir məhsulla həm vizual, həm də akustik olaraq proyeksiya edə bilsəydik. Bu problemlər haqqında danışmağı asanlaşdıracaq. Stress səviyyələriniz haqqında rəy alarkən öz reaksiyanız da daha uyğun ola bilər.

Bir istifadəçinin parmaklarınızın ucunda alınan bir ölçü olan GSR və ya galvanik dəri müqavimətinin, həqiqətən də stresin yaxşı bir xəbərçisi olduğu sübut edilmişdir. Əldəki tər vəziləri əsasən stresə (yalnız fiziki məşqlərə deyil) reaksiya verdiyindən, artan stres səviyyələri daha yüksək bir keçiricilik yaradır. Bu dəyişən bu layihədə istifadə olunur.

Fikir: Bəs stressi və ya əhval -ruhiyyəni tez aşkar edib rəngli işıq və musiqi ilə təmsil edə bilsək nə olar? GSR sistemi bunu reallaşdıra bilər. Bu Təlimat kitabında bunu etmək üçün Arduino əsaslı bir sistem hazırlayacağıq! Həm Arduino Proqramı, həm də Qenerasiya Proqramı tərəfindən idarə olunan dəri keçiriciliyi dəyərlərini müəyyən bir rəng işığına və müəyyən bir musiqiyə çevirəcəkdir.

Sənə nə lazımdır?

  • Arduino Uno
  • Tellər
  • Philips Hue işığı (Canlı rənglər)
  • Üç 100 Ohm rezistor (RGB LED üçün)
  • Bir 100 KOhm rezistor (GSR sensoru üçün)
  • Alüminium folqa kimi keçiricilik sensoru rolunu oynayacaq bir şey
  • Arduino Proqram təminatı
  • İşləmə Proqramı (v2.2.1 istifadə etdik, yeniləri çökməyə meyllidir)
  • Korpusu dizayn etmək üçün SolidWorks (isteğe bağlı)
  • CNC dəyirmanına giriş (isteğe bağlı)
  • Yaşıl modelləşdirmə köpüyü (EPS)
  • Çörək taxtası (isteğe bağlı, həmçinin lehimlənə bilər)

Addım 1: Hue Light -ı ayırın

Bu addım asandır, işığın itirilməsinə və çatlamasına icazə vermək üçün bir az güc (və ya tornavida) istifadə edin. Bəzi bağlama əlaqələri məhsulu bir yerdə saxlayır, buna görə ayırmaq asandır.

İndi yuxarıdakı işığı söndürə və digər elektronikadan ayıra bilərsiniz. Yalnız işığa və korpusun üst hissəsinə ehtiyacımız olacaq. Qalanını saxla və ya at, bu sənin işindir!

Addım 2: Avadanlıqların Hazırlanması

Avadanlığın Hazırlanması
Avadanlığın Hazırlanması
Avadanlığın Hazırlanması
Avadanlığın Hazırlanması
Avadanlığın Hazırlanması
Avadanlığın Hazırlanması
Avadanlığın Hazırlanması
Avadanlığın Hazırlanması

Bu layihə üçün təcəssümü daha gözəl və daha sürətli etmək üçün Philips Hue işığından istifadə etdik. Çörək taxtası ilə şəkildə göstərildiyi kimi, adi bir RGB LED də istifadə edə bilərsiniz.

RGB LEDini işlətmək üçün sancaqları Arduinonun üç fərqli PWM portuna bağlayın (ba a ~ göstərilir). Bu əlaqə üçün 100Ohm rezistorlardan istifadə edin. Ən uzun pimi Arduinonun 5V çıxışına qoşun. Hansı pinin hansı rəngə uyğun olduğunu görmək üçün bu addımın son görüntüsünə baxın.

Hue Light üçün eyni addımlar gedir. LED, təyin olunmuş yuvalara telləri lehimləməklə asanlıqla Arduinoya bağlanır, bu addımdakı üçüncü şəklə baxın. Yuvalarda hansı telin hara getməsi lazım olduğunu göstərən bir R, G və B var. Arduino -nun 5V -ə və Arduino -nun torpağına qoşulmaq üçün ayrıca + və a - yuvasına malikdir. LED -i bağladıqdan sonra onu korpusa daxil edə bilərsiniz.

Alüminium folqadan hazırlanmış GSR sensorlarını bağlamaq üçün (və ya bir az daha gözəl görünən alumium çay qablarından istifadə edin), onları bir telə lehimləyin və ya lentlə bağlayın və birini 5V -ə qoşun. Digərini 100KOhm müqavimətinə və Arduino üzərindəki yerə və A1 yuvasına bağlanmalı olan 0, 1mF (paralel) bir kondansatörə bağlayın. Bu, işıq rənginə və musiqiyə giriş olaraq istifadə ediləcək stress səviyyəsinin çıxışını verəcəkdir. Sensorları lampaya yapışdırdıq, buna görə də stresinizi ölçərkən tutmaq gözəl bir məhsul halına gəlir. Sensorların toxunmamasına diqqət yetirin!

Son şəkil, çörək taxtası olmadan necə edilə biləcəyini göstərir.

Addım 3: Stress səviyyəsinin ölçülməsi

Stress səviyyəsinin ölçülməsi
Stress səviyyəsinin ölçülməsi

Yalnız bu evdə hazırlanan sensorlar ilə stres səviyyəsini ölçmək, nə qədər stresli olduğunuzu dəqiq ölçməyəcək. Ancaq doğru kalibr edildikdə, bir təxmini verə bilər.

GSR səviyyələrini ölçmək üçün Arduino mühitində aşağıdakı kod parçasından istifadə edəcəyik. Daha az dalğalanan bir ölçmə üçün hər 10 oxunuşda ortalamalar alınır.

const int numReadings = 10; int oxunuşları [numReadings]; // A1 -dən giriş int index = 0; // cari oxu indeksi int total = 0; // işləyən ümumi imzasız uzun orta = 0; // ort

int inputPin = A1;

boş quraşdırmaGSR ()

{// bütün oxunuşları 0 olaraq təyin edin:

(int i = 0; i <numReadings; i ++) oxunuşları üçün = 0; }

imzasız uzun müddətliGSR () {

total = total - oxunuşlar [indeks]; // GSR sensor oxunuşlarından oxumaq [index] = analogRead (inputPin); // cəmi ümumi = ümumi + oxunuşlara yeni oxu əlavə et [indeks]; // sıra indeksinin növbəti mövqeyi = index + 1;

// serialın sonu

if (index> = numReadings) // və index = 0 -dan başla;

// ortalaması nədir

orta = ümumi / sayıOxumlar; // onu ASCII rəqəmlərinin ortalaması kimi kompüterə göndərin;

}

Başqa bir sekmədə (işləri nizamlamaq üçün), kodu ölçmələrə reaksiya verəcəyik, növbəti addıma baxın!

Addım 4: İşıqların idarə edilməsi

İşıqların idarə edilməsi
İşıqların idarə edilməsi
İşıqların idarə edilməsi
İşıqların idarə edilməsi
İşıqların idarə edilməsi
İşıqların idarə edilməsi

İşıqları idarə etmək üçün əvvəlcə ölçüləri kalibr etməliyik. Serial monitoru açaraq ölçmələrinizin yuxarı həddinin nə olduğunu yoxlayın. Bizim üçün ölçmələr 150 (həqiqətən rahatlamağa çalışdığımız zaman) ilə 300 (stresə düşmək üçün çox çalışdığımız zaman) arasında bir şey idi.

Sonra, hansı rəngin stres səviyyəsini təmsil etməli olduğuna qərar verin. Bunu belə etdik:

1. Aşağı stres səviyyəsi: ağ işıq, artan streslə yaşıl işığa çevrilir

2. Orta stres səviyyəsi: yaşıl işıq, artan streslə mavi işığa dəyişmə

3. Yüksək stres səviyyəsi: mavi işıq, artan streslə qırmızıya çevrilir

Ölçmələri emal etmək və onları LED -ə göndərmək üçün dəyərlərə çevirmək üçün aşağıdakı kod istifadə edilmişdir:

// MASTER #DEBINE təyin edin 0

// GSR = A1

int gsrVal = 0; // Sensorlardan daxil olan məlumatları saxlamaq üçün dəyişən

// Qeyd edildiyi kimi, Pulse-width Modulation (PWM) pinlərindən istifadə edin

int redPin = 9; // Qırmızı LED, rəqəmsal pin 9 int grnPin = 9 -a bağlıdır; // Yaşıl LED, rəqəmsal pin 10 int bluPin = 5 -ə bağlıdır; // Mavi LED, rəqəmsal pin 11 -ə bağlıdır

// Proqram dəyişənləri

int redVal = 0; // pinlərə göndəriləcək dəyərləri saxlamaq üçün dəyişənlər int grnVal = 0; int bluVal = 0;

işarəsiz uzun gsr = 0;

boş quraşdırma ()

{pinMode (bluPin, ÇIXIŞ); pinMode (grnPin, Çıxış); pinMode (redPin, ÇIXIŞ); pinMode (A1, GİRİŞ);

Serial.begin (9600);

setupGSR (); }

boşluq döngəsi ()

{gsrVal = gsr; if (gsrVal <150) // gsr aralığının ən aşağı üçdə biri (0-149) {gsr = (gsrVal /10) * 17; // 0-255-ə qədər normallaşdırın redVal = gsrVal; // tam grnVal = gsrVal; // Yaşıldan tam bluVal = gsrVal; // Mavi tamdırSimli səsA = "A"; Serial.println (SoundA); // daha sonra əməliyyat musiqisində istifadə üçün} else if if (gsrVal <250) // gsr aralığının orta üçdə biri (150-249) {gsrVal = ((gsrVal-250) /10) * 17; // Normallaşdırın 0-255 redVal = 1; // Qırmızı söndürmə grnVal = gsrVal; // Yaşıldan tamdan bluVal = 256 - gsrVal; // Mavi offdan tam String SoundB = "B"; Serial.println (SoundB); } başqa // gsr aralığının yuxarı üçdə biri (250-300) {gsrVal = ((gsrVal-301) /10) * 17; // 0-255-ə qədər normallaşdırın redVal = gsrVal; // Qırmızı söndürüldükdən tam grnVal = 1; // Yaşıl tam bluVal = 256 - gsrVal; // Mavi tamdan sönük String SoundC = "C"; Serial.println (SoundC); }

analogWrite (redPin, redVal); // LED pinlərinə analogWrite (grnPin, grnVal) dəyərlər yazın; analogWrite (bluPin, bluVal); gsr = runGSR (); gecikmə (100); }

İndi LED stress səviyyənizə reaksiya verir, bir sonrakı mərhələdə əhvalınızı ifadə etmək üçün bir az musiqi əlavə edək.

Addım 5: Musiqinin idarə edilməsi

Musiqinin idarə edilməsi
Musiqinin idarə edilməsi

Aşağıdakı musiqi ilə 3 stres səviyyəsini təmsil etməyi seçdik:

1. Aşağı səviyyə (A): oxuyan qablar və quşların cingiltisi, çox yüngül səs

2. Orta səviyyə (B): melanxolik piano, bir az daha ağır səs

3. Yüksək stres səviyyəsi (C): Göy gurultusu, qaranlıq bir səs (olduqca rahat olsa da)

Kod, Arduinonun proqram təminatı ilə əlaqəli hissəsini təmin edən bir proqram olan Processing -də yazılmışdır:

idxal emalı.serial.*; idxal ddf.minim.*;

Minimum minimum;

AudioPlayer pleyerləri;

int lf = 10; // ASCII -də Linefeed

String myString = null; Serial myPort; // serial sensor int sensorValue = 0;

boş quraşdırma () {

// Bütün mövcud serial portlarını yazın printArray (Serial.list ()); // İstifadə etdiyiniz portu Arduino myPort = new Serial ilə eyni sürətlə açın (bu, Serial.list () [2], 9600); myPort.clear (); // aydın ölçülər myString = myPort.readStringUntil (lf); myString = null; // bunu Minim -ə ötürürük ki, faylları yükləyə bilsin minim = new Minim (bu); oyunçular = yeni AudioPlayer [3]; // Buradakı audio faylın adını dəyişdirin və kitabxanaçılara əlavə edin oyunçular [0] = minim.loadFile ("Singing-bowls-and-birds-cingiltili-yuxu-musiqi.mp3"); oyunçular [1] = minim.loadFile ("Melanxolik-piano-musiqi.mp3"); oyunçular [2] = minim.loadFile ("Fırtına-səs.mp3"); }

boş çəkmə () {

// yeni bir dəyər olub olmadığını yoxlayın (myPort.available ()> 0) {// məlumatları myString -də saxlamaq myString = myPort.readString (); // həqiqətən bir şeyin olub olmadığını yoxlayın (myString! = null) {myString = myString.trim (); // bir şeyin olub olmadığını yoxlayın (myString.length ()> 0) {println (myString); cəhd edin {sensorValue = Integer.parseInt (myString); } tutmaq (İstisna e) {} if (myString.equals ("A")) // baxın nə gərginlik səviyyəsini ölçür {oyunçular [0].play (); // musiqiyə uyğun çal} başqa {oyunçular [0].pause (); // aşağı stres səviyyəsini ölçmürsə,} if (myString.equals ("B")) {player [1].play (); } başqa {oyunçu [1].pause (); } if (myString.equals ("C")) {oyunçular [2].play (); } başqa {oyunçu [2].pause (); }}}}}

Bu kod musiqini dizüstü kompüter dinamiklərimizdəki stres səviyyəsinə uyğun çalmalıdır.

Addım 6: Embodimenti tərtib edin

Image
Image
Təminatı dizayn edin
Təminatı dizayn edin

Philips Hue Lightın yuxarı hissəsini istifadə etdik, ancaq altını yaşıl köpüklə bağladıq. SolidWorksfile burada, ancaq lampanı özünüz ölçmək və zövqünüzə uyğun bir şey dizayn etmək də əyləncəli ola bilər!

Aşağıdakı şəklin üst əyriyə uyğun olmasını təmin etmək üçün lampanın üst hissəsinin şəklini SW -də alt qat kimi istifadə etdik (ilk fotoya baxın).

Modelin cnc'd olması üçün onu bir STL faylı olaraq qeyd edin və yerli frezeləyicinizi tapın (məsələn, universitetdə).

Addım 7: Mənbələr

Bu mövzuda daha çox məlumat əldə etmək və ya stressi ölçmək üçün daha geniş kodları görmək istəyirsinizsə, aşağıdakı veb saytlara və layihələrə baxın:

  • Qenerasiya (istifadə etdiyimiz) audiofaylların tetiklenmesine dair daha çox izahat
  • GSR haqqında gözəl bir kitab
  • Əhval -ruhiyyə proyeksiyasına sərin fərqli yanaşma
  • Çox sensorlar ilə həqiqətən sərin stress detektoru (bu layihəyə böyük ilham)
  • RGB LED ilə səs (stress yerinə) proyektoru
  • GSR haqqında yaxşı məqalə

Tövsiyə: