جدول المحتويات:

عيون LED وغطاء للرأس بالتحكم عن بعد: 7 خطوات (مع صور)
عيون LED وغطاء للرأس بالتحكم عن بعد: 7 خطوات (مع صور)

فيديو: عيون LED وغطاء للرأس بالتحكم عن بعد: 7 خطوات (مع صور)

فيديو: عيون LED وغطاء للرأس بالتحكم عن بعد: 7 خطوات (مع صور)
فيديو: هذه الخدعة سوف تغير لون عينيك ؟!! ( مجربة و فعالة ) 2024, شهر نوفمبر
Anonim

بقلم بيكاثويا بيكي ستيرن

صديق الخصوصية كاميرا الويب
صديق الخصوصية كاميرا الويب
صديق الخصوصية كاميرا الويب
صديق الخصوصية كاميرا الويب
هوائي ياغي قياس الشريط مع مقرنات طباعة ثلاثية الأبعاد
هوائي ياغي قياس الشريط مع مقرنات طباعة ثلاثية الأبعاد
هوائي ياغي قياس الشريط مع مقرنات طباعة ثلاثية الأبعاد
هوائي ياغي قياس الشريط مع مقرنات طباعة ثلاثية الأبعاد
تطريز زودياك
تطريز زودياك
تطريز زودياك
تطريز زودياك

حول: صنع والمشاركة هما أكبر شغفي! في المجموع ، قمت بنشر مئات البرامج التعليمية حول كل شيء بدءًا من أجهزة التحكم الدقيقة وحتى الحياكة. أنا سائق دراجة نارية في مدينة نيويورك وأم كلاب غير نادمة. wo … المزيد عن بكثويا »

التوأم الجواس! ضعف Orko! اثنين من المعالجات الأشباح من Bubble-Bobble! يمكن أن يكون غطاء الزي هذا أي مخلوق ذو عيون LED تختاره فقط عن طريق تغيير الألوان. لقد أنشأت هذا المشروع لأول مرة في عام 2015 بدائرة ورمز بسيط للغاية ، لكنني أردت هذا العام إنشاء نسخة مطورة مع تحكم متزامن في الرسوم المتحركة عبر زيّين. تستخدم هذه الدائرة جهاز تحكم عن بعد RF واحدًا بسيطًا للتحكم في جهازي استقبال على نفس التردد ، وكود Arduino يستخدم المقاطعات لتحقيق تغييرات رسوم متحركة سريعة الاستجابة ، بناءً على الكود التعليمي لبيل إيرل.

بالنسبة لهذا المشروع ، سوف تحتاج إلى:

  • اثنان من جواهر NeoPixel
  • متحكم GEMMA M0
  • جهاز استقبال لاسلكي 315 ميجا هرتز ، نوع الإغلاق
  • جهاز تحكم عن بعد لاسلكي بترددات لاسلكية 315 ميجا هرتز في تكوين أربعة أو اثنين أو زر واحد
  • سلك مجدول مطلي بالسيليكون (30awg مستحسن)
  • لحام الحديد ولحام
  • قواطع الأسلاك
  • قواطع التدفق
  • ملاقيط
  • أداة مساعدة من جهة ثالثة (اختياري)
  • دبابيس الخياطة
  • طباشير الخياط (اختياري)
  • 19awg أسلاك الفولاذ المجلفن
  • قماش سميك للغطاء / الرأس (بالنسبة لهذا الإصدار ، استخدمت طبقتين من قماش التبغ الأبيض وطبقة واحدة من القماش القطني الأبيض ، ثم اصطف داخل الغطاء باللون الأسود الصلب لحجب الضوء)
  • نسيج أسود شفاف للوحة الوجه
  • ماكينة الخياطة
  • مقص
  • إبرة وخيط
  • طابعة ثلاثية الأبعاد بفتيل مرن (اختياري)

لمواكبة ما أعمل عليه ، تابعوني على YouTube و Instagram و Twitter و Pinterest واشترك في رسالتي الإخبارية. بصفتي شريكًا في Amazon ، أكسب من عمليات الشراء المؤهلة التي تقوم بها باستخدام الروابط التابعة الخاصة بي.

قبل أن تبدأ ، قد ترغب في قراءة المتطلبات الأساسية التالية:

  • نقدم لكم Gemma M0
  • NeoPixel Uberguide
  • أول إصدار من مشروع غطاء المحرك (تم بناؤه في عام 2015 باستخدام Gemma الكلاسيكي وبدون تحكم لاسلكي)
  • تعدد المهام في Arduino pt 3

الخطوة 1: مخطط الدائرة والرمز

مخطط الدائرة والكود
مخطط الدائرة والكود

وصلات الدائرة كالتالي:

  • جيما D2 إلى جهاز استقبال لاسلكي D0
  • جيما D0 إلى جهاز استقبال لاسلكي D1
  • جيما 3 فولت إلى رسيفر لاسلكي + 5 فولت
  • Gemma GND إلى جهاز الاستقبال اللاسلكي GND و NeoPixel jewels GND
  • Gemma D1 إلى بيانات جوهرة NeoPixel IN
  • جيما فوت لجواهر NeoPixel PWR
  • خرجت بيانات جوهرة NeoPixel إلى بيانات جوهرة NeoPixel الأخرى IN

انظر الخطوة التالية لملاحظات التجميع.

يعتمد الكود على تعدد المهام في رسم Arduino بواسطة Bill Earl ، وتم تعديله للتحكم في جواهرتين من NeoPixel مع مدخلين رقميين. لذلك ليس عليك استخدام جهاز الاستقبال اللاسلكي - يمكنك استخدام الأزرار الموجودة على الدائرة نفسها بدلاً من ذلك. قم بتنزيل ملف كود Arduino من مرفقات هذه الخطوة ، أو انسخ والصق من هنا في رسم Arduino فارغ:

# تضمين "Adafruit_NeoPixel.h"

// أنواع الأنماط المدعومة: نمط التعداد {NONE، RAINBOW_CYCLE، THEATER_CHASE، COLOR_WIPE، SCANNER، FADE}؛ // دعم الاتجاهات Patern: تعداد الاتجاه {FORWARD ، REVERSE} ؛ // فئة NeoPattern - مشتقة من فئة Adafruit_NeoPixel فئة NeoPatterns: Adafruit_NeoPixel العامة {public: // Member Variables: pattern ActivePattern؛ // أي نمط يدير اتجاه الاتجاه ؛ // الاتجاه لتشغيل النمط فاصل زمني طويل بدون إشارة ؛ // مللي ثانية بين التحديثات غير الموقعة منذ فترة طويلة lastUpdate ؛ // آخر تحديث للموضع uint32_t Color1، Color2؛ // ما هي الألوان المستخدمة uint16_t TotalSteps؛ // العدد الإجمالي للخطوات في النمط uint16_t الفهرس ؛ // الخطوة الحالية داخل نمط الفراغ (* OnComplete) () ؛ // رد الاتصال عند اكتمال النمط // المُنشئ - يستدعي مُنشئ الفئة الأساسية لتهيئة قطاع NeoPatterns (uint16_t pixels ، uint8_t pin ، uint8_t type ، void (* callback) ()): Adafruit_NeoPixel (بكسل ، دبوس ، نوع) {OnComplete = أتصل مرة أخرى؛ } // تحديث نمط الفراغ Update () {if ((millis () - lastUpdate)> Interval) // الوقت للتحديث {lastUpdate = millis () ؛ التبديل (ActivePattern) {case RAINBOW_CYCLE: RainbowCycleUpdate () ، استراحة؛ الحالة THEATER_CHASE: TheaterChaseUpdate () ، استراحة؛ الحالة COLOR_WIPE: ColorWipeUpdate () ، استراحة؛ الماسح الضوئي للحالة: ScannerUpdate () ؛ استراحة؛ الحالة FADE: FadeUpdate () ؛ استراحة؛ الافتراضي: كسر ؛ }}} // زيادة الفهرس وإعادة التعيين عند نهاية الفراغ Increment () {if (Direction == FORWARD) {Index ++؛ إذا (الفهرس> = إجمالي الخطوات) {الفهرس = 0 ؛ إذا (OnComplete! = NULL) {OnComplete () ؛ // call the comlpetion callback}}} else // Direction == REVERSE {--Index؛ إذا (الفهرس <= 0) {الفهرس = TotalSteps-1 ؛ إذا (OnComplete! = NULL) {OnComplete () ؛ // call the comlpetion callback}}}} // عكس اتجاه النمط الفارغ عكس () {if (Direction == FORWARD) {Direction = REVERSE؛ الفهرس = TotalSteps-1 ؛ } آخر {الاتجاه = FORWARD؛ الفهرس = 0 ؛ }} // التهيئة لدورة RainbowCycle الخالية من RainbowCycle (فاصل زمني uint8_t ، direction dir = FORWARD) {ActivePattern = RAINBOW_CYCLE؛ الفاصل الزمني = الفاصل الزمني ؛ TotalSteps = 255 ؛ الفهرس = 0 ؛ الاتجاه = دير ؛ } // تحديث Rainbow Cycle Pattern void RainbowCycleUpdate () {لـ (int i = 0؛ i <numPixels ()؛ i ++) {setPixelColor (i، Wheel (((i * 256 / numPixels ()) + Index) & 255)) ؛ } مشاهده()؛ زيادة راتب()؛ } // التهيئة لـ Theater Chase void TheaterChase (uint32_t color1، uint32_t color2، فاصل uint8_t، direction dir = FORWARD) {ActivePattern = THEATER_CHASE؛ الفاصل الزمني = الفاصل الزمني ؛ TotalSteps = numPixels () ، Color1 = color1 ؛ Color2 = color2 ؛ الفهرس = 0 ؛ الاتجاه = دير ؛ } // تحديث Theatre Chase Pattern void TheaterChaseUpdate () {لـ (int i = 0؛ i <numPixels ()؛ i ++) {if ((i + Index)٪ 3 == 0) {setPixelColor (i، Color1)؛ } else {setPixelColor (i، Color2) ؛ } } مشاهده()؛ زيادة راتب()؛ } // تهيئة لـ ColorWipe void ColorWipe (uint32_t color، uint8_t الفاصل الزمني، direction dir = FORWARD) {ActivePattern = COLOR_WIPE؛ الفاصل الزمني = الفاصل الزمني ؛ TotalSteps = numPixels () ، Color1 = اللون ؛ الفهرس = 0 ؛ الاتجاه = دير ؛ } // تحديث باطل Color Wipe Pattern () ColorWipeUpdate () {setPixelColor (الفهرس ، اللون 1) ؛ مشاهده()؛ زيادة راتب()؛ } // تهيئة ماسح ضوئي باطل لـ SCANNNER (uint32_t color1، uint8_t الفاصل الزمني) {ActivePattern = SCANNER؛ الفاصل الزمني = الفاصل الزمني ؛ TotalSteps = (numPixels () - 1) * 2 ؛ Color1 = color1 ؛ الفهرس = 0 ؛ } // تحديث ScannerUpdate () باطل نمط الماسح {for (int i = 0؛ i > 1 ، أخضر (لون) >> 1 ، أزرق (لون) >> 1) ؛ عودة باهتة } // اضبط كل وحدات البكسل على لون (متزامن) باطل ColorSet (uint32_t color) {لـ (int i = 0؛ i> 16) & 0xFF؛ } // إرجاع المكون الأخضر للون 32 بت uint8_t Green (uint32_t color) {return (color >> 8) & 0xFF؛ } // إرجاع المكون الأزرق للون 32 بت uint8_t Blue (uint32_t color) {return color & 0xFF؛ } // أدخل القيمة من 0 إلى 255 للحصول على قيمة اللون. // الألوان هي انتقال r - g - b - العودة إلى r. uint32_t Wheel (بايت WheelPos) {WheelPos = 255 - WheelPos ؛ إذا (WheelPos <85) {إرجاع اللون (255 - WheelPos * 3 ، 0 ، WheelPos * 3) ؛ } وإلا إذا (WheelPos <170) {WheelPos - = 85 ؛ إرجاع اللون (0 ، WheelPos * 3 ، 255 - WheelPos * 3) ؛ } آخر {WheelPos - = 170 ؛ إرجاع اللون (WheelPos * 3 ، 255 - WheelPos * 3 ، 0) ؛ }}}؛ جواهر باطلة // حدد بعض الأنماط الجديدة للحلقتين والعصا // بالإضافة إلى بعض إجراءات الإكمال جواهر نيو باترنز (14 ، 1 ، NEO_GRBW + NEO_KHZ800 ، & JewelsComplete) ؛ سطوع كثافة كثافة = 50 ؛ // تهيئة كل شيء والاستعداد لبدء الإعداد الباطل () {Serial.begin (115200) ؛ pinMode (2 ، الإدخال) ؛ pinMode (0 ، الإدخال) ؛ // تهيئة جميع وحدات البكسل Jewels.setBrightness (السطوع) ؛ Jewels.begin () ، // Kick off a pattern Jewels. TheaterChase (Jewels. Color (255، 50، 0)، Jewels. Color (0، 0، 0، 50)، 100) ؛ } // Main loop void loop () {// تحديث الجواهر. Jewels. Update () ؛ // تبديل الأنماط بضغطة زر: إذا (digitalRead (2) == HIGH) // تم الضغط على الزر رقم 1 {Jewels. Color1 = Jewels. Color (255، 50، 0)؛ Jewels. ActivePattern = FADE ، Jewels. TotalSteps = 100 ؛ جواهر الفاصل = 1 ؛ } else if (digitalRead (0) == HIGH) // الضغط على الزر رقم 2 {Jewels. Color1 = Jewels. Color (255، 0، 0)؛ Jewels. ActivePattern = الماسح الضوئي ؛ Jewels. TotalSteps = Jewels.numPixels () ، جواهر.الفاصل = 100 ؛ } else // العودة إلى العملية العادية {// استعادة كافة معاملات النمط إلى القيم العادية Jewels. Color1 = Jewels. Color (255، 50، 0)؛ Jewels. ActivePattern = THEATER_CHASE ، Jewels. TotalSteps = Jewels.numPixels () ، جواهر.الفاصل = 100 ؛ }} // ---------------------------------------------- -------------- // إجراءات الإكمال - احصل على استدعائك عند إكمال النمط // ---------------------- -------------------------------------- // رد نداء Jewels Completion void JewelsComplete () {// تغيير لون عشوائي للمسح التالي // Jewels. Color1 = Jewels. Wheel (عشوائي (255)) ؛ Jewels. Reverse () ؛ }

الخطوة 2: تجميع الدائرة

تجميع الدائرة
تجميع الدائرة
تجميع الدائرة
تجميع الدائرة

يمكن لمجموعة من القابضين الذين يساعدون الأيدي الثالثة أن تجعل عملية لحام الأسلاك للمكونات سهلة وممتعة للغاية. لكن لا تقلق إذا لم يكن لديك مجموعة ؛ يمكنك دائمًا استخدام بعض المعجون الشريطي أو الملصق للحفاظ على ثبات اللوح أثناء اللحام.

استخدم قطعًا رفيعة من الأسلاك المجدولة (طولها حوالي 6 بوصة / 15 سم) للتوصيلات بين جواهرتي NeoPixel (الرسم التخطيطي في الخطوة السابقة). إذا كنت تستخدم أسلاكًا قصيرة جدًا ، فلن تكون قادرًا على وضع عينيك بعيدًا بما فيه الكفاية ، وإذا كنت تستخدم الكثير من الأسلاك ، فإن الركود سيواجه وجهك أثناء ارتداء الزي.

ستعيش الدائرة الرئيسية في منطقة التلبيب (حيث يلتقي صدرك بكتفك) ، لذلك بالنسبة للوصلات بين جوهرة NeoPixel الأولى في السلسلة و Gemma ، ستكون الأسلاك أطول بكثير. يمكنك تثبيت السلك على منطقة عينك وسحبه إلى الخارج لقياس المسافة التي يجب أن يقطعها السلك ، ثم إضافة المزيد من الركود والتأمين.

للاتصال بين Gemma وجهاز الاستقبال اللاسلكي ، اخترت استخدام أسلاك النماذج الأولية مع رؤوس الإناث ، نظرًا لأن جهاز الاستقبال اللاسلكي يحتوي بالفعل على دبابيس رأس متصلة.

الخطوة الثالثة: طاقة البطارية

طاقة البطارية
طاقة البطارية
طاقة البطارية
طاقة البطارية

لتشغيل الدائرة ، استخدمت بطارية ليولي بقدرة 500 مللي أمبير في الساعة. إذا كنت تستخدم بطارية دهنية ، فمن الحكمة حمايتها من الخدوش والثقب والجروح والانحناء وغيرها من الإساءات. يمكنك لفه بشريط قماش قوي أو صنع حامل طباعة ثلاثي الأبعاد له.

يمكنك بسهولة استخدام حامل 3xAAA بدلاً من ذلك (احمله في جيبك بدلاً من داخل طية صدر السترة).

الخطوة 4: نمط الخياطة وقطع النسيج

نمط الخياطة وقطع النسيج
نمط الخياطة وقطع النسيج

لقد استخدمت نفس النمط الذي قمت بإنشائه للإصدار الأول من هذا الزي ، وهو ملف PDF متعدد الصفحات يتم تجانبه معًا لإنشاء قطع النمط.

قم بطي القماش الخاص بك ، وقم بمحاذاة حواف الحواف لمحاذاة حبيبات النسيج ، وقم بوضع / وضع قطع نقش الدبوس على طول الثني كما هو محدد. تتبع بدل التماس خارج قطع النقش (باستثناء الطية) بحوالي 5/8 بوصة / 3 سم باستخدام طباشير أو قلم رصاص. نظرًا لأن القماش كان رقيقًا ، فقد أردت مضاعفته ، وبما أنني صنعت غطاءين ، انتهى بي الأمر بقطع أربعة من كل قطعة نقش في النسيج الرئيسي ، ثم طبقة أخرى من القماش القطني الشاش لإضافة نسيج إلى الخارج ، وفي النهاية طبقة من القماش الأسود كبطانة لمنع دخول الضوء. أعتقد أنه إذا كنت قد خططت مسبقًا لذلك ، فقد أسقطت إحدى الطبقات البيضاء الأولية وكانت الأغطية تتكون من ثلاث طبقات فقط لكل منها بدلاً من أربع.

الخطوة 5: تجميع قطع النسيج

تجميع قطع النسيج
تجميع قطع النسيج
تجميع قطع النسيج
تجميع قطع النسيج
تجميع قطع النسيج
تجميع قطع النسيج
تجميع قطع النسيج
تجميع قطع النسيج

قم بتدبيس وخياطة طبقات السهام / الكتف على كل قطعة نمط ، ثم قم بمحاذاة قطع غطاء الرأس والرأس على طول خط العنق مع الجانبين الأيمن معًا. غرزة التماس ، وكذلك التماس مباشرة عبر الجزء العلوي من غطاء محرك السيارة.

جرب على الغطاء. قم بطي الحافة الأمامية الخام للغطاء وقم بتثبيتها لأسفل لإنشاء حافة أنيقة بالإضافة إلى قناة يمر بها السلك.

بعد ذلك ، قم بقص قطعة مستديرة من القماش الأسود الشفاف لتغطية الجزء الأمامي من غطاء المحرك. هذا ما سيدعم الدائرة ويخفي وجهك. قم بتثبيته في مكانه أثناء ارتداء الغطاء للحصول على أفضل ملاءمة ، ثم قم بخياطته يدويًا أو آليًا عند فتحة غطاء المحرك.

الخطوة 6: قم بتثبيت الدائرة في غطاء المحرك

تثبيت الدائرة في غطاء محرك السيارة
تثبيت الدائرة في غطاء محرك السيارة

وضعت غطاء المحرك ، وشغّلت الدائرة ، واستخدمت مرآة لمعرفة أفضل موقع لمصابيح LED. ثم استخدمت دبابيس لتحديد المواقع وخُيطت بعناية باستخدام خيط أسود ، وربطت فتحات التثبيت على جواهر NeoPixel باللوحة الأمامية السوداء الشفافة. جلستي أسفل عيني الحقيقية مباشرة ، مما يجعل من السهل رؤية ما وراءهما.

اشطفها وكررها إذا كنت ستصنع غطاءً ثانيًا.

الخطوة 7: ارتديه

البسه!
البسه!
البسه!
البسه!
البسه!
البسه!
البسه!
البسه!

هذه هي الكثير من المرح لارتدائها. من السهل رؤية وجهك ، وليس من السهل على الآخرين رؤية وجهك. كل شيء مريح للغاية أيضًا ، بفضل غطاء المحرك الكبير والإطار السلكي ، مما يمنع القماش الأمامي من الالتفاف على وجهك.

لقد ارتديت أنا وصديقي هذه في حفلة عيد الهالوين الخاصة بـ DJ الخاص بي في موقع hackerspace هذا العام ، وبينما كان بإمكاني رؤية واجهة برنامج جهاز العرض بالليزر ، لم يكن بإمكانه كتابة النص الصغير في abelton ، لذلك كان علينا تكييفه مع أفضل عرض. أزلت لوحة القماش السوداء من الجزء العلوي من الغطاء ، وقمت بطيها فوق الجزء الزائد. في غرفة مظلمة ، لا يمكنك حقًا التمييز بين الاثنين ، على الرغم من أنه يمكنك رؤيته في صورتنا معًا أعلاه.

شكرا للقراءة! إذا أعجبك هذا المشروع ، فقد تكون مهتمًا ببعض الآخرين:

  • 13 فكرة لنشر المصابيح
  • لافتة LED منتشرة مع اردوينو / بلوتوث
  • عداد المشتركين في YouTube مع ESP8266
  • مرآة سهلة اللانهاية
  • 3 أخطاء للمبتدئين في Arduino

لمواكبة ما أعمل عليه ، تابعوني على YouTube و Instagram و Twitter و Pinterest.

موصى به: