در این آموزش قصد داریم ابتدا متدهای راه اندازی LED ها رو بررسی کنیم و بطور کاملا امن یک LED رو به پایه NodeMCU متصل کنیم و بعد اون برنامه چشمک زن رو بنویسیم. اما قبل از اینکه شروع این نکته را باید گوشزد کنم که برد NodeMCU بر خلاف سایر بردهای الکترونیک که با ولتاژ ۵ ولت کار می کنند ولتاژ کاری این برد ۳٫۳ ولت می باشد. به این معنی که اگر ولتاژی بیش از ۳٫۳ ولت به پایه های GPIO این برد وارد شود منجر به سوختن این برد می شود. نکته دیگری بسیار حائز اهمیت است مقدار جریان مصرفی است پایه های برد NodeMCU می توانند تامین کنند. حداکثر جریانی که می تواند از هر پایه NodeMcu بطور مجزا کشید حداکثر ۱۰ میلی آمپر و بسیاری معتقدند این مقدار بیشتر ۹ میلی آمپر نباید باشد. همچنین مجموع تمام جریانهایی که از پایه NodeMCU کشیده می شود نباید بیشتر ۴۰ میلی آمپر باشد. فرض کنید می خواهیم ۸ عدد LED به هرکدام از پایه های NodeMCU متصل کنیم. واضح است سهمیه جریان هر LED حداکثر می تواند ۵ میلی آمپر باشد. بنابراین برای اینکه برد ما آسیب نبیند باید در محاسبه جریان مصرفی دقت لازم را داشته باشیم. حال می رویم سراغ راه اندازی LED ها.
همانطور که در این آموزش مشاهده کردید برنامه نوشتیم LED روی برد ESP-12E را که در حالت Active-Low در مدار قرار داشت را روشن کنیم. در حالت Active-Low برای اینکه بتوانیم LED را روشن کنیم پین باید حالت LOW و برای خاموش کردن آن باید حالت HIGH منطقی داشته باشد. در تصویر A و B می توانید وضعیت عبور جریان در حالت Active-Low را مشاهده کنید(تصاویر از اینترنت دانلود شده است):
تصویر A
تصویر B
همانطور که می دانید جریان همیشه از سمت پتانسیل به سمت پتانسیل حرکت می کند و اگر دو نقطه دارای پتانسیلی یکسان باشند عملا جریان در مسیر این دو نقظه وجود ندارد. در تصویر A با توجه به اینکه پین مقدار خروجی ۰ ولت است (LOW منطقی) جریان از سمت منبع تغذیه حرکت کرده از مقاومت و LED عبور کرده توسط پایه NodeMCU سینک ( Sink ) می شود و موجب روشن شدن LED می شود.
همچنین در تصویر B زمانی که پین خروجی ۳٫۳ ولت است ( HIGH منطقی ) با توجه به اینکه مقدار پتانسیل آن با منبع تغذیه یکسان جریانی در مدار وجود نخواهد داشت و LED در حالت خامونش قرار می گیرد. وظیفه مقاومت محدود کردن جریان مسیر است تا هم LED و از آن مهمتر برد NodeMCU آسیب نبیند که نحوه محاسبه آن را بعد از اینکه حالت Active-High را بررسی کردم آموزش خواهم داد.
تصویر C
تصویر D
اشکال C و D حالت Active-High را نمایش می دهند. از آنجائیکه یک سر مسیر به زمین یا همان پتانسیل صفر و متصل شده است با یک (منطقی) شدن پین خروجی جریان برقرار شده و LED روشن می شود و برعکس.
همانطور که در اول آموزش اشاره جهت پایین آوردن ریسک آسیب دیدن برد NodeMCU بهتر است مقدار جریان هر پایه حداکثر به ۵ میلی آمپر محدود شود. مقدار ولتاژ کاری به طور معمول برای LED های قرمز و زرد بین ۱٫۴ الی ۱٫۹ ولت در نظر گرفته می شود که ولتاژ انتخابی ما ۱٫۴ ولت و برای LED سبز و آبی مقدار ولتاژ بین بازه ۲٫۵ الی ۳ ولت است که ما ولتاژ ۲٫۵ ولت را مد نظر قرار میدهیم. برای محاسبه مقدار مقاومت داریم:
R=(VB-VF)/IF
در این معادله VB ولتاژ باطری یا ولتاژ پین خروجی است که برابر با ۳٫۳ ولت است. VF ولتاژ کاری LED هاست که در پاراگراف قبل به آن اشاره شد و IF مقدار جریان مجاز است که ما آن را ۵ میلی آمپر تعیین کردیم. برای مقاومت LED های زرد و قرمز داریم:
R=(3.3-1.4)/0.005= 380
از آنجائیکه در مقاومت های سری E12 مقامت ۳۸۰ اهم نداریم و این مقاومت بین مقادیر ۳۳۰ اهم و ۳۹۰ اهم قرار دارد ما مقدار مقاومت حد بالا را برای محدود کردن LED های زرد و قرمز انتخاب می کنیم.
همچنین برای LED سبز و آبی داریم:
R=(3.3-2.5)/0.005=160
این مقدار در بین اعداد ۱۵۰ و ۱۸۰ اهم قرار دارد که مقدار انتخابی ما ۱۸۰ اهم خواهد بود.
مدار چشمک زن را مطابق شکل زیر بر روی بردبرد ببندید
پس از بستن مدار پورت USB را به برد NodeMCU متصل کنید. در این مدار از آنجائیکه مصرف کننده چندانی نداریم تغذیه مدار توسط پورت USB تامین می شود. کد زیر را در Arduino IDE وارد کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
void setup() { // Set GPIO pin as output using NodeMCU pins, pinMode(D3, OUTPUT); // or use ESP8266 pins //pinMode(0, OUTPUT); } void loop() { // Turn on LED digitalWrite(D3, HIGH); delay(1000); // Turn off LED digitalWrite(D3, LOW); delay(1000); } |
کد فوق ساختاری بسیار ساده دارد. در بخش setup که معمولا پیکربندی بردها انجام می شود توسط تابع pinMode جهت پایه D3 برد NodeMCU را مشخص می کنیم. این تابع دو آرگومان قبول می کند. آرگومان اول شماره یا اسم پایه در اینجا ما از نام پایه که D3 است استفاده کردیم. اگر می خواستیم از شماره GPIO استفاده کنیم باید بجای D3 عدد ۰ را قرار می دادیم. آرگومان دوم جهت پایه است. OUTPUT برای حالت خروجی و برای ورودی INPUT را وارد می کنیم که در اینجا حالت خروجی انتخاب شده است.
در بخش loop از دو تابع digitalWrite و delay استفاده کرده ایم. همانطور که در آموزش قبلی هم گفتم از تابع digitalWrite جهت نوشتن وضعیت منطقی HIGH یا LOW بر روی پایه ای که بصورت خروجی تعریف شده است، استفاده می کنیم. از آنجائیکه برنامه یک چشمک زن است ابتدا باید LED را روشن کنیم پس طبیعی است در حالت اول مقدار HIGH را در پایه بنویسیم. سپس به مقداری وقفه نیاز داریم که این کار را تابع delay برای ما انجام می دهد. تابع delay فقط یک آرگومان ورودی دارد آن مقدار وقفه بر حسب میلی ثانیه است. مقدار وقفه در هر حالت ۱۰۰۰ میلی ثانیه و معادل یک ثانیه است. همین رویه را برای حالت خاموش هم انجام می دهیم و واضح است آرگومان دوم تابع digitalWrite در اینجا LOW خواهد بود. برنامه را کامپایل و سپس Upload کنید. اگر همه چیز طبق آموزش انجام داده باشید شاهد چشمک زدن LED خواهید بود. می توانید جهت مقادیر وقفه ها را به دلخواه تغییر دهید تا متوجه شوید چشم انسان تا چه آستانه ای قابلیت تشخیص روشن و خاموش بودن LED را دارد. اگر آموزش ها را به ترتیب دنبال می کنید پس برد برد را تغییر ندهید و آموزش آشنایی به مدولاسیون عرض پالس را مطالعه کنید.