NodeMCU یک فریمور منبعباز (open source) مبتنی بر زبان برنامهنویسی LUA است که بر پایهی چیپ وایفای ESP8266 توسعه داده شده است. به طور دقیقتر میتوان اینطور گفت که با در نظر گرفتن قابلیتهایی که تراشهی ESP8266 دارد، NodeMCU دارای بورد توسعهی ESP8266 است. تصویر این بورد را در اینجا میتوانید ببینید.
از آنجا که این فریمور یک فریمور منبعباز است، دسترسی به طراحی سختافزاری آن برای همه امکانپذیر بوده و امکان تغییر، اصلاح و استفادهی عمومی دارد.
در داخل این بورد توسعه یک چیپ وایفای ESP8266 وجود دارد. این چیپ یکی از تراشههای ارزان قیمت وایفای است که توسط Espressif Systems و با پروتکل TCP/IP تولید شده است. اگر مایل بودید در مورد این تراشه اطلاعات بیشتری داشته باشید؛ به این لینکهای زیر مراجعه کنید.
نسخهی دوم این بورد نیز در بازارها عرضه شده است که تصویر آن را در ادامه میبینید. این بورد معمولا دارای PCB مشکی رنگ است.
و البته میتوانید در سایت NodeMCU Development Boards، وضعیت نسخههایی از این بورد که در بازار موجود هستند را ببینید.
این بورد دارای پایههای آنالوگ (A0) و دیجیتال (D0-D8) است و از پروتکلهای ارتباط سریال مانند UART ،SPI ،I2C و … نیز پشتیبانی میکند. به این ترتیب میتوانیم با ابزارهایی مانند نمایشگرهایی LCD که مجهز به I2C هستند به آن متصل شویم و یا همچنین با ابزارهای دیگری مانند مگنتومتر HMC5883، ژیرومتر و شتابسنج MPU-6050، چیپهای RTC، ماژولهای GPS، صفحه نمایشگرهای لمسی، کارت SDها و …
طرز کار NodeMCU
ابتدا یک بار دیگر با هم مرور کنیم که در این بورد با چه چیزهایی روبه رو هستیم، قابلیت اتصال وایفای، پایههای آنالوگ و دیجیتال و پروتکل ارتباط سریال.
اگر بخواهیم از این بورد برای کاربردهای اینترنت اشیا استفاده کنیم، ابتدا باید بدانیم که چگونه میتوان فریمور NodeMCU را بر روی بورد توسعهی آن دانلود کرد و اینکه با توجه به کاربرد مورد نیاز ما، این فریمور در کدام بخش قرار میگیرد. به این منظور میتوان از تنظیمات آمادهای که با توجه به کاربردهای مختلف برای این فریمور وجود دارد استفاده کنیم. برای کسب اطلاعات بیشتر در مورد اینکه فریمور و تنظیمات مورد نیازتان را از کجا دانلود کنید و چگونه با آنها کار کنید، به آموزشهای مربوط به شروع به کار با NodeMCU مراجعه کنید.
چگونه برای NodeMCU کد بنویسیم؟
پس از انجام مراحل و تنظیمات اولیه، در این مرحله باید با IDE موجود برای کار با این بورد آشنا شویم. دو IDE وجود دارند که میتوانیم از هر کدام از آنها استفاده کنیم.
- ESPlorer IDE
معمولا برای کدنویسی NodeMCU، از اسکریپتهای Lua استفاده میشود. اگر تا به حال با Lua آشنا نشدهاید، معرفی مختصر آن به این صورت است: یک زبان اسکریپتی سبک و امبدد (embedd) که بر مبنای زبان برنامهنویسی C نوشته شده است.
اطلاعات بیشتر دربارهی اینکه چگونه میتوانیم اسکریپتهای مناسب برای NodeMCU بنویسیم در آموزشهای مکمل برای این موضوع ارائه خواهند شد.
- Arduino IDE
تعجب نکنید، بله همان IDE معروف آردوینو که ممکن است پیش از این هم با آن کار کرده باشید. با کمک این محیط توسعه میتوان NodeMCU را نیز توسعه داد. بنابراین اگر شما از قبل یک آردوینو باز باشید، زحمت آموختن روشهای اسکریپتنویسی Lua از دوشتان برداشته میشود و میتوانید به راحتی با همان دانش قبلیتان از NodeMCU نیز استفاده کنید.
اطلاعات بیشتر در مورد روش کار با Arduino IDE برای NodeMCU را نیز به طور مفصل در آموزشهای مکمل برای شما ارائه خواهیم نمود.
اما بد نیست در همین جلسه به طور مختصر نگاهی هم به تفاوت استفاده از این دو محیط توسعه برای NodeMCU داشته باشیم.
تفاوتهای Arduino IDE و ESPlorer IDE
تفاوت اصلی این دو در زبان برنامهنویسیای است که برای کار کردن با هر کدام باید بدانید. برای Arduino IDE این زبان C یا ++C است و برای ESPlorer این زبان Lua است. پس تفاوت اصلی در کار کردن یا کار نکردن با یک زبان احتمالا جدید به نام Lua است. اما مسئلهای که وجود دارد این است که بورد NodeMCU اساسا مبتنی بر Lua ساخته شده است و کامپایلر آن اسکریپتهای Lua را بسیار راحتتر تفسیر میکند. زمانی که شما از یک اسکریپ Lua برای ارتباط با این بورد استفاده میکنید، دستورات آن اسکریپت به صورت متوالی اجرا خواهند شد و نیازی به ساختن فایل باینری از کدها وجود ندارد. خود دستورات مستقیما اجرا میشوند.
اما زمانی که کدی را در Arduino نوشته و کامپایل میکنیم، ESP8266 برای فهم این کدها ابتدا باید از روی آنها یک فایل باینری تولید کند. این فایل پس از آپلود شدن روی NodeMCU تمام فایلهای قبلی را فلش میکند. به همین علت اگر NodeMCU را با Arduino فلش کنیم دیگر امکان ارسال اسکریپتهای Lua به آن وجود ندارد. یعنی پس از آپلود شدن کدهای NodeMCU ،Arduino دیگر مفسر Lua نخواهد بود و نمی تواند هیچ اسکریپتی را که با Lua نوشته شده باشد بخواند. برای آنکه بتوانیم این قابلیت را به آن بازگردانیم، باید فریمور آن را فلش و مجددا بارگزاری کنیم.
نکتهی دیگری که میتوان نتیجه گرفت این است که زمانی که از Arduino برای کار کردن با این بورد استفاده میکنیم، به علت این فرآیند تبدیل و تفسیر، نسبت به ESPlorer زمان بیشتری طول خواهد کشید.
- منبع: ترجمه از سایت electronicwings.com
مقاله مفید: بهترین پلتفرم های سخت افزاری برای استفاده در اینترنت اشیا (IoT)
اگر آموزش «آشنایی با بورد NodeMCU» براتون مفید واقع شده ما را نیز دعا کنید و اگر خواستین میتوانید از محتوای رایگان آموزشی حمایت مالی کنید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
با سلام ایا میشه با زبان cبه صورت مستقیم پروگرامش کرد که تسلط کافی روی حافظه داشته باشیم و بتونیم دیتاهای تبادل شده رو روی میکرو منتقل کنیم؟اگر ممکن هست چگونه؟