ESP8266 یک چیپ WiFi ارزون قیمت است. تصویر این چیپ را می توانید در شکل زیر ببینید:
این چیپ شامل یک میکرو کنترلر و مجموعه ابزار کار با TCP/IP هست. این چیپ توسط یک شرکت چینی واقع در شانگهای به نام Espressif جهت ساخت دستگاه های مبتنی بر اینترنت اشیاء طراحی و تولید شده. مشخصات این قطعه رو می تونید در ادامه ببینید:
- میکرو کنترلر ۳۲ بیتی L106 با معماری RISC که می تواند در فرکانس ۸۰MHz کار کند.
- حافظه RAM 32 کیلوبایتی مربوط به دستورات
- حافظه کش ۳۲ کیلوبایتی دستورات
- حافظه ۸۰ کیلوبایتی مربوط به داده های کاربر
- ۱۶ کیلو بایت حافظهEST
- حافظه فلش خارجی QSPI با قابلیت پشتیبانی بالای ۱۶ مگابایت که به طور معمول مقدار حافظه بین ۵۱۲ کیلوبایت تا ۴ مگابایت می باشد.
- WiFi با استاندارد IEEE 802.11 b/g/n با قابلیت پشتیبانی احراز هویت WEP، WPA/WPA2 و Open Networks
- 16 پایه ورودی خروجی همه منظوره که پایه های ۶ تا ۱۱ برای ارتباط با حافظه فلش روی برد استفاده استفاده می شود.
- درگاه SPI
- درگاه I2C (بصورت نرم افزاری)
- رابط I2S
- درگاه سریال
- مبدل آنالوگ به دیجیتال
توسط ESP8266 می توانید دستگاه هایی بسازید که توسط WiFi به اینترنت متصل می شوند. همچنین می توانید بر روی آن یک وب سرور کوچک راه اندازی کرده و با گوشی هوشمند خود به آن متصل شوید.
ESP8266 نسخه اولیه این چیپ می باشد و ESP8266EX که به نسخه بروزرسانی شده آن می باشد در بازار موجود می باشد.
این چیپ ابتدا در سال ۲۰۱۶ توسط طراحان غربی مورد توجه قرار گرفت که در قالب ماژول ESP-12e استفاد می شد. این ماژول توسط شرکت Ai-Thinker طراحی و تولید و روانه بازار شده بود. با اینکه در ابتدا هیچ راهنمایی به زبان انگلیسی برای این چیپ وجود داشت اما ارزان بودن و قابلیتهای بالای آن توجه بسیاری از هکرها و طراحان را به خود جلب کرد تا انگیزه لازم برای بررسی آن و ترجمه راهنماهای به زبان چینی آن را داشته باشند.
ESP-12E
ESP-12E یک ماژول WiFi است که در مدار خود از ESP8266EX بهره می برد. این برد هم توسط شرکت Ai-Thinker طراحی و تولید شده است. ماژولهای ESP دیگری نیز توسط این شرکت تولید شده اند که بصورت ESP-xx نامگذاری می شوند. یکی از معایب واضح برد ESP-12E نا مناسب بودن آن جهت استفاده در برد برد ( Breadboard ) می باشد.
برد ESP-12E دارای یک شیلد RF می باشد که روی ESP8266 را می پوشاند. این شیلد به جهت رعایت قوانین FCC و به منظور جلوگیری از داخل امواج این چیپ با سایر دستگاه ها می باشد.
ماژول NodeMCU
ماژول NodeMCU یک برد توسعه است که در مدار خود از ماژول ESP-12E استفاده می کند که در این آموزش و سایر آموزشها از این برد استفاده خواهد شد. بر خلاف ESP-12E این برد براحتی می تواند در بردبرد مورد استفاده قرار بگیرد علاوه بر این جهت برنامه ریزی این برد مبدل سریالی نیاز نیست و زیرا بر روی NodeMCU یک مبدل USB به سریال تعبیه شده است.
جهت برای برنامه ریزی NodeMCU می تواند از Lua، Arduino و microPython استفاده کرد که من با توجه به رایج بودن و همچنین سهولت استفاده از پلتفرم Arduino برای این منظور استفاده خواهم کرد.
برد NodMCU تا کنون در سه نسخه V1،V2 و V3 تولید شده است. نسخه V1 نسل اول این برد بوده و منسوخ شده و V2 و V3 در حقیقت نسل دوم این ماژول می باشند و تفاوت آنها تنها در چیپ مبدل USB به سریال می باشد.
نصب درایور
قبل آنکه بخواهید برای NodeMCU برنامه بنویسید ابتدا باشد درایور مربوط به آن را نصب کنید.اگر از برد نسخه V3 استفاده می کنید رویه ذیل را دنبال کنید:
- درایور V3 را از این مسیر دانلود کنید.
- برد را به پورت USB متصل کنید.
- فایل CH341SER_WINDOWS.zip را از حالت فشرده خارج کرده و فایل EXE درون آن را اجرا کنید.
- Device Manager را کنید. اگر مراحل نصب را درست طی کرده باشید پورت سریال مربوط به NodeMcu را در لیست درگاه ها مشاهده خواهید کرد.
اگر از برد نسخه V2 استفاده می کنید درایور را از این مسیر دانلود کرده و مراحل بالا را انجام دهید. نسخه V2 از چیپ CP210x و نسخه V3 از چیپ CH341 استفاده می کند. نکته دیگری که باید در اینجا اضافه کنم اینست که درایور مربوط به نسخه V2 در داخل نرم افزار Arduino IDE موجود است و اگر آن را نصب دارید نیازی به دانلود نیست. کافیست در هنگاه نصب درایور به صورت دستی مسیر جستجو را Arduino_x.x.x/driver معرفی کنید.
نصب کتابخانه ESP8266 در Arduino IDE
همانطور که قبلا ذکر کردم برای برنامه ریزی ESP8266 از Arduino IDE استفادهمی کنیم اما کتابخانه مربوط به ESP8266 بطور پیشفرض بر روی Arduino IDE نصب نیست و باید بصورت دستی نصب شود. جهت نصب این کتابخانه مراحل ذیل را دنبال کنید:
- Arduino IDE را اجرا کنید. به منوی File رفته و گزینه Preferences را انتخاب کنید.
- در فیلد Additional Board Manager Urls عبارت ذیل را وارد کنید:
1 |
http://arduino.esp8266.com/stable/package_esp8266com_index.json |
- به منوی Tools رفته گزینه Board را انتخاب کرده و در کادر باز شده گزینه Board Manager را انتخاب کنید و کتابخانه ESP8266 را مطابق تصاویری که در ادامه درج شده است نصب کنید.
- پس از نصب کتابخانه از منوی Tools و بخش Board گزینه NodeMCU 1.0(ESP=12E Module) را انتخاب کنید.
نوشتن اولین برنامه
در اینجا می خواهیم یک برنامه خیلی خیلی ساده بنویسیم. در این برنامه تنها قصد داریم LED موجود بر روی برد ESP-12E که به پین D4 متصل است را روشن کنیم. منطق این ال ئی دی Active Low است. به این معنی که اگر میخواهیم آن را روشن کنیم پایه D4 را باید در حالت LOW منطقی قرار دهیم. این کار را با تابع digitalWrite انجام میدهیم. یک فایل جدید در Arduino IDE ایجاد کنید و کدهای ذیل را یا در آن وارد کنید:
1 2 3 4 5 6 7 8 9 |
void setup() { // Set on-board LED pin as output pinMode(D4, OUTPUT); } void loop() { // Turn on the active-low LED digitalWrite(D4, LOW); } |
کار خاصی در این برنامه انجام ندادم. در خط ۳ و در بخش setup پین D4 بصورت خروجی پیکربندی شد و در خط ۸ همانطور که قبلا گفته بودم پین D4 را در حالت LOW منطقی قرار گرفته و تا زمان روشن بودن NodeMCU در همان حالت می ماند.
برای کامپایل کردن برنامه به منوی Sketch رفته و گزینه Verify/Compile را انتخاب می کنیم. همچنین در بالا و در سمت چپ نوار ابزار یک علامت تیک مشاهده می شود. برای کامپایل هم می توانید بر روی این دکمه کلیک کنید و هم می توانید از کلید های میانبر Ctrl + R استفاده کنید.ق را به درستی انجام داده باشید پس از Upload برنامه LED موجود بر روی ESP-12E روشن خواهد شد. تصویر برد در هنگام اجرای برنامه را می توانید در زیر ببینید.