مقدمه
در آموزش قبلی که با عنوان آموزش کامل راه اندازی ارتباط وای فای با ESP8266 داشتیم ، به معرفی و راه اندازی ماژول ESP-01 و ESP-12E در نرم افزار Codevision و زبان برنامه نویسی C پرداختیم و برای استفاده راحت تر آن هدر فایل استانداردی نیز نوشتیم که در >> این لینک << قابل مشاهده می باشد. در این آموزش به راه اندازی ارتباط وای فای با استفاده از برد توسعه NodeMcu در نرم افزار آردوینو خواهیم پرداخت. برد توسعه NodeMcu دارای یکی از ماژول های معروف و پر کاربرد با تکنولوژی WiFi می باشد که در بسیاری از پروژه های الکترونیکی که نیاز به اتصال به شبکه اینترنت دارند مورد استفاده قرار می گیرد. توسط این ماژول می توان یک سرور اینترنتی راه اندازی کرده و با انواع وسایل الکترونیکی نظیر موبایل، کامپیوتر، لپتاب و حتی ربات تلگرام ارتباط برقرار کرد. همچنین این ماژول به علت کوچک بودن می تواند در کاربرد های اینترنت اشیاء نیز به کار گرفته شود. در بخش اول این آموزش به طور کامل نحوه راه اندازی برد توسعه NodeMcu را بیان خواهیم کرد.
تکنولوژی WiFi چیست؟
عبارت WiFi که مخفف Wireless Fidelity می باشد به نوعی تکنولوژی ارتباط بدون سیم اطلاق می شود که در شبکه های محلی بدون سیم ( Wireless Local Area Network ) مورد استفاده قرار می گیرد. در قدیم تنها راه اتصال رایانه ها به یکدیگر استفاده از کابل شبکه بود که علاوه بر زحمات زیاد، محدودیت های فیزیکی زیادی برای کاربران ایجاد می کرد اما به وسیله فناوری Wi-Fi می توان رایانه ها و دیگر دستگاه های دیجیتالی، مثل تلفن همراه، تبلت، دوربین دیجیتال، تلویزیون، چاپگر، و … را بدون سیم به یکدیگر متصل کرد و یک شبکه بی سیم ایجاد کرد. ارتباط وای فای بسیار شبیه بلوتوث می باشد اما از نظر گستره مورد پوشش ، ارتباط وای فای قوی تر از ارتباط بلوتوث می باشد. همچنین استانداردهای مورد استفاده در Wifi و bluetooth و نحوه عملکرد کلی آن دو با هم متفاوت می باشند. بلوتوث و وای فای استانداردهای رمز نگاری متفاوتی نیز دارند و هر کدام از آن ها با الگوریتم های رمزنگاری متفاوتی ایمن می شود. وای فای در پایین ترین لایه عملکرد ( physical layer ) از استاندارد بدون سیم IEEE 802.11 استفاده می کند. در شکل زیر انواع استانداردهای فیزیکی وای فای و گستره پوشش هر یک از آن ها را مشاهده می کنید. استاندارد IEEE 802.11 نسخه های b ، g و n که در فرکانس 2.4 گیگاهرتز می باشند بیشترین کاربرد را در سیستم های تجاری و منازل دارند. ماژول NodeMcu نیز از این سه استاندارد پشتیبانی می کند. برای درک بهتر موضوع توصیه می شود مقاله آشنایی با اصول و مبانی انواع شبکه های مبتنی بر TCP/IP را مطالعه نمایید.
معرفی ماژول های وای فای سری ESP-XX
ماژول های ESP-XX نام یک سری از ماژول های وای فای ساخت شرکت چینی Al-thinker می باشد که به علت کوچک بودن و کم هزینه بودن ( تقریبا 2 دلار ) به بسیاری از پروژه های میکروکنترلری با کاربردهای مختلف از جمله در پروژه های اینترنت اشیاء راه پیدا کرده است. معروف ترین و پرکاربردترین این ماژول ها ، نسخه دوازدهم آن یعنی ESP-12 می باشد که مدتی بعد از ارائه آن ، نسخه های اصلاح شده این ماژول تحت عنوان ESP-12E و ESP-12F نیز ساخته و روانه بازار شد. در شکل زیر انواع مدل های ESP-XX ساخته شده را مشاهده می کنید.
در ساخت همه این ماژول ها از یک چیپ یکسان به نام ESP8266EX ساخت شرکت چینی Espressif System استفاده شده است. این چیپ در واقع یک پردازنده 32 بیتی RISC با توان مصرفی بسیار پایین و سرعت 180 مگاهرتز می باشد. روی این پردازنده از یک سیستم عامل بی درنگ RTOS با پشتیبانی کامل از پروتکل WiFi قرار دارد که در مجموع 20 درصد توان آن را اشغال می کند و در نتیجه 80 درصد دیگر توان این چیپ میتواند برای برنامه نویسی توسط کاربر استفاده شود. در شکل زیر چیپ ESP8266EX را مشاهده می کنید.
همانطور که مشاهده می کنید در برخی از ماژول های ESP-XX هیچ پوششی وجود ندارد و چیپ ESP8266EX روی آن مشخص است به این ماژول ها بدون شیلد گفته می شود. شیلد فلزی رسانا است که از تاثیر گذاشتن نویز روی چیپ ها جلوگیری می کند و در نتیجه ماژول پایدارتر شده و عملکرد بهتری از خود نشان می دهد. ماژول های ESP-12 ، ESP-12E و ESP-12F هر سه دارای شیلد هستند اما تفاوت های جزئی با هم دارند. یکی از این تفاوت ها بهبود آنتن ESP-12F نسبت به دو ماژول دیگر است. برای خرید این ماژول ها به تنهایی میتوانید به >> این لینک << در فروشگاه الکترو ولت مراجعه نمایید.
برد توسعه NodeMcu چیست؟
تمامی ماژول های وای فای ESP-XX برای راه اندازی نیاز به تغذیه 3.3 ولت و برای ارتباط با کامپیوتر نیاز به یک مبدل USB به سریال دارند. در برد توسعه NodeMcu همه قطعات و وسایل مورد نیاز برای راه اندازی ماژول وای فای تعبیه شده است. اما لزوم تولید NodeMcu به اینجا ختم نمی شود. برد توسعه NodeMCU به علت firmware خاص طراحی شده در واقع نوعی از بوردهای امبدد (Embedded) در زمینه اینترنت اشیا به شمار می رود که می توان آن را با انواع اسکریپت های برنامه نویسی نظیر Lua ، MicroPython به کار گرفت. همچنین قرار گرفتن بوت لودر آردوینو ( Arduino Boatloader ) درون چیپ ESP8266EX باعث شده است تا برد توسعه NodeMcu را بتوان نوعی شیلد آردوینو ( Arduino Sheild ) تلقی کرده که با نرم افزار Arduino IDE ( نرم افزار برنامه نویسی انواع بوردهای آردوینو ) قابل برنامه ریزی است.
برد توسعه NodeMcu در سه نسخه زیر تولید شده است :
- نسخه اول ( سال 2014 ) یا ورژن 0.9 که در آن از ماژول ESP-12 استفاده شده است.
- نسخه دوم یا ورژن 1 که در آن از ماژول ESP-12E استفاده شده است.
- نسخه سوم یا همان ورژن 1 که در آن از ماژول ESP-12F استفاده شده است.
در کل تفاوت های کمی بین این سه نسخه وجود دارد که شامل نوع ماژول ESP و پایه های بیرون آمده از برد توسعه می باشد اما اکنون نسخه 3 این ماژول وجود دارد و نسخه های قبلی کمتر یافت می شود. در شکل زیر هر دو نسخه 0.9 و 1 را مشاهده می کنید.
از آن جایی که این برد اوپن سورس بوده ، شرکت های مختلفی اقدام به ساخت آن نموده اند که مهمترین آن ها LoLin و Amica می باشند که هر دو آن ها NodeMcu می باشند اما تفاوت های جزئی با هم دارند. یکی از این تفاوت ها ابعاد آن می باشد که NodeMcu Amica کوچکتر از NodeMcu LoLin می باشد و برای کاربردهای با ابعاد کوچک مناسب تر است. تفاوت دیگری که در بردهای شرکت های مختلف دیده می شود ، نوع آی سی مبدل USB به سریال آن است که در برند Amica از آی سی CP2102 و در برد LoLin از آی سی CH340 استفاده شده است. به علت اینکه آی سی CH340 آی سی ارزان تری می باشد ، بردهای توسعه NodeMcu با برند LoLin ارزان تر از دیگر برند می باشد. در شکل زیر هر دو برد توسعه NodeMcu را با برندهای LoLin و Amica از زاویه جلو و پشت مشاهده می کنید. هر دو این ماژول ها برای کار مناسب بوده و هیچ کدام به جز تفاوت های گفته شده مزیت یا برتری خاصی نسبت به دیگری ندارد. در ادامه با برد توسعه LoLin بیشتر آشنا خواهید شد.
لینک خرید برد توسعه NodeMCU LoLin V3 از فروشگاه الکترو ولت
پایه های بورد توسعه NodeMcu LoLin V3
همانطور که در شکل فوق مشاهده می کنید ، D0 تا D8 پایه های GPIO ( مخفف General Purpose Input/Output به معنی ورودی/خروجی همه منظوره ) هستند. اما این اعداد فقط نامگذاری بورد توسعه NodeMcu می باشد و در هنگام برنامه نویسی این اعداد مورد استفاده قرار نمی گیرد بلکه اعدادی که جلوی آن نوشته است ( مثلا GPIO16 برای D0 ) برای برنامه نویسی مورد استفاده قرار می گیرد. این اعداد همان پایه های ماژول ESP8266 می باشند که در شکل زیر این اعداد را مشاهده می کنید.
پایه های D9 و D10 به ترتیب RX و TX هستند که برای ارتباط با کامپیوتر یا میکروکنترلر از آن استفاده می شود. هر چند که این پایه ها میتواند GPIO نیز باشد اما در اکثر پروژه ها استفاده از 9 پایه D) تا D8 کافی است و این پایه ها برای RX و TX استفاده می شود.
نکته : پایه D4 به یک LED آبی رنگ روی برد توسعه NodeMcu متصل شده است که در هنگام پروگرام کردن روشن و خاموش می شود. بنابراین بهتر است زمان پروگرام کردن به این پایه وسیله ای متصل نباشد.
روش های تغذیه بورد توسعه NodeMcu LoLin V3
پایه های مربوط به تغذیه بورد را در شکل زیر مشاهده می کنید.
برای تغذیه این بورد روش های راحتی وجود دارد که عبارت است از :
1- اتصال به کامپیوتر و گرفتن تغذیه از پورت Micro USB : ای روش برای زمانی که بورد را پروگرام می کنید به کار می رود اما در هنگام استفاده درون مدار نمیتواند استفاده شود.
2- اتصال ولتاژ رگوله شده 3.3 ولت : در این روش از یک رگولاتور 3.3 ولت خارجی برای تغذیه ماژول ESP8266 استفاده می شود.
3- اتصال ولتاژهای 5 تا 20 ولت : در این روش از آداپتور یا باتری های کتابی برای تغذیه بورد میتوان استفاده کرد.
تذکر : رگولاتوری که روی برد توسعه NodeMcu قرار داده شده است میتواند حداکثر تا 20 ولت ورودی را تحمل کند و خروجی 3.3 ولت تنظیم شده تحویل دهد اما این رگولاتور حداکثر جریانی معادل 800 میلی آمپر میتواند فراهم کند. بنابراین در هنگام استفاده از پایه 3V روی بورد برای تغذیه مدارهای دیگر باید به این موضوع توجه شود.
راه اندازی بورد توسعه NodeMcu با نرم افزار آردوینو
در این بخش به سراغ راه اندازی NodeMcu می رویم و اولین مثال که LED چشمک زن می باشد را بر روی آن پیاده سازی خواهیم کرد. توجه نمایید که برای پیاده سازی علاوه بر برد توسعه NodeMcu نیاز به یک بردبورد ، سیم بردبوردی ، یک عدد LED و یک کابل Micro USB برای اتصال به کامپیوتر نیز می باشد. توجه نمایید که قبل از اتصال NodeMcu به کامپیوتر باید درایور CH340 را نصب نمایید. شکل زیر نحوه اتصال مورد نیاز برای این مثال را نشان می دهد.
گام اول : دانلود و نصب Arduino IDE
برای راه اندازی NodeMcu ابتدا باید نرم افزار Arduino IDE را از طریق >> این لینک دانلود و سپس نصب نمایید ( نسخه IDE سیستم تست شده در هنگام نوشتن این آموزش 1.6.8 می باشد )
گام دوم : نصب بورد توسعه NodeMcu در آردوینو
درون نرم افزار آردوینو در حالت پیش فرض هیچ بورد ، کتابخانه یا مثالی برای NodeMcu وجود ندارد. برای آن که بتوانید بر روی این ماژول توسط IDE آردوینو برنامه نویسی کنید باید ابتدا NodeMcu را بر روی نرم افزار آردوینو نصب کنید. برای این منظور ابتدا وارد نرم افزار آردوینو شوید و از قسمت File وارد Preferences شوید.
سپس لینک زیر را در قسمت Additional Boards Manager URLs کپی کنید و OK را بزنید.
1 |
http://arduino.esp8266.com/stable/package_esp8266com_index.json |
شکل زیر این موضوع را نشان می دهد.
سپس از منوی Tools گزینه Board را انتخاب کرده و روی Boards Manager کلیک کنید تا پنجره مربوطه باز شود.
در بخش جستجو پنجره Boards Manager عبارت esp8266 را تایپ کرده و آخرین نسخه را نصب نمایید. نرم افزار شروع به دانلود و نصب پکیجهای مربوطه میکند که ممکن است مدتی طول بکشد.
بعد از اتمام نصب ، پنجره Boards Manager را ببندید و به مسیر Tools -> Board مراجعه کنید. مشاهده می کنید که انواع بوردهای مبتنی بر ماژول ESP8266 از جمله NodeMcu قابل انتخاب می باشد. برای برد توسعه LoLin گزینه دوم یعنی 1.0 NodeMcu باید انتخاب شود.
گام سوم : انجام تنظیمات
برای اتصال به بورد NodeMcu تنظیماتی وجود دارد که از منوی Tools در دسترس می باشد. معمولا این تنظیمات در حالت پیش فرض صحیح می باشد و نیاز به تغییر خاصی ندارد. شکل زیر این تنظیمات را نشان می دهد. تنها تغییری که برای NodeMcu LoLin V3 مورد نیاز است ، تنظیمات Baud Rate ( نرخ سرعت ارتباط ) می باشد که در گزینه Upload Speed میتوان آن را تغییر داد. سرعت آپلود یکی از دو گزینه 115200 یا 9600 می باشد که باید در عمل تست شود. همچنین باید دقت نمایید که در گزینه Port ، پورتی که با اتصال NodeMcu به کامپیوتر شناسایی شده را وارد کنید. اگر هیچ وسیله جانبی به پورت های USB کامپیوترتان وصل نباشد در این گزینه تنها یک پورت نشان داده می شود ( در اینجا COM8 ) که باید آن را انتخاب نمایید.
گام چهارم : نوشتن و پروگرام کردن برنامه
نوبت به اجرای اولین مثال با NodeMcu می رسد. بدین منظور ساده ترین مثال را پروگرام می کنیم اما توجه نمایید که کلیه مثال های از پیش نوشته شده برای بورد NodeMcu در مسیر File -> Examples وجود دارند که در شکل زیر مشاهده می کنید.
بعد از انجام کلیه مراحل قبل ، برای راه اندازی مثال LED چشمک زن کافی است تا کد زیر را کپی کرده و در یک Sketch جدید ( گزینه File -> New ) قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 |
int LedPin = 5; void setup() { pinMode(LedPin, OUTPUT); } void loop() { digitalWrite(LedPin, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LedPin, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } |
توضیح برنامه :
در این برنامه LED متصل شده به پایه D1 بورد توسعه ( پایه 5 ماژول ESP ) ابتدا در حلقه Setup توسط تابع pinMode خروجی می شود و سپس در حلقه loop توسط تابع digitalWrite یک ثانیه روشن و ثانیه دوم خاموش می شود.
تذکر : برای پروگرام کردن برنامه کافی است تا در نوار ابزار نرم افزار آردوینو گزینه Upload را بزنید. اگر آپلود با خطایی مواجه شد مشکل از تنظیمات بورد توسعه می باشد که در مرحله قبلی توضیح داده شد ( احتمال زیاد با تغییر Upload Speed مشکل حل می شود ) دقت نمایید که در این مرحله هیچ نیازی به تغییر firmware ماژول نمی باشد.
در بخش های بعدی آموزش های جذاب تری از این برد خواهیم گذاشت
هر گونه سوال یا مشکل در خصوص راه اندازی برد NodeMcu را در بخش نظرات همین مطلب بپرسید.
بخش های بعدی آموزش به زودی قرار خواهند گرفت و به محض قرار گرفتن در کانال تلگرام الکترو ولت اطلاع رسانی می شود.
در صورتی که این آموزش مورد پسندتان واقع شد لایک و اشتراک گذاری فراموش نشود.
دیدگاه (9)
خیلی ممنون از اموزش های بسیار مفیدتون
سلام واقعا اموزش موفیدی هست
ببخشید میشه بگید بهم ایا میشه با نرم افزار CodeVisionAVR برد wemos d1رو پروگرام کرد اگر میشه راهنمایی کنید برای انجامش
با برنامه اردینو می زنم نمیشه میخوام با این انجام بدم
سلام دوست عزیز ممنونم
خیر Wemos D1 آردوینو هستش و با نرم افزار CodeVision AVR نمیشه پروگرامش کرد
با سلام ممنون از آموزشتون
میشه این بورد را جایگزین آردوینو کرد؟
مزیت های این نسبت به آردوینو چیه؟
سلام دوست عزیز ممنونم در واقع هم این برد و هم بردهای آردوینو دارای میکروکنترلر هستند که میتوانند برنامه نوشته شده به زبان آردوینو را اجرا نمایند اما از نظر امکانات جانبی نظیر تعداد پایه های ورودی/خروجی دیجیتال و آنالوگ با یکدیگر متفاوت هستند و در ESP8266 این امکانات جانبی کمتر است اما در عوض میکروکنترلر به کار رفته در این ماژول سرعت و قدرت پردازشی بالاتری نسبت به اکثر بردهای آردوینو دارد
سلام. من میخوام از nodemcu amecia cp2102 به عنوان میکروکنترلر و اتصال با pn532 که ماژول nfc است استفاده کنم. من تغذیه pn532 را از پایه 3.3 ولت nodemcu گرفتم ک کمه. حالا میخوام از یه تغذیه خارجی استفاده کنم و به پایه vin بدم. از چه باتری ای باید استفاده کنم؟
با سلام عالی بود من یک فایل اموزشی از سایت معتبر خریدم اما بسیار ضعیف بود (به نسبت تحصیلات اموزش دهنده )
یا یک سایت دیگر با کلی سرو صدا ولی عدم اشراف کامل به موضوع گرداندگان ان بهر حال هم از نظر سبک هم سطح اموزش عالی و مفید
بود
سلام من یه برد nodemcu ch340g دارم و هنگام اپلود error میده و errorاین ??
Error : espcomm_open failed
Error: espcomm_upload_mem failed
A fatal esptool.py error occurred: Failed to connect to ESP8266: Timed out waiting for packet header
برای وقتی میخوام اپلود کنم این برا چیه