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

Holi-Tie: 8 خطوات (بالصور)
Holi-Tie: 8 خطوات (بالصور)

فيديو: Holi-Tie: 8 خطوات (بالصور)

فيديو: Holi-Tie: 8 خطوات (بالصور)
فيديو: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, يوليو
Anonim
Image
Image

بواسطة gwfongMonkey Patching اتبع المزيد من قبل المؤلف:

إلقاء الضوء على منحدر الكلب
إلقاء الضوء على منحدر الكلب
القلب الصلب والنحت الزجاج المصهور
القلب الصلب والنحت الزجاج المصهور
القلب الصلب والنحت الزجاج المصهور
القلب الصلب والنحت الزجاج المصهور
سلك نحاسي وفراشة زجاجية مصهورة
سلك نحاسي وفراشة زجاجية مصهورة
سلك نحاسي وفراشة زجاجية مصهورة
سلك نحاسي وفراشة زجاجية مصهورة

حول: مجرد رجل يتطلع إلى صنع أشياء رائعة المزيد عن gwfong »

هذه هي Holi-Tie ، ربطة عنق احتفالية مصممة ليتم ارتداؤها خلال العطلات. استنادًا إلى Ampli-Tie من Becky Stern الذي يستخدم لوحة Flora ، يستخدم Holi-Tie متحكم دقيق Circuit Python Express (CPX) لقيادة الرسوم المتحركة NeoPixel والموسيقى. يتغير الزر بين حركتين مختلفتين من الرسوم المتحركة NeoPixel. تعمل وسادات اللمس السعوية على تغيير ألوان NeoPixel وسرعات الرسوم المتحركة. يتغير الزر الآخر بين الرسوم المتحركة LED والموسيقى. يتم استخدام الميكروفون الموجود على اللوحة لقياس الضوضاء المحيطة للرسوم المتحركة لمقياس VU. ويخرج مكبر الصوت CPX نغمات شريحة العطلة.

يتم ترميز كل شيء باستخدام لغة برمجة Python التي تعمل فوق نظام CircuitPython. يتم تشغيله بواسطة بطارية LiPo 3.7 فولت و 500 مللي أمبير في الساعة والتي تم تعديلها لتحتوي على مفتاح تشغيل / إيقاف.

يوجد مقطعا فيديو يعرضان Holi-Tie:

  • اكتمل هولى تاي
  • داخل هولي تاي

الخطوة 1: الأجزاء والأدوات

القطع

  • ملعب الدائرة السريع
  • 15x فلورا نيوبكسس
  • سلك مغناطيسي
  • شريط لاصق وحلقة وصل
  • بطارية ليبو 500 مللي أمبير مع موصل JST
  • ربطة عنق حلوى قصب
  • مفتاح منزلق صغير ، SPDT
  • أنابيب الانكماش الحراري

عند تحديد مصادر الأجزاء ، سيكون من الحكمة شراء إضافات. كان لدي ما مجموعه 20 NeoPixels ، تم كسر إحداها من البداية والأخرى دمرتها. كانت ربطة عنق Candy Cane رخيصة جدًا لدرجة أنني اشتريت واحدة أخرى في حالة تخريب الأول.

أدوات

  • مسدس الغراء الساخن
  • محطة لحام
  • قواطع للاسلاك
  • سكين صغير
  • المقياس المتعدد
  • الحاسوب
  • ولاعة أو مسدس حراري
  • الخيط والإبرة

الخطوة الثانية: تجهيز ربطة العنق

تجهيز ربطة العنق
تجهيز ربطة العنق
تجهيز ربطة العنق
تجهيز ربطة العنق
تجهيز ربطة العنق
تجهيز ربطة العنق

الهدف الرئيسي هو الوصول إلى جوهر التعادل الداخلي وتحديد الخطوط التي تشير إلى مكان وضع مصابيح LED.

الخطوة 1: اربط ربطة العنق في مكانها

سيكون من الصعب ربط ربطة العنق عندما تكون الأجهزة الإلكترونية في مكانها. لذا اربط ربطة العنق بحيث تبدو جيدة وتكون العقدة ثابتة إلى حد ما ولن تنفجر. ثم اسحب الطرف الصغير للربطة بحذر لفتح الفتحة للحصول على ربطة العنق فوق الرأس. هذا هو الموقف الذي سيتم العمل عليه في ربطة العنق.

هناك جميع أنواع عقد ربطة عنق مختلفة. أنا أعرف فقط الشخص الذي تعلمته عندما كنت طفلاً ، وندسور. لا ينبغي أن يهم العقدة المستخدمة.

الخطوة 2: افتح الجزء الخلفي من ربطة العنق

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

الخطوة 3: ارسم خطوطًا حيث يجب وضع مصابيح LED

لكي تظهر مصابيح LED في أقسام الشريط الأبيض من ربطة العنق ، يكون من الأسهل العثور على خط الوسط لكل قسم شريطي أبيض في الجزء الخلفي من قلب التعادل ثم تعيين ذلك على الجزء الأمامي من قلب التعادل. تحقق مرة أخرى من أن خط الوسط هو 1) في المنتصف و 2) موازٍ للشريط. سيكون الضبط الدقيق لمواضع LED ممكنًا إذا كانت متوقفة قليلاً. ولكن من الأفضل جعلها أقرب ما تكون إلى الدقة الآن وليس لاحقًا.

اختبر مركزية الخطوط عن طريق وضع مصابيح LED على الخطوط ووضع القماش الشريطي في الأعلى. اضبط عند الحاجة.

الخطوة 3: إرفاق NeoPixels

إرفاق NeoPixels
إرفاق NeoPixels
إرفاق NeoPixels
إرفاق NeoPixels
إرفاق NeoPixels
إرفاق NeoPixels
إرفاق NeoPixels
إرفاق NeoPixels

في الأساس ، نحن نصنع شريط LED الخاص بنا. نقوم ببساطة بتركيب مصابيح LED على قلب التعادل ثم نقوم بتوصيلها ببعضها البعض.

الخطوة 1: ألصق NeoPixels بنواة التعادل

ضع القليل من الغراء الساخن على الجزء الخلفي من NeoPixel وضعه على الخطوط المركزية. بالنسبة للأقسام التي تحتوي على 3 NeoPixels ، قم بمحاذاة مركز NeoPixel عموديًا والصقها لأسفل أولاً. هذا سيجعل من السهل وضع NeoPixel الأيمن والأيسر بالنسبة للمركز خاصة بالنظر إلى أن عرض التعادل يزيد من أعلى إلى أسفل.

تأكد من توجيه كل NeoPixels في نفس الاتجاه ، من أسفل اليسار إلى أعلى اليمين. إذا لم يكن هذا صحيحًا ، فلن يعمل الشريط.

ملاحظة حول الغراء الساخن. يكفي استكمال المشروع. أما فيما يتعلق بما إذا كان سيستمر لسنوات قادمة ، فعلى المرء فقط أن يرى.

الخطوة 3: قم بتلحيم NeoPixels ببعضها البعض

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

يحتوي السلك المغناطيسي على طبقة رقيقة من العزل حول قلب نحاسي. بسكين ، اكشط العازل عند النهايات حيث سيتم لحامها. من الأفضل كشط محيط السلك بالكامل.

الخطوة 4: اختبر الاتصال

استخدم مقياسًا متعددًا لاختبار اتصال:

  1. صلات إيجابية. يجب أن يكون هناك اتصال من طرف إلى آخر. تأكد من اختبار التوصيل على الوسادات وليس السلك.
  2. التوصيلات الأرضية. قم بإجراء نفس الاختبار ولكن باستخدام الوسادات الأرضية.
  3. كل خط بيانات. من لوحة بيانات إلى أخرى ، تحقق من وجود اتصال.

الخطوة 4: إرفاق Circuit Playground Express

إرفاق Circuit Playground Express
إرفاق Circuit Playground Express

يعد Circuit Playground Express (CPX) هو قلب النظام. لدى Adafruit العديد من البرامج التعليمية لوحدة التحكم هذه. لاحقًا في هذا الدليل ، سأقوم بتسليط الضوء على بعض ميزات MCU.

الخطوة 1: قم بتوصيل CPX بالطرف السفلي NeoPixel

قطع أطوال مناسبة من الأسلاك المغناطيسية للطاقة والأرض والبيانات. ادفعهم من خلال النسيج الأساسي للربطة بحيث يلمسون قوة NeoPixel والأرضية ومنصات البيانات. قم بتلحيمها لأسفل مع التأكد من أن الأسلاك الموجودة على الوسادات لا تزال تقوم بتوصيل جيد.

بعد ذلك اقلب قلب ربطة العنق وضع CPX في الموضع المطلوب. قم بتغذية سلك الطاقة إلى لوحة VOUT ، والسلك الأرضي إلى أي وسادة أرضية ، وسلك البيانات إلى أي لوحة إدخال / إخراج بخلاف A0. الكود الذي كتبته يستخدم A3.

اختبر الاتصال.

الخطوة 2: اربط CPX

باستخدام خيط وإبرة ، اختر أي أربع وسادات متساوية البعد وخياطتها لأسفل على قلب ربطة العنق.

الخطوة 5: تشغيل CPX

تشغيل CPX
تشغيل CPX
تشغيل CPX
تشغيل CPX
تشغيل CPX
تشغيل CPX

لا يحتوي CPX على مفتاح تشغيل / إيقاف. هذا يعني أنه في اللحظة التي يتم فيها توصيل البطارية ، سيتم تشغيل ربطة العنق. هذا يعني أيضًا أن الطريقة الوحيدة لإيقاف تشغيله هي فصل البطارية ، وهو أمر يمثل مشكلة كبيرة. الحل البسيط هو تشغيل مفتاح إيقاف / إيقاف تشغيل البطارية.

الخطوة 1: قم بقطع الدبوس الثالث على المفتاح

ليست هناك حاجة إلى أحد المسامير غير المركزية. قم بقطعه مع جسم المفتاح.

الخطوة 2: قم بلحام المفتاح في خط بطارية الرصاص

قطع سلك البطارية الأرضي في مكان ما في المنتصف. حرك قطعة من أنبوب الانكماش الحراري على كل من الأسلاك الأرضية. قم بتوصيل أحد الأسلاك الأرضية بأحد المسامير والسلك الأرضي الآخر بالدبوس الآخر. تأكد من أنها لا تلمس بعضها البعض أو أن اللحام يلامس الجسم المعدني.

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

الخطوة 3: تحقق من عمل البطارية

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

الخطوة 4: قم بتركيب البطارية

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

الخطوة 6: إعداد Circuit Playground Express

لن أخوض في التفاصيل حول كيفية إعداد CPX. Adafruit يفعل ذلك ثم بعض. سأقدم بعض النصائح حول المشكلات التي واجهتها كثيرًا.

CPX يتجمد

ربما بسبب مشكلات ذاكرة وقت التشغيل ، سيتجمد CPX كثيرًا. الحل السريع هو المسح وإعادة الوميض. ابحث عن "Old Way" في هذه التعليمات. في الأساس ، هي عبارة عن ضغطين على الأزرار ، وسحب وإفلات للمسح ، ثم سحب وإفلات لإعادة الوميض.

تحذير: هذا يمحو كل شيء. سيتم فقد كل الرموز الموجودة على CPX.

يمكن أن يتسبب حفظ التغييرات في CPX في حدوث مشكلات

اكتشفت أنه في بعض الأحيان بعد حفظ ملف على CPX ، يكون وقت تشغيل python في حالة سيئة. كان الإصلاح هو إعادة تشغيل وقت تشغيل python بالضغط على زر إعادة الضبط. اضغط عليه مرة واحدة فقط. الضغط عليه مرتين سيبدأ عملية إعادة الوميض.

يعد الادخار المباشر في CPX أمرًا محفوفًا بالمخاطر

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

الخطوة 7: ترميز Circuit Playground Express

في هذه المرحلة ، اكتمل إلى حد كبير CPX و NeoPixels. لا يلزم القيام بأي عمل ميكانيكي أو كهربائي آخر معهم. الباقي هو كل البرامج.

يمكن العثور على الكود في حساب جيثب الخاص بي. يجب أن يعمل كود Python الأساسي دون أي تغييرات لجميع أنظمة التشغيل. لا تقم بتثبيت مكتبات Adafruit CircuitPython الخارجية. لا يتم استخدامها.

فيما يلي ملخص عالي المستوى لما يجري في الكود.

ما المدخلات ماذا؟

  • الزر أ: يتنقل عبر الرسوم المتحركة LED
  • الزر B: يتنقل بين الأغاني
  • لوحة اللمس السعوية A1: تغير ألوان الرسوم المتحركة بمؤشر LED
  • لوحة اللمس بالسعة A6: تغير سرعة الرسوم المتحركة LED

3 رسوم متحركة موجودة ولكن اثنتان فقط ساريتان

code.py

استيراد pixelsoff

#import vumeter import stairs import twinkle… led_animations = [pixelsoff. PixelsOff (pixels)، # vumeter. VuMeter (pixels، 100، 400) stairs. Stairs (pixels)، twinkle. Twinkle (pixels)]

لقد قمت بنقل رمز نمط عداد Ampli-Tie VU. يستخدم ميكروفون CPX لالتقاط الصوت وإضاءة NeoPixels بناءً على سعة الصوت. ومع ذلك ، أردت المزيد من الرسوم المتحركة. بسبب قيود ذاكرة وقت التشغيل ، كان علي اختيار الرسوم المتحركة التي أريدها. لذلك بشكل افتراضي ، سيتم تشغيل الاثنان الآخران ، Stairs و Twinkle ، دون الحاجة إلى إجراء تغييرات في الكود. لتشغيل الرسوم المتحركة لمقياس VU ، يجب التعليق على أحد الرسوم المتحركة الأخرى أو كليهما وإلغاء التعليق على مقياس VU.

مدير الموسيقى والتشفير دون اتصال

frosty_the_snowman.py

استيراد المقاطع الموسيقية كـ mn

# Frosty the Snowman # Walter E.) ، (مليون C5 ، مليون HLF) ، …

convert_to_binary.py

الأغاني = [(jingle_bells.song، "jingle_bells.bin")، (frosty_the_snowman.song، "frosty_the_snowman.bin")] للأغنية في الأغاني: data = song [0] file = song [1] with open (file، "wb") as bin_file: للإدخال في البيانات: print ("write:" + str (entry)) note = entry [0] dur = entry [1] bin_file.write (Struct.pack ("<HH"، note، dur))

كنت أرغب في موسيقى العيد. يدعم CPX كلاً من WAV والنغمات. تبين أن ملفات WAV كبيرة جدًا من حيث حجم الملف وذاكرة وقت التشغيل. استخدام هياكل بيانات Python للاحتفاظ بالنغمات واتضح أيضًا أن مدتها تستخدم الكثير من ذاكرة وقت التشغيل. لذلك قمت بتعديل رمز Holi-Tie لقراءة ملف ثنائي مضغوط يحتوي فقط على بيانات الأغنية الضرورية بتنسيق ثنائي مضغوط. لقد كتبت نصًا يقرأ أغنية محفوظة في بنية بيانات بيثون وكتابتها بالتنسيق الثنائي. إن ترميز الأغنية على أنها بيانات ثنائية في ملف يجعل الأغنية صغيرة وديناميكية. بمجرد الانتهاء من تشغيل الأغنية ، يتم تحرير الذاكرة.

من التافه إضافة المزيد من الأغاني. لمزيد من التفاصيل ، انظر README.md في الأغاني.

يقوم الزر A بتحريك NeoPixels ، B يقوم بتشغيل الموسيقى ، ولكن ليس في نفس الوقت

code.py

def button_a_pressed ():

إذا كانت الموسيقى. الموسيقى أو إيقاف تشغيل الموسيقى. إيقاف () آخر: music.play ()

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

بيثون كود Funkiness

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

الوحدات المترجمة

تجميع

#! / بن / باش

المترجم = ~ / تطوير / دارة بايثون / mpy-cross-3.x-windows.exe أغاني القرص المضغوط python3./convert_to_binary.py cd.. لـ f in *.py ؛ افعل إذا

في وقت مبكر من المشروع ، اتبعت نصيحة Adafruit وقمت بتخزين جميع مكتبات Adafruit CircuitPython على فلاش. ومع ذلك ، فقد ترك هذا مجالًا صغيرًا لمشروعي. لكي أتمكن من الحصول على الكود الخاص بي على CPX ، بدأت في تجميع الوحدات ووضعها في MCU. اتضح أن Holi-Tie لا يحتاج إلى أي من المكتبات الخارجية. كانت المكتبات الموجودة في UF2 كافية لهذا المشروع. يعد تشغيل ملفات *.mpy أكثر فاعلية بعض الشيء ، لذا واصلت عملية نشر الوحدات المترجمة.

كما هو واضح في نص الترجمة أعلاه ، فأنا أعمل على جهاز يعمل بنظام Windows ولكني أستخدم أدوات مساعدة لـ Unix مثل bash و python3. أنا استخدم Cygwin لإنجاز هذا. يمكن ترجمة هذا البرنامج النصي بسهولة إلى دفعة DOS وتطبيق Python3 الأصلي لنظام التشغيل Windows.

الخطوة 8: ربط الأزرار

ازرار التعادل
ازرار التعادل
ازرار التعادل
ازرار التعادل

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

موصى به: