Indholdsfortegnelse:

Humørprojektor (hacket Philips Hue Light With GSR) TfCD: 7 trin (med billeder)
Humørprojektor (hacket Philips Hue Light With GSR) TfCD: 7 trin (med billeder)

Video: Humørprojektor (hacket Philips Hue Light With GSR) TfCD: 7 trin (med billeder)

Video: Humørprojektor (hacket Philips Hue Light With GSR) TfCD: 7 trin (med billeder)
Video: How to control your Philips Hue lights with SmartThings 2024, Juli
Anonim
Image
Image
Take Apart the Hue Light
Take Apart the Hue Light

Af Laura Ahsmann & Maaike Weber

Formål: Lavt humør og stress er en stor del af det moderne hurtige liv. Det er også noget, der er usynligt udefra. Hvad hvis vi kunne visuelt og akustisk projektere vores stressniveau med et produkt, for at kunne vise, hvordan du har det. Det ville gøre det lettere at kommunikere om disse problemer. Din egen reaktion kan også være mere passende til det øjeblik, hvor du modtager feedback på dine stressniveauer.

GSR eller galvanisk hudmodstand, en måling taget ved fingerspidserne af en bruger, har vist sig at være en rigtig god forudsigelse for stress. Da svedkirtlerne i hånden for det meste reagerer på stress (ikke kun fysisk træning), genererer øgede stressniveauer en højere konduktans. Denne variabel bruges i dette projekt.

Idé: Hvad hvis vi hurtigt kunne opdage stress eller humør og repræsentere det med farvet lys og musik? Et GSR -system kunne få det til at ske. I denne Instructable vil vi lave et Arduino -baseret system til at gøre det! Den drives af både Arduino Software og Processing Software og oversætter hudledningsværdier til et bestemt farvelys og en bestemt type musik.

Hvad har du brug for?

  • Arduino Uno
  • Ledninger
  • Philips Hue -lys (levende farver)
  • Tre 100 Ohm modstande (til RGB LED)
  • En 100 KOhm modstand (til GSR -sensoren)
  • Noget at fungere som konduktanssensorer, som aluminiumsfolie
  • Arduino software
  • Behandlingssoftware (vi brugte v2.2.1, nyere har tendens til at gå ned)
  • SolidWorks, til design af huset (valgfrit)
  • Adgang til en CNC -mølle (valgfri)
  • Grønt modelleringsskum (EPS)
  • Brødbræt (valgfrit, kan også loddes)

Trin 1: Adskil Hue Light

Dette trin er let, bare brug lidt kraft (eller en skruetrækker) lad det tabe og revne op for lyset. Nogle snapforbindelser holder produktet sammen, så det er let at skille ad.

Nu kan lyset i toppen skrues af og kobles fra resten af elektronikken. Vi skal kun bruge lyset og toppen af huset. Gem eller kast resten, det er op til dig!

Trin 2: Forberedelse af hardwaren

Klargøring af hardware
Klargøring af hardware
Klargøring af hardware
Klargøring af hardware
Klargøring af hardware
Klargøring af hardware
Klargøring af hardware
Klargøring af hardware

Til dette projekt brugte vi et Philips Hue -lys til at gøre udførelsen smukkere og hurtigere. Du kan dog også bruge en almindelig RGB LED, som vist på billedet med brødbrættet.

For at betjene RGB -LED'en skal stikkene tilsluttes til tre forskellige PWM -porte på Arduino (angivet ba a ~). Brug 100Ohm modstande til denne forbindelse. Tilslut den længste pin til 5V -udgangen på Arduino. For at se, hvilken nål der svarer til hvilken farve, se det sidste billede af dette trin.

For Hue Light går de samme trin. LED'en tilsluttes let til Arduino ved lodningstråde til de udpegede slots, se det tredje billede i dette trin. Slidserne har en R, en G og en B, hvilket angiver hvilken ledning der skal gå hvor. Den har også en + og en - slot, der skal tilsluttes henholdsvis Arduino 5V og Arduino jorden. Når du har tilsluttet LED'en, kan du skrue tilbage i huset.

For at tilslutte GSR -sensorerne, der er lavet af aluminiumsfolie (eller brug de aluminiumbeholdere med fyrfadslys, der ser lidt pænere ud), loddes eller tape dem til en ledning og tilsluttes en til 5V. Tilslut den anden til modstanden på 100KOhm og en kondensator på 0, 1mF (parallel), som derefter skal tilsluttes jorden og A1 -slot på Arduino. Dette vil give output fra stressniveauet, som derefter vil blive brugt som input til lysfarven og musikken. Vi satte sensorerne fast på lampen, så det bliver et godt produkt at få fat i, mens du måler din stress. Vær dog forsigtig, så sensorerne ikke rører!

Det sidste billede viser, hvordan det kan gøres uden et brødbræt.

Trin 3: Måling af stressniveauet

Måling af stressniveauet
Måling af stressniveauet

At måle spændingsniveauet med netop disse hjemmelavede sensorer vil helt sikkert ikke give nøjagtige målinger af, hvor stresset du præcist er. Når den er kalibreret til højre, kan den imidlertid give en tilnærmelse.

For at måle GSR -niveauerne vil vi bruge følgende stykke kode i Arduino -miljøet. For at få en mindre svingende måling tages der et gennemsnit hver 10. måling.

const int numReadings = 10; int aflæsninger [numReadings]; // input fra A1 int index = 0; // indekset for den aktuelle læsning int total = 0; // det løbende samlede usignerede lange gennemsnit = 0; // den gennemsnitlige

int inputPin = A1;

ugid setupGSR ()

{// indstil alle aflæsninger til 0:

for (int i = 0; i <numReadings; i ++) aflæsninger = 0; }

usigneret lang sigtGSR () {

total = total - aflæsninger [indeks]; // læst fra GSR -sensoraflæsninger [indeks] = analogRead (inputPin); // tilføj ny læsning til total total = total + aflæsninger [indeks]; // næste position af matrixindeks = indeks + 1;

// test ende af array

hvis (indeks> = numReadings) // og start forfra indeks = 0;

// hvad er gennemsnittet

gennemsnit = total / numReadings; // sende den til computeren som ASCII -cifre returnerer gennemsnittet;

}

I en anden fane (for at holde tingene organiseret) får vi koden til at reagere på målingerne, se næste trin!

Trin 4: Håndtering af lysene

Håndtering af lys
Håndtering af lys
Håndtering af lys
Håndtering af lys
Håndtering af lys
Håndtering af lys

For at styre lysene skal vi først kalibrere målingerne. Kontroller, hvad den øvre grænse er for dine målinger ved at åbne den serielle skærm. For os var målingerne noget mellem 150 (da vi virkelig forsøgte at slappe af) og 300 (da vi virkelig prøvede at blive stressede).

Beslut derefter, hvilken farve der skal repræsentere hvilket stressniveau. Vi gjorde det sådan, at:

1. Lav spændingsniveau: hvidt lys, skifter til grønt lys med stigende stress

2. Medium stressniveau: grønt lys, skifter til blåt lys med stigende stress

3. Højt stressniveau: blåt lys, skifter til rødt med stigende stress

Følgende kode blev brugt til at behandle målingerne og omdanne dem til værdier, der skulle sendes til LED'en:

// MASTER #define DEBUG 0

// GSR = A1

int gsrVal = 0; // Variabel til lagring af input fra sensorerne

// Som nævnt skal du bruge pulsbreddemodulation (PWM) benene

int redPin = 9; // Rød LED, tilsluttet digital pin 9 int grnPin = 9; // Grøn LED, tilsluttet digital pin 10 int bluPin = 5; // Blå LED, tilsluttet digital pin 11

// Programvariabler

int redVal = 0; // Variabler til lagring af de værdier, der skal sendes til stifterne int grnVal = 0; int bluVal = 0;

usigneret lang gsr = 0;

ugyldig opsætning ()

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

Serial.begin (9600);

setupGSR (); }

hulrum ()

{gsrVal = gsr; hvis (gsrVal <150) // Laveste tredjedel af gsr-området (0-149) {gsr = (gsrVal /10) * 17; // Normaliser til 0-255 redVal = gsrVal; // off til fuld grnVal = gsrVal; // Grøn fra fra til fuld bluVal = gsrVal; // Blå til fuldString SoundA = "A"; Serial.println (SoundA); // til senere brug i betjeningsmusik} ellers hvis (gsrVal <250) // Mellem tredjedel af gsr-området (150-249) {gsrVal = ((gsrVal-250) /10) * 17; // Normaliser til 0-255 redVal = 1; // Red off grnVal = gsrVal; // Grøn fra fuld til fra bluVal = 256 - gsrVal; // Blå fra off til fuld String SoundB = "B"; Serial.println (SoundB); } ellers // Øvre tredjedel af gsr-området (250-300) {gsrVal = ((gsrVal-301) /10) * 17; // Normaliser til 0-255 redVal = gsrVal; // Rød fra fra til fuld grnVal = 1; // Grøn off til fuld bluVal = 256 - gsrVal; // Blå fra fuld til fra String SoundC = "C"; Serial.println (SoundC); }

analogWrite (redPin, redVal); // Skriv værdier til LED -pins analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal); gsr = runGSR (); forsinkelse (100); }

Så nu reagerer LED'en på dit stressniveau, lad os tilføje noget musik til at repræsentere dit humør i det næste trin.

Trin 5: Håndtering af musikken

Håndtering af musikken
Håndtering af musikken

Vi valgte at repræsentere de 3 stressniveauer med følgende musik:

1. Lavt niveau (A): syngende skåle og fuglekvitter, en meget let lyd

2. Mellemniveau (B): et melankolsk klaver, lidt mere tung lyd

3. Højt stressniveau (C): Et tordenvejr, en mørk lyd (dog ganske afslappende)

Koden er skrevet i Processing, en software til at levere softwarefeedback -delen af Arduino:

import behandling. serie.*; import ddf.minim.*;

Minim minim;

AudioPlayer afspillere;

int lf = 10; // Linefeed i ASCII

String myString = null; Seriel myPort; // Seriel port int sensorValue = 0;

ugyldig opsætning () {

// Angiv alle tilgængelige serielle porte printArray (Serial.list ()); // Åbn den port, du bruger, i samme hastighed som Arduino myPort = new Serial (this, Serial.list () [2], 9600); myPort.clear (); // klare målinger myString = myPort.readStringUntil (lf); myString = null; // vi videregiver dette til Minim, så det kan indlæse filer minim = new Minim (this); spillere = nyt AudioPlayer [3]; // Skift navnet på lydfilen her, og tilføj det til bibliotekets afspillere [0] = minim.loadFile ("Singing-bowls-and-birds-chirping-sleep-music.mp3"); spillere [1] = minim.loadFile ("Melankolisk-klaver-musik.mp3"); spillere [2] = minim.loadFile ("Storm-lyd.mp3"); }

ugyldig tegning () {

// tjek om der er en ny værdi mens (myPort.available ()> 0) {// gem data i myString myString = myPort.readString (); // tjek om vi virkelig har noget hvis (myString! = null) {myString = myString.trim (); // tjek om der er noget if (myString.length ()> 0) {println (myString); prøv {sensorValue = Integer.parseInt (myString); } fang (Undtagelse e) {} hvis (myString.equals ("A")) // se hvilket stressniveau det måler {spillere [0].play (); // afspil efter musik} ellers {afspillere [0].pause (); // hvis det ikke måler lavt stressniveau, skal du ikke afspille den pågældende sang} if (myString.equals ("B")) {spillere [1].play (); } ellers {spillere [1].pause (); } hvis (myString.equals ("C")) {spillere [2].play (); } ellers {spillere [2].pause (); }}}}}

Denne kode skal afspille musikken i henhold til stressniveauet på vores bærbare højttalere.

Trin 6: Design udførelsesformen

Image
Image
Design udførelsesformen
Design udførelsesformen

Vi brugte den øverste del af Philips Hue Light, men cnc'd en greenfoam bund. SolidWorksfile er her, men det kan også være sjovt at måle lampen selv og designe noget efter din smag!

Vi brugte et foto af toppen af lampen som et underlag i SV, for at sikre at bundens form følger kurven på toppen (se første foto).

Hvis du vil have modellen cnc'd, skal du gemme den som en STL -fil og finde din lokale møller (f.eks. Ved uni).

Trin 7: Kilder

Hvis du vil have mere information om dette emne eller se mere omfattende koder til måling af stress, kan du se følgende websteder og projekter:

  • Flere forklaringer på udløsning af lydfiler i behandling (som vi brugte)
  • Fin håndbog om GSR
  • Fed anden tilgang til stemningsprojektion
  • Rigtig fed stressdetektor med flere sensorer (stor inspiration til dette projekt)
  • Lyd (i stedet for stress) projektor med RGB LED
  • God artikel om GSR

Anbefalede: