NodeMCU ESP8266

برد NodeMCU | همه چیز درباره esp8266

برد NodeMCU مبتنی بر  Esperessif ESP8266-12E به همراه هسته وای فای است . این برد مجهز به سیستم عامل متن باز و مبتنی بر Lua است. برای پروژه های IoT که به اتصال بی سیم نیاز داریم بسیار مناسب است. این تراشه ارتباط بسیار زیادی با Arduino دارد . هر دوی آنها میکروکنترلری هستند که می شود با استفاده از Arduino IDE  آنها را برنامه ریزی کرد.اگر با آردوینو آشنا هستید و به دنبال بردی فشرده تر و مجهز به WiFi هستید ، استفاده از NodeMCU را به شما پیشنهاد میکنم.

در این پست ، ما به nodeMCU نگاهی می اندازیم و به شما نشان می دهیم که چگونه می توانید از NodeMCU  استفاده کنید.

مقایسه برد NodeMCU با آردوینو

چرا از NodeMCU استفاده کنیم در حالی که آموزش های بیشتری برای Arduino موجود هست؟

خوب ، NodeMCU  چندین مزیت متفاوت دارد. با این حال ، قبل از اینکه به جزئیات آن بپردازیم ، باید بیان کنیم که NodeMCU از نظر فنی ، یک دستگاه نیست ، بلکه یک فریمور است که بر روی آن بارگیری می شود.

در طول سال ها ماژول های ESP  مختلفی وجود داشت که هر کدام مزایا و اشکالاتی داشتند. در بین تمام اینها تنها ۲ بورد  NodeMCU وجود داشت . یکی ورژن ۰٫۹ و بعدی ورژن ۱٫۰٫ ورژن ۰٫۹ آبی رنگ هست و مجهز به تراشه ESP-12 است ، در حالی که ورژن ۰/۱ سیاه رنگ است و همراه با ESP-12E (E مخفف ‘پیشرفته’) است.

با توجه به اینکه ESP8266 نسخه جدیدتری نسبت به Arduino است ، تعجب آور نیست که مشخصات قوی تری داشته باشد. یک پردازنده ۳۲ بیتی RISC با سرعت ۸۰ مگاهرتز ، یک RAM  مکمل و پشتیبانی از حداکثر ۱۶ مگابایت حافظه فلش خارجی وجود دارد. این دستگاه به دلیل اندازه کوچکش و پشتیبانی از WiFi برای پروژه های IoT  بسیار مفید است.

با این وجود ، در هر جنبه دیگر ،ESP تقریباً شبیه آردوینو است. یک تنظیم کننده ولتاژ (رگولاتور) وجود دارد تا خروجی درستی به دستگاه برسد . همچنین یک دکمه ریست ، یک خروجی USB برای ارتباط آسان با رایانه (همچنین انتقال سریال) وجود دارد .

ما یک مقایسه بین ۳ برد رزبری و آردوینو و NodeMCU  انجام دادیم. میتونید آن مقاله هم مطالعه کنید.

 

منبع تغذیه برد NodeMCU  ESP8266

ESP8266 با ۳٫۳ ولت کار میکند در صورتی که بیشتر آردوینو ها با ۵ ولت کار میکنند. برای اینکه فضا الکی اشغال نشود، هیچ سوکت منبع تغذیه ای وجود ندارد. در عوض ، تنها با یک کابل میکرو USB کل برد تغذیه می شود .برق ۳٫۳ ولت را از طریق سه پین خود به بقیه قطعاتی که نیاز داشته باشند به صورت مساوی میدهد. همچنین ۴ پین زمین دارد. ما پیشنهاد می کنیم پین های ۳٫۳ ولت و زمین را به ریل های برق روی بردبورد وصل کنید . با این کار یک نظمی به پروژه خودتان میدهید.

 

آنالوگ (Analog In)

برای خواندن یک ولتاژ آنالوگ در NodeMCU ، مثل یک سنسور رطوبت یا پتانسومتر ، باید دیتا را به پین ​​ADC وصل کنید. پین ADC مبدل انالوگ به دیجیتال است. برای اینکه میکروکنترلر بتونه مقادیر رو بخونه باید از انالوگ به دیجیتال تبدیل بشن.

ADC  با قرار دادن یک ردیف مقایسه کننده به صورت سری کار می کنند. اگر ولتاژ خوانده شده از ولتاژ ثابت بزرگتر بود ، خروجی برابر ۱ ، و اگر پایین تر باشد ،صفر می شود. در  ESP8266 ، ADC ده بیتی است ، بدین معنی که ما ده تا ۰و۱ داریم برای ۱۰۲۴ مقادیر ممکنه. این امر باعث می شود تا تغییرات دقیق ولتاژ را ثبت کنیم. به عنوان مثال ، ما ممکنه یک پتانسیومتر دوار را به پین ​​۳٫۳ولت،پین زمین و ADC وصل کنیم و سپس پتانسیلومتر را بپیچانیم تا مقدار را افزایش یا کاهش دهیم.

 

مولتی پلکسر

ممکن هست فکر کنید که فقط یک ورودی ADC در nodeMCU کمی محدود کننده باشد. درسته حق با شماست اما خوشبختانه ، دستگاهی وجود دارد که می تواند این مشکل را برطرف کند . این دستگاه میتواند یک پین ADC را به هشت پین یا بیشتر ، افزایش دهد. به این دستگاه Multiplexer (یا Mux) میگویند.     وقتی که پروژه ای با NodeMCU دارید و باید از چندین پین ADC استفاده کنید ، میتونید از یک مولتی پلکسر مثل آیسی۷۴hc4051  کمک بگیرید.

 

۷۴hc4051 چیست؟

۷۴hc4051 یک multiplexer آنالوگ هشت کانال است.البته بسته به برند تولید کننده ممکنه کانال های بیشتری هم داشته باشد. مثل یک سوئیچ ۸ طرفه است که می تواند با استفاده از ولتاژ دیجیتال آن را کنترل کنید. بنابراین ، شما باید دیتای مناسب را در میکروکنترلر خود ایجاد کنید تا ولتاژها به درستی منتقل بشوند و بعد توسط ADC خوانده شود. البته اگر می خواستید ۸ پتانسیومتر را از طریق یک ADC کنترل کنید ، باز هم امکان پذیر هست. شما باید تمام موارد را درون یک حلقه قرار دهید.

 

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

پین های خروجی برد NodeMCU

بیایید وارد جزئیات NodeMCU بشیم . مثلا در مورد پین های مختلف یا پروتکل های ارتباطی که پشتیبانی میکند کمی بحث کنیم:

 

برخی از پین های دیجیتالی برد دارای قابلیت مدولاسیون پهنای پالس یا PWM هستند. PWM یک پالس مربعی شکل هست که یا در وضعیت بالا یا پایین میباشد. هر چه چرخه کاری (Duty Cycle) طولانی تر باشد ، به نظر می رسد که سیگنال قوی تر میباشد.

مثلا اگر LED را به سرعت خاموش و روشن کنید ، مقدار روشن بودن طولانی تر بوده و به نظر می رسد LED روشن است.
سیگنال های PWM معمولاً برای کنترل موتورها یا LEDها استفاده می شود.
شما می توانید همین کار را با استفاده از هرکدام از پین های دیجیتال در MCU که قابلیت PWM را داشته باشند انجام دهید.البته شما میتونید از پین های معمولی برد هم استفاده کنید و انها را در کد طوری برنامه ریزی کنید که سریع،خاموش و روشن بشوند. اما این کار اصلا صحیح نیست و باید از پین های PWM در برد استفاده کنید.

 

در NodeMCU پین های PWM برابر :  D2 ، D5 ،  D6 و D8 هستند.

پروتکل های ارتباطی برد NodeMCU

NodeMCU  از هر سه پروتکل اصلی ارتباط سریال مثل بردArduino  پشتیبانی می کند. این پروتکل ها عبارت اند از UART و I2C و SPI که هرکدام را جداگانه توضیح میدهیم.

UART

UART  مخفف Universal Asynchronous Receiver/Transmitter میباشد. UART در اصل یک مدار فیزیکی محسوب میشه که میاد دریافت و ارسال داده ها رو به صورت سریال انجام میده. در اصل UART میاد دو تا دستگاه رو به صورت مستقیم به هم متصل میکنه. این پروتکل داده ها رو به صورت Asynchronous یا ناهمزمان ارسال میکند.

مورد بعدی که باید به آن در این پروتکل توجه کنیم نرخ انتقال داده (baud rate) است. baud rate یک فرکانس توافقی است بین مبدا و مقصد. میزان baud rate در هر دو دستگاه باید یکسان باشد.

به همین دلیل هست که دیگر نیازی به ارسال سیگنال کلاک نیست. در NodeMCU ، UART  از طریق پین های Rx و Tx (دریافت و ارسال)انجام می شود.

I2C

پروتکل  برای انتقال داده و سیگنال کلاک از دو سیم یا مسیر استفاده میکند. یک سیم برای انتقال داده SDA (Serial Data) و یک سیم برای انتقال کلاک  SCL (Serial Clock). عملکرد این پروتکل به صورت master و slave است . یعنی ما میتوانیم چندین slave را به یک master متصل کنیم. حتی ما میتوانیم توسط این پروتکل یک slave را توسط چندین master کنترل کنیم.
پین های SCL و SDA در NodeMCU برابر پین های  D1 و D2 میباشند.I2C  برای اتصال مدارهای مجتمع به یکدیگر بسیار مناسب میباشد.

SPI

SPI  مخفف Serial Peripheral Interface میباشد. معمولاً برای اتصال بین میکروکنترلرها و مدارهای مجتمع یا سنسورها ،از پروتکل I2C استفاده می شود . ارتباطات در پروتکل SPI هم بر اساس استاد و برده یا همان master – slave یا میباشد. این پروتکل از ۴ خط برای ارتباطاتش استفاده میکند. خط اول برای ارسال داده از Master به  Slave یا همان MOSI (Master Output/Slave Input). خط دوم برای ارسال داده از Slave به Master یا همان MISO (Master Input/Slave Output). خط سوم برای سیگنال کلاک SCLK (Clock). خط چهارم نیز برای این است که Master انتخاب کند به کدام Slave داده ارسال کند SS/CS (Slave Select/Chip Select).

در NodeMCU ، سه پین برای SPI  در نظر گرفته شده است . پین D5 برای  CLK، پین D6  برای MISO و پین D7  برای MOSI در نظر گرفته شده است.

 

شروع برنامه نویسی NodeMCU با  Arduino IDE


شما میتوانید NodeMCU را به راحتی توسط Arduino IDE برنامه ریزی کنید.فقط قبل از شروع برنامه ریزی ، اول باید IDE را پیکربندی کنید تا NodeMCU را شناسایی کند.برای این کار کارهای زیر را به ترتیب انجام دهید.

مرحله اول) نرم افزار Arduino IDE را باز کنید. سپس از بخش file روی preferences کلیک کنید.

مرحله دوم) در بخش additional Boards Manager URLs آدرس زیر را وارد کنید.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

مرحله سوم) بر روی OK کلیک کنید.

مرحله چهارم) در قسمت منوها بر روی Tools کلیک کرده سپس از قسمت Board بر روی Boards Manager کلیک کنید.

مرحله پنجم) در قسمت جستجو واژه ESP8266 را سرچ کرده و سپس بسته را نصب نمایید.

مرحله آخر) در قسمت منو بر روی Tools کلیک کرده و در قسمت Board مدل دقیق بردتان را انخاب کنید. مثلا NodeMCU1.0 (ESP-12E module)

حالا دیگر برد NodeMCU  شما آماده برنامه ریزی شده است . از این برد فوق العاده نهایت استفاده را ببرید.

در ادامه میتوانید نظرات و پیشنهادات خودتان را با ما در میان بگذارید.

 

5/5 ( 2 نظر )
0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

پاسخی بگذارید