برد NodeMcu ESP8266
برد NodeMcu ESP8266
برد NodeMcu ESP8266 با قابلیت WiFi، مصرف کم انرژی و اندازه کوچک خود، کارایی بالایی را در پروژه های هوشمندسازی IoT از خود نشان داده است. اگر با آردوینو آشنایی دارید این میکروکنترلر جذاب می تواند گام بعدی برای ورود شما به سطح پیشرفته و حرفه ای هوشمند سازی در اینترنت اشیا باشد. NodeMcu، واحد میکروکنترلر گره(Node Micro Controller Unit) و اختصار یافته همین عبارت است. این برد سخت افزاری دارای اجزاء حیاتی یک کامپیوتر در ابعاد کوچک مانند CPU، Ram، شبکه WiFi و SDK است که سیستم عامل مدرنی و منبع باز مبتنی بر Lua (یک زبان برنامه نویسی سطح بالا، پلتفرمی متقابل، و چند پارامتری) را که برای جایگذاری در برنامه ها طراحی شده است پشتیبانی می کند.
NodeMcuمدل برنامه نویسی مشابه Node.js دارد اما با وجود پیاده سازی در Lua ناهمزمان و رویداد محور می شود که این ویژگی در IOT کاربردیست. این سیستم عامل منبع باز (NodeMcu) در کنار محصولات شرکت Espressif قرار گرفت. این شرکت که بر توسعه ارتباطات بیسیم قوی، ایمن و راه حل های AIOT کم مصرف متمرکز است، سری تراشه ها، ماژول ها wifi و برد های توسعه ی معروفی همچون ESP8266 ،ESP32 و یا ESP32-H ،ESP32-C، ESP32-S را تولید می کند. امروزه برد توسعه NodeMcu ESP8266 با پشتیبانی از پروتکل TCP/IP همراه با استاندارد IEEE 802.11b/g/n و چیپ وای فای ESP-12E در نوع چیپ مبدل USB به سریال تفاوت دارد که از نوع CP2102 و یا CH340G استفاده می شود. همچنین نوع پورت ارتباطی آنها می تواند عامل دیگری در تفاوت آنها محسوب شود که یا از نوع Type-c، Miniو یا Micro است.
برخی ویژگی و مزایای
از مزایای این بردها می توان به:
- پروژه های هوشمند سازی را در سطح پیشرفته و حرفه ای با روش اجرای تحت وب (Web Server)، کنترل از راه دور و در زمان واقعی (RealTime) برنامه نویسی و اجرا کنید.
- سیستم عامل NodeMcu از قبل بر روی برد جایگذاری شده و تنها نیاز به برنامه نویسی سطح بالا برای اجرا و بکار گیری سنسورها و ماژول ها دارد اشاره کرد.
- بردهای NodeMcu مبتنی بر تراشه ESP8266 در ورژن های مختلفی ارائه می شود. نکته مهمی که باید بدان توجه کرد و یکی از عوامل تفاوت بین آنهاست، فاصله پایه ها از یکدیگر است. در نسخه “0.9 اینچی در (شکل3) که با ماژول ESP-12 راه اندازی می شود، فاصله پایه استاندارد 0.1 اینچ بین پین ها و 0.9 اینچ بین ردیف ها (مدل Official Amica NodeMCU) در نظر گرفته شده است. مدل دیگر (شکل1) که به نام (مدل Lolin NodeMCU) شناخته می شود، فاصله پایه استاندارد 0.1 اینچ بین پین ها و “1.1 اینچی بین ردیف ها بوده و با ماژول ESP-12E در (شکل2) بهبود یافته است.
- یکی دیگر از علل انتخاب NodeMcu ESP6266 برای پروژه های اتصال بیسیم در بحث اینترنت اشیا نسبت به Arduino، عدم وجود امکان ارتباطی WiFi است. زیرا که آردوینو را باید با کمک ماژول های Bluetooth و یا nRF به اینترنت بیسیم مجهز کرد. همچنین هر دو برد مجهز به میکروکنترولر را می توان توسط محیط توسعه نرم افزاری Arduino IDE برنامه ریزی کرد.

(CP2102 CHIP)NodeMcu LUA wifi ESP8266 12(CH340G CHIP) NodeMcu LUA wifi ESP8266 12E
شکل 1: مدل Lolin NodeMCU شکل 2: ESP 12E Module شکل 3: (مدل Official Amica NodeMCU)
مشخصات فنی انواع NodeMcu ها
| Official Amica NodeMCU | NodeMCU Carrier Board | Lolin NodeMCU | |
|---|---|---|---|
| میکروکنترلر/ پردازنده | ESP-8266 32-bit | ESP-8266 32-bit | ESP-8266 32-bit/Tensilica’s L106 Diamond series 32-bit |
| مدل NodeMCU | Amica | Amica | Clone LoLin |
| اندازه NodeMCU | 49mm x 26mm | 49mm x 26mm | 58mm x 32mm |
| اندازه تخته حامل | n/a | 102mm x 51mm | n/a |
| فاصله پین ها | 0.9″ (22.86mm) | 0.9″ (22.86mm) | 1.1″ (27.94mm) |
| فرکانس پردازشی | 80 MHz | 80 MHz | 80 MHz |
| چیپ مبدل USB به سریال | CP2102 | CP2102 | CH340G |
| نوع پورت درگاه | Micro USB | Micro USB | Micro USB |
| ولتاژ کاری/جریان کاری | 3.3V | 3.3V | 3.3V/800mA |
| ولتاژ ورودی | 4.5V-10V | 4.5V-10V | 4.5V-10V |
| حافظه فلش و SRAM | 4MB / 64KB | 4MB / 64KB | 4MB / 64KB |
| تعداد پبن های ورودی/خروجی دیجیتال | 11 | 11 | 11 |
| تعداد پین های آنالوگ | 1 | 1 | 1 |
| محدوده ADC | 0-3.3V | 0-3.3V | 0-3.3V |
| UART/SPI/I2C | 1 / 1 / 1 | 1 / 1 / 1 | 1 / 1 / 1 |
| استاندارد بیسیم | 802.11 b/g/n | 802.11 b/g/n | 802.11 b/g/n |
| بازه دمایی مناسب | 40C ∼+125C- | 40C∼+125C- | 40C∼+125C- |
| Product Link | NodeMCU | NodeMCU | NodeMCU |
شناخت پایه های NodeMCU ESP8266

پین آنالوگ ADC0: می تواند به عنوان ورودی تقسیم کننده ولتاژ که به کمک مقاومت های 220KΩ و 100KΩ ایجاد شده است، بصورت خروجی تقسیم کننده ولتاژ TOUT استفاده کرد. نکته مهم این است که بازه ولتاژ ADC در ESP8266 SoC بین 0 ولت تا 1 ولت است. از این رو اگر قصد استفاده از پین ADC با ولتاژ 0 تا 3.3 ولت را دارید، بهتر است از مدار تقسیم کننده ولتاژ همانند شکل(4) در زیر استفاده کنید. همچنین اگر ماژول WiFi این برد از نوع ESP-01 بود و به ADC دسترسی نبود، می توان سیمی را به پایه 6 در ESP8266EX SoC متصل کرد و از آن با کمک تقسیم کننده ولتاژ استفاده کرد.

شکل (4)
پین های Power: این برد دارای 4 پایه Power وجود دارد. یکی از پایه ها به نام VIN است و سه پایه دیگر به نام 3.3 ولت شناخته می شوند. معمولا از پایه VIN برای تامین مستقیم برق برد NodeMcu ESP8266 و وسائل جانبی استفاده می شود. این جریان توسط رگولاتور تعبیه شده بر روی برد تنظیم می شود. بنابراین می توان با تنظیم مقدار 5 ولت در پین VIN از آن به عنوان پایه تغذیه 5 ولت استفاده کرد. همچنین سه پایه 3.3 ولت که خروجی رگولاتور آنبرد هستند، برای تامین انرژی قطعات دیگر استفاده می شوند.
پین GND: پین های ولتاژ صفر زمین به تعداد 4 عدد بر روی برد موجود است.
پین های I2C: را برای ارتباط برد با تجهیزات جانبی، سنسورها و ماژول های با رابط I2C بکار برده می شوند.
پایه های ماژول (ESP-12E): که با پایه های کنترل ماژول ESP ارتباط دارند.
پین های SPI: در برد NodeMcu ESP8266 معمولا دو SPI به نام های SPI و HSPI موجود است. که دارای ویژگی هایی همچون 4 حالت زمانبندی انتقال فرمت SPI، بافر FIFO تا 64 بایت و تا 80MHz ساعت های تقسیم شده 80 مگاهرتزی را پیشتیبانی می کند.
پین های GPIO: که در این برد به تعداد 17 عدد است، که می توان از طریق برنامه نویسی برای عملکردهایی همچون PWM، Button، UART، I2C و IR برنامه ریزی و تخصیص داد. با در نظر گرفتن این موضوع که هر پین GPIO دیجیتال و فعال را به صورت internal pull-down/pull-up و یا بر روی high impedance تنظیم کرد. همچنین این نوع پین ها در زمانی که به عنوان پین ورودی در مدار تعریف می شوند، برای ایجاد وقفه های CPU، میتوان آنها را در مدهای edge-trigger و یا level-trigger قرار دهیم.
پین های System و یا کنترلی: به تعداد 3 عدد بر روی برد قرار گرفته است. ابتدا پین EN، که به پین فعال (Enable) معروفست و جهت فعالسازی تراشه ESP8266 و با بالا کشیدن آن فعال مورد استفاده قرار می گیرد. دومین پین به نام RST و جهت تنظیم مجدد(Reset) برد NodeMcu ESP8266 مورد استفاده است. نهایتا سومین پین به نام WAKE نامیده می شود که برای بیدار کردن تراشه ESP8266 از خواب عمیق مورد کاربرد دارد.
پین های SD card: که با نام پین های ورودی/خروجی دیجیتال امن (SDIO) شناخته می شوند؛ جهت کنترل و ارتباط مستقیم با کارت های SD کاربرد دارد. همچنین در SDIO نسخه 1.1 از 4 بیتی 25 مگاهرتزی و در نسخه 2 آن از 4 بیتی 50 مگاهرتزی پشتیبانی می شود.
پین های UART: این برد دارای دو رابط، برای برقراری ارتباطات ناهمزمان است که به UART0 و UART1 معروف هستند. و تا 4.5MB/s می تواند ارتباط برقرار کند. UART0 پین های TXD0 ،RXD0 ،RST0 ،CTS0 را جهت ارتباطات بکار می گیرد. و UART1 معمولا پین TXD1 را جهت سیگنال انتقال داده استفاده می کند. از این رو برای چاپ گزارش کارایی دارد.
پین های PWM(~): که در 4 کانال مودلاسیون پهنای پالس در پایه های D6 ،D5 ،D2 و D8 تعریف شده است و از طریق برنامه نویسی برای کنترل موتورها و LED ها مورد استفاده قرار می گیرد. محدوده فرکانس از 100Hz تا 1KHz تعریف شده است.
روش معرفی برد NodeMcu ESP8266 به محیط برنامه نویسی Arduino IDE
در این آموزشی به راحتی می توانید این میکروکنترولر کاربردی و جذاب را در محیط توسعه نرم افزاری Arduino IDE معرفی و پروژه های خود را اجرا کنید. همانند برد آردوینو UNO، ابتدا باید مراحل معرفی بسته نرم افزاری و توابع کتابخانه ای برد توسعه NodeMcu ESP8266 نیز به Arduino IDE معرفی شود. برای این کار مراحل زیر را گام به گام با هم پیش می بریم.
1- ابتدا پلتفرم نرم افزاری Arduino IDE را نصب کنید.
2- سپس باید وارد محیط Arduino IDE شوید. از منوی File گزینه Perefrences (Ctrl+Comma) را انتخاب کنید و در پنجره ای که باز می شود، بر روی سربرگ Settings کلیک کنید. در قسمت پایین بخشی به نام Additional Boards Manager URLs وجود دارد که برای معرفی آدرس کتابخانه های برد NodeMcu ESP8266 در نظر گرفته شده است و باید آدرس زیر را در آن قرار دهید. برای این کار در کنار همان فیلد بر روی دکمه سبز رنگ کلیک کنید تا زیر پنجره دیگری باز شود.
Additional Boards Manager URLs : http://arduino.esp8266.com/stable/package_esp8266com_index.json

برای این کار در کنار همان فیلد بر روی دکمه سبز رنگ کلیک کنید تا پنجره ی دیگری همانند زیر باز شود. سپس آدرس بالا را در آن قرار دهید و بر روی OK و سپس OK کلیک کنید.

3- در مرحله بعد، جهت معرفی، فعالسازی و بروزرسانی توابع کتابخانه ای برد NodeMcu ESP8266، از منوی Tools، گزینه Board و سپس زیر منوی (Ctrl+Shift+B)Boards Manager را انتخاب می کنیم. در فیلد جستجو عبارت “esp8266” را تایپ کرده و از گزینه های ظاهر شده، گزینه esp8266 by ESP8266 Community را انتخاب و بر روی آخرین نسخه آن که در حال حاضر 3.1.2 تنظیم کرده و سپس بر روی دکمه Install کلیک می کنیم تا مراحل نصب و بروزرسانی انجام شود.
4- پس از پایان مراحل نصب، به منوی Tools و سپس گزینه Board رفته و از لیست ظاهر شده، زیر منوی esp8266 را انتخاب می کنیم تا لیست بیرون رونده ای ظاهر شود. در این لیست شما می توانید، بسته به اینکه برد شما از چه ماژول استانداری پشتیبانی می کند گزینه ی مورد نظر را انتخاب کنید. در اینجا گزینه NodeMCU 1.0 ESP-12E Module مد نظر است که آن را انتخاب می کنیم.

5- پس از انتخاب برد، نیاز است Port ارتباطی شناسایی شود. بدین منظور کابل ارتباطی USB به Micro USB را به برد و هم به PC متصل می کنیم. سپس از منوی Tools، گزینه Port و سپس پورت مورد نظر فعال را انتخاب می کنیم.
نکته: در این مرحله ممکن است Port بطور پیش فرض توسط برنامه شناسایی شود. برای این منظور و اطمینان از تنظیمات سیستم عامل ویندوز، از PC وارد System Properties و سپس گزینه Device Manager می شود و پس از آن به منوی View و از لیست منو، گزینه Show Hiden Device را انتخاب می کنیم. در پنجره ظاهر شده Ports (COM & LPT) را انتخاب و از لیست مربوطه پورت مورد نظر Silicon CP210x USB to UART Bridge را انتخاب می کنیم.
6- پس از انتخاب Port، مشخص کردن فرکانس پردازشی CPU اهمیت دارد؛ که برای این منظور در برد NodeMCU 1.0 از منوی Tools، گزینه CPU Ferquency را بر روی “80MHz” تنظیم می کنیم. همچنین سرعت Upload را برای این برد، بر روی 115200 تنظیم می کنیم.
7- خسته نباشید. هم اکنون برد NodeMCU و برنامه Arduino IDE برای برنامه نویسی و اجرای پروژه های شما آمادست.
در ادامه برای اجرای دو پروژه کاربری از این برد با ما همراه باشید.
مثال ساده کاربردی : اجرای پروژه آموزشی کنترل روشنایی LED با پتانسیومتر
در این مثال از ترکیب دو ویژگی الکتریکی مودلاسیون پهنای فرکانس(PWM) در پین (19~/D2/GPIO4) و مبدل آنالوگ به دیجیتال (ADC) در پین (ADC0) استفاده می کنیم؛ تا بتوانیم جهت کنترل روشنایی LED توسط پتانسیومتر، که به عنوان یک وسیله جانبی برای Nodemcu به حساب می آید، مدار کوچکی ایجاد کنیم. شما برای این آموزش به قطعاتی همچون یک LED 5mm ،NodeMcu ESP8266، پتانسیومتر 10KΩ، مقاومت 330Ω، بریدبرد و سیم جامپر نیاز دارید. همانند شکل(5) شماتیک که در زیر آمده است، مدار را پیاده سازی می کنیم.
توجه به این نکته مهم است که وضوح ADC در برد NodeMcu ESP8266، به مقدار 10 بیت است، بدین معنی که خروجی ADC در چرخه مقداری بین 0 تا 1023 خواهد بود. و برای PWM هم همین مقدار صدق می کند.

کد Sketch در محیط Arduino IDE به شکل زیر خواهد بود.
///////////////////////////////////// WWW.IOENET.IR /////////////////////////////
///////////////////////////// NodeMcu ESP8266 اجرای پروژه آموزشی کنترل روشنایی با ////////////////////
#define analogPin A0 // ESP8266 ADC0 = A0 تعریف پایه آنالوگ
#define ledPin D2 // متصل است LED که به GPIO4 (D2)تعریف پایه
int adcValue = 0; // ADC تعریف و مقدار دهی متغیر برای ذخیره خروجی
void setup() {
pinMode(ledPin, OUTPUT); //(خروجی) LED تعیین نوع عملکرد برای پایه
}
void loop() {
adcValue = analogRead(analogPin); // خواندن مقدار ورودی آنالوگ
analogWrite(ledPin, adcValue); // PWM به عنوان ورودی برای ADC تخصیص مقادیر
delay(10);
}
////////////////////////////////// از همراهی شما متشکریم ///////////////////////و نتیجه پس از اجرای برنامه به صورت زیر خواهد شد.
مثال پیشرفته کاربردی : اجرای پروژه آموزش کنترل رله تحت وب (WEB SERVER)
اطلاعات بیشتر:
https://nodemcu.readthedocs.io/en/release

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