معرفی برد توسعه NodeMcu (کنترل چراغ چشمک‌زن)

الکترونیک و رباتیک -> ماژول ها و سنسور ها 2959 2 کاربر آکادمی پارتینه

معرفی برد توسعه ESP8266

بورد توسعه ESP8266 را معمولا به عنوان ماژول WIFI می‌شناسند که در واقع یک نوع میکروکنترلر محسوب می‌شود. ESP8266 نام میکروکنترلری است که توسط شرکتی مستقر در شانگهای به نام Espressif ساخته شده است. این میکروکنترلر توانایی انجام فعالیت‌های مرتبط با WIFI را داشته، از این رو به صورت گسترده به عنوان یک ماژول WIFI مورد استفاده قرار می‌گیرد. انواع مختلفی از ماژول ESP8266 شامل ESP8266-01 تا ESP8266-12 موجود است. مدلی که در این آموزش مورد استفاده قرار گرفته  ESP8266-12 است. با این حال تمام ماژول‌های ESP فقط یک نوع پردازنده ESP دارند. تفاوت عمده آنها در نوع بورد راه‌انداز است. به این صورت که بورد راه انداز ESP8266-01  تنها دو پین GPIO خواهد داشت، در حالی که ESP-12 دارای 16 پین GPIO است. بسیاری از تجهیزات اطراف ما به خودی خود نمی‌توانند به اینترنت متصل شوند. با وجود این تراشه چنین تجهیزاتی قادر خواهند بود که به اینترنت متصل شده و به یک دستگاه قابل استفاده در سیستم‌های اینترنت اشیا (IoT) تبدیل شوند. 

NodeMCU چیست؟
تمامی ماژول‌های وای‌فایESP برای راه‌اندازی نیاز به تغذیه 3.3 ولت و برای ارتباط با کامپیوتر نیاز به یک مبدل USB به سریال دارند. در برد توسعه NodeMcu همه قطعات و وسایل مورد نیاز برای راه اندازی ماژول وای فای تعبیه شده است. اما لزوم تولید NodeMcu به اینجا ختم نمی‌شود. برد توسعه  NodeMCU به دلیل داشتن پلت‌فرم متن‌باز، نوعی از بوردهای امبدد در زمینه اینترنت اشیا به شمار می‌رود که می توان آن را با انواع اسکریپت های برنامه نویسی نظیر Lua ، MicroPython استفاده کرد.

در این آموزش ابتدا با ماژول Wi-Fi ESP-12 و نحوه برنامه‌ریزی آن با استفاده از کامپایلر آردوینو آشنا می‌شویم. در نهایت یک نشانگر LED را با ESP8266-12 کنترل خواهیم کرد.

 

مواد اولیه :
# عنوان تعداد لینک
0 NodeMCU ESP-12 1 لینک خرید
1 برد بورد 1 لینک خرید
2 سیم جامپر 1 لینک خرید

مرحله 1 : اتصالات و دیاگرام مداری

NodeMCU ESP-12

NodeMCU دارای 16 پین GPIO است که در دیاگرام نشان داده شده است. از این پین‌ها می توان برای کنترل سایر دستگاه‌های جانبی مانند سنسورها ، LED ها ، سوئیچ‌ها و غیره استفاده کرد. همچنین به عنوان پین های PWM نیز قابل استفاده هستند.

پین ADC(مبدل آنالوگ به دیجیتال ): NodeMCU دارای یک کانال ADC است که از طریق پین A0 قابل دسترسی است.

پین SPI : چهار پین برای برقراری ارتباط توسط پروتکل SPI موجود است.

پین I2C : این میکروکنترلر دارای قابلیت برقراری ارتباط با پروتکل I2C است که به دلیل استفاده داخلی از این پین‌ها ، باید دریابید که کدام پین ها به این پروتکل اختصاص داده شده‌اند.

پین UART: دارای دو رابط UART است. از آنجا که از RXD0 و TXD0 برای پروگرام کردن بورد استفاده می‌شود، قابلیت اتصال به تجهیز خارجی در آنها نیست. بنابراین می توان از RXD1 و TXD1 استفاده کرد.

 

مرحله 2 : کدنویسی و تنظیمات نرم‌افزاری

با طی کردن مراحل زیر قادر خواهید بود کامپایلر آردوینو IDE را برای تنظیم و برنامه‌ریزی این ماژول و در نهایت ایجاد یک پروژه LED چشمک زن آماده کنید. 

گام اول: کامپایلر آردوینو IDE را نصب کنید. ( نسخه  1.6.5 )

گام دوم : وارد مسیرFile -> Preferences شده و در قسمت Additional Boards Manager URLs لینک زیر را کپی کنید.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

گام سوم: از منوی Tools گزینه Board را انتخاب کرده و روی Boards Manager کلیک کنید تا پنجره مربوطه باز شود. در بخش جستجو عبارت ESP8266 را تایپ کرده و آخرین نسخه را نصب نمایید. نرم افزار شروع به دانلود و نصب پکیج‌های مربوطه می‌کند که ممکن است مدتی طول بکشد.

گام چهارم: حال وارد مسیر Tools -> Boards -> NodeMCU طی کنید.

برای برنامه ریزی این بورد به هیچ نوع پروگرامری نیاز نیست و مانند آردوینو از طریق یک کابل USB پروگرام می شود.

اکنون برنامه blink را با استفاده از کامپایلر آردوینو IDE بر روی NodeMCU آپلود کنید. پین D0 دارای LED داخلی است ، بنابراین می توان از تابع LED_BUILTIN برای گرفتن خروجی در D0 استفاده کرد یا می توان با مشخص کردن D1 ، D2 و ...از هر GPIO دیگری استفاده کرد.

void setup() {
  pinMode(D0, OUTPUT);    

void loop() {
  digitalWrite(D0, LOW);   // Turn the LED on (Note that LOW is the voltage level
                                    // but actually the LED is on; this is because 
                                    // it is active low on the ESP-01)
  delay(1000);                      // Wait for a second
  digitalWrite(D0, HIGH);  // Turn the LED off by making the voltage HIGH
  delay(2000);                      // Wait for two seconds (to demonstrate the active low LED)
}