فهرست مطالب:

کراوات هولی: 8 مرحله (همراه با تصاویر)
کراوات هولی: 8 مرحله (همراه با تصاویر)

تصویری: کراوات هولی: 8 مرحله (همراه با تصاویر)

تصویری: کراوات هولی: 8 مرحله (همراه با تصاویر)
تصویری: ۸ چیزی معمولی که دلیل ساخت آنرا نمی دانستید. 2024, جولای
Anonim
Image
Image

توسط gwfong Monkey Patching بیشتر توسط نویسنده دنبال کنید:

رمپ سگ روشن کننده
رمپ سگ روشن کننده
مجسمه سازی از جنس استیل و قلب شیشه ای
مجسمه سازی از جنس استیل و قلب شیشه ای
مجسمه سازی از جنس استیل و قلب شیشه ای
مجسمه سازی از جنس استیل و قلب شیشه ای
سیم مسی و پروانه شیشه ای ذوب شده
سیم مسی و پروانه شیشه ای ذوب شده
سیم مسی و پروانه شیشه ای جوش خورده
سیم مسی و پروانه شیشه ای جوش خورده

درباره: فقط مردی که به دنبال تهیه چیزهای جالب است بیشتر درباره gwfong »

این کراوات Holi-Tie است ، یک کراوات جشن که برای تعطیلات طراحی شده است. بر اساس Ampli-Tie توسط Becky Stern که از برد Flora استفاده می کند ، Holi-Tie از میکروکنترلر Circuit Python Express (CPX) برای هدایت انیمیشن ها و موسیقی NeoPixel استفاده می کند. یک دکمه بین 2 انیمیشن مختلف NeoPixel تغییر می کند. صفحه لمسی خازنی رنگ NeoPixel و سرعت حرکت را تغییر می دهد. دکمه دیگر بین انیمیشن های LED و موسیقی تغییر می کند. میکروفون داخلی برای اندازه گیری نویز محیط برای انیمیشن VU متر استفاده می شود. و اسپیکر CPX از تراشه های تعطیلات خروجی می گیرد.

همه چیز با استفاده از زبان برنامه نویسی پایتون که در بالای سیستم CircuitPython اجرا می شود کدگذاری می شود. منبع تغذیه آن یک باتری LiPo 3.7 ولت 500 میلی آمپر ساعتی است که برای روشن و خاموش شدن تغییر کرده است.

دو کلیپ ویدیویی وجود دارد که Holi-Tie را نشان می دهد:

  • Holi-Tie تکمیل شد
  • داخل کراوات هولی

مرحله 1: قطعات و ابزارها

قطعات

  • Circuit Playground Express
  • 15 برابر نئوپیکسل فلورا
  • سیم مگنت
  • نوار چسب قلاب و حلقه
  • باتری لیپو 500mAH با اتصال JST
  • کراوات Candy Cane
  • مینی سوئیچ اسلاید ، SPDT
  • لوله های جمع کننده حرارت

هنگام تهیه قطعات ، خرید اضافی عاقلانه خواهد بود. من در کل 20 NeoPixel داشتم که یکی از آنها از ابتدا خراب بود و یکی خراب شد. کراوات Candy Cane آنقدر ارزان بود که دومی را خریدم فقط در صورتی که اولین را خراب کنم.

ابزارها

  • چسب حرارتی تفنگی
  • ایستگاه لحیم کاری
  • سیم بر، دم باریک
  • چاقوی کوچک
  • مولتی متر
  • کامپیوتر
  • تفنگ سبک تر یا گرم کننده
  • نخ و سوزن

مرحله 2: آماده کردن کراوات

خواندن کراوات
خواندن کراوات
خواندن کراوات
خواندن کراوات
خواندن کراوات
خواندن کراوات

هدف اصلی این است که به هسته داخلی کراوات و خطوط مشخص شده که نشان می دهد 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 NeoPixel ، 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 ، زمان اجرای پایتون در وضعیت بدی قرار می گیرد. راه حل راه اندازی مجدد پایتون با فشار دادن دکمه بازنشانی بود. فقط یکبار آن را فشار دهید. دوبار فشار دادن آن باعث می شود که دوباره فلش شود.

صرفه جویی مستقیم در CPX خطرناک است

به دلیل این احتمال که CPX باید دوباره فلش شود ، شخص با خطر از دست دادن کل کد مواجه می شود. بعد از اینکه کد خود را دوبار از دست دادم ، به یک گردش کار ساده رسیدم. من کد خود را در هارد دیسک محلی ذخیره می کنم. هنگامی که آماده آزمایش بر روی CPX بود ، من به سادگی آن را با اجرای یک اسکریپت استقرار ساده کپی می کردم.

مرحله 7: کدگذاری Circuit Playground Express

در این مرحله ، CPX و NeoPixels تقریباً کامل هستند. هیچ کار مکانیکی یا برقی دیگری لازم نیست با آنها انجام شود. بقیه همه نرم افزاری هستند.

کد را می توانید در حساب github من پیدا کنید. کد اصلی پایتون باید بدون هیچ تغییری در همه سیستم عامل ها کار کند. کتابخانه های خارجی Adafruit CircuitPython را نصب نکنید. استفاده نمی شوند.

در اینجا خلاصه ای از آنچه در کد اتفاق می افتد ارائه شده است.

چه ورودی چه کاری انجام می دهد؟

  • دکمه A: چرخش از طریق انیمیشن های LED
  • دکمه B: آهنگ ها را می چرخاند
  • پد لمسی خازنی A1: رنگ های متحرک LED را تغییر می دهد
  • پد لمسی خازنی A6: سرعت انیمیشن های LED را تغییر می دهد

3 انیمیشن وجود دارد اما فقط 2 مورد در حال اجرا هستند

code.py

pixelsoff را وارد کنید

# واردات پله وارد کننده پله وارد کردن چشمک… led_animations = [pixelsoff. PixelsOff (پیکسل) ، # vumeter. VuMeter (پیکسل ، 100 ، 400) پله. پله (پیکسل) ، چشمک زدن. چشمک زدن (پیکسل)]

من کد سبک Ampli-Tie VU متر را وارد کردم. از میکروفون CPX برای برداشتن صدا و روشن کردن NeoPixels بر اساس دامنه صدا استفاده می کند. با این حال ، من بیشتر انیمیشن می خواستم. به دلیل محدودیت حافظه در زمان اجرا ، مجبور شدم انیمیشن هایی را که می خواهم انتخاب کنم. بنابراین به طور پیش فرض دو مورد دیگر ، Stairs و Twinkle ، بدون نیاز به ایجاد تغییرات در کد اجرا می شوند. برای اجرای انیمیشن VU متر ، یک یا هر دو انیمیشن دیگر باید کامنت گذاشته شود و VU متر بدون نظر باشد.

مدیر موسیقی و رمزگذاری آفلاین

یخ زده

یادداشتهای musical_n را به عنوان mn وارد کنید

# Frosty the Snowman # Walter E. Rollins = = [(mn. G4 ، mn. HLF) ، (mn. E4 ، mn. DTQ) ، (mn. F4 ، mn. ETH) ، (mn. G4 ، mn. QTR) ، (mn. C5 ، mn. 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 ("نوشتن:" + str (ورود)) note = entry [0] dur = entry [1] bin_file.write (struct.pack ("<HH" ، note، dur))

من موسیقی تعطیلات می خواستم. CPX هم از WAV و هم از تن ها پشتیبانی می کند. حجم WAV از نظر حجم فایل و حافظه اجرا بسیار بزرگ بود. استفاده از ساختارهای داده پایتون برای نگه داشتن آهنگ ها و مدت زمان آنها نیز از حافظه زمان اجرا بیش از حد استفاده می کند. بنابراین من کد Holi-Tie را برای خواندن یک فایل باینری فشرده که فقط شامل داده های آهنگ لازم در قالب باینری فشرده بود ، تغییر داد. من یک اسکریپت نوشتم که آهنگی را در ساختار داده های پایتون می خواند و آن را با فرمت دودویی می نویسد. رمزگذاری آهنگ به عنوان داده های دوتایی در یک فایل باعث می شود آهنگ هم کوچک و هم پویا باشد. پس از اتمام پخش آهنگ ، حافظه آزاد می شود.

افزودن آهنگ های بیشتر بی اهمیت است. برای جزئیات بیشتر ، به README.md در آهنگها مراجعه کنید.

دکمه A NeoPixels را متحرک می کند ، B موسیقی پخش می کند ، اما نه همزمان

code.py

def button_a_pressed ():

if music.is_playing (): # پخش موسیقی را متوقف کنید. توقف () next_led_animation () def button_b_pressed (): if_pimed_animation! = 0: # اجرای انیمیشن next_led_animation (0) در صورت پخش موسیقی. (پخش) (): # تغییر حالت موسیقی روشن یا خاموش music.stop () در غیر این صورت: music.play ()

حتی با وجود سیستم مدیریت موسیقی کارآمدتر از حافظه ، من نتوانستم 2 انیمیشن را در حافظه اجرا نگه دارم ، در حالی که 1 مورد از آنها را پخش می کردم و همزمان آهنگی را پخش می کردم. از آنجا که من قبلاً تصمیم گرفته بودم VU متر را به طور کلی در حافظه اجرا نداشته باشم ، نمی خواستم تعداد انیمیشن ها را به 1 کاهش دهم. بنابراین کد را طوری نوشتم که یا انیمیشن در حال پخش است یا موسیقی در حال پخش است اما نه هر دو. گزینه دیگر این بود که تعداد NeoPixels را کاهش دهیم ، اما این کار تا حدی جذابیت انیمیشن را از دست می دهد.

مزاحمت کد پایتون

اگرچه من یک توسعه دهنده نرم افزار باسابقه هستم ، اما هرگز پایتون ننوشته بودم. بعد از اینکه متوجه شدم و با استفاده از روش های کد نویسی خوب مانند کپسوله سازی و مدولاریزاسیون ، خیره شدم ، به سرعت متوجه شدم که از حافظه زمان اجرا بیش از حد استفاده می کنم. بنابراین مقدار کمی کد غیر DRY وجود دارد. من همچنین مجبور شدم از برخی تکنیک های MicroPython مانند const () برای کاهش بیشتر مسائل مربوط به زمان اجرا استفاده کنم.

ماژول های کامپایل شده

گردآوری

#!/bin/bash

کامپایلر = ~/development/circuitpython/mpy-cross-3.x-windows.exe آهنگ های cd python3./convert_to_binary.py cd.. for f in *.py؛ اگر

در اوایل پروژه ، من از توصیه های Adafruit پیروی کردم و همه کتابخانه های Adafruit CircuitPython را روی فلش ذخیره کردم. با این حال ، فضای کمی برای پروژه من باقی گذاشت. برای اینکه بتوانم کد خود را به CPX برسانم ، شروع به جمع آوری ماژول ها و قرار دادن آنها بر روی MCU کردم. به نظر می رسد که Holi-Tie به هیچ یک از کتابخانه های خارجی نیاز ندارد. کتابخانه های موجود در UF2 برای این پروژه کافی بود. اجرای فایل های.mpy کمی موثرتر است ، بنابراین من روند استقرار ماژول های کامپایل شده را حفظ کردم.

همانطور که در اسکریپت کامپایل بالا مشخص است ، من روی دستگاه ویندوز کار می کنم اما از ابزارهای یونیکس مانند bash و python3 استفاده می کنم. من از Cygwin برای انجام این کار استفاده می کنم. این اسکریپت را می توان به راحتی به دسته DOS و پیاده سازی بومی ویندوز Python3 ترجمه کرد.

مرحله 8: بستن کراوات

دکمه زدن کراوات
دکمه زدن کراوات
دکمه زدن کراوات
دکمه زدن کراوات

آخرین مرحله این است که هسته کراوات را در جای خود قرار دهید ، کراوات را دوباره جمع کنید و دوباره آن را دوختید. مطمئن باشید که می توانید CPX را در دسترس قرار دهید. هنگام تعویض باتری یا ایجاد تغییرات در کد ، به آن نیاز خواهید داشت.

توصیه شده: