תוכן עניינים:

מקרן מצב רוח (Philips Hue Light שנפרץ עם GSR) TfCD: 7 שלבים (עם תמונות)
מקרן מצב רוח (Philips Hue Light שנפרץ עם GSR) TfCD: 7 שלבים (עם תמונות)

וִידֵאוֹ: מקרן מצב רוח (Philips Hue Light שנפרץ עם GSR) TfCD: 7 שלבים (עם תמונות)

וִידֵאוֹ: מקרן מצב רוח (Philips Hue Light שנפרץ עם GSR) TfCD: 7 שלבים (עם תמונות)
וִידֵאוֹ: Человек-паук Marvel: Майлз Моралес (фильм) 2024, יולי
Anonim
Image
Image
קח את אור הגוון
קח את אור הגוון

מאת לורה אחסמאן ומייקה ובר

מטרה: מצבי רוח נמוכים ומתח הם חלק גדול מהחיים המודרניים בקצב המהיר. זה גם משהו שהוא בלתי נראה כלפי חוץ. מה אם היינו יכולים להקרין הן מבחינה ויזואלית והן מבחינה אקוסטית את רמת הלחץ שלנו עם מוצר, כדי שנוכל להראות כיצד אתה מרגיש. זה יקל עליך לתקשר על בעיות אלה. התגובה שלך יכולה להיות מתאימה יותר גם לרגע שבו אתה מקבל משוב על רמות הלחץ שלך.

GSR, או עמידות לעור גלווני, מדידה הנלקחת בקצות אצבעו של משתמש, מוכחת כמנבא טוב מאוד ללחץ. מכיוון שבלוטות הזיעה ביד מגיבות בעיקר ללחץ (לא רק להתעמלות גופנית), רמות מתח מוגברות מייצרות מוליכות גבוהה יותר. משתנה זה משמש בפרויקט זה.

רעיון: מה אם נוכל לזהות במהירות מתח או מצב רוח ולייצג אותו עם אור ומוזיקה צבעוניים? מערכת GSR יכולה לגרום לזה לקרות. במדריך זה נכין מערכת מבוססת Arduino לעשות זאת! הוא מופעל על ידי תוכנת Arduino ותוכנת עיבוד, ויתרגם ערכי מוליכות עור לאור צבע מסוים וסוג מוזיקה מסוים.

מה אתה צריך?

  • ארדואינו אונו
  • חוטים
  • נורת פיליפס גוון (צבעי חיים)
  • שלושה נגדי 100 אוהם (עבור ה- RGB LED)
  • נגד אחד 100 קאוהם (לחיישן GSR)
  • משהו לשמש כחיישני מוליכות, כמו רדיד אלומיניום
  • תוכנת Arduino
  • תוכנת עיבוד (השתמשנו ב- v2.2.1, תוכנות חדשות יותר נוטות לקרוס)
  • SolidWorks, לעיצוב הדיור (אופציונלי)
  • גישה לטחנת CNC (אופציונלי)
  • קצף דוגמנות ירוק (EPS)
  • לוח לחם (אופציונלי, יכול גם להלחם)

שלב 1: הפרד את אור הגוון

שלב זה קל, פשוט השתמש בכוח (או מברג) תן לאבד ולפצח את האור. כמה חיבורי הצמד מחזיקים את המוצר יחד, כך שקל לפרק אותו.

כעת, ניתן להבריג את האור בחלקו העליון ולנתקו משאר האלקטרוניקה. נצטרך רק את האור ואת החלק העליון של הדיור. שמור או זרק את השאר, זה תלוי בך!

שלב 2: הכנת החומרה

הכנת החומרה
הכנת החומרה
הכנת החומרה
הכנת החומרה
הכנת החומרה
הכנת החומרה
הכנת החומרה
הכנת החומרה

לפרויקט זה השתמשנו באור של Philips Hue כדי להפוך את ההתגלמות ליפה ומהירה יותר. עם זאת, תוכל גם להשתמש בנורת RGB רגילה, כפי שמוצג בתמונה עם לוח הלחם.

להפעלת נורית ה- RGB, חבר את הפינים לשלוש יציאות PWM שונות של הארדואינו (מצוין ba a ~). השתמש בנגדי 100 אוהם לחיבור זה. חבר את הסיכה הארוכה ביותר לפלט 5V של הארדואינו. כדי לראות איזה סיכה מתאימה לאיזה צבע, עיינו בתמונה האחרונה של שלב זה.

באור הגוון, אותם צעדים הולכים. הנורית מתחברת בקלות ל- Arduino באמצעות חוטי הלחמה לחריצים המיועדים, ראו את התמונה השלישית בשלב זה. לחריצים יש R, G ו- B, המציין איזה חוט צריך ללכת לאן. יש לו גם חריץ + ו- - לחיבור ל- 5V של הארדואינו ולקרקע של הארדואינו בהתאמה. לאחר שחיברת את הנורית, תוכל להתברג בחזרה לבית.

כדי לחבר את חיישני ה- GSR, העשויים מנייר אלומיניום (או להשתמש במיכלי אלומיניום של פנסי נראות, שנראים רק קצת יותר נחמדים), הלחמו או הדביקו אותם לחוט וחברו אותו ל 5V. חבר את השני לנגד 100KOhm ולקבל של 0, 1mF (מקביל), שאמור להיות מחובר לקרקע ולחריץ A1 בארדואינו. זה ייתן את הפלט של רמת המתח, אשר לאחר מכן ישמש כקלט לצבע האור והמוסיקה. הדבקנו את החיישנים למנורה, כך שזה יהפוך למוצר נחמד לתפוס אותו בזמן מדידת הלחץ שלך. היזהר עם זאת כי החיישנים אינם נוגעים!

התמונה האחרונה מראה כיצד ניתן לעשות זאת ללא קרש לחם.

שלב 3: מדידת רמת המתח

מדידת רמת המתח
מדידת רמת המתח

מדידת רמת המתח רק עם חיישנים תוצרת בית אלה בהחלט לא תיתן מדידות מדויקות על מידת הלחץ שלך בדיוק. עם זאת, כאשר הוא מכויל נכון, הוא יכול לתת קירוב.

כדי למדוד את רמות ה- GSR, נשתמש בקטע הקוד הבא, בסביבת ה- Arduino. כדי לקבל מדידה פחות משתנה, יש לבצע ממוצע מדי 10 קריאות.

const int numReadings = 10; int readings [numReadings]; // קלט מאינדקס int int = 0; // אינדקס הקריאה הנוכחית int total = 0; // הממוצע הארוך ללא סימן ריצה = 0; // ממוצע

int inputPin = A1;

הגדרת בטל GSR ()

{// הגדר את כל הקריאות ל- 0:

עבור (int i = 0; i <numReadings; i ++) קריאות = 0; }

טווח ארוך ללא סימן GSR () {

סה"כ = סה"כ - קריאות [אינדקס]; // לקרוא מתוך קריאות חיישן GSR [אינדקס] = analogRead (inputPin); // להוסיף קריאה חדשה לסך הכולל = סה"כ + קריאות [אינדקס]; // המיקום הבא של אינדקס מערך = אינדקס + 1;

// סוף הבדיקה של המערך

if (אינדקס> = numReadings) // והתחל מחדש על אינדקס = 0;

// מהו ממוצע

ממוצע = total / numReadings; // לשלוח אותו למחשב כמספר החזרה של ספרות ASCII;

}

בכרטיסייה אחרת (כדי לשמור על סדר הדברים), אנו גורמים לקוד להגיב למדידות, עיין בשלב הבא!

שלב 4: ניהול האורות

ניהול האורות
ניהול האורות
ניהול האורות
ניהול האורות
ניהול האורות
ניהול האורות

כדי לנהל את האורות, עלינו קודם כל לכייל את המדידות. בדוק מהי הגבול העליון למידותיך על ידי פתיחת הצג הטורי. עבורנו המדידות היו משהו בין ה -150 (כשבאמת ניסינו להירגע) לבין ה -300 (כשניסינו מאוד להילחץ).

לאחר מכן, תחליט איזה צבע צריך לייצג את רמת המתח. עשינו את זה כך:

1. רמת מתח נמוכה: אור לבן, משתנה לאור ירוק עם מתח גובר

2. רמת מתח בינונית: אור ירוק, משתנה לאור כחול עם מתח גובר

3. רמת מתח גבוהה: אור כחול, משתנה לאדום עם מתח גובר

הקוד הבא שימש לעיבוד המדידות והפיכתן לערכים לשליחת הנורית:

// MASTER #define DEBUG 0

// GSR = A1

int gsrVal = 0; // משתנה לאחסון הקלט מהחיישנים

// כאמור, השתמש בסיכות אפנון רוחב הדופק (PWM)

int redPin = 9; // LED אדום, מחובר לפין דיגיטלי 9 int grnPin = 9; // LED ירוק, מחובר לפין דיגיטלי 10 int bluPin = 5; // LED כחול, מחובר לפין דיגיטלי 11

// משתני תוכנית

int redVal = 0; // משתנים לאחסון הערכים שיש לשלוח לפינים int grnVal = 0; int bluVal = 0;

gsr ארוך ללא חתום = 0;

הגדרת חלל ()

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

Serial.begin (9600);

setupGSR (); }

לולאת חלל ()

{gsrVal = gsr; if (gsrVal <150) // השליש הנמוך ביותר מטווח gsr (0-149) {gsr = (gsrVal /10) * 17; // לנרמל ל- 0-255 redVal = gsrVal; // off ל- grnVal מלא = gsrVal; // ירוק מ off עד bluVal מלא = gsrVal; // כחול עד מלאString SoundA = "A"; Serial.println (SoundA); // לשימוש מאוחר יותר בהפעלה של מוזיקה} אחרת אם (gsrVal <250) // השליש האמצעי של טווח gsr (150-249) {gsrVal = ((gsrVal-250) /10) * 17; // לנרמל ל 0-255 redVal = 1; // אדום off grnVal = gsrVal; // ירוק ממלוא לכבוי bluVal = 256 - gsrVal; // כחול מהכבה לסאונד המיתר המלא B = "B"; Serial.println (SoundB); } אחר // שליש עליון מטווח gsr (250-300) {gsrVal = ((gsrVal-301) /10) * 17; // לנרמל ל- 0-255 redVal = gsrVal; // אדום מ off עד grnVal מלא = 1; // ירוק ל bluVal מלא = 256 - gsrVal; // כחול מ- Full ל- String SoundC = "C"; Serial.println (SoundC); }

analogWrite (redPin, redVal); // כתוב ערכים לסיכות LED analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal); gsr = runGSR (); עיכוב (100); }

אז עכשיו ה- LED מגיב לרמת הלחץ שלך, בוא נוסיף קצת מוזיקה לייצג את מצב הרוח שלך, בשלב הבא.

שלב 5: ניהול המוסיקה

ניהול המוזיקה
ניהול המוזיקה

בחרנו לייצג את 3 רמות הלחץ עם המוזיקה הבאה:

1. רמה נמוכה (א): קערות שירה וציוץ ציפורים, צליל קל מאוד

2. רמה בינונית (B): פסנתר מלנכולי, צליל קצת יותר כבד

3. רמת מתח גבוהה (C): סערת רעמים, צליל כהה (אם כי די מרגיע)

הקוד כתוב בעיבוד, תוכנה המספקת את חלק משוב התוכנה של Arduino:

ייבוא עיבוד. סדרה.*; יבוא ddf.minim.*;

מינימום מינימום;

נגני AudioPlayer ;

int lf = 10; // הזנת קו ב- ASCII

מחרוזת myString = null; MyPort סידורי; // היציאה הטורית int sensorValue = 0;

הגדרת בטל () {

// רשום את כל היציאות הטורקיות הזמינות printArray (Serial.list ()); // פתח את היציאה שבה אתה משתמש באותו שיעור כמו Arduino myPort = new Serial (this, Serial.list () [2], 9600); myPort.clear (); // מדידות ברורות myString = myPort.readStringUntil (lf); myString = null; // אנו מעבירים את זה ל- Minim כדי שיוכל לטעון קבצים minim = new Minim (this); נגנים = AudioPlayer חדש [3]; // שנה כאן את שם קובץ השמע והוסף אותו לנגני הספריות [0] = minim.loadFile ("קערות-שירה-וציפורים-ציוץ-שינה-מוסיקה.mp3"); נגנים [1] = minim.loadFile ("מלנכולי-פסנתר-מוסיקה.mp3"); נגנים [2] = minim.loadFile ("Storm-sound.mp3"); }

צייר חלל () {

// בדוק אם יש ערך חדש בעוד (myPort.available ()> 0) {// אחסן את הנתונים ב- myString myString = myPort.readString (); // לבדוק אם באמת יש לנו משהו אם (myString! = null) {myString = myString.trim (); // בדוק אם יש משהו אם (myString.length ()> 0) {println (myString); נסה {sensorValue = Integer.parseInt (myString); } תפוס (חריג ה) {} אם (myString.equals ("A")) // ראה איזה רמת מתח היא מודדת {שחקנים [0].play (); // לשחק לפי מוזיקה} אחר {נגנים [0].pause (); // אם הוא לא מודד את רמת הלחץ הנמוכה, אל תנגן את השיר לפי}} if (myString.equals ("B")) {players [1].play (); } אחר {שחקנים [1].pause (); } if (myString.equals ("C")) {שחקנים [2].play (); } אחר {שחקנים [2].pause (); }}}}}

קוד זה אמור לנגן את המוסיקה בהתאם לרמת המתח ברמקולים הניידים שלנו.

שלב 6: עיצוב התפיסה

Image
Image
עיצוב העיצוב
עיצוב העיצוב

השתמשנו בחלק העליון של ה- Philips Hue Light, אך חיברנו תחתית קצף ירוק. SolidWorksfile נמצא כאן, אבל זה יכול להיות גם כיף למדוד את המנורה בעצמך ולעצב משהו לפי טעמך!

השתמשנו בתצלום של החלק העליון של המנורה כתת -שכבה ב- SW, כדי לוודא שצורת החלק התחתון עוקבת אחר עקומת החלק העליון (ראו תמונה ראשונה).

כדי לקבל את המודל cnc'd, שמור אותו כקובץ STL ומצא את הטוחן המקומי שלך (ב- uni למשל).

שלב 7: מקורות

אם אתה מעוניין במידע נוסף בנושא זה, או ראה קודים נרחבים יותר למדידת מתח, עיין באתרים ובפרויקטים הבאים:

  • הסבר נוסף על הפעלת קבצי אודיו בעיבוד (בהם השתמשנו)
  • ספר נחמד על GSR
  • גישה מגניבה אחרת להקרנת מצב רוח
  • גלאי מתח ממש מגניב עם מספר חיישנים (השראה גדולה לפרויקט הזה)
  • מקרן קול (במקום מתח) עם RGB LED
  • מאמר טוב על GSR

מוּמלָץ: