فهرست مطالب:

میز قهوه خوری LED آردوینو: 6 مرحله (همراه با تصاویر)
میز قهوه خوری LED آردوینو: 6 مرحله (همراه با تصاویر)

تصویری: میز قهوه خوری LED آردوینو: 6 مرحله (همراه با تصاویر)

تصویری: میز قهوه خوری LED آردوینو: 6 مرحله (همراه با تصاویر)
تصویری: High Density 2022 2024, جولای
Anonim
Image
Image
میز قهوه خوری LED آردوینو تعاملی
میز قهوه خوری LED آردوینو تعاملی

وقتی یک شیء روی میز قرار می گیرد ، یک میز قهوه تعاملی درست می کنم که چراغ های LED را در زیر یک شی روشن می کند. فقط لامپهای زیر آن شی روشن می شوند. این کار را با استفاده م effectivelyثر از سنسورهای مجاورت انجام می دهد و وقتی سنسور مجاورت احساس کند که یک جسم به اندازه کافی نزدیک است ، یک گره در زیر آن شی روشن می شود. همچنین از آردوینو برای قرار دادن انیمیشن هایی که نیازی به سنسورهای مجاورت ندارند استفاده می کند ، اما جلوه ای واقعاً جالب را اضافه می کند که من فقط آن را دوست دارم.

سنسورهای مجاورت از دیودهای نوری و ساطع کننده های IR تشکیل شده اند. ساطع کننده ها از نور مادون قرمز (که چشم انسان نمی تواند ببیند) برای تاباندن نور به بیرون از میز استفاده می کنند و دیودهای نوری نور مادون قرمز منعکس شده از یک جسم را دریافت می کنند. هرچه نور بیشتری منعکس شود (هرچه جسم نزدیکتر باشد) ، ولتاژ ناشی از دیودهای نوری بیشتر نوسان می کند. این به عنوان یک شاخص برای تعیین گره روشن شدن مورد استفاده قرار می گیرد. گره ها مجموعه ای از led های ws2812b و یک سنسور مجاورت هستند.

ویدئوی پیوست کل مراحل ساخت را مرور می کند ، در حالی که من جزئیات بیشتری را در زیر بیان می کنم.

تدارکات

  1. ws2812b لامپ LED -
  2. منبع تغذیه 5 ولت -
  3. هر Arduino که من از 2560 استفاده کردم -
  4. دیودهای نوری
  5. ساطع کننده های IR
  6. مقاومت 10 اهم
  7. مقاومت 1 اهم
  8. 47 خازن pF
  9. مولتی پلکسر CD4051B
  10. SN74HC595 Shift Registers
  11. ULN2803A دارلینگتون آرایه
  12. من از هر لایه ای برای استفاده به عنوان یک تخته بزرگ برای led ها استفاده کردم ، از یک تخته کامپوزیت کاغذی در انبار خانه استفاده کردم

مرحله 1: برد را ایجاد کرده و LED ها را وارد کنید

برد را ایجاد کرده و LED ها را وارد کنید
برد را ایجاد کرده و LED ها را وارد کنید
برد را ایجاد کرده و LED ها را وارد کنید
برد را ایجاد کرده و LED ها را وارد کنید
برد را ایجاد کرده و LED ها را وارد کنید
برد را ایجاد کرده و LED ها را وارد کنید
برد را ایجاد کرده و LED ها را وارد کنید
برد را ایجاد کرده و LED ها را وارد کنید

اولین کاری که انجام دادم ایجاد تخته ای بود که شامل led هایی باشد که داخل میز قهوه خوری قرار می دهیم. من از یک تکه کاغذ کامپوزیت از انبار خانه استفاده کردم و آن را به ابعاد مناسب میز قهوه خوری که داشتم برش دادم. بعد از اینکه تخته را به اندازه رساندم ، من تمام سوراخ های محل لامپ ها را سوراخ کردم. خود تخته دارای 8 ردیف و 12 ستون از led های ws2812b بود که 3 اینچ از هم جدا شده بودند و آنها را به صورت مارپیچ وصل کرده بودند. من از چسب حرارتی برای محکم کردن آنها در محل استفاده کردم.

من همچنین مجبور شدم سوراخ هایی را در مرکز گره ایجاد کنم: 4 led ws2812b که یک مربع را تشکیل می دهند ، 2 دیود عکس و 2 ساطع کننده IR در یک مربع کوچکتر در مرکز آن. این 4 سوراخ در مرکز گره ، نقاطی برای دیودهای نوری و ساطع کننده های IR (هر کدام 2 مورد) خواهد بود. آنها را برای اطمینان از حداکثر نوردهی جایگزین کردم و آنها را در فاصله 1 اینچی در مرکز هر گره قرار دادم. من نیازی به چسباندن داغ این وسایل در محل خود نداشتم ، فقط لبه ها را در طرف دیگر خم کردم تا مطمئن شوم که از طرف دیگر بیرون نمی آیند. من همچنین اطمینان حاصل کردم که انتهای مثبت و منفی را در جهات خاصی خم می کنم ، به طوری که آنها در مدار به درستی جهت گیری می کنند. همه سرنخ های مثبت در سمت چپ پشت تخته قرار داشت ، در حالی که همه سرنخ های منفی در سمت راست تخته بود.

مرحله 2: درک مدار

مدار را درک کنید
مدار را درک کنید
مدار را درک کنید
مدار را درک کنید
مدار را درک کنید
مدار را درک کنید

توجه: همه نقاشی های متحرک دقیقاً مطابق با پیاده سازی نیستند (برخی از پین های آردوینو متفاوت هستند ، و من چند مورد را زنجیره می زنم ، بعداً در مورد آن). نتیجه نهایی به دلیل پیچیدگی مدار کمی متفاوت بود ، اما همه مدارهای متحرک به عنوان پایه ای عالی برای درک نحوه نمونه سازی اولیه هر قسمت عمل می کنند. شماتیک و نمودار معمولی همانطور است که در PCB مورد استفاده در پروژه وجود دارد.

کد PCB که شامل پروژه KiCad و فایل های gerber است را می توانید در اینجا پیدا کنید: https://github.com/tmckay1/interactive_coffee_tabl… ، در صورت تمایل به سفارش خود PCB و ایجاد پروژه مشابه. من از NextPCB برای ایجاد تخته استفاده کردم.

اساساً سه مدار مختلف وجود دارد که این جدول را تشکیل می دهند. اولین موردی که ما به طور مفصل به آن نمی پردازیم و یک مدار ساده است که LED های ws2812b را تغذیه می کند. یک سیگنال داده PWM از Arduino به لامپ های ws2812b led ارسال می شود و کنترل می کند که رنگها در کجا نشان داده می شوند. ما از led های ws2812b استفاده می کنیم زیرا آدرس دهی آنها به صورت جداگانه است ، بنابراین می توانیم کنترل کنیم که کدام یک از led ها روشن و کدام ها خاموش شوند. چراغ های ws2812b از منبع تغذیه خارجی 5 ولت تغذیه می کنند ، زیرا آردوینو به تنهایی قدرت کافی برای روشن کردن همه چراغ ها را ندارد. در نمودار متحرک ضمیمه شده آنها از یک مقاومت کششی 330 اهم استفاده می کنند ، اما من از آن در ساختار خود استفاده نمی کنم.

مدار دوم ساطع کننده های IR را روشن می کند. این مدار از یک شیفت رجیستر برای کنترل یک آرایه دارلینگتون که نیرو را به ساطع کننده های IR ارسال می کند ، استفاده می کند. یک شیفت رجیستر یک مدار یکپارچه است که قادر است سیگنال های HIGH و LOW را از تعداد کمی از پین ها به چندین پین ارسال کند. در مورد ما ، ما از یک رجیستر شیفت SN74HC595 استفاده می کنیم که می تواند از 3 ورودی کنترل شود ، اما حداکثر 8 خروجی را کنترل می کند. مزیت استفاده از این با آردوینو این است که می توانید تا 8 رجیستر شیفت پشت سر هم را زنجیره کنید (آردوینو فقط تا 8 عدد از آنها را می تواند اداره کند). این بدان معناست که برای روشن و خاموش کردن 64 اشعه مادون قرمز تنها 3 پین از آردوینو نیاز دارید. آرایه دارلینگتون به شما این امکان را می دهد که در صورت بالا بودن سیگنال ورودی ، یک دستگاه را از منبع خارجی تغذیه کنید یا در صورت پایین بودن سیگنال ورودی ، دستگاه را خاموش کنید. بنابراین در مثال ما ، از یک آرایه دارلینگتون ULN2803A استفاده می کنیم که به منبع تغذیه خارجی 5 ولت اجازه می دهد تا 8 تا از اشعه های IR را روشن و خاموش کند. ما از یک مقاومت 10 اهم با ساطع کننده های IR به صورت سری استفاده می کنیم تا حداکثر توان را از اشعه های مادون قرمز دریافت کنیم.

مدار سوم از یک مولتی پلکسر برای دریافت چندین ورودی از دیودهای نوری استفاده می کند و خروجی را در سیگنال داده ارسال می کند. مالتی پلکسر دستگاهی است که برای گرفتن چندین ورودی که می خواهید از آنها بخوانید استفاده می شود و برای خواندن از این ورودی ها فقط به چند پین نیاز دارد. همچنین می تواند برعکس (demultiplex) را انجام دهد ، اما ما از آن برای آن برنامه در اینجا استفاده نمی کنیم. بنابراین در مورد ما ما از یک مولتی پلکسر CD4051B برای دریافت حداکثر 8 سیگنال از دیودهای نوری استفاده می کنیم و برای خواندن این سیگنال ها فقط به 3 ورودی نیاز داریم. به علاوه ما می توانیم تا 8 مولتی پلکسر را زنجیره ای کنیم (آردوینو فقط تا 8 مورد از آنها را می تواند اداره کند). این بدان معناست که آردوینو می تواند از 64 سیگنال فوتودیود فقط از 3 پین دیجیتال بخواند. دیودهای نوری دارای جهت گیری معکوس هستند ، بدین معنی که به جای جهت گیری در جهت طبیعی با سرب مثبت متصل به منبع ولتاژ مثبت ، ما سربی منفی را به منبع ولتاژ مثبت اختصاص می دهیم. این به طور موثر دیودهای نوری را به مقاومت های عکس تبدیل می کند که بسته به میزان نوری که دریافت می کند ، مقاومت آنها تغییر می کند. سپس یک تقسیم کننده ولتاژ ایجاد می کنیم تا ولتاژ وابسته به مقاومت متغیر فوتودیودها را با افزودن یک مقاومت بسیار مقاومتی 1 مگا اهم به زمین بخوانیم. این به ما این امکان را می دهد که ولتاژهای بالاتر و پایین تری به آردوینو بستگی به میزان نور IR دریافت شده توسط دیودهای نوری دریافت کنیم.

من بیشتر این طراحی را از شخص دیگری که این کار را در اینجا انجام داد دنبال کردم: https://www.instructables.com/Infrared-Proximity-S… در آن طراحی آنها نیز مانند ما یک خازن 47pF را در مقابل مقاومت 1 MOhm اضافه کردند. برای ایجاد تقسیم ولتاژ با دیودهای نوری استفاده می شود. دلیل اضافه کردن آن این بود که او در حال خاموش و روشن کردن ساطع کننده های IR با یک سیگنال PWM بود و با انجام این کار یک ولتاژ کوچک از دیودهای نوری هنگام روشن شدن بلافاصله ساطع کننده های IR ایجاد شد. این باعث شد که دیودهای عکس مقاومت خود را تغییر دهند حتی زمانی که نور IR بیشتری از یک شی دریافت نمی کرد ، زیرا ساطع کننده های IR منبع تغذیه 5 ولت مشابهی با دیودهای نوری دارند. از خازن برای اطمینان از عدم افت ولتاژ هنگام روشن و خاموش شدن اشعه های IR استفاده شد. من در ابتدا قصد داشتم همین استراتژی را انجام دهم ، اما برای آزمایش آن وقتم تمام شد ، بنابراین در عوض ، ساطع کننده های IR را همیشه روشن گذاشتم. من می خواهم این را در آینده تغییر دهم ، اما تا زمانی که کد و مدار را دوباره طراحی نکنم ، در حال حاضر PCB طوری طراحی شده است که چراغ های IR همیشه روشن باشد و به هر حال خازن ها را نگه داشتم. اگر از این طرح PCB استفاده می کنید ، نیازی به خازن ندارید ، اما من قصد دارم نسخه دیگری از PCB را معرفی کنم که ورودی اضافی را در شیفت رجیستر می پذیرد و به شما اجازه می دهد تا خروجی های IR را روشن و خاموش کنید. این امر باعث صرفه جویی زیادی در مصرف برق می شود.

می توانید نمودارهای متحرک پیوست شده برای یک نمونه اولیه را برای آزمایش بر روی آردوینو بررسی کنید. همچنین یک طرح رنگی دقیق تر برای هر مدار وجود دارد که نحوه تنظیم و جهت گیری دستگاه های الکترونیکی را نشان می دهد. در شماتیک PCB ضمیمه شده ، 4 مدار کلی داریم ، 2 مدار برای روشن کردن اشعه های IR و 2 مدار برای خواندن از دیودهای نوری استفاده می شود. آنها روی 2 گروه PCB در کنار یکدیگر با گروهی متشکل از 1 مدار ساطع کننده IR و 1 مدار فوتودیود جهت گیری می کنند ، به طوری که 2 ستون از 8 گره را می توان در یک PCB واحد قرار داد. ما همچنین دو مدار را با هم زنجیره می کنیم ، بنابراین سه پایه از آردوینو می تواند دو ثبت کننده شیفت را کنترل کند و 3 پایه دیگر می تواند دو مالتی پلکسر روی برد را کنترل کند. یک سرصفحه خروجی اضافی وجود دارد که می تواند به PCB های اضافی زنجیره دهد.

در اینجا چند منبع وجود دارد که برای نمونه سازی آنها را دنبال کردم:

  • https://lastminuteengineers.com/74hc595-shift-regi…
  • https://techtutorialsx.com/2016/02/08/using-a-uln2…
  • https://tok.hakynda.com/article/detail/144/cd4051be…

مرحله 3: سیم ها را به Node لحیم کنید

سیم های لحیم کاری به گره
سیم های لحیم کاری به گره
لحیم سیم به گره
لحیم سیم به گره
سیم های لحیم کاری به گره
سیم های لحیم کاری به گره
لحیم سیم به گره
لحیم سیم به گره

اکنون که نحوه ساخت مدار را درک کرده اید ، جلو بروید و سیم ها را به هر گره بچسبانید. من دیودهای نوری را به صورت موازی (سیم های زرد و خاکستری) و ساطع کننده های IR را به صورت سری (سیم نارنجی) لحیم کردم. سپس یک سیم زرد بلندتر را بطور موازی به دیودهای نوری که به منبع تغذیه 5 ولت متصل می شود ، و یک سیم آبی که به ورودی فوتودیود PCB متصل می شود ، لحیم کردم. من یک سیم قرمز بلند را به مدار خروجی IR لحیم کردم که از آن برای اتصال به منبع تغذیه 5 ولت استفاده می شود و یک سیم سیاه که به ورودی اشعه مادون قرمز PCB وصل می شود. من در واقع سیم ها را کمی تا مدت کوتاهی به پایان رساندم ، بنابراین می توانم فقط 5 گره در هر ستون را در پایان (به جای 7) متصل کنم. تصمیم دارم بعدا این مشکل را برطرف کنم.

مرحله 4: اجزای PCB را لحیم کرده و به برد وصل کنید

قطعات PCB را لحیم کرده و به برد وصل کنید
قطعات PCB را لحیم کرده و به برد وصل کنید
قطعات PCB را لحیم کرده و به برد وصل کنید
قطعات PCB را لحیم کرده و به برد وصل کنید
قطعات PCB را لحیم کرده و به برد وصل کنید
قطعات PCB را لحیم کرده و به برد وصل کنید

توجه: PCB در تصویر پیوست اولین نسخه ای است که من ساختم و فاقد ورودی و خروجی قدرت و همچنین یک زنجیره دیزی برای هر مدار داخلی بود. طراحی جدید PCB این اشتباه را برطرف می کند.

در اینجا فقط باید شماتیک PCB را دنبال کنید تا قطعات را به PCB لحیم کنید و بعد از انجام این کار ، PCB را به برد لحیم کنید. من برای اتصال سیگنال قدرت 5 ولت ، از تابلوهای مدار خارجی استفاده کردم ، که آن را روی تمام سیم های زرد و قرمز توزیع کردم. در نگاه اجمالی ، من به چنین سیمهای قرمز و زرد طولانی احتیاج نداشتم و می توانستم گره ها را به یکدیگر متصل کنم (به جای اتصال آنها به یک برد مدار معمولی خارجی). این امر واقعاً میزان شلوغی پشت تخته را کاهش داده است.

از آنجا که من 8 ردیف ws2812b led و 12 ستون داشتم ، 7 ردیف و 11 ستون گره (در مجموع 77 گره) به پایان رسید. ایده این است که از یک طرف PCB برای یک ستون گره و از طرف دیگر برای ستون دیگر استفاده شود. بنابراین از آنجا که من 11 ستون داشتم ، به 6 PCB نیاز داشتم (آخرین مورد فقط به یک گروه از اجزا نیاز داشت). از آنجا که سیم ها را بسیار کوتاه کردم ، فقط می توانم 55 گره ، 11 ستون و 5 ردیف را وصل کنم. در تصویر مشاهده می کنید ، من اشتباهی انجام دادم و سیم های خام را به تخته چسباندم ، اگر سیم ها به اندازه کافی نازک باشند ، خوب است ، اما در مورد من خیلی ضخیم هستند. این بدان معناست که برای هر ورودی امیتر IR و ورودی فوتودیود ، انتهای سیم فرسوده بسیار نزدیک به هم بود ، بنابراین اشکال زدایی زیادی از همه کوتاه شدن سیم اتفاق می افتد. در آینده قصد دارم از اتصالات برای اتصال PCB به سیم های روی برد برای جلوگیری از شورت و تمیز کردن وسایل استفاده کنم.

از آنجا که آردوینو فقط می تواند تا 8 رجیستر شیفت و مالتی پلکسر زنجیره کند ، من دو زنجیره جداگانه ایجاد کردم ، یکی 8 ستون اول را می گیرد و دیگری 3 ستون باقی مانده را می گیرد. سپس هر زنجیره ای را به pcb دیگری متصل کردم که فقط 2 مالتی پلکسر داشت ، به طوری که می توانستم هر زنجیره ای از سیگنال های داده مالتی پلکسر از آن دو مالتی پلکسر را در آردوینو بخوانم. این دو مالتی پلکسر نیز دیزی زنجیر شده بودند. این بدان معناست که در مجموع 16 سیگنال خروجی و 2 ورودی آنالوگ در آردوینو استفاده شده است: 1 سیگنال خروجی برای کنترل led های ws2812b ، 3 سیگنال خروجی برای اولین زنجیره ثبت کننده های شیفت ، 3 سیگنال خروجی برای اولین زنجیره مولتی پلکسرها ، 3 سیگنال خروجی برای زنجیره دوم رجیسترهای شیفت ، 3 سیگنال خروجی برای زنجیره دوم مولتی پلکسرها ، 3 سیگنال خروجی برای 2 مالتی پلکسر که هر سیگنال داده PCB را جمع می کند و در نهایت 2 ورودی آنالوگ برای هر سیگنال داده از 2 مولتی پلکسر کل.

مرحله 5: کد را مرور کنید

توجه: علاوه بر کد تعاملی زیر ، من از یک کتابخانه شخص ثالث برای تولید انیمیشن برای led های ws2812b استفاده کردم. می توانید آن را در اینجا پیدا کنید:

می توانید کدی را که استفاده کردم اینجا پیدا کنید:

در بالا من پین های آردوینو را تعریف می کنم که به هر قسمت از PCB متصل می شوند. در روش راه اندازی ، پین های خروجی را برای مالتی پلکسرها تنظیم می کنم ، ساطع کننده های IR را روشن می کنم ، یک آرایه baseVal تنظیم می کنم که میزان خوانایی نور محیط را برای هر دیود نوری ردیابی می کند و FastLED را که برای led های ws2812b می نویسد ، راه اندازی می کند. در روش حلقه ، ما لیست led هایی را که در نوار ws2812b قرار دارند تنظیم می کنیم. سپس مقادیر مربوط به دیودهای نوری در زنجیره های مالتی پلکسر را می خوانیم و چراغ های ws2812b را روی آن تنظیم می کنیم ، در صورتی که خوانش دیود نوری در گره بیش از یک آستانه مشخص از مقدار پایه خوانش های نور محیط باشد. در صورت تغییر در گره ای که باید روشن باشد ، LED ها را ارائه می دهیم. در غیر این صورت ، تا زمانی که چیزی تغییر نکند ، سرعت خود را حفظ می کند.

کد احتمالاً می تواند بهبود یابد و من به دنبال انجام این کار هستم ، اما حدود 1-2 ثانیه تأخیر از زمانی که چراغ ها پس از قرار دادن یک شی روی میز قرار می گیرند ، وجود دارد. من معتقدم که مسئله اساسی این است که FastLED مدتی طول می کشد تا 96 led را روی میز ارائه دهد و کد باید 77 ورودی از جدول را حلقه کرده و بخواند. من این کد را با 8 رهبری امتحان کردم و متوجه شدم که تقریباً فوری است ، اما در حال بررسی نقاط شیرین LED هایی هستم که با این کد کار می کنند و تقریباً فوری هستند و همچنین کد را بهبود می بخشند.

مرحله 6: آردوینو را روشن کنید

آردوینو را روشن کنید!
آردوینو را روشن کنید!
آردوینو را روشن کنید!
آردوینو را روشن کنید!
آردوینو را روشن کنید!
آردوینو را روشن کنید!

اکنون تنها کاری که باید انجام دهید این است که arduino را روشن کرده و عملکرد جدول را مشاهده کنید! با استفاده از کتابخانه انیمیشن هایی که قبلاً ذکر شد می توانید تعدادی انیمیشن led ws2812b جالب قرار دهید ، یا می توانید کد میز قهوه را روی آن قرار دهید و در هر قسمت روشن شود. با خیال راحت هر گونه س questionsال یا نظری را بیان کنید ، و من سعی می کنم به موقع با شما تماس بگیرم. به سلامتی!

توصیه شده: