Tartalomjegyzék:

Hangulatprojektor (feltört Philips Hue Light GSR -rel) TfCD: 7 lépés (képekkel)
Hangulatprojektor (feltört Philips Hue Light GSR -rel) TfCD: 7 lépés (képekkel)

Videó: Hangulatprojektor (feltört Philips Hue Light GSR -rel) TfCD: 7 lépés (képekkel)

Videó: Hangulatprojektor (feltört Philips Hue Light GSR -rel) TfCD: 7 lépés (képekkel)
Videó: Horizon: Forbidden West (The Movie) 2024, Szeptember
Anonim
Image
Image
Szedd szét a Hue Light -ot
Szedd szét a Hue Light -ot

Írta: Laura Ahsmann & Maaike Weber

Cél: Az alacsony hangulat és a stressz a modern felgyorsult élet nagy részét képezik. Ez is valami, ami kívülről láthatatlan. Mi lenne, ha képesek lennénk vizuálisan és akusztikailag is kivetíteni a stresszszintünket egy termékkel, hogy meg tudjuk mutatni, mit érzel. Könnyebb lenne ezekről a problémákról kommunikálni. Saját reakciója is alkalmasabb lehet arra a pillanatra, amikor visszajelzést kap a stressz szintjéről.

A GSR, vagyis a galvanikus bőrellenállás, a felhasználó kéznél lévő mérése, bizonyítottan jó előrejelzője a stressznek. Mivel a kézben lévő verejtékmirigyek többnyire a stresszre reagálnak (nem csak a fizikai terhelésre), a megnövekedett stresszszint magasabb vezetőképességet eredményez. Ezt a változót használják ebben a projektben.

Ötlet: Mi lenne, ha gyorsan észlelnénk a stresszt vagy a hangulatot, és színes fénnyel és zenével ábrázolnánk? Egy GSR rendszer ezt megvalósíthatja. Ebben az utasításban egy Arduino -alapú rendszert készítünk ehhez! Mind az Arduino Software, mind a Processing Software működteti, és a bőr vezetőképességét egy bizonyos színű fényké és egy bizonyos típusú zenévé alakítja át.

Mire van szükséged?

  • Arduino Uno
  • Vezetékek
  • Philips Hue fény (élő színek)
  • Három 100 ohmos ellenállás (az RGB LED -hez)
  • Egy 100 KOhm ellenállás (a GSR érzékelőhöz)
  • Valami vezetőképesség -érzékelő, például alumíniumfólia
  • Arduino szoftver
  • Feldolgozó szoftver (a v2.2.1 verziót használtuk, az újabbak általában összeomlanak)
  • SolidWorks, a ház kialakításához (opcionális)
  • Hozzáférés a CNC malomhoz (opcionális)
  • Zöld modellező hab (EPS)
  • Kenyeretábla (opcionális, forrasztható is)

Lépés: Szedd szét a Hue Light -ot

Ez a lépés egyszerű, csak erővel (vagy csavarhúzóval) hagyja elveszni és feltörni a fényt. Néhány pattintható csatlakozás összetartja a terméket, így könnyen szétszedhető.

Most a tetején lévő lámpa lecsavarható és leválasztható a többi elektronikáról. Csak a fényre és a ház tetejére lesz szükségünk. Mentse el vagy dobja el a többit, ez rajtad múlik!

2. lépés: A hardver előkészítése

A hardver előkészítése
A hardver előkészítése
A hardver előkészítése
A hardver előkészítése
A hardver előkészítése
A hardver előkészítése
A hardver előkészítése
A hardver előkészítése

Ehhez a projekthez Philips Hue lámpát használtunk, hogy szebbé és gyorsabbá tegyük a megtestesülést. Használhat azonban normál RGB LED -et is, amint az a kenyérsütő táblán látható képen látható.

Az RGB LED működtetéséhez csatlakoztassa a csapokat az Arduino három különböző PWM portjához (jelzett ba a ~). Ehhez a csatlakoztatáshoz használja a 100 ohmos ellenállásokat. Csatlakoztassa a leghosszabb tűt az Arduino 5V -os kimenetéhez. Ha látni szeretné, hogy melyik csap melyik színnek felel meg, tekintse meg ennek a lépésnek az utolsó képét.

A Hue Light esetében ugyanez a lépés. A LED könnyen csatlakoztatható az Arduino -hoz, forrasztva a vezetékeket a kijelölt résekhez, lásd a harmadik képet ebben a lépésben. A nyílásokban van egy R, egy G és egy B jel, amelyek azt jelzik, hogy melyik vezetéknek hova kell mennie. A + és a - nyílással is rendelkezik, amelyeket az Arduino 5 V -os és az Arduino földhöz kell csatlakoztatni. Miután csatlakoztatta a LED -et, visszacsavarhatja a házba.

Az alumínium fóliából készült GSR -érzékelők csatlakoztatásához (vagy használja a mécses aluminium edényeket, amelyek egy kicsit szebbnek tűnnek), forrasztja vagy ragasztja őket egy vezetékhez, és csatlakoztassa az 5V -hoz. Csatlakoztassa a másikat a 100KOhm ellenálláshoz és a 0, 1mF (párhuzamos) kondenzátorhoz, amelyet ezután a földhöz és az Arduino A1 nyílásához kell csatlakoztatni. Ez adja a stresszszint kimenetét, amelyet a fény színének és zenéjének bemeneteként használnak. Az érzékelőket a lámpához ragasztottuk, így szép termék lesz, amelyet megragadhatunk a stressz mérése közben. Vigyázzon azonban, hogy az érzékelők ne érjenek egymáshoz!

Az utolsó kép azt mutatja be, hogyan lehet kenyérsütőlap nélkül csinálni.

3. lépés: A stresszszint mérése

A stressz szint mérése
A stressz szint mérése

A stressz szintjének mérése csak ezekkel a házi készítésű érzékelőkkel biztosan nem ad pontos méréseket arra vonatkozóan, hogy mennyire vagy stresszes. Ha azonban helyesen kalibrálja, akkor hozzávetőleges értéket adhat.

A GSR szintek méréséhez a következő kódrészletet fogjuk használni, Arduino környezetben. A kevésbé ingadozó mérés érdekében 10 leolvasáson átlagot kell mérni.

const int numReadings = 10; int olvasmányok [numReadings]; // bemenet az A1 int index = 0; // az aktuális leolvasás indexe int total = 0; // a futó összes előjel nélküli hosszú átlag = 0; // az átlag

int inputPin = A1;

void setupGSR ()

{// állítsa az összes értéket 0 -ra:

(int i = 0; i <numReadings; i ++) olvasásra = 0; }

unsigned long runGSR () {

összesen = összesen - leolvasások [index]; // olvasás a GSR szenzor leolvasásából [index] = analogRead (inputPin); // új leolvasás hozzáadása az összesített összeshez = összes + leolvasás [index]; // tömb következő pozíciója index = index + 1;

// teszt tömb vége

if (index> = számReadings) // és újraindítás index = 0;

// mi az átlag

átlag = összes / számReadings; // elküldi a számítógépre, mivel az ASCII számjegy átlagot ad vissza;

}

Egy másik lapon (a dolgok rendszerezése érdekében) elkészítjük a kódot, amely reagál a mérésekre, lásd a következő lépést!

4. lépés: A fények kezelése

A fények kezelése
A fények kezelése
A fények kezelése
A fények kezelése
A fények kezelése
A fények kezelése

A fények kezeléséhez először kalibrálnunk kell a méréseket. A soros monitor megnyitásával ellenőrizze, hogy mi a felső határérték a mérésekhez. Számunkra a mérések valahol a 150 (amikor tényleg megpróbáltunk ellazulni) és a 300 (amikor nagyon igyekeztünk stresszelni) között voltak.

Ezután döntse el, hogy melyik színnek milyen stresszszintet kell képviselnie. Ezt úgy csináltuk, hogy:

1. Alacsony stresszszint: fehér fény, növekvő stressz mellett zöld fényre vált

2. Közepes stresszszint: zöld fény, növekvő feszültség mellett kék fényre vált

3. Magas stresszszint: kék fény, növekvő stressz mellett vörösre változik

A következő kódot használtuk a mérések feldolgozásához és értékekké alakításához, amelyeket a LED -nek küldtek:

// MESTER #define DEBUG 0

// GSR = A1

int gsrVal = 0; // Változó az érzékelők bemenetének tárolására

// Mint említettük, használja a Pulse-width Modulation (PWM) csapokat

int redPin = 9; // Piros LED, 9 -es digitális tűhöz csatlakoztatva int grnPin = 9; // Zöld LED, 10 -es digitális tűhöz csatlakoztatva int bluPin = 5; // Kék LED, a 11 -es digitális tűhöz csatlakoztatva

// Programváltozók

int redVal = 0; // Változók a tűkre küldendő értékek tárolására int grnVal = 0; int bluVal = 0;

előjel nélküli hosszú gsr = 0;

üres beállítás ()

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

Sorozat.kezdet (9600);

setupGSR (); }

üres hurok ()

{gsrVal = gsr; if (gsrVal <150) // A gsr tartomány legalacsonyabb harmada (0-149) {gsr = (gsrVal /10) * 17; // Normalizálás 0-255-re redVal = gsrVal; // ki a teljes grnVal = gsrVal; // Zöld a ki teljes bluVal = gsrVal; // Teljesen kékString SoundA = "A"; Serial.println (SoundA); // későbbi felhasználáshoz a működő zenében} else if (gsrVal <250) // gsr tartomány középső harmada (150-249) {gsrVal = ((gsrVal-250) /10) * 17; // Normalizálás 0-255-re redVal = 1; // Piros ki grnVal = gsrVal; // Zöld a teljesről a kikapcsolásra bluVal = 256 - gsrVal; // Kék az off -tól a teljes String SoundB = "B"; Serial.println (SoundB); } else // A gsr tartomány felső harmada (250-300) {gsrVal = ((gsrVal-301) /10) * 17; // Normalizálás 0-255-re redVal = gsrVal; // Piros az off -tól a teljesig grnVal = 1; // Zöld a teljes bluVal = 256 - gsrVal; // Kék teljesről kikapcsoltra String SoundC = "C"; Serial.println (SoundC); }

analogWrite (redPin, redVal); // Értékek írása a LED tüskékbe analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal); gsr = runGSR (); késleltetés (100); }

Tehát most a LED reagál a stressz szintjére, a következő lépésben adjunk hozzá egy kis zenét, amely jelzi a hangulatát.

5. lépés: A zene kezelése

A zene kezelése
A zene kezelése

Úgy döntöttünk, hogy a 3 stresszszintet a következő zenével képviseljük:

1. Alacsony szint (A): éneklő tálak és madarak csicsergése, nagyon könnyű hang

2. Közepes szint (B): melankolikus zongora, kicsit nehezebb hangzás

3. Magas stresszszint (C): Mennydörgő vihar, sötét hang (bár elég pihentető)

A kód a Processing programba van írva, amely az Arduino szoftver visszajelzési részét biztosítja:

import feldolgozás.sorozat.*; import ddf.minim.*;

Minimális minimum;

AudioPlayer lejátszók;

int lf = 10; // Linefeed az ASCII -ben

Karakterlánc myString = null; Soros myPort; // A soros port int sensorValue = 0;

void setup () {

// Az összes rendelkezésre álló soros port felsorolása printArray (Serial.list ()); // Nyissa meg a használt portot ugyanolyan sebességgel, mint az Arduino myPort = new Serial (this, Serial.list () [2], 9600); myPort.clear (); // a mérések törlése myString = myPort.readStringUntil (lf); myString = null; // ezt átadjuk a Minimnek, hogy betöltse a fájlokat minimum = new Minim (this); lejátszók = új AudioPlayer [3]; // Itt módosítsa az audio fájl nevét, és adja hozzá a könyvtárakhoz lejátszók [0] = minim.loadFile ("Singing-bowls-and-birds-chirping-sleep-music.mp3"); játékosok [1] = minim.loadFile ("Melancholic-piano-music.mp3"); játékosok [2] = minim.loadFile ("Storm-sound.mp3"); }

void draw () {

// ellenőrizze, hogy van -e új érték, miközben (myPort.available ()> 0) {// tárolja az adatokat a myString fájlban myString = myPort.readString (); // ellenőrizze, hogy valóban van -e valami, ha (myString! = null) {myString = myString.trim (); // ellenőrizze, hogy van -e valami, ha (myString.length ()> 0) {println (myString); try {sensorValue = Integer.parseInt (myString); } catch (kivétel e) {} if (myString.equals ("A")) // nézd meg, hogy milyen stresszszintet mér {player [0].play (); // zene szerint játszani} else {lejátszók [0].pause (); // ha nem az alacsony stresszszintet méri, ne játssza le a megfelelő dalt} if (myString.equals ("B")) {players [1].play (); } else {játékosok [1].pause (); } if (myString.equals ("C")) {player [2].play (); } else {játékosok [2].pause (); }}}}}

Ennek a kódnak kell lejátszania a zenét a laptop hangszóróinak stresszszintje szerint.

6. lépés: Tervezze meg a megvalósítást

Image
Image
Tervezze meg a megvalósítást
Tervezze meg a megvalósítást

A Philips Hue Light felső részét használtuk, de zöld hab alját. A SolidWorksfile itt van, de az is szórakoztató lehet, hogy saját maga mérje meg a lámpát, és tervezzen valamit az ízlése szerint!

A lámpa tetejéről készült fényképet alátétként használtunk DNy -ban, hogy megbizonyosodjunk arról, hogy az aljzat alakja követi a felső görbét (lásd az első fotót).

Ahhoz, hogy a modell cnc'd legyen, mentse el STL fájlként, és keresse meg a helyi molnárt (például az uni -ban).

7. lépés: Források

Ha további információra van szüksége erről a témáról, vagy átfogóbb kódokat szeretne látni a stressz mérésére, tekintse meg az alábbi webhelyeket és projekteket:

  • További magyarázat az audiofájlok kiváltására a feldolgozás során (amit mi használtunk)
  • Szép kézikönyv a GSR -ről
  • Hűvös, más megközelítés a hangulatvetítéshez
  • Nagyon jó stresszérzékelő több érzékelővel (nagy inspiráció ehhez a projekthez)
  • Hangos (stressz helyett) projektor RGB LED -del
  • Jó cikk a GSR -ről

Ajánlott: