Съдържание:

Проектор за настроение (Hacked Philips Hue Light с GSR) TfCD: 7 стъпки (със снимки)
Проектор за настроение (Hacked Philips Hue Light с GSR) TfCD: 7 стъпки (със снимки)

Видео: Проектор за настроение (Hacked Philips Hue Light с GSR) TfCD: 7 стъпки (със снимки)

Видео: Проектор за настроение (Hacked Philips Hue Light с GSR) TfCD: 7 стъпки (със снимки)
Видео: САМЫЙ ВЫГОДНЫЙ ПРОЕКТОР С АНДРОИДОМ ЗА 6000 2024, Юли
Anonim
Image
Image
Отделете Hue Light
Отделете Hue Light

От Лора Ахсман и Маайке Вебер

Предназначение: Ниското настроение и стресът са голяма част от съвременния забързан живот. Това също е нещо, което е невидимо отвън. Ами ако можем да визуално и акустично да проектираме стресовото си ниво с продукт, за да можем да покажем какво чувствате. Това би улеснило комуникацията по тези проблеми. Вашата собствена реакция също може да бъде по -адекватна на момента, когато получавате обратна връзка за нивата на стрес.

GSR или галванично съпротивление на кожата, измерване, направено на една ръка разстояние от потребител, е доказано, че е наистина добър предиктор на стреса. Тъй като потниците в ръката реагират най -вече на стрес (не само физически упражнения), повишените нива на стрес генерират по -висока проводимост. Тази променлива се използва в този проект.

Идея: Ами ако можем бързо да открием стреса или настроението и да го представим с цветна светлина и музика? GSR система може да направи това да се случи. В тази инструкция ще направим система, базирана на Arduino, за да направим това! Управляван както от софтуера Arduino, така и от софтуера за обработка, той ще преобразува стойностите на проводимостта на кожата в определена цветна светлина и определен тип музика.

Какво ти е необходимо?

  • Arduino Uno
  • Проводници
  • Светлина Philips Hue (живи цветове)
  • Три 100 ома резистора (за RGB LED)
  • Един резистор от 100 KOhm (за сензора GSR)
  • Нещо, което да действа като сензори за проводимост, като алуминиево фолио
  • Софтуер Arduino
  • Софтуер за обработка (използвахме v2.2.1, по -новите са склонни да се сринат)
  • SolidWorks, за проектиране на корпуса (по избор)
  • Достъп до мелница с ЦПУ (по избор)
  • Зелена моделираща пяна (EPS)
  • Платка (по избор, може и да се запоява)

Стъпка 1: Разделете Hue Light

Тази стъпка е лесна, просто използвайте малко сила (или отвертка), оставете светлината да се загуби и да отвори. Някои превключващи връзки държат продукта заедно, така че е лесно да се разглобяват.

Сега светлината в горната част може да бъде изключена и изключена от останалата електроника. Ще ни трябват само светлината и горната част на корпуса. Запазете или хвърлете останалото, зависи от вас!

Стъпка 2: Подготовка на хардуера

Подготовка на хардуера
Подготовка на хардуера
Подготовка на хардуера
Подготовка на хардуера
Подготовка на хардуера
Подготовка на хардуера
Подготовка на хардуера
Подготовка на хардуера

За този проект използвахме светлина Philips Hue, за да направим въплъщението по -красиво и по -бързо. Можете обаче да използвате и обикновен RGB LED, както е показано на снимката с макета.

За да работите с RGB светодиода, свържете щифтовете към три различни PWM порта на Arduino (посочено ba a ~). Използвайте 100Ohm резистори за тази връзка. Свържете най -дългия щифт към 5V изхода на Arduino. За да видите кой щифт съответства на кой цвят, вижте последното изображение на тази стъпка.

За Hue Light вървят същите стъпки. Светодиодът лесно се свързва към Arduino чрез запояване на проводници към определените слотове, вижте третата снимка в тази стъпка. Слотовете имат R, A G и B, което показва кой проводник къде трябва да отиде. Той също има слот + и a - за свързване съответно към 5V на Arduino и земята на Arduino. След като свържете светодиода, можете да го завиете обратно в корпуса.

За да свържете сензорите GSR, направени от алуминиево фолио (или използвайте тези алуминиеви контейнери от чаени свещи, които изглеждат малко по -хубави), запоявайте ги или ги залепете с тел и ги свържете към 5V. Свържете другия към резистора от 100KOhm и кондензатор от 0, 1mF (паралелен), който след това трябва да бъде свързан към земята и слота A1 на Arduino. Това ще даде изхода на нивото на напрежение, което след това ще се използва като вход за светъл цвят и музика. Ние залепихме сензорите към лампата, така че тя се превръща в приятен продукт, който да хванете, докато измервате стреса си. Внимавайте обаче сензорите да не се докосват!

Последната снимка показва как може да се направи без макет.

Стъпка 3: Измерване на нивото на напрежение

Измерване на нивото на напрежение
Измерване на нивото на напрежение

Измерването на нивото на напрежение само с тези домашни сензори определено няма да даде точни измервания колко сте стресирани. Въпреки това, когато е калибриран надясно, той може да даде приближение.

За да измерим нивата на GSR, ще използваме следния код в средата Arduino. За по -малко колебаещи се измервания се прави средна стойност на всеки 10 показания.

const int numReadings = 10; int показания [numReadings]; // вход от A1 int index = 0; // индексът на текущото отчитане int total = 0; // текущата сума без знак без дълга средна стойност = 0; // средната

int inputPin = A1;

void setupGSR ()

{// задайте всички показания на 0:

за (int i = 0; i <numReadings; i ++) показания = 0; }

unsigned long runGSR () {

общо = общо - показания [индекс]; // четене от показанията на сензора на GSR [индекс] = analogRead (inputPin); // добавяме ново отчитане към общата сума = общо + показания [индекс]; // следваща позиция на масива индекс = индекс + 1;

// тест края на масива

if (index> = numReadings) // и започнете отначало index = 0;

// каква е средната

средно = общо / бройЧетения; // изпращаме го на компютъра като ASCII цифри връща средна стойност;

}

В друг раздел (за да поддържаме нещата организирани), ще накараме кода да реагира на измерванията, вижте следващата стъпка!

Стъпка 4: Управление на светлините

Управление на светлините
Управление на светлините
Управление на светлините
Управление на светлините
Управление на светлините
Управление на светлините

За да управляваме светлините, първо трябва да калибрираме измерванията. Проверете каква е горната граница на вашите измервания, като отворите серийния монитор. За нас измерванията бяха нещо средно между 150 (когато наистина се опитахме да се отпуснем) и 300 (когато се опитахме наистина да се стресираме).

След това решете какъв цвят трябва да представлява нивото на стрес. Направихме го така, че:

1. Ниско ниво на стрес: бяла светлина, преминаваща в зелена светлина с нарастващ стрес

2. Средно ниво на стрес: зелена светлина, преминаваща в синя светлина с нарастващ стрес

3. Високо ниво на стрес: синя светлина, променяща се в червена с нарастващ стрес

Следният код беше използван за обработка на измерванията и превръщането им в стойности за изпращане към светодиода:

// MASTER #define 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;

void setup ()

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

Serial.begin (9600);

setupGSR (); }

void loop ()

{gsrVal = gsr; if (gsrVal <150) // Най-ниската трета от gsr диапазона (0-149) {gsr = (gsrVal /10) * 17; // Нормализиране до 0-255 redVal = gsrVal; // изключено до пълно grnVal = gsrVal; // Зелено от изключено до пълно bluVal = gsrVal; // Изключено до синьоString SoundA = "A"; Serial.println (SoundA); // за по-късна употреба в операционна музика} else 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); // Записване на стойности в LED изводи analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal); gsr = runGSR (); забавяне (100); }

Така че сега светодиодът реагира на вашето ниво на стрес, нека добавим малко музика, която да представи вашето настроение, в следващата стъпка.

Стъпка 5: Управление на музиката

Управление на музиката
Управление на музиката

Избрахме да представим трите нива на стрес със следната музика:

1. Ниско ниво (А): пеещи купички и чуруликане на птици, много лек звук

2. Средно ниво (B): меланхолично пиано, малко по -тежък звук

3. Високо ниво на стрес (C): гръмотевична буря, тъмен звук (макар и доста релаксиращ)

Кодът е написан в Processing, софтуер, който предоставя част от софтуера за обратна връзка на Arduino:

импортиране на обработка.serial.*; импортиране на ddf.minim.*;

Минимален минимум;

Плейъри на AudioPlayer ;

int lf = 10; // Linefeed в ASCII

Низ myString = null; Сериен myPort; // Серийният порт int sensorValue = 0;

void setup () {

// Списък на всички налични серийни портове printArray (Serial.list ()); // Отворете порта, който използвате със същата скорост като Arduino myPort = new Serial (this, Serial.list () [2], 9600); myPort.clear (); // изчистване на измерванията myString = myPort.readStringUntil (lf); myString = null; // предаваме това на Minim, за да може да зарежда файлове minimum = new Minim (this); плейъри = нов AudioPlayer [3]; // Променете името на аудио файла тук и го добавете към библиотеките плейъри [0] = minim.loadFile ("Singing-bowls-and-birds-chirping-sleep-music.mp3"); плейъри [1] = minim.loadFile ("Меланхолично-пиано-музика.mp3"); плейъри [2] = minim.loadFile ("Буря-звук.mp3"); }

void draw () {

// проверява дали има нова стойност while (myPort.available ()> 0) {// съхранява данните в myString myString = myPort.readString (); // проверяваме дали наистина имаме нещо if (myString! = null) {myString = myString.trim (); // проверява дали има нещо if (myString.length ()> 0) {println (myString); опитайте {sensorValue = Integer.parseInt (myString); } catch (Exception e) {} if (myString.equals ("A")) // вижте какъв стрес измерва {играчи [0].play (); // пускане според музика} else {играчи [0].pause (); // ако не измерва ниско ниво на стрес, не пускайте съответната песен} if (myString.equals ("B")) {играчи [1].play (); } else {играчи [1].pause (); } if (myString.equals ("C")) {играчи [2].play (); } else {играчи [2].pause (); }}}}}

Този код трябва да възпроизвежда музиката според нивото на стрес на високоговорителите на лаптопа ни.

Стъпка 6: Проектирайте изпълнението

Image
Image
Проектирайте изпълнението
Проектирайте изпълнението

Използвахме горната част на Philips Hue Light, но cnc'd дъно от зелена пяна. SolidWorksfile е тук, но също така би могло да бъде забавно да измерите лампата сами и да проектирате нещо по ваш вкус!

Използвахме снимка на горната част на лампата като подложка в SW, за да сме сигурни, че формата на дъното следва кривата на горната част (вижте първата снимка).

За да имате модела cnc'd, запишете го като STL файл и намерете вашия локален мелничар (например в uni).

Стъпка 7: Източници

Ако искате повече информация по тази тема или да видите по -обширни кодове за измерване на стреса, вижте следните уебсайтове и проекти:

  • Още обяснение за задействане на аудиофайлове при обработка (което използвахме)
  • Хубав наръчник за GSR
  • Готин различен подход към проектирането на настроение
  • Наистина страхотен детектор на стрес с множество сензори (голямо вдъхновение за този проект)
  • Звуков (вместо стрес) проектор с RGB LED
  • Добра статия за GSR

Препоръчано: