پس از ساخت اولین برد های منبع باز امبدد ، مدل های مختلفی از برد های اپن سورس توسط شرکت های مختلف به بازار عرضه شد . این برد ها به اندازه ای تنوع پیدا کردن که میشه گفت تقریبا برای هر کاربردی یک برد طراحی شده است . در این بین آردوینو UNO یکی از محبوب ترین برد های اپن سورس به عمل می آید . بردی ساده که تقریبا هر مثال و برنامه آردونیو را می توان با آن اجرا کرد . عدم پشتیبانی آردوینو از اینترنت اشیا نقطه ضعفی برای این برد ها به حساب می آمد . در این بین برد های NodeMCU برای جبران این مشکل و همچنین جایگزینی ارزان قیمت و قوی برای آردوینو طراحی شدند . هرچند که در ابتدا برد های NodeMCU با اهداف دیگری ساخته شد بود و در نهایت با عرضه SDK های آردوینو IDE از طرف Espressif رقابت این برد با برد های آردوینو شروع شد . اما NodeMCU چیست ؟
NodeMCU یک برد کوچک بر پایه ماژول های ESP8266 MOD است . در این برد تمامی پین های مورد نیاز ماژول ESP8266 در اختیار کاربر قرار دارند . اصلی ترین مشخصه برد های NodeMCU ماژول ESP8266 MOD آن ها است . ماژول ESP8266 MOD که در مدل های 12E و 12F ساخته می شود یک ماژول نصب سزحی بر پای SoC قوی ESP8266EX می باشد . ماژول ESP8266 از پروتکل های IEEE802.11 و همچنین پرتکل های TCP\IP پشتیبانی میکند . توانایی های زیاد ESP8266 و قابلیت ارتباط WiFi آن ، این برد را به یک پلتفرم در جهت ساخت پروژه های مبتنی بر IoT تبدیل کرده است .
در تصویر زیر پین های برد NodeMCU نشان داده شده اند :
هر برد NodeMCU دو قسمت اصلی دارد که شامل ماژول ESP8266 MOD و بخش دیگر شامل یک مبدل USB-TTL است . در داخل ماژول های ESP8266 MOD یک چیپ ESP8266EX در کنار یک چیپ حافظه Flash وجود دارد . ESP8266EX فاقد حافظه داخلی برای برنامه کاربر است و برنامه کاربر را از طریق حافظه Flash خرجی اجرا خواهد کرد . در ماژول های ES8266 MOD از یک چیپ 4 مگابایتی استفاده شده است که می با پروگزام کردن برد برنامه در این قسمت ذخیره می شود . به طور معمول کلیه ماژول های ESP8266 دارای بوت لودر اختصاصیESPressif هستند . این بوت لودر بخش های ابتدایی فضای Flash را اشغال میکند . بوت لودر ESPressif کمی فراتر از یک بوت لودر معمولی است و توانایی کنترل عملکرد قسمت های مختلف SoC را دارد . می توانید بوت لودر های دیگر را نیز بر روی این برد پروگرام کنید . پس از روشن شدن برد ، واحد UART0 در بادریت 7802 پیغام های بوت لودر راجب به تغذیه ، حجم حافظه و… را چاپ کرده و سپس بادریت آن به 115200 تغییر می یابد . برای پروگرام کردن برد های مبتنی بر ESP8266 از ارتباط UART استفاده می شود که در این حالت ESP8266 دیتا را از واحد UART0 گرفته و آن را در حافظه Flash خارجی می نویسد . البته می توانید از پروگرام های J Tag معماری ARM ، مانند پروگرامر J LINK نیز برای پروگرام مردن این برد استفاده کنید که در این حالت پروگرم کردن پروسه بسیار پیچیده ای خواهد داشد .
مشخصات برد NodeMCU :
این برد به دلیل وجود ESP8266 قابلیت های زیادی که مشخصات کلی آن به صورت زیر است :
- 128 کیلوبایت RAM
- 4 مگابایت حافظه برنامه
- پورت میکرو USB جهت اتصال به کامپیوتر و عیب یابی و برنامه ریزی
- فرکانس کاری 160MHz
- پشتیبانی از IEEE802.11 ، TCP/IP و ارتباط های P2P
- دارای واحد های I2C ، UART ، SPI ، ADC و…
- دارای آنتن PCB و عدم نیاز به آنتن خارجی
- نصب راحت برد بر روی برد بورد
- دارای LED نشانگر تغذیه و User LED
- انتخاب مد های پروگرام و اجرا از طریق یک کلید
راه اندازی برد NodeMCU در آردوینو IDE :
خوشبختانه با ارائه SDK های ESP8266 برای آردوینو IDE شما به راحتی می توانید این برد را در محیط آردوینو IDE پروگرام کنید . ابتدا باید درایور این برد را بر اساس ورژن برد و همچنین نوع مبدل USB-TTL برد نصب کنید . می توانید از این لینک درایور های لازم را دانلود و نصب کنید .
پس از نصب درایور مبدل برد باید SDK های لازم برای آردوینو IDE را نصب کنید . برای این کار در برنامه آردوینو IDE ابتدا از منوی فایل گزینه Preferences را انتخاب کنید :
سپس در قسمت نشان داده شده در تصویر پایین ، متن زیر را کپی کنید :
http://arduino.esp8266.com/stable/package_esp8266com_index.json
سپس از منوی Tools قسمت Board گزینه Board manager را انتخاب کرده و برد Esp را نصب کنید :
پس از نصب بورد های ESP یک بار آردوینو IDE را ببندید و سپس باز کنید .
برای برنامه نویسی برد های NodeMCU کافیست از همان منوی Bord گزینه NodeMCU را انتخاب کنید ( به ورژن انتخابی دقت کنید باید مطابق با ورژن برد باشد ).
کد های زیر را برای تست درستی بالا بر روی برد خود پروگرام کنید . برای اینکار با نگه داشتن دکمه Boot (یا Flash ) را نگه داشته و همزمان دکمه ریست را یبار بزنید . پس از این کار می توانید برد را پروگرام کرده و در آخر یک بار دکمه ریست را فشار دهید .
/* ESP8266 Blink by Idayu Sabri Blink LED Using ESP8266 NodeMCU Lua WiFi Note that this sketch uses BUILTIN_LED to find the pin with the internal LED */ #define BUILTIN_LED 5 void setup() { pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output } // the loop function runs over and over again forever void loop() { digitalWrite(BUILTIN_LED, LOW); // Turn the LED on (Note that LOW is the voltage level // but actually the LED is on; this is because // it is acive low on the ESP-01) delay(1000); // Wait for a second digitalWrite(BUILTIN_LED, HIGH); // Turn the LED off by making the voltage HIGH delay(1000); // Wait for two seconds (to demonstrate the active low LED) }