رفتن به محتوا

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) استفاده می‌شود.

NodeMCU Front نمای روبروی برد NodeMCU

مشخصات فنی NodeMCU DevKit 1.0 (ESP8266)

Section titled “مشخصات فنی NodeMCU DevKit 1.0 (ESP8266)”
ویژگیمشخصات
میکروکنترلرESP8266EX
معماری CPUTensilica 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
پورت USBMicro-USB (با مبدل USB-to-Serial CH340 یا CP2102)
GPIOحدود 11 پایه GPIO قابل استفاده
PWMپشتیبانی نرم‌افزاری
ADC1 کانال (10-bit, A0)
UART1 رابط 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 (بهبود یافته) است.

NodeMCU مدت کوتاهی پس از معرفی تراشه ESP8266 ایجاد شد. در تاریخ ۳۰ دسامبر ۲۰۱۳، شرکت Espressif Systems تولید ESP8266 را آغاز کرد.

پروژه NodeMCU در ۱۳ اکتبر ۲۰۱۴ شروع شد، زمانی که Hong اولین فایل مربوط به فیرموِر NodeMCU را در GitHub کامیت کرد. دو ماه بعد، پروژه گسترش یافت و یک پلتفرم متن‌باز سخت‌افزاری نیز به آن اضافه شد؛ زمانی که توسعه‌دهنده Huang R فایل‌های Gerber مربوط به یک برد ESP8266 با نام DevKit v0.9 را منتشر کرد. NodeMCU Dev Kit v0.9 schematic شماتیک مدار NodeMCU Dev Kit نسخه v0.9

در همان ماه، Tuan PM کتابخانه کلاینت MQTT را از پروژه Contiki به پلتفرم ESP8266 منتقل کرد و آن را به پروژه NodeMCU اضافه نمود. از آن زمان، NodeMCU توانست از پروتکل اینترنت اشیاء MQTT پشتیبانی کند و با استفاده از Lua به MQTT broker متصل شود.

یکی دیگر از به‌روزرسانی‌های مهم در ۳۰ ژانویه ۲۰۱۵ انجام شد؛ زمانی که Devsaurus کتابخانه u8glib را به NodeMCU پورت کرد. این قابلیت امکان کنترل آسان نمایشگرهایی مانند LCD، OLED و حتی VGA را برای NodeMCU فراهم کرد.

در تابستان ۲۰۱۵، توسعه‌دهندگان اصلی پروژه فیرموِر را رها کردند و یک گروه از مشارکت‌کنندگان مستقل مسئول ادامه توسعه شدند. تا تابستان ۲۰۱۶، NodeMCU شامل بیش از ۴۰ ماژول مختلف شده بود.

سخت‌افزار NodeMCU متن‌باز است؛ بنابراین هر کسی می‌تواند آن را ویرایش، تغییر، تولید و نسخه‌های اصلاح‌شده خود را به‌عنوان برد توسعه NodeMCU وارد بازار کند. به همین دلیل، در بازار می‌توان بردهای توسعه NodeMCU را از تولیدکنندگان مختلف مشاهده کرد، از جمله: Amica ،DOIT ،Lolin ،Wemos D1 mini ،AI-Thinker و …

فیرموِر NodeMCU را می‌توان روی تراشه ESP8266 فلش کرد. پس از انجام این کار، امکان برنامه‌نویسی دستگاه با استفاده از زبان اسکریپت‌نویسی Lua فراهم می‌شود. برنامه‌نویسی با Lua باعث می‌شود اتصال و توسعه برای ESP8266 به‌مراتب ساده‌تر از ابزارهای رسمی ارائه‌شده توسط شرکت Espressif باشد، زیرا بسیاری از پیچیدگی‌های سطح پایین سخت‌افزار را پنهان کرده و یک رابط ساده‌تر برای توسعه در اختیار برنامه‌نویس قرار می‌دهد.

با گذشت زمان و با ظهور گزینه‌های جایگزین برای برنامه‌نویسی ESP8266—به‌ویژه زبان C++ در محیط Arduino و همچنین گزینه‌هایی مانند MicroPython—علاقه به زبان Lua به‌طور قابل توجهی کاهش یافت.

اگرچه برنامه‌نویسی با Lua از برخی جنبه‌ها جذاب و ساده بود، اما این زبان به اندازه C++ و Python فراگیر و گسترده نیست. علاوه بر این، توسعه‌دهندگان هیچ‌گاه موفق نشدند آن را به‌طور کامل و پایدار روی ESP8266 تثبیت کنند. از سوی دیگر، چون Lua یک زبان تفسیرشونده (Interpreted) است و نه کامپایل‌شونده (Compiled)، از نظر کارایی و استفاده از منابع سخت‌افزاری عملکرد ضعیف‌تری دارد.