Taula de continguts:

Projector d'ànim (Philips Hue Light amb GSR piratejat) TfCD: 7 passos (amb imatges)
Projector d'ànim (Philips Hue Light amb GSR piratejat) TfCD: 7 passos (amb imatges)

Vídeo: Projector d'ànim (Philips Hue Light amb GSR piratejat) TfCD: 7 passos (amb imatges)

Vídeo: Projector d'ànim (Philips Hue Light amb GSR piratejat) TfCD: 7 passos (amb imatges)
Vídeo: Hue Play - Sync your lights with screen for next level gaming. 2024, Desembre
Anonim
Image
Image
Desmunteu la llum Hue
Desmunteu la llum Hue

A càrrec de Laura Ahsmann i Maaike Weber

Propòsit: el baix estat d’ànim i l’estrès són una part important de la vida moderna i trepidant. També és una cosa invisible a l’exterior. Què passa si poguéssim projectar visualment i acústicament el nostre nivell d’estrès amb un producte, per poder mostrar com us sentiu. Facilitaria la comunicació sobre aquests problemes. La vostra pròpia reacció també podria ser més adequada al moment en què rebíeu comentaris sobre els vostres nivells d’estrès.

Es demostra que la resistència a la pell galvànica o GSR, que es fa a l'abast de l'usuari, és un bon predictor de l'estrès. Atès que les glàndules sudorípares de la mà reaccionen majoritàriament a l’estrès (no només l’exercici físic), l’augment dels nivells d’estrès genera una conductància més elevada. Aquesta variable s'utilitza en aquest projecte.

Idea: i si poguéssim detectar ràpidament l’estrès o l’estat d’ànim i representar-lo amb llum i música de colors? Un sistema GSR podria fer que això passés. En aquest instructiu, crearem un sistema basat en Arduino per fer-ho. Operat tant pel programari Arduino com pel programari de processament, traduirà els valors de conductància de la pell a una llum de color determinada i a un determinat tipus de música.

Què necessites?

  • Arduino Uno
  • Filferros
  • Llum Philips Hue (colors vius)
  • Tres resistències de 100 Ohm (per al LED RGB)
  • Una resistència de 100 KOhm (per al sensor GSR)
  • Alguna cosa que actuï com a sensors de conductància, com el paper d'alumini
  • Programari Arduino
  • Programari de processament (hem utilitzat v2.2.1, els més recents tendeixen a fallar)
  • SolidWorks, per dissenyar la carcassa (opcional)
  • Accés a un molí CNC (opcional)
  • Escuma modeladora verda (EPS)
  • Taula de pa (opcional, també es pot soldar)

Pas 1: aparteu la llum Hue

Aquest pas és senzill, només cal utilitzar una mica de força (o un tornavís) per deixar perdre i obrir la llum. Algunes connexions instantànies mantenen el producte unit, de manera que és fàcil de desmuntar.

Ara, la llum de la part superior es pot cargolar i desconnectar de la resta d’electrònics. Només ens caldrà la llum i la part superior de l’habitatge. Deseu o llenceu la resta, depèn de vosaltres!

Pas 2: Preparació del maquinari

Preparació del maquinari
Preparació del maquinari
Preparació del maquinari
Preparació del maquinari
Preparació del maquinari
Preparació del maquinari
Preparació del maquinari
Preparació del maquinari

Per a aquest projecte, hem utilitzat un llum Philips Hue, per fer que la seva realització sigui més bonica i ràpida. Tanmateix, també podeu utilitzar un LED RGB normal, tal com es mostra a la imatge amb el tauler de suport.

Per fer funcionar el LED RGB, connecteu els pins a tres ports PWM diferents de l'Arduino (indicat ba a ~). Utilitzeu els resistors de 100 Ohm per a aquesta connexió. Connecteu el pin més llarg a la sortida de 5V de l’Arduino. Per veure quin pin correspon a quin color, consulteu l'última imatge d'aquest pas.

Per a la Hue Light, es segueixen els mateixos passos. El LED es connecta fàcilment a l’Arduino soldant cables a les ranures designades. Vegeu la tercera imatge d’aquest pas. Les ranures tenen una R, una G i una B, que indiquen quin cable ha d’anar cap a on. També té una ranura + i una - per connectar-se als 5V de l’Arduino i a la terra de l’Arduino, respectivament. Quan hàgiu connectat el LED, podeu tornar-lo a cargolar a la carcassa.

Per connectar els sensors GSR, fets amb paper d’alumini (o fer servir aquells contenidors d’alumium de làmpades, que semblen una mica més agradables), soldeu-los o enganxeu-los a un cable i connecteu-ne un al 5V. Connecteu l’altre a la resistència de 100KOhm i un condensador de 0, 1mF (paral·lel), que s’hauria de connectar a terra i a la ranura A1 de l’Arduino. Això donarà la sortida del nivell d’estrès, que després s’utilitzarà com a entrada per al color clar i la música. Enganxem els sensors a la làmpada, de manera que es converteix en un bon producte per agafar mentre es mesura l’estrès. Tingueu cura, però, que els sensors no es toquin.

La darrera imatge mostra com es pot fer sense un tauler de suport.

Pas 3: mesurar el nivell de tensió

Mesura del nivell d’estrès
Mesura del nivell d’estrès

Mesurar el nivell d’estrès només amb aquests sensors casolans definitivament no donarà mesures exactes de la tensió que teniu exactament. No obstant això, quan es calibra correctament, pot donar una aproximació.

Per mesurar els nivells de GSR, utilitzarem el següent fragment de codi, a l'entorn Arduino. Per tenir una mesura menys fluctuant, es fa una mitjana cada 10 lectures.

const int numLectures = 10; lectures int [numLectures]; // entrada de A1 int index = 0; // l’índex de la lectura actual int total = 0; // la mitjana llarga total sense signar en execució = 0; // la mitjana

int inputPin = A1;

void setupGSR ()

{// defineix totes les lectures a 0:

per a (int i = 0; i <numLectures; i ++) lectures = 0; }

llarg termini sense signar GSR () {

total = total - lectures [índex]; // llegit des de les lectures del sensor GSR [índex] = analogRead (inputPin); // afegir nova lectura al total total = total + lectures [índex]; // següent posició de la matriu índex = índex + 1;

// prova final de matriu

if (index> = numReadings) // i tornar a començar index = 0;

// què és la mitjana

mitjana = total / numLectures; // envieu-lo a l'ordinador mentre els dígits ASCII retornen la mitjana;

}

En una altra pestanya (per mantenir les coses organitzades), farem el codi per reaccionar a les mesures, vegeu el següent pas.

Pas 4: administrar els llums

Gestió de les llums
Gestió de les llums
Gestió de les llums
Gestió de les llums
Gestió de les llums
Gestió de les llums

Per gestionar els llums, primer hem de calibrar les mesures. Comproveu quin és el límit superior per a les vostres mesures obrint el monitor sèrie. Per a nosaltres, les mesures eren entre el 150 (quan realment intentàvem relaxar-nos) i el 300 (quan intentàvem estar molt estressats).

A continuació, decidiu quin color ha de representar quin nivell d’estrès. Hem aconseguit que:

1. Nivell d’estrès baix: llum blanca, que canvia a llum verda amb un augment de l’estrès

2. Nivell d'estrès mitjà: llum verda, que canvia a llum blava amb un augment de l'estrès

3. Nivell d’estrès alt: llum blava, que canvia a vermell amb un augment de l’estrès

El següent codi es va utilitzar per processar les mesures i convertir-les en valors per enviar-los al LED:

// MÀSTER # defineix DEBUG 0

// GSR = A1

int gsrVal = 0; // Variable per emmagatzemar l'entrada dels sensors

// Com s’ha esmentat, utilitzeu els pins de modulació d’amplada de pols (PWM)

int RedPin = 9; // LED vermell, connectat al pin digital 9 int grnPin = 9; // LED verd, connectat al pin digital 10 int bluPin = 5; // LED blau, connectat al pin digital 11

// Variables del programa

int redVal = 0; // Variables per emmagatzemar els valors per enviar als pins int grnVal = 0; int bluVal = 0;

gsr llarg sense signar = 0;

configuració nul·la ()

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

Serial.begin (9600);

setupGSR (); }

bucle buit ()

{gsrVal = gsr; if (gsrVal <150) // El terç més baix del rang de gsr (0-149) {gsr = (gsrVal / 10) * 17; // Normalitzar a 0-255 redVal = gsrVal; // apagat a grnVal complet = gsrVal; // Verd de desactivat a bluVal complet = gsrVal; // De color blau a pleSo de corda A = "A"; Serial.println (SoundA); // per a un ús posterior a la música operativa} else if (gsrVal <250) // Terç mitjà del rang de gsr (150-249) {gsrVal = ((gsrVal-250) / 10) * 17; // Normalitzar a 0-255 redVal = 1; // Red off grnVal = gsrVal; // Verd de ple a apagat bluVal = 256 - gsrVal; // Blau de desactivat a so de corda complet B = "B"; Serial.println (SoundB); } else // Terç superior de l'interval gsr (250-300) {gsrVal = ((gsrVal-301) / 10) * 17; // Normalitzar a 0-255 redVal = gsrVal; // Vermell de desactivat a complet grnVal = 1; // Verteix a bluVal complet = 256 - gsrVal; // Blau de so complet a corda apagada C = "C"; Serial.println (SoundC); }

analogWrite (redPin, redVal); // Escriviu valors als pins LED analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal); gsr = runGSR (); retard (100); }

Ara, doncs, el LED està reaccionant al vostre nivell d’estrès. Al següent pas, afegim música per representar el vostre estat d’ànim.

Pas 5: administració de la música

Gestió de la música
Gestió de la música

Vam triar representar els 3 nivells d’estrès amb la música següent:

1. Nivell baix (A): bols cantadors i ocells que piulen, un so molt lleuger

2. Nivell mitjà (B): un piano malenconiós, un so una mica més pesat

3. Nivell alt d’estrès (C): una tempesta de trons, un so fosc (tot i que força relaxant)

El codi està escrit a Processing, un programari que proporciona la part de retroalimentació del programari d’Arduino:

import process.serial. *; import ddf.minim. *;

Mínim mínim;

Reproductors AudioPlayer ;

int lf = 10; // Linefeed en ASCII

String myString = null; MyPort en sèrie; // El port sèrie int sensorValue = 0;

configuració nul·la () {

// Llista de tots els ports sèrie disponibles printArray (Serial.list ()); // Obriu el port que utilitzeu al mateix ritme que Arduino myPort = new Serial (this, Serial.list () [2], 9600); myPort.clear (); // esborra les mesures myString = myPort.readStringUntil (lf); myString = nul; // ho passem a Minim perquè pugui carregar fitxers minim = new Minim (això); reproductors = nou AudioPlayer [3]; // Canvieu el nom del fitxer d'àudio aquí i afegiu-lo als reproductors de biblioteques [0] = minim.loadFile ("Singing-bowls-and-birds-chirping-sleep-music.mp3"); reproductors [1] = minim.loadFile ("Melancholic-piano-music.mp3"); reproductors [2] = minim.loadFile ("Storm-sound.mp3"); }

sorteig buit () {

// comproveu si hi ha un valor nou mentre (myPort.available ()> 0) {// emmagatzemeu les dades a myString myString = myPort.readString (); // comproveu si realment tenim alguna cosa si (myString! = null) {myString = myString.trim (); // comproveu si hi ha alguna cosa si (myString.length ()> 0) {println (myString); proveu {sensorValue = Integer.parseInt (myString); } catch (Exception e) {} if (myString.equals ("A")) // // veure quin nivell d'estrès mesura {jugadors [0].play (); // reproduir segons la música} else {reproductors [0].pause (); // si no mesura un nivell d'estrès baix, no toqueu la cançó que correspongui} if (myString.equals ("B")) {players [1].play (); } else {jugadors [1].pause (); } if (myString.equals ("C")) {players [2].play (); } else {jugadors [2].pause (); }}}}}

Aquest codi hauria de reproduir la música segons el nivell d’estrès dels altaveus del portàtil.

Pas 6: dissenyeu l'encarnació

Image
Image
Dissenyeu l’encarnació
Dissenyeu l’encarnació

Vam fer servir la part superior del Philips Hue Light, però teníem un fons d’escuma verda. El SolidWorksfile ja és aquí, però també pot ser divertit mesurar la llum i dissenyar-lo al vostre gust.

Hem utilitzat una foto de la part superior de la làmpada com a capa inferior a SW, per assegurar-nos que la forma de la part inferior segueix la corba de la part superior (vegeu la primera foto).

Per fer que el model estigui CNC, deseu-lo com a fitxer STL i busqueu el vostre molí local (per exemple a uni).

Pas 7: fonts

Si voleu obtenir més informació sobre aquest tema o veure codis més extensos per mesurar l'estrès, consulteu els següents llocs web i projectes:

  • Més explicacions sobre com activar fitxers audiovisuals a Processament (que hem utilitzat)
  • Bon manual sobre GSR
  • Enfocament diferent per projectar l'estat d'ànim
  • Detector d'estrès realment fresc amb múltiples sensors (gran inspiració per a aquest projecte)
  • Projector de so (en lloc de tensió) amb LED RGB
  • Bon article sobre GSR

Recomanat: