Sisällysluettelo:

Mood -projektori (hakkeroitu Philips Hue Light GSR: llä) TfCD: 7 vaihetta (kuvien kanssa)
Mood -projektori (hakkeroitu Philips Hue Light GSR: llä) TfCD: 7 vaihetta (kuvien kanssa)

Video: Mood -projektori (hakkeroitu Philips Hue Light GSR: llä) TfCD: 7 vaihetta (kuvien kanssa)

Video: Mood -projektori (hakkeroitu Philips Hue Light GSR: llä) TfCD: 7 vaihetta (kuvien kanssa)
Video: Unpacking and installing the Philips Hue Play Gradient Lightstrip #shorts 2024, Heinäkuu
Anonim
Image
Image
Irrota Hue Light
Irrota Hue Light

Kirjailija: Laura Ahsmann & Maaike Weber

Tarkoitus: Matala tunnelma ja stressi ovat suuri osa nykyaikaista nopeatempoista elämää. Se on myös jotain, joka on näkymätöntä ulkopuolelle. Entä jos pystyisimme heijastamaan stressitasomme sekä visuaalisesti että akustisesti tuotteella, jotta voisimme näyttää miltä sinusta tuntuu. Helpottaisi kommunikointia näistä ongelmista. Oma reaktio voi myös olla sopivampi siihen hetkeen, kun saat palautetta stressitasoistasi.

GSR eli galvaaninen ihon kestävyys, käyttäjän käden ulottuvilla oleva mittaus, on osoittautunut todella hyväksi ennustimeksi stressistä. Koska käden hikirauhaset reagoivat enimmäkseen stressiin (ei vain fyysiseen rasitukseen), lisääntyneet stressitasot tuottavat paremman johtavuuden. Tätä muuttujaa käytetään tässä projektissa.

Idea: Entä jos voisimme nopeasti tunnistaa stressin tai mielialan ja esittää sen värillisellä valolla ja musiikilla? GSR -järjestelmä voisi tehdä sen. Tässä Instructable -ohjelmassa teemme Arduino -pohjaisen järjestelmän siihen! Sekä Arduino -ohjelmiston että prosessointiohjelmiston käyttämä se muuntaa ihon johtavuuden arvot tiettyyn värivaloon ja tietyntyyppiseen musiikkiin.

Mitä tarvitset?

  • Arduino Uno
  • Johdot
  • Philips Hue -valo (elävät värit)
  • Kolme 100 ohmin vastusta (RGB -LEDille)
  • Yksi 100 Kohmin vastus (GSR -anturille)
  • Jotain toimimaan johtavuusantureina, kuten alumiinifolio
  • Arduino -ohjelmisto
  • Käsittelyohjelmisto (käytimme v2.2.1, uudemmat yleensä kaatuvat)
  • SolidWorks, kotelon suunnittelu (valinnainen)
  • Pääsy CNC -myllyyn (valinnainen)
  • Vihreä mallinnusvaahto (EPS)
  • Leipälauta (valinnainen, voi myös juottaa)

Vaihe 1: Irrota Hue Light

Tämä vaihe on helppo, käytä vain voimaa (tai ruuvimeisseliä), anna valon kadota ja halkeilla. Jotkin pikaliittimet pitävät tuotteen yhdessä, joten se on helppo purkaa.

Nyt yläosan valo voidaan ruuvata irti ja irrottaa muusta elektroniikasta. Tarvitsemme vain valon ja kotelon yläosan. Säästä tai heitä loput, se on sinun!

Vaihe 2: Laitteiston valmistelu

Laitteiston valmistelu
Laitteiston valmistelu
Laitteiston valmistelu
Laitteiston valmistelu
Laitteiston valmistelu
Laitteiston valmistelu
Laitteiston valmistelu
Laitteiston valmistelu

Tässä projektissa käytimme Philips Hue -valoa, jotta suoritusmuoto olisi kauniimpi ja nopeampi. Voit kuitenkin käyttää myös tavallista RGB -LED -valoa, kuten kuvassa näkyy leipälevyn kanssa.

Jos haluat käyttää RGB -LEDiä, kytke nastat Arduinon kolmeen eri PWM -porttiin (merkitty ba a ~). Käytä tähän liitäntään 100 ohmin vastuksia. Liitä pisin nasta Arduinon 5 V: n lähtöön. Jos haluat nähdä, mikä nasta vastaa mitä väriä, katso tämän vaiheen viimeinen kuva.

Hue Light -valossa samat vaiheet menevät. LED on helppo liittää Arduinoon juottamalla johdot merkittyihin paikkoihin, katso kolmas kuva tässä vaiheessa. Paikoissa on R, G ja B, jotka osoittavat, minkä johdon pitäisi mennä minne. Siinä on myös plus- ja a -paikka, joka liitetään Arduinon 5 V: n ja Arduinon maahan. Kun olet kytkenyt LED -valon, voit kiinnittää sen takaisin koteloon.

Jos haluat kytkeä alumiinifoliosta valmistetut GSR -anturit (tai käyttää niitä teekynttilöiden alumiinisäiliöitä, jotka näyttävät hieman paremmilta), juota tai teippaa ne lankaan ja yhdistä 5 V: n jännitteeseen. Liitä toinen 100KOhm: n vastukseen ja 0, 1mF (rinnakkainen) kondensaattoriin, joka sitten on liitettävä maahan ja Arduinon A1 -paikkaan. Tämä antaa stressitason ulostulon, jota käytetään sitten valon värin ja musiikin tulona. Kiinnitimme anturit lamppuun, joten siitä tulee mukava tuote tarttua stressiä mitattaessa. Varo kuitenkin, etteivät anturit kosketa!

Viimeinen kuva osoittaa, kuinka se voidaan tehdä ilman leipälautaa.

Vaihe 3: Stressitason mittaaminen

Stressitason mittaaminen
Stressitason mittaaminen

Stressitason mittaaminen vain näillä kotitekoisilla antureilla ei todellakaan anna tarkkoja mittauksia siitä, kuinka stressaantunut olet. Oikein kalibroituna se voi kuitenkin antaa likimääräisen arvon.

GSR -tasojen mittaamiseen käytämme seuraavaa koodia Arduino -ympäristössä. Vähemmän vaihtelevan mittauksen saamiseksi keskiarvo otetaan joka 10 lukeman välein.

const int numReadings = 10; int lukemat [numReadings]; // tulo A1: stä int -indeksi = 0; // nykyisen lukeman indeksi int yhteensä = 0; // juokseva allekirjoittamaton pitkä keskiarvo = 0; // keskim

int inputPin = A1;

void setupGSR ()

{// aseta kaikki lukemat arvoon 0:

(int i = 0; i <numReadings; i ++) lukemille = 0; }

unsigned long runGSR () {

yhteensä = yhteensä - lukemat [indeksi]; // lukea GSR -anturilukemista [indeksi] = analoginen lukema (inputPin); // lisää uusi lukema kokonaismäärään = yhteensä + lukemat [hakemisto]; // taulukon seuraava sijainti indeksi = indeksi + 1;

// testin loppu

if (index> = numReadings) // ja aloita alusta indeksistä = 0;

// mikä on keskim

keskiarvo = yhteensä / lukemattomat lukemat; // lähetä se tietokoneelle ASCII -numeroina, jotka palauttavat keskiarvon;

}

Toisessa välilehdessä (asioiden järjestämiseksi) teemme koodin reagoimaan mittauksiin, katso seuraava vaihe!

Vaihe 4: Valojen hallinta

Valojen hallinta
Valojen hallinta
Valojen hallinta
Valojen hallinta
Valojen hallinta
Valojen hallinta

Valojen hallitsemiseksi meidän on ensin kalibroitava mittaukset. Tarkista mittojen yläraja avaamalla sarjamonitori. Meille mittaukset olivat jotain 150: n (kun todella yritimme rentoutua) ja 300: n (kun yritimme todella kovasti stressiä) välissä.

Päätä sitten, minkä värin tulisi edustaa mitä stressitasoa. Teimme sen niin, että:

1. Alhainen stressitaso: valkoinen valo, joka muuttuu vihreäksi valon lisääntyessä

2. Keskitasoinen stressitaso: vihreä valo, joka muuttuu siniseksi valon lisääntyessä

3. Korkea stressitaso: sininen valo, joka muuttuu punaiseksi lisääntyneessä stressissä

Seuraavaa koodia käytettiin mittausten käsittelyyn ja niiden muuttamiseen arvoiksi lähetettäväksi LEDille:

// MASTER #define DEBUG 0

// GSR = A1

int gsrVal = 0; // Muuttuja tallentaa anturien tulon

// Kuten mainittiin, käytä pulssileveysmodulaatiota (PWM)

int redPin = 9; // Punainen LED, kytketty digitaaliseen nastaan 9 int grnPin = 9; // Vihreä LED, kytketty digitaaliseen nastaan 10 int bluPin = 5; // Sininen LED, kytketty digitaaliseen nastaan 11

// Ohjelmamuuttujat

int redVal = 0; // Muuttujat, jotka tallentavat nastoille lähetettävät arvot int grnVal = 0; int bluVal = 0;

allekirjoittamaton pitkä gsr = 0;

mitätön asennus ()

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

Sarja.alku (9600);

setupGSR (); }

tyhjä silmukka ()

{gsrVal = gsr; if (gsrVal <150) // gsr-alueen alin kolmasosa (0-149) {gsr = (gsrVal /10) * 17; // Normalisoi arvoon 0-255 redVal = gsrVal; // pois täyteen grnVal = gsrVal; // Vihreä pois käytöstä täyteen bluVal = gsrVal; // Sininen kokonaanJonoääniA = "A"; Serial.println (SoundA); // myöhempää käyttöä varten musiikkikäytössä} else if (gsrVal <250) // gsr-alueen keskikolmannes (150-249) {gsrVal = ((gsrVal-250) /10) * 17; // Normalisoi arvoon 0-255 redVal = 1; // Punainen pois grnVal = gsrVal; // Vihreä täydestä pois päältä bluVal = 256 - gsrVal; // Sininen pois päältä täydelle merkkijonolle SoundB = "B"; Serial.println (SoundB); } else // gsr-alueen yläosa (250–300) {gsrVal = ((gsrVal-301) /10) * 17; // Normalisoi arvoon 0-255 redVal = gsrVal; // Punainen pois päältä täyteen grnVal = 1; // Vihreä pois kokonaan bluVal = 256 - gsrVal; // Sininen täydestä pois päältä String SoundC = "C"; Sarja.println (SoundC); }

analogWrite (redPin, redVal); // Kirjoita arvot LED -nastoihin analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal); gsr = runGSR (); viive (100); }

Joten nyt LED reagoi stressitasollesi, lisätään seuraavassa musiikkia mielialasi kuvaamiseksi.

Vaihe 5: Musiikin hallinta

Musiikin hallinta
Musiikin hallinta

Päätimme edustaa kolmea stressitasoa seuraavan musiikin avulla:

1. Matala taso (A): laulukulhot ja lintujen sirinä, erittäin kevyt ääni

2. Keskitaso (B): melankolinen piano, hieman raskaampi ääni

3. Korkea stressitaso (C): Ukkosmyrsky, tumma ääni (tosin melko rentouttava)

Koodi on kirjoitettu Processing -ohjelmistolla, joka tarjoaa Arduinon ohjelmistopalautteen osan:

tuonti käsittely. sarja.*; tuoda ddf.minim.*;

Minimi minimi;

AudioPlayer -soittimet;

int lf = 10; // Linefeed ASCII: ssa

Merkkijono myString = null; Sarja myPort; // Sarjaportti int sensorValue = 0;

void setup () {

// Listaa kaikki käytettävissä olevat sarjaportit printArray (Serial.list ()); // Avaa käyttämäsi portti samalla nopeudella kuin Arduino myPort = new Serial (this, Serial.list () [2], 9600); myPort.clear (); // selkeät mittaukset myString = myPort.readStringUntil (lf); myString = null; // välitämme tämän Minimille, jotta se voi ladata tiedostoja minimaali = uusi Minimi (tämä); pelaajat = uusi AudioPlayer [3]; // Muuta äänitiedoston nimi täällä ja lisää se kirjastoihin pelaajat [0] = minim.loadFile ("Singing-bowls-and-birds-chirping-sleep-music.mp3"); pelaajat [1] = minim.loadFile ("Melankolinen-pianomusiikki.mp3"); pelaajat [2] = minim.loadFile ("Storm-sound.mp3"); }

void draw () {

// tarkista, onko uutta arvoa, kun (myPort.available ()> 0) {// tallentaa tiedot myString myString = myPort.readString (); // tarkista, onko meillä todella jotain, jos (myString! = null) {myString = myString.trim (); // tarkista onko jotain jos (myString.length ()> 0) {println (myString); kokeile {sensorValue = Integer.parseInt (myString); } saalis (Poikkeus e) {} if (myString.equals ("A")) // katso mitä stressitasoa se mittaa {pelaajia [0].play (); // soita musiikin mukaan} else {pelaajat [0].pause (); // jos se ei mittaa alhaista stressitasoa, älä toista vastaavaa kappaletta} if (myString.equals ("B")) {players [1].play (); } else {pelaajat [1].pause (); } if (myString.equals ("C")) {pelaajia [2].play (); } else {pelaajat [2].pause (); }}}}}

Tämän koodin pitäisi toistaa musiikkia kannettavan tietokoneen kaiuttimien stressitason mukaan.

Vaihe 6: Suunnittele suoritusmuoto

Image
Image
Suunnittele suoritusmuoto
Suunnittele suoritusmuoto

Käytimme Philips Hue Lightin yläosaa, mutta cnc'd vihreä vaahto pohja. SolidWorksfile on täällä, mutta voi olla myös hauskaa mitata lamppu itse ja suunnitella jotain makusi mukaan!

Käytimme valokuvaa lampun yläosasta aluskerroksena SW: ssa varmistaaksemme, että pohjan muoto seuraa katon käyrää (katso ensimmäinen kuva).

Jos haluat saada mallin cnc'd, tallenna se STL -tiedostona ja etsi paikallinen myllysi (esimerkiksi uni).

Vaihe 7: Lähteet

Jos haluat lisätietoja tästä aiheesta tai haluat nähdä laajemmat koodit stressin mittaamiseen, katso seuraavat sivustot ja projektit:

  • Lisää selitystä audiofiilien käynnistämisestä käsittelyssä (jota käytimme)
  • Hyvä käsikirja GSR: stä
  • Viileä erilainen lähestymistapa mielialan projisointiin
  • Todella viileä stressitunnistin, jossa on useita antureita (suuri inspiraatio tähän projektiin)
  • Ääniprojektori (stressin sijaan) RGB -LED -valolla
  • Hyvä artikkeli GSR: stä

Suositeltava: