خانه / مطالب علمی / آردوینو - Arduino / بررسی WS2812 LED و راه اندازی آن با آردوینو

بررسی WS2812 LED و راه اندازی آن با آردوینو

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

ws2812

برای کنترل هر آی سی از 24 بیت استفاده می شود که 8 بیت برای هر رنگ قرمز، سبز و آبی استفاده می شود که در واقع امکان 256 حالت نوری(Grayscale) را ممکن می سازد. تصویر زیر ترتیب ارسال این سیگنال را نمایش می دهد:

1409986446_data_sequence

این سیگنال ها باید به صورت پشت سر هم و به صورت سریال ارسال شود یعنی با فرض سه پیکسل به صورت پشت سر هم، یک بسته 24 بیتی به ازای هر پیکسل ارسال می شود. هر پیکسل اولین 24 بیت دریافتی را به خود اختصاص داده و باقی بیت های دریافتی را به پیکسل های بعدی منتقل می نماید. این روند تا آخرین پیکسل ادامه می یابد. با یک سیگنال ریست نیز کل آی سی های زنجیره خاموش می شود. در تصویر زیر شیوه اجرایی این فرآیند مشاهده می شود:

ws28121

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

1409986682_sequence_chart

همان گونه که قبلا نیز گفته شد این آی سی دارای دو مد کاری 400 کیلو هرتز(Low Speed) و 800 کیلوهرتز (High Speed) می باشد. با توجه به اینکه زمان بندی های سیگنال با توجه به مد کاری تغییر می کند و همچنین سرعت بالاتر مد پر سرعت و متداول تر بودن این مد کاری، زمان بندی ها بر اساس آن قرار داده می شود: (لازم به ذکر است زمان بندی های مد 400 کیلو دو برابر جدول زیر است)

1409986682_table

روند ارسال سیگنال بدین صورت است که در ابتدا یک سیگنال ریست از طریق خط دیتا ارسال می شود. در این حالت حافظه کل چیپ ها پاک (Clear) می شود. بعد از این حالت سیگنال های ارتباطی با زمان بندی ها مناسب ارسال می گردد برای مثال با وجود دو آی سی پشت سر هم و به جهت رنگ سفید و سبز باید ابتدا 0xFFF (رنگ سفید) و سپس 0x0F0 (رنگ سبز خالص) به صورت پشت هم ارسال گردد.

نصب کتابخانه NEOPIXEL در نرم افزار آردوینو

برای راه اندازی ریسه های WS2812 در آردوینو می توانید از کتابخانه NEOPIXEL استفاده کنید برای این منظور کافی است در قسمت manage libraries عبارت NEOPIXEL  جست و جو و نصب کنید.

محاسبه توان مصرفی: 

هر کدام از LED های RGB تقربیاً 60mA جریان در ولتاژ 5v مصرف می کند.پس توان مصرفی هر کدام از این LED ها برابر است با:

5V×60mA=0.3 wat

اگر از یک زنجیر یک متری با  60 عدد از این LED ها در پروژه خود استفاده کنید به یک منبع تغذیه ۵ولت با توانایی تولید حداقل A3.6 آمپر جریان نیاز دارید.

نکته مهم: برای راه اندازی WS2812 به هیچ عنوان از پین های 5V و GND روی برد آردوینو استفاده نکنید.چون اگر بخواهید از پورت USB کامپیوتر خود این جریان را تامین کنید هم پورت USB‌و هم برد آردوینو آسیب خواهد دید.پین های 5V و GND باید به یک منبع تغدیه خارجی وصل شود.

نحوه اتصال به برد آردوینو:

انتخاب WS2812 مناسب با پروژه

این نوع LED ها هم در یه صورت تکی و هم به صورت ماژول در فروشگاه موجود می باشد که می توانید با توجه به نیاز خود یکی را انتخاب کنید.

نمونه کد برای تست WS2812:

توضیح تعدادی از توابع:

begin

این دستور برای آماده سازی نوار LED و بصورت زیر اعمال میشه:

setPixelColor

بوسیله این دستور میتونیم مشخص کنیم که هر ال ای دی چه رنگی باشه و بصورت زیر فراخوانیش می کنیم:

Color

این تابع به شکل زیر فراخوانی میشه :

سه تا مقداره رنگ رو بهش میدیم و یه متغیر 32 بیتی که رنگ رو در بر داره تحویل می گیریم.

clear

این دستور همه ال ای دی ها رو خاموش می کند.

setBrightness

نکته ای که این دستور داره اینه که شما این تابع رو فقط توی setup برنامه می تونید استفاده کنید و برای یک بار میزان روشنایی رو مشخص کنید که این مقدار رو از بین صفر تا 255 میتونید انتخاب کنید.

مثال:

با اعمال این دستور میزان روشنایی هر ال ای دی که فرمان روشن شدن بگیره نصف خواهد شد.

updateLength

بوسیله این دستور میتونیم در هر جای برنامه تعداد LED ها رو که توی ساخت معرفی کردیم  تغییر بدیم.

با این مثال تعداد ال ای دی ها که 60 بود رو به 30 تغییر دادیم.

ویدیویی از راه اندازی WS2812:

درباره علی عزتی

علی عزتی هستم. رشته ی مهندسی برق الکترونیک رو خوندم. علاقه ی من به یادگیری و به اشتراک گذاشتن چیز هایی که یاد گرفتم. باعث شده تا بنویسم. علاقه ی زیادی به الکترونیک دارم. و دوست دارم چیزهای جدید یادبگیرم و بسازم ... :))

یک نظر

  1. سلام و خدا قوت
    با توجه به اینکه سری جدید ریسه های آدرس پذیر WS2813 هم اکنون با رفع نواقص مدل قبلی در بازار هستند برای برنامه نویسی آن چه تفاوت هایی با مدل ارایه شده دارد

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

*

code