Мазмұны:

Көңіл -күй проекторы (GSR бар Philips Hue Light Hacked) TfCD: 7 қадам (суреттермен)
Көңіл -күй проекторы (GSR бар Philips Hue Light Hacked) TfCD: 7 қадам (суреттермен)

Бейне: Көңіл -күй проекторы (GSR бар Philips Hue Light Hacked) TfCD: 7 қадам (суреттермен)

Бейне: Көңіл -күй проекторы (GSR бар Philips Hue Light Hacked) TfCD: 7 қадам (суреттермен)
Бейне: Watch how I sync my mood with my lighting! 2024, Шілде
Anonim
Image
Image
Реңк жарығын ажыратыңыз
Реңк жарығын ажыратыңыз

Авторы: Лаура Ахсманн мен Маайке Вебер

Мақсаты: Көңіл-күйдің төмендігі мен күйзеліс-бұл қазіргі өмірдің үлкен бөлігі. Бұл да сырт көзге көрінбейтін нәрсе. Егер біз өзіміздің сезім деңгейімізді өніммен визуалды түрде де, акустикалық түрде де көрсете алсақ ше? Бұл проблемалар туралы сөйлесуді жеңілдетеді. Сіздің жеке реакцияңыз сіздің стресстік деңгейлеріңіз туралы кері байланыс алған сәтте сәйкес болуы мүмкін.

GSR немесе гальваникалық теріге төзімділік - бұл қолданушының саусақ ұшымен өлшенетін стресстің жақсы болжаушысы. Қолдағы тер бездері стресске (тек физикалық жаттығуларға ғана емес) жауап беретіндіктен, кернеу деңгейінің жоғарылауы жоғары өткізгіштікке әкеледі. Бұл айнымалы осы жобада қолданылады.

Идея: Егер біз күйзелісті немесе көңіл -күйді тез анықтап, оны түрлі -түсті жарық пен музыкамен көрсете алсақ ше? GSR жүйесі мұны жүзеге асыра алады. Бұл нұсқаулықта біз Arduino негізіндегі жүйені жасаймыз! Arduino Software және Processing Software екеуі де басқарады, ол терінің өткізгіштік мәндерін белгілі бір түсті жарыққа және музыканың белгілі бір түріне аударады.

Саған не қажет?

  • Ардуино Уно
  • Сымдар
  • Philips Hue жарығы (тірі түстер)
  • 100 Омдық үш резистор (RGB жарық диоды үшін)
  • Бір 100 КОм резистор (GSR сенсоры үшін)
  • Алюминий фольга сияқты өткізгіш сенсор ретінде әрекет ететін нәрсе
  • Arduino бағдарламалық қамтамасыз ету
  • Өңдеу бағдарламалық жасақтамасы (біз v2.2.1 қолдандық, жаңалары апатқа ұшырайды)
  • SolidWorks, корпусты жобалау үшін (міндетті емес)
  • CNC диірменіне қол жеткізу (міндетті емес)
  • Жасыл модельдеу көбігі (EPS)
  • Нан тақтасы (міндетті емес, сонымен қатар дәнекерлеуге болады)

1 -қадам: Реңк жарығын алыңыз

Бұл қадам оңай, шамалы жоғалуға және жарылуға мүмкіндік беретін күш (немесе бұрағыш) қолданыңыз. Кейбір қосылымдар өнімді біріктіреді, сондықтан оларды ажырату оңай.

Енді үстіңгі жағындағы жарықты бұрап, электрониканың қалған бөлігінен ажыратуға болады. Бізге тек жарық пен корпустың жоғарғы жағы қажет болады. Қалғанын сақтаңыз немесе лақтырыңыз, бұл сізге байланысты!

2 -қадам: жабдықты дайындау

Аппараттық құралдарды дайындау
Аппараттық құралдарды дайындау
Аппараттық құралдарды дайындау
Аппараттық құралдарды дайындау
Аппараттық құралдарды дайындау
Аппараттық құралдарды дайындау
Аппараттық құралдарды дайындау
Аппараттық құралдарды дайындау

Бұл жобаны іске асыру үшін біз Philips Hue жарығын қолдандық. Сонымен қатар, суретте тақтада көрсетілгендей, әдеттегі RGB жарық диодты қолдануға болады.

RGB жарықдиодты басқару үшін түйреуіштерді Arduino үш түрлі PWM портына қосыңыз (ba a ~ көрсетілген). Бұл байланыс үшін 100 Ом резисторларын қолданыңыз. Ең ұзын істікті Arduino 5В шығысына қосыңыз. Қандай түйреуіш қай түске сәйкес келетінін көру үшін осы қадамның соңғы суретін қараңыз.

Реңк жарығы үшін дәл сол қадамдар жүреді. Жарық диодты Arduino -ға сымдарды арнайы ұяларға дәнекерлеу арқылы оңай қосылады, осы қадамдағы үшінші суретті қараңыз. Ұяшықтарда R, G және B бар, ол қай сым қайда кетуі керектігін көрсетеді. Ол сондай -ақ Arduino 5V -ге және Arduino -ның жеріне қосылатын + және a -ұяшығына ие. Жарық диодты қосқаннан кейін оны корпусқа қайта бұруға болады.

Алюминий фольгадан жасалған GSR датчиктерін қосу үшін (немесе сәл жақсы көрінетін алюминий контейнерлерін қолданыңыз), оларды сымға дәнекерлеңіз немесе таспамен бекітіңіз және біреуін 5В -ке қосыңыз. Екіншісін 100KOm резисторға және 0, 1mF конденсаторға қосыңыз (параллель), содан кейін Arduino -дағы жерге және A1 ұясына қосылуы керек. Бұл жарықтың түсі мен музыканы енгізу үшін қолданылатын стресс деңгейінің шығуын береді. Біз сенсорларды шамға жабыстырдық, сондықтан сіздің кернеуіңізді өлшеу кезінде жақсы өнімге айналады. Сенсорлардың жанаспауын қадағалаңыз!

Соңғы суретте оны тақтасыз қалай жасауға болатыны көрсетілген.

3 -қадам: Стресс деңгейін өлшеу

Стресс деңгейін өлшеу
Стресс деңгейін өлшеу

Дәл осы үй сенсорларының көмегімен стресстің деңгейін өлшеу сіздің қаншалықты күйзеліске түскеніңізді дәл өлшеуге мүмкіндік бермейді. Дегенмен, дұрыс калибрленгенде, ол жуықтап бере алады.

GSR деңгейін өлшеу үшін біз Arduino ортасында келесі кодты қолданамыз. Өлшеу аз болуы үшін орташа көрсеткіш әр 10 оқылымда алынады.

const int numReadings = 10; int оқулары [numReadings]; // кірістіру A1 int index = 0; // ағымдағы оқу индексі int total = 0; // жұмыс істейтін жалпы белгісіз ұзақ орташа = 0; // орташа

int inputPin = A1;

жарамсыз баптауGSR ()

{// барлық оқуларды 0 етіп орнатыңыз:

(int i = 0; i <numReadings; i ++) оқулары үшін = 0; }

қол қойылмаған ұзақ мерзімдіGSR () {

total = total - көрсеткіштер [индекс]; // GSR сенсорының көрсеткіштерінен оқу [индекс] = analogRead (inputPin); // total total = new + readings [index] жаңа оқуды қосу; // массив индексінің келесі позициясы = индекс + 1;

// массивтің соңы

if (index> = numReadings) // және index = 0 -ден бастаңыз;

// орташа көрсеткіш

орташа = жиынтық / санОқулар; // оны компьютерге ASCII цифрларының орташа қайтару мәні ретінде жіберу;

}

Басқа қойындыда (тәртіпті сақтау үшін) біз кодты өлшеулерге жауап ретінде жасаймыз, келесі қадамды қараңыз!

4 -қадам: Шамдарды басқару

Шамдарды басқару
Шамдарды басқару
Шамдарды басқару
Шамдарды басқару
Шамдарды басқару
Шамдарды басқару

Жарықтарды басқару үшін алдымен өлшемдерді калибрлеу керек. Сериялық мониторды ашу арқылы өлшеудің жоғарғы шегі қандай екенін тексеріңіз. Біз үшін өлшемдер 150 (біз шынымен демалуға тырысқан кезде) мен 300 (біз күйзеліске түсу үшін қатты тырысқанда) арасында болды.

Содан кейін, қандай түс стресс деңгейін көрсететінін шешіңіз. Біз осылай жасадық:

1. Төмен кернеу деңгейі: ақ жарық, кернеудің жоғарылауымен жасыл шамға ауысады

2. Орташа кернеу деңгейі: жасыл жарық, кернеудің жоғарылауымен көк шамға ауысады

3. Жоғары кернеу деңгейі: көк жарық, кернеудің жоғарылауымен қызыл түске ауысады

Өлшеуді өңдеу және оларды жарық диодты сигналға жіберу үшін мәнге айналдыру үшін келесі код қолданылды:

// MASTER #DEBUG анықтау 0

// GSR = A1

int gsrVal = 0; // Сенсорлардан кірісті сақтау үшін айнымалы

// Жоғарыда айтылғандай, импульстік енді модуляция (PWM) түйреуіштерін қолданыңыз

int redPin = 9; // Қызыл жарықдиодты, 9 int grnPin = 9 цифрлық түйреуішіне қосылған; // Жасыл жарық диодты, цифрлық түйреуішке қосылған 10 int bluPin = 5; // Сандық түйреуішке қосылған көк жарықдиодты 11

// Бағдарламаның айнымалылары

int redVal = 0; // түйреуіштерге жіберілетін мәндерді сақтау үшін айнымалылар int grnVal = 0; int bluVal = 0;

белгісіз ұзын gsr = 0;

жарамсыз орнату ()

{pinMode (bluPin, OUTPUT); pinMode (grnPin, OUTPUT); pinMode (redPin, OUTPUT); pinMode (A1, INPUT);

Serial.begin (9600);

setupGSR (); }

бос цикл ()

{gsrVal = gsr; if (gsrVal <150) // gsr диапазонының ең төменгі үштен бірі (0-149) {gsr = (gsrVal /10) * 17; // 0-255 дейін қалыпқа келтіру redVal = gsRVal; // толық өшіру grnVal = gsrVal; // Жасыл сөндіруден толық bluVal = gsRVal; // Толық көк түсЖолдық дыбысA = «A»; Serial.println (SoundA); // операциялық музыкада кейін қолдану үшін} else if if (gsrVal <250) // gsr диапазонының орта үштен бірі (150-249) {gsrVal = ((gsrVal-250) /10) * 17; // 0-255 redVal = 1 дейін қалыпқа келтіру; // Қызыл өшіру grnVal = gsrVal; // Жасыл толықтан өшірулі bluVal = 256 - gsRVal; // Көк түс өшіруден толық String SoundB = «B»; Serial.println (SoundB); } else // gsr диапазонының жоғарғы үштен бірі (250-300) {gsrVal = ((gsrVal-301) /10) * 17; // 0-255 дейін қалыпқа келтіру redVal = gsRVal; // Қызыл сөндіруден толыққа дейін grnVal = 1; // Жасыл түс толық bluVal = 256 - gsrVal; // Көк түстен толыққа дейін String SoundC = «C»; Serial.println (SoundC); }

analogWrite (redPin, redVal); // мәндерді жарықдиодты түйреуіштерге analogWrite жазыңыз (grnPin, grnVal); analogWrite (bluPin, bluVal); gsr = runGSR (); кешіктіру (100); }

Енді жарық диоды сіздің стресс деңгейіңізге жауап береді, келесі қадамда сіздің көңіл -күйіңізді білдіретін музыканы қосайық.

5 -қадам: Музыканы басқару

Музыканы басқару
Музыканы басқару

Біз 3 музыкалық деңгеймен келесі музыкамен таныстыруды шештік:

1. Төмен деңгей (А): ән салатын табақтар мен құстардың сайрауы, өте жеңіл дыбыс

2. Орташа деңгей (В): меланхоликалық фортепиано, сәл ауыр дыбыс

3. Стресстің жоғары деңгейі (C): найзағай, қараңғы дыбыс (бірақ босаңсытады)

Код Arduino бағдарламалық қамтамасыз ету бойынша кері байланыс бөлігін қамтамасыз етуге арналған Processing бағдарламасында жазылған:

импорт өңдеу.сериал.*; импорт ddf.minim.*;

Минимум минимум;

AudioPlayer ойнатқыштары;

int lf = 10; // ASCII -де Linefeed

MyString жолы = бос; Сериялық myPort; // сериялық порт int sensorValue = 0;

жарамсыз орнату () {

// printArray (Serial.list ()) барлық қол жетімді сериялық порттардың тізімі; // Қолданылатын портты Arduino myPort = new Serial сияқты жылдамдықпен ашыңыз (бұл, Serial.list () [2], 9600); myPort.clear (); // анық өлшемдер myString = myPort.readStringUntil (lf); myString = бос; // біз мұны Minim -ге жібереміз, ол minim = new Minim файлдарын жүктей алады (бұл); ойыншылар = жаңа AudioPlayer [3]; // Аудио файлдың атауын осында өзгертіңіз және оны кітапханаларға қосыңыз ойыншылар [0] = minim.loadFile («Singing-bowls-and-birds-chirping-sleep-music.mp3»); ойыншылар [1] = minim.loadFile («Меланхолик-фортепиано-музыка.mp3»); ойыншылар [2] = minim.loadFile («Storm-sound.mp3»); }

жарамсыз ұтыс () {

// (myPort.available ()> 0) {// деректерді myString ішінде сақтау myString = myPort.readString () кезінде жаңа мән бар -жоғын тексеріңіз; // бізде шынымен бірдеңе бар -жоғын тексеріңіз, егер (myString! = null) {myString = myString.trim (); // егер (myString.length ()> 0) {println (myString); {sensorValue = Integer.parseInt (myString) көріңіз; } catch (Ерекше д) {} if (myString.equals («A»)) // оның қандай стресс деңгейін өлшейтінін қараңыз {player [0].play (); // музыкаға сәйкес ойнау} else {player [0].pause (); // егер ол стресстің төмен деңгейін өлшемесе, сәйкес әнді ойнатпаңыз} if (myString.equals («B»)) {player [1].play (); } басқа {ойыншылар [1].pause (); } if (myString.equals («C»)) {ойыншылар [2].play (); } басқа {ойыншылар [2].pause (); }}}}}

Бұл код музыканы біздің ноутбук динамиктеріндегі стресс деңгейіне сәйкес ойнатуы керек.

6 -қадам: Шығарманы жасаңыз

Image
Image
Орындауды жасаңыз
Орындауды жасаңыз

Біз Philips Hue Light жоғарғы бөлігін қолдандық, бірақ түбін жасыл көбікпен бекітеміз. SolidWorksfile осында, бірақ шамды өзіңіз өлшеп, талғамыңызға сай дизайн жасау да қызықты болар еді!

Біз шамның үстіңгі бөлігінің суретін БҚ -да астыңғы қабат ретінде пайдаландық, оның түбінің формасы жоғарғы қисыққа сәйкес келетініне көз жеткізу үшін (бірінші суретті қараңыз).

Cnc'd үлгісін алу үшін оны STL файлы ретінде сақтаңыз және жергілікті диірменді табыңыз (мысалы, университетте).

7 -қадам: Дереккөздер

Егер сіз осы тақырып бойынша көбірек ақпарат алғыңыз келсе немесе кернеуді өлшеудің кеңейтілген кодтарын көргіңіз келсе, келесі веб -сайттар мен жобаларды қараңыз:

  • Өңдеудегі аудиофайлдарды қосу туралы қосымша түсініктеме (біз қолдандық)
  • GSR туралы жақсы нұсқаулық
  • Көңіл -күйді жобалаудың керемет әдісі
  • Бірнеше сенсорлары бар шынымен керемет кернеу детекторы (бұл жобаға үлкен шабыт)
  • RGB светодиоды бар дыбыстық (кернеудің орнына) проектор
  • GSR туралы жақсы мақала

Ұсынылған: