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

עיני LED בשליטה מרחוק ומכסה תחפושות: 7 שלבים (עם תמונות)
עיני LED בשליטה מרחוק ומכסה תחפושות: 7 שלבים (עם תמונות)

וִידֵאוֹ: עיני LED בשליטה מרחוק ומכסה תחפושות: 7 שלבים (עם תמונות)

וִידֵאוֹ: עיני LED בשליטה מרחוק ומכסה תחפושות: 7 שלבים (עם תמונות)
וִידֵאוֹ: Words of Cheer for Daily Life | Charles H. Spurgeon | Christian Audiobook 2024, יולי
Anonim

מאת Bekathwia Becky Stern עקוב אחר המחבר:

מצלמת פרטיות חבר
מצלמת פרטיות חבר
פרטיות מצלמת רשת חבר
פרטיות מצלמת רשת חבר
מדידת קלטת אנטנת יאגי עם מחברים מודפסים בתלת מימד
מדידת קלטת אנטנת יאגי עם מחברים מודפסים בתלת מימד
מדידת קלטת אנטנת יאגי עם מחברים מודפסים בתלת מימד
מדידת קלטת אנטנת יאגי עם מחברים מודפסים בתלת מימד
רקמת גלגל המזלות
רקמת גלגל המזלות
רקמת גלגל המזלות
רקמת גלגל המזלות

אודות: יצירה ושיתוף הן שתי התשוקות הגדולות ביותר שלי! בסך הכל פרסמתי מאות הדרכות על כל דבר, החל מבקרו -מיקרו ועד לסריגה. אני רוכב אופנוע בניו יורק ואמא כלבה שלא חזרה בתשובה. וואו שלי … עוד על bekathwia »

ג'וואסות תאומות! אורקו כפול! שני אשפי רוחות מבאבל-בובל! מכסה המנוע התחפושת הזה יכול להיות כל יצור בעל עיניים LED שתבחר רק על ידי שינוי הצבעים. את הפרויקט הזה עשיתי לראשונה בשנת 2015 עם מעגל וקוד פשוטים מאוד, אבל השנה רציתי ליצור גרסה משודרגת עם בקרת אנימציה בו זמנית על פני שתי תלבושות. מעגל זה משתמש בשלט רחוק RF פשוט אחד, קרוב לטווח, לשליטה על שני מקלטים על אותו תדר, וקוד Arduino המעסיק הפרעות כדי להשיג שינויי אנימציה מגיבים, המבוססים על קוד ההדרכה של ביל ארל.

לפרויקט זה תזדקק ל:

  • שני תכשיטי NeoPixel
  • מיקרו בקר GEMMA M0
  • מקלט אלחוטי 315MHz, סוג נעילה
  • שלט RF אלחוטי 315MHz בתצורת ארבעה, שניים או כפתורים בודדים
  • חוט תקוע מצופה סיליקון (מומלץ 30awg)
  • מלחם והלחמה
  • חשפניות חוטים
  • חותכי שטיפה
  • מַלְקֶטֶת
  • עזרה בכלי יד שלישית (אופציונלי)
  • סיכות תפירה
  • גיר חייט (אופציונלי)
  • חוט פלדה מגולוון 19awg
  • בד עבה למכסה המנוע/שכמייה (בגרסה זו השתמשתי בשתי שכבות בד טבק לבן ושכבה אחת של בד גבינה לבן, ואז ריפדתי את החלק הפנימי של מכסה המנוע בשחור מלא כדי לחסום את האור)
  • בד שחור שקוף ללוח פנים
  • מכונת תפירה
  • מספריים
  • חוט ומחט
  • מדפסת תלת מימד עם נימה גמישה (אופציונלי)

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

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

  • היכרות עם Gemma M0
  • NeoPixel Uberguide
  • גרסת פרוייקט מכסה המנוע הראשונה (נבנתה בשנת 2015 עם ג'מה קלאסית וללא שליטה אלחוטית)
  • ריבוי משימות ב- Arduino pt 3

שלב 1: תרשים מעגל וקוד

תרשים מעגל וקוד
תרשים מעגל וקוד

חיבורי המעגלים הם כדלקמן:

  • Gemma D2 למקלט אלחוטי D0
  • Gemma D0 למקלט אלחוטי D1
  • ג'מה 3V למקלט אלחוטי +5V
  • Gemma GND למקלט אלחוטי GND ותכשיטי NeoPixel GND
  • נתוני תכשיט Gemma D1 ל- NeoPixel IN
  • Gemma Vout לתכשיטי NeoPixel PWR
  • נתוני תכשיט NeoPixel OUT לנתוני NeoPixel Jewel אחרים IN

עיין בשלב הבא להערות הרכבה.

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

#כלול "Adafruit_NeoPixel.h"

// סוגי דפוסים נתמכים: תבנית enum {NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE}; // כיווני פטרן נתמכים: כיוון enum {FORWARD, REVERSE}; // מחלקת NeoPattern - נגזרת ממחלקת המחלקות Adafruit_NeoPixel NeoPatterns: public Adafruit_NeoPixel {public: // משתני חבר: תבנית ActivePattern; // איזה דפוס הוא כיוון ריצה כיוון; // כיוון להפעלת התבנית מרווח ארוך ללא סימן; // אלפיות השנייה בין העדכונים ללא חתימה ארוכה LastUpdate; // עדכון אחרון של המיקום uint32_t Color1, Color2; // אילו צבעים נמצאים בשימוש uint16_t TotalSteps; // מספר השלבים הכולל במדד uint16_t התבנית; // השלב הנוכחי בתוך חלל התבנית (*OnComplete) (); // התקשרות חוזרת בסיום התבנית // קונסטרוקטור - קורא לבנאי ברמה בסיסית לאתחל רצועות NeoPatterns (uint16_t פיקסלים, uint8_t סיכה, uint8_t סוג, void (*callback) ()): Adafruit_NeoPixel (פיקסלים, סיכה, סוג) {OnComplete = התקשר חזרה; } // עדכן את עדכון חלל התבנית () {if ((millis () - lastUpdate)> Interval) // זמן לעדכון {lastUpdate = millis (); switch (ActivePattern) {case RAINBOW_CYCLE: RainbowCycleUpdate (); לשבור; מקרה THEATER_CHASE: TheaterChaseUpdate (); לשבור; מקרה COLOR_WIPE: ColorWipeUpdate (); לשבור; case SCANNER: ScannerUpdate (); לשבור; מקרה FADE: FadeUpdate (); לשבור; ברירת מחדל: הפסקה; }}}} // הגדילו את האינדקס ואפסו בסוף התוספת חלל () {if (כיוון == קדימה) {אינדקס ++; אם (אינדקס> = סה"כ צעדים) {אינדקס = 0; if (OnComplete! = NULL) {OnComplete (); // התקשר לחזרה comlpetion}}} else // Direction == REVERSE {--Index; if (אינדקס <= 0) {Index = TotalSteps-1; אם (OnComplete! = NULL) {OnComplete ();. Index = TotalSteps-1; } אחר {כיוון = קדימה; אינדקס = 0; }}} // אתחל עבור RainbowCycle חלל RainbowCycle (מרווח uint8_t, direction dir = FORWARD) {ActivePattern = RAINBOW_CYCLE; מרווח = מרווח; סה"כ צעדים = 255; אינדקס = 0; כיוון = כיוון; } // עדכן את חלל RainbowCycleUpdate () {for (int i = 0; i <numPixels (); i ++) {setPixelColor (i, Wheel (((i * 256 / numPixels ())+אינדקס) & 255)); } הופעה(); תוֹסֶפֶת(); } // אתחל עבור Theatre Chase חלל של Theatre Chase (uint32_t color1, uint32_t color2, uint8_t interval, direction dir = FORWARD) {ActivePattern = THEATER_CHASE; מרווח = מרווח; TotalSteps = numPixels (); צבע 1 = צבע 1; צבע 2 = צבע 2; אינדקס = 0; כיוון = כיוון; } // עדכן את תבנית Thase Chase void TheaterChaseUpdate () {for (int i = 0; i <numPixels (); i ++) {if ((i+Index) % 3 == 0) {setPixelColor (i, Color1); } else {setPixelColor (i, Color2); } } הופעה(); תוֹסֶפֶת(); } // אתחל עבור ColorWipe חלל ColorWipe (צבע uint32_t, מרווח uint8_t, כיוון dir = FORWARD) {ActivePattern = COLOR_WIPE; מרווח = מרווח; TotalSteps = numPixels (); צבע 1 = צבע; אינדקס = 0; כיוון = כיוון; } // עדכן את תבנית מחיקת הצבעים void ColorWipeUpdate () {setPixelColor (Index, Color1); הופעה(); תוֹסֶפֶת(); } // אתחל עבור סורק חלל SCANNNER (uint32_t color1, מרווח uint8_t) {ActivePattern = SCANNER; מרווח = מרווח; TotalSteps = (numPixels () - 1) * 2; צבע 1 = צבע 1; אינדקס = 0; } // עדכן את תבנית Scanner void ScannerUpdate () {עבור (int i = 0; i > 1, ירוק (צבע) >> 1, כחול (צבע) >> 1); החזר dimColor; } // הגדר את כל הפיקסלים לצבע (סינכרוני) חלל ColorSet (צבע uint32_t) {עבור (int i = 0; i> 16) & 0xFF; } // מחזירה את הרכיב הירוק בצבע 32 סיביות uint8_t ירוק (צבע uint32_t) {return (צבע >> 8) & 0xFF; } // מחזירה את הרכיב הכחול בצבע 32 סיביות uint8_t כחול (צבע uint32_t) {color color & 0xFF; } // הזן ערך 0 עד 255 כדי לקבל ערך צבע. // הצבעים הם מעבר r - g - b - חזרה ל- r. uint32_t גלגל (בייט WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return Color (255 - WheelPos * 3, 0, WheelPos * 3); } אחרת אם (WheelPos <170) {WheelPos -= 85; החזר צבע (0, WheelPos * 3, 255 - WheelPos * 3); } אחר {WheelPos -= 170; החזר צבע (WheelPos * 3, 255 - WheelPos * 3, 0); }}}; תכשיטי voidComplete (); // הגדר כמה NeoPatterns עבור שתי הטבעות והמקל // וכן כמה שגרות השלמה של תכשיטי NeoPatterns Jewels (14, 1, NEO_GRBW + NEO_KHZ800, & JewelsComplete); const int BRIGHTNESS = 50; // אתחל הכל והתכונן להתחיל בהגדרת חלל () {Serial.begin (115200); pinMode (2, INPUT); pinMode (0, INPUT); // אתחל את כל הפיקסלים Jewels.setBrightness (BRIGHTNESS); Jewels.begin (); // פתח תבנית Jewels. TheaterChase (Jewels. Color (255, 50, 0), Jewels. Color (0, 0, 0, 50), 100); } // לולאת חלל לולאה ראשית () {// עדכן את התכשיטים. Jewels. Update (); // החלף תבניות בלחיצת כפתור: if (digitalRead (2) == HIGH) // לחצן מס '1 נלחץ {Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = FADE; Jewels. TotalSteps = 100; תכשיטים. מרווח = 1; } אחרת אם (digitalRead (0) == HIGH) // לחצן מספר 2 נלחץ {Jewels. Color1 = Jewels. Color (255, 0, 0); Jewels. ActivePattern = SCANNER; Jewels. TotalSteps = Jewels.numPixels (); תכשיטים. מרווח = 100; } else // חזרה לפעולה רגילה {// שחזר את כל פרמטרי התבנית לערכים נורמליים Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Jewels.numPixels (); תכשיטים. מרווח = 100; }} // ---------------------------------------------- -------------- // שגרות השלמה-התקשר לאחר השלמת תבנית // ---------------------- -------------------------------------- // השלמת תכשיטים Callback void JewelsComplete () {// שינוי צבע אקראי לסריקה הבאה //Jewels. Color1 = Jewels. Wheel (אקראי (255)); Jewels. Reverse (); }

שלב 2: הרכבת מעגל

הרכבת מעגל
הרכבת מעגל
הרכבת מעגל
הרכבת מעגל

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

השתמש בחתיכות דקות של חוט תקוע (בערך 6 אינץ '/15 ס מ) לחיבורים בין שני תכשיטי NeoPixel (תרשים בשלב הקודם). אם אתה משתמש בחוטים קצרים מדי, לא תוכל למקם את עיני ה- LED שלך מספיק רחוק, ואם אתה משתמש יותר מדי חוט, הרפיון ייכנס לך בפנים בזמן שאתה לובש את התחפושת.

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

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

שלב 3: כוח סוללה

כוח סוללה
כוח סוללה
כוח סוללה
כוח סוללה

כדי להפעיל את המעגל, השתמשתי בסוללת ליפולי 500mAh. אם אתה משתמש בסוללת ליפולי, כדאי להגן עליה מפני שריטות, פנצ'רים, שחיקה, כיפוף והתעללות אחרת. אתה יכול לעטוף אותו בקלטת בד יציבה, או להכין עבורו מחזיק מודפס בתלת מימד.

אתה יכול בקלות להשתמש במחזיק 3xAAA במקום (לשאת אותו בכיס שלך במקום בתוך הדש).

שלב 4: תבנית תפירה ובד חיתוך

תבנית תפירה ובד חיתוך
תבנית תפירה ובד חיתוך

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

מקפלים את הבד, מיישרים את קצוות הרצועות כדי ליישר את גרגר הבד, ומניחים/מסדרים פיסות דפוס לאורך הקפל כפי שמסומן. עקוב אחר קצב תפר מחוץ לחתיכות התבנית (למעט הקיפול) בגודל של כ -5/8 אינץ '/3 ס מ בעזרת גיר סימון או עיפרון. מכיוון שהבד שלי היה דק, רציתי להכפיל אותו, ומאחר שיצרתי שני ברדסים, בסופו של דבר חתכתי ארבעה מכל פיסת תבנית בבד הראשי, ואז שכבה נוספת במגבינת גבינה גזה כדי להוסיף מרקם מבחוץ, ובסופו של דבר שכבת בד שחור כציפוי לחסימת האור הנכנס. אני חושב שאם הייתי מתכנן את זה מראש, יכולתי להוריד אחת מהשכבות הלבנות הראשונות והברדסים היו מורכבים משלוש שכבות בלבד כל אחת במקום ארבע.

שלב 5: הרכבת חתיכות בד

הרכיבו חתיכות בד
הרכיבו חתיכות בד
הרכיבו חתיכות בד
הרכיבו חתיכות בד
הרכיבו חתיכות בד
הרכיבו חתיכות בד
הרכיבו חתיכות בד
הרכיבו חתיכות בד

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

נסה את מכסה המנוע. מקפלים ומצמידים את הקצה הקדמי הגולמי של מכסה המנוע ותופרים אותו כדי ליצור קצה מסודר כמו גם תעלה לחוט.

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

שלב 6: התקן מעגל במכסה המנוע

התקן מעגל במכסה המנוע
התקן מעגל במכסה המנוע

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

שטוף וחזור אם אתה מכין מכסה מנוע שני.

שלב 7: ללבוש את זה

תלבש את זה!
תלבש את זה!
תלבש את זה!
תלבש את זה!
תלבש את זה!
תלבש את זה!
תלבש את זה!
תלבש את זה!

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

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

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

  • 13 רעיונות לפיזור נוריות
  • שלט רצועות LED מפוזר עם Arduino/Bluetooth
  • מונה מנויים של YouTube עם ESP8266
  • מראה אינסוף קלה
  • 3 טעויות ארדואינו למתחילים

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

מוּמלָץ: