Sisukord:

Meeleoluprojektor (häkkinud Philips Hue Light koos GSR -iga) TfCD: 7 sammu (koos piltidega)
Meeleoluprojektor (häkkinud Philips Hue Light koos GSR -iga) TfCD: 7 sammu (koos piltidega)

Video: Meeleoluprojektor (häkkinud Philips Hue Light koos GSR -iga) TfCD: 7 sammu (koos piltidega)

Video: Meeleoluprojektor (häkkinud Philips Hue Light koos GSR -iga) TfCD: 7 sammu (koos piltidega)
Video: Two Grown Men on a Tiny Motorbike?...Edd China’s Workshop Diaries Ep 33 2024, Juuli
Anonim
Image
Image
Võtke Hue Light lahti
Võtke Hue Light lahti

Autorid: Laura Ahsmann & Maaike Weber

Eesmärk: Madal meeleolu ja stress on suur osa tänapäevasest kiirest elust. See on ka midagi, mis on väliselt nähtamatu. Mis siis, kui suudaksime tootega oma stressitaset nii visuaalselt kui ka akustiliselt projitseerida, et näidata, kuidas te end tunnete. See hõlbustaks nende probleemidega suhtlemist. Teie enda reaktsioon võib olla ka sobivam hetkele, kui saate tagasisidet oma stressitasemete kohta.

GSR ehk galvaaniline nahatakistus, kasutaja käeulatuses tehtud mõõt, on osutunud tõeliselt heaks stressi ennustajaks. Kuna käe higinäärmed reageerivad enamasti stressile (mitte ainult füüsilisele treeningule), tekitavad suurenenud stressitasemed suurema juhtivuse. Seda muutujat kasutatakse selles projektis.

Idee: Mis oleks, kui suudaksime kiiresti stressi või meeleolu tuvastada ning seda värvilise valguse ja muusikaga kujutada? GSR -süsteem võib seda teha. Selles juhendis teeme selleks Arduino -põhise süsteemi! Seda haldab nii Arduino tarkvara kui ka töötlemistarkvara, see teisendab naha juhtivuse väärtused teatud värvivalguseks ja teatud tüüpi muusikaks.

Mida sul vaja on?

  • Arduino Uno
  • Juhtmed
  • Philipsi toonvalgus (elavad värvid)
  • Kolm 100 oomi takistit (RGB LED -i jaoks)
  • Üks 100 KOhm takisti (GSR anduri jaoks)
  • Midagi juhtivusanduritena, näiteks alumiiniumfoolium
  • Arduino tarkvara
  • Töötlustarkvara (kasutasime v2.2.1, uuemad kipuvad kokku jooksma)
  • SolidWorks, korpuse kujundamiseks (valikuline)
  • Juurdepääs CNC -veskile (valikuline)
  • Roheline modelleerimisvaht (EPS)
  • Leivalaud (valikuline, võib ka joodetada)

Samm: võtke Hue Light lahti

See samm on lihtne, kasutage lihtsalt jõudu (või kruvikeerajat), mis laseb valguse kaotada ja praguneda. Mõned kinnitusühendused hoiavad toodet koos, nii et seda on lihtne lahti võtta.

Nüüd saab ülaosas oleva valguse välja keerata ja ülejäänud elektroonikast lahti ühendada. Vajame ainult valgust ja korpuse ülaosa. Ülejäänud salvestage või visake, see on teie otsustada!

Samm: riistvara ettevalmistamine

Riistvara ettevalmistamine
Riistvara ettevalmistamine
Riistvara ettevalmistamine
Riistvara ettevalmistamine
Riistvara ettevalmistamine
Riistvara ettevalmistamine
Riistvara ettevalmistamine
Riistvara ettevalmistamine

Selle projekti jaoks kasutasime Philipsi tooni valgust, et muuta teostus ilusamaks ja kiiremaks. Kuid võite kasutada ka tavalist RGB LED -i, nagu on näidatud leivalauaga pildil.

RGB LED -i kasutamiseks ühendage tihvtid Arduino kolme erineva PWM -pordiga (näidatud ba a ~). Kasutage selle ühenduse jaoks 100 Ohmi takistit. Ühendage pikim tihvt Arduino 5V väljundiga. Et näha, milline tihvt millisele värvile vastab, vaadake selle sammu viimast pilti.

Hue Light'i puhul toimivad samad sammud. LED on kergesti ühendatud Arduinoga, jootes juhtmed selleks ettenähtud piludesse, vt selle sammu kolmas pilt. Pesadel on R, G ja B, mis näitavad, milline traat kuhu peaks minema. Sellel on ka + ja a - pesa, mis tuleb ühendada vastavalt Arduino 5 V ja Arduino maaga. Kui olete LED -i ühendanud, saate korpuse sisse tagasi keerata.

Alumiiniumfooliumist valmistatud GSR -andurite ühendamiseks (või kasutage neid teeküünalde alumiiniummahuteid, mis näevad veidi kenamad välja), jootke või kleepige need juhtme külge ja ühendage üks 5V -ga. Ühendage teine takisti 100KOhm ja kondensaatoriga 0, 1mF (paralleelselt), mis tuleks seejärel ühendada maapinnaga ja Arduino A1 pesaga. See annab stressitaseme väljundi, mida seejärel kasutatakse valguse värvi ja muusika sisendina. Kinnitasime andurid lambi külge, nii et sellest saab stressi mõõtmise ajal kena toode. Olge siiski ettevaatlik, et andurid ei puutuks kokku!

Viimasel pildil on näha, kuidas saab hakkama ilma leivaplaadita.

3. samm: stressitaseme mõõtmine

Stressitaseme mõõtmine
Stressitaseme mõõtmine

Stressitaseme mõõtmine ainult nende isetehtud anduritega ei anna kindlasti täpseid mõõtmisi selle kohta, kui stressis te täpselt olete. Õige kalibreerimise korral võib see siiski anda ligikaudse hinnangu.

GSR taseme mõõtmiseks kasutame Arduino keskkonnas järgmist kooditükki. Vähem kõikuvate mõõtmiste saamiseks võetakse iga 10 lugemise kohta keskmine.

const int numReadings = 10; int näidud [numReadings]; // sisend A1 -st int indeks = 0; // praeguse näidu indeks int kokku = 0; // jooksev kogu allkirjastamata pikk keskmine = 0; // keskm

int inputPin = A1;

void setupGSR ()

{// määrake kõik näidud väärtusele 0:

(int i = 0; i <numReadings; i ++) näitude jaoks = 0; }

unsigned long runGSR () {

kokku = kokku - näidud [indeks]; // lugeda GSR anduri näitudest [indeks] = analogRead (inputPin); // lisada uus näit kogu kokku = kokku + näidud [indeks]; // massiivi järgmine positsioon indeks = indeks + 1;

// massiivi lõpp

if (indeks> = numReadings) // ja alusta otsast = 0;

// mis on keskm

keskmine = kokku / numReadings; // saata see arvutisse, kuna ASCII numbrid tagastavad keskmise;

}

Teisel vahekaardil (asjade korraldamiseks) teeme koodi mõõtmistele reageerimiseks, vaadake järgmist sammu!

4. samm: tulede haldamine

Valgustite haldamine
Valgustite haldamine
Valgustite haldamine
Valgustite haldamine
Valgustite haldamine
Valgustite haldamine

Tulede haldamiseks peame esmalt mõõtmised kalibreerima. Kontrollige, milline on teie mõõtmiste ülemine piir, avades seeriamonitori. Meie jaoks olid mõõtmised vahemikus 150 (kui me tõesti püüdsime lõõgastuda) ja 300 (kui me püüdsime tõsiselt stressi saada).

Seejärel otsustage, milline värv peaks stressitaset esindama. Me tegime selle nii, et:

1. Madal stressitase: valge tuli, muutudes suureneva stressiga roheliseks

2. Keskmine stressitase: roheline tuli, muutudes suureneva stressiga siniseks

3. Kõrge stressitase: sinine tuli, muutudes suureneva stressiga punaseks

Mõõtmiste töötlemiseks ja LED -i saatmiseks väärtuste muutmiseks kasutati järgmist koodi:

// MASTER #define DEBUG 0

// GSR = A1

int gsrVal = 0; // Muutuja andurite sisendi salvestamiseks

// Nagu mainitud, kasutage Pulse-width Modulation (PWM) tihvte

int redPin = 9; // Punane LED, ühendatud digitaalse tihvtiga 9 int grnPin = 9; // Roheline LED, ühendatud digitaalse tihvtiga 10 int bluPin = 5; // Sinine LED, ühendatud digitaalse tihvtiga 11

// Programmi muutujad

int redVal = 0; // Muutujad tihvtidele saadetavate väärtuste salvestamiseks int grnVal = 0; int bluVal = 0;

allkirjastamata pikk gsr = 0;

tühine seadistus ()

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

Seriaalne algus (9600);

setupGSR (); }

tühine tsükkel ()

{gsrVal = gsr; if (gsrVal <150) // gsr vahemiku madalaim kolmandik (0-149) {gsr = (gsrVal /10) * 17; // Normaliseerida 0-255-ni redVal = gsrVal; // välja lülitatud täielikuks grnVal = gsrVal; // Roheline väljas kuni täielik bluVal = gsrVal; // Sinine täisString SoundA = "A"; Serial.println (SoundA); // hilisemaks kasutamiseks opereerivas muusikas} else if (gsrVal <250) // gsr vahemiku keskmine kolmandik (150-249) {gsrVal = ((gsrVal-250) /10) * 17; // Normaliseerida 0-255 redVal = 1; // punane ära grnVal = gsrVal; // Roheline täisväärtuselt bluVal = 256 - gsrVal; // Sinine väljalülitatud kuni täis String SoundB = "B"; Serial.println (SoundB); } else // gsr vahemiku ülemine kolmandik (250–300) {gsrVal = ((gsrVal-301) /10) * 17; // Normaliseerida 0-255-ni redVal = gsrVal; // Punane välja lülitatud kuni täis grnVal = 1; // Roheline kuni täielik bluVal = 256 - gsrVal; // Sinine täiest välja lülitatud String SoundC = "C"; Serial.println (SoundC); }

analogWrite (redPin, redVal); // Väärtuste kirjutamine LED -tihvtidele analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal); gsr = runGSR (); viivitus (100); }

Nii et nüüd reageerib LED teie stressitasemele, lisame järgmises etapis teie meeleolu tähistamiseks muusikat.

Samm: muusika haldamine

Muusika haldamine
Muusika haldamine

Valisime kolme stressitaseme esitamiseks järgmise muusikaga:

1. Madal tase (A): laulukausid ja lindude säutsumine, väga kerge heli

2. Keskmine tase (B): melanhoolne klaver, natuke raskem kõla

3. Kõrge stressitase (C): äikesetorm, tume heli (kuigi üsna lõõgastav)

Kood on kirjutatud töötlemisse, tarkvarasse, mis pakub Arduino tarkvara tagasiside osa:

impordi töötlemine.seriaalne.*; impordi ddf.minim.*;

Minimaalne miinimum;

AudioPlayeri mängijad;

int lf = 10; // Linefeed ASCII -s

String myString = null; Seeria myPort; // Jadaport int sensorValue = 0;

tühine seadistus () {

// Loetlege kõik saadaolevad jadapordid printArray (Serial.list ()); // Ava kasutatav port sama kiirusega kui Arduino myPort = new Serial (this, Serial.list () [2], 9600); myPort.clear (); // kustuta mõõtmised myString = myPort.readStringUntil (lf); myString = null; // me edastame selle Minimile, et see saaks faile laadida minimal = new Minim (this); mängijad = uus AudioPlayer [3]; // Muuda siin helifaili nime ja lisa see raamatukogudesse mängijad [0] = minim.loadFile ("Singing-bowls-and-birds-chirping-sleep-music.mp3"); mängijad [1] = minimaalne koormusfail ("Melanhoolne-klaverimuusika.mp3"); mängijad [2] = minimaalne koormusfail ("Storm-sound.mp3"); }

tühine viik () {

// kontrollige, kas on uus väärtus, kui (myPort.available ()> 0) {// salvestab andmed kausta myString myString = myPort.readString (); // kontrollige, kas meil on tõesti midagi, kui (myString! = null) {myString = myString.trim (); // kontrollige, kas midagi on olemas, kui (myString.length ()> 0) {println (myString); proovige {sensorValue = Integer.parseInt (myString); } catch (Erand e) {} if (myString.equals ("A")) // vaata, millist stressitaset see mõõdab {players [0].play (); // esita muusika järgi} else {mängijad [0].pause (); // kui see ei mõõda madalat stressitaset, ära mängi vastavat laulu} if (myString.equals ("B")) {players [1].play (); } else {mängijad [1].paus (); } if (myString.equals ("C")) {mängijad [2].play (); } else {mängijad [2].paus (); }}}}}

See kood peaks muusikat esitama vastavalt meie sülearvuti kõlarite stressitasemele.

6. samm: kujundage teostus

Image
Image
Kujundage teostus
Kujundage teostus

Kasutasime Philipsi Hue Light ülemist osa, kuid põhi oli rohelise vahuga. SolidWorksfile on siin, kuid lõbus võib olla ka ise lampi mõõta ja midagi oma maitse järgi kujundada!

Kasutasime SW -s aluskihina fotot lambi ülaosast, veendumaks, et põhja kuju järgib ülaosa kõverat (vt esimest fotot).

Mudeli cnc'd lubamiseks salvestage see STL -failina ja leidke kohalik mölder (näiteks uni).

Samm: allikad

Kui soovite selle teema kohta rohkem teavet või näete ulatuslikumaid stressi mõõtmise koode, vaadake järgmisi veebisaite ja projekte:

  • Lisateave audiofiilide käivitamise kohta töötlemisel (mida me kasutasime)
  • Hea käsiraamat GSR -i kohta
  • Lahe erinev lähenemine meeleolu projitseerimisele
  • Tõeliselt lahe stressiandur mitme anduriga (selle projekti suur inspiratsioon)
  • Heli (stressi asemel) projektor RGB LED -iga
  • Hea artikkel GSR -i kohta

Soovitan: