NodeMCU
NodeMCU یک پلتفرم اینترنت اشیاء (IoT) متنباز و کمهزینه است. این پلتفرم در ابتدا شامل یک فیرموِر بود که روی تراشه Wi-Fi مدل ESP8266 از شرکت Espressif Systems اجرا میشد و سختافزار آن بر پایه ماژول ESP-12 ساخته شده بود.
فیرموِر از زبان اسکریپتنویسی Lua استفاده میکند. این فیرموِر بر پایه پروژه متنباز eLua توسعه یافته و بر روی Espressif Non-OS SDK برای تراشه ESP8266 ساخته شده است. همچنین از چندین پروژه متنباز دیگر مانند lua-cjson و SPIFFS (یک فایلسیستم فلش برای کنترلرهای تعبیهشده) استفاده میکند.
طراحی اولیه این سیستم بر پایه ماژول ESP-12 از خانواده ESP8266 انجام شده است؛ تراشهای که یک سیستم روی چیپ (SoC) Wifi با هسته Tensilica Xtensa LX106 است و بهطور گسترده در کاربردهای اینترنت اشیاء (IoT) استفاده میشود.
تصاویر
Section titled “تصاویر”


فایل ها
Section titled “فایل ها”مشخصات فنی
Section titled “مشخصات فنی”مشخصات فنی NodeMCU DevKit 1.0 (ESP8266)
Section titled “مشخصات فنی NodeMCU DevKit 1.0 (ESP8266)”| ویژگی | مشخصات |
|---|---|
| میکروکنترلر | ESP8266EX |
| معماری CPU | Tensilica L106 32-bit |
| فرکانس کاری | 80 MHz (تا 160 MHz قابل تنظیم) |
| حافظه RAM | حدود 50 KB قابل استفاده |
| حافظه فلش | معمولاً 4MB (ماژول ESP-12E/F) |
| وایفای | IEEE 802.11 b/g/n (2.4 GHz) |
| بلوتوث | ندارد |
| ولتاژ کاری | 3.0V تا 3.6V (معمولاً 3.3V) |
| ولتاژ ورودی VIN | حدود 5V از طریق USB |
| پورت USB | Micro-USB (با مبدل USB-to-Serial CH340 یا CP2102) |
| GPIO | حدود 11 پایه GPIO قابل استفاده |
| PWM | پشتیبانی نرمافزاری |
| ADC | 1 کانال (10-bit, A0) |
| UART | 1 رابط UART |
| SPI | دارد |
| I2C | نرمافزاری (Software I2C) |
| I2S | پشتیبانی محدود |
| پروتکلهای شبکه | TCP/IP, HTTP, MQTT |
| سیستمعامل/فریمور | NodeMCU (Lua), Arduino Core, MicroPython |
| ابعاد | حدود 58mm × 31mm |
| نوع برد | Development Board (DIP-style breadboard friendly) |
| ماژول اصلی | ESP-12E / ESP-12F |
| ویژگی خاص | WiFi داخلی + متنباز + مناسب IoT |
دو نسخه از NodeMCU در دسترس است: نسخههای 0.9 و 1.0.
در نسخه 0.9 از ماژول ESP-12 استفاده شده است، در حالی که نسخه 1.0 از ماژول ESP-12E بهره میبرد که حرف E در آن مخفف واژه Enhanced (بهبود یافته) است.
تاریخچه
Section titled “تاریخچه”NodeMCU مدت کوتاهی پس از معرفی تراشه ESP8266 ایجاد شد. در تاریخ ۳۰ دسامبر ۲۰۱۳، شرکت Espressif Systems تولید ESP8266 را آغاز کرد.
پروژه NodeMCU در ۱۳ اکتبر ۲۰۱۴ شروع شد، زمانی که Hong اولین فایل مربوط به فیرموِر NodeMCU را در GitHub کامیت کرد. دو ماه بعد، پروژه گسترش یافت و یک پلتفرم متنباز سختافزاری نیز به آن اضافه شد؛ زمانی که توسعهدهنده Huang R فایلهای Gerber مربوط به یک برد ESP8266 با نام DevKit v0.9 را منتشر کرد.

در همان ماه، Tuan PM کتابخانه کلاینت MQTT را از پروژه Contiki به پلتفرم ESP8266 منتقل کرد و آن را به پروژه NodeMCU اضافه نمود. از آن زمان، NodeMCU توانست از پروتکل اینترنت اشیاء MQTT پشتیبانی کند و با استفاده از Lua به MQTT broker متصل شود.
یکی دیگر از بهروزرسانیهای مهم در ۳۰ ژانویه ۲۰۱۵ انجام شد؛ زمانی که Devsaurus کتابخانه u8glib را به NodeMCU پورت کرد. این قابلیت امکان کنترل آسان نمایشگرهایی مانند LCD، OLED و حتی VGA را برای NodeMCU فراهم کرد.
در تابستان ۲۰۱۵، توسعهدهندگان اصلی پروژه فیرموِر را رها کردند و یک گروه از مشارکتکنندگان مستقل مسئول ادامه توسعه شدند. تا تابستان ۲۰۱۶، NodeMCU شامل بیش از ۴۰ ماژول مختلف شده بود.
در بازار
Section titled “در بازار”سختافزار NodeMCU متنباز است؛ بنابراین هر کسی میتواند آن را ویرایش، تغییر، تولید و نسخههای اصلاحشده خود را بهعنوان برد توسعه NodeMCU وارد بازار کند.
به همین دلیل، در بازار میتوان بردهای توسعه NodeMCU را از تولیدکنندگان مختلف مشاهده کرد، از جمله: Amica ،DOIT ،Lolin ،Wemos D1 mini ،AI-Thinker و …
برنامه نویسی
Section titled “برنامه نویسی”فیرموِر NodeMCU را میتوان روی تراشه ESP8266 فلش کرد. پس از انجام این کار، امکان برنامهنویسی دستگاه با استفاده از زبان اسکریپتنویسی Lua فراهم میشود.
برنامهنویسی با Lua باعث میشود اتصال و توسعه برای ESP8266 بهمراتب سادهتر از ابزارهای رسمی ارائهشده توسط شرکت Espressif باشد، زیرا بسیاری از پیچیدگیهای سطح پایین سختافزار را پنهان کرده و یک رابط سادهتر برای توسعه در اختیار برنامهنویس قرار میدهد.
با گذشت زمان و با ظهور گزینههای جایگزین برای برنامهنویسی ESP8266—بهویژه زبان C++ در محیط Arduino و همچنین گزینههایی مانند MicroPython—علاقه به زبان Lua بهطور قابل توجهی کاهش یافت.
اگرچه برنامهنویسی با Lua از برخی جنبهها جذاب و ساده بود، اما این زبان به اندازه C++ و Python فراگیر و گسترده نیست. علاوه بر این، توسعهدهندگان هیچگاه موفق نشدند آن را بهطور کامل و پایدار روی ESP8266 تثبیت کنند. از سوی دیگر، چون Lua یک زبان تفسیرشونده (Interpreted) است و نه کامپایلشونده (Compiled)، از نظر کارایی و استفاده از منابع سختافزاری عملکرد ضعیفتری دارد.