در این دوره میخواهیم آموزش اینترنت اشیا با ESP8266 به عنوان یکی از مطرح ترین ماژول های حوزه اینترنت اشیاء را فراگیریم.
در قسمت اول راه اندازی ماژول ESP8266 را شروع میکنیم. در این مقاله یاد میگیریم که چگونه ماژول ESP8266 مناسب برای پروژه را انتخاب کنیم. همچنین با سختافزارهای جانبی که به آنها نیاز پیدا خواهیم کرد آشنا میشویم. نحوه اتصال ESP8266 به کامپیوتر و برنامهنویسی آن با استفاده از کابل USB موارد دیگری هستند که در این مقاله به آنها خواهیم پرداخت.
سپس یاد میگیریم که چگونه کد را تعریف کرده و آن را روی ESP8266 آپلود کنیم. بدین منظور از Arduino IDE استفاده میکنیم. Arduino IDE در واقع یک پلتفرم متن باز است که از آن برای نوشتن و آپلود کد روی تراشه های مختلف استفاده میشود. این پلتفرم استفاده از ESP8266 را به مراتب راحتتر میکند. زیرا به کمک یک رابط کاربری و زبان برنامه نویسی شناخته شده، میتوانیم ماژول را پیکربندی کنیم. همچنین قادر خواهیم بود تا از بسیاری از کتابخانه های از پیش نوشته شده Arduino برای سهولت کار بهره ببریم.
نحوه انتخاب ماژول ESP8266
اولین کاری که باید انجام دهیم این است که ببینیم چگونه ماژول ESP8266 مناسب را انتخاب کنیم. ماژولهای زیادی وجود دارد و همین کافی است که در انتخاب ماژول مناسب دچار سردرگمی شویم.
ESP8266-01
اولین گزینهای که احتمالاً نام آن را شنیدهاید، ماژول کوچک بیسیم فرستنده-گیرنده به نام ESP8266 است که شیوه ارتباطی آن سریالی است.
این ماژول به دلیل ابعاد کوچک است و هزینه کم که در حدود 2 دلار است، معروفترین ماژول بهحساب میآید. با این حال، تعداد GPIOهای (پین های ورودی/خروجی) قابل دسترس این ماژول بسیار محدود است. همچنین اتصال آن به یک بردبورد استاندارد دشوار می باشد.
توجه کنید که اگر این ماژول را انتخاب کنید، ممکن است پروژههایی که در ادامه به آنها اشاره میکنیم را نتوانید انجام دهید. به طور مثال شما نمیتوانید پروژههای پیش رو را با استفاده از سنسورهای آنالوگ انجام دهید، زیرا پین ورودی آنالوگ در دسترس نیست.
برای کسب اطلاعات بیشتر در خصوص این ماژول فایل زیر را مطالعه کنید:
https://nurdspace.nl/images/e/e0/ESP8266_Specifications_English.pdf
با این حال ماژولهای بسیار دیگری در بازار وجود دارند که به شما امکان استفاده از تمام پینهای ESP8266 را میدهند.
ESP8266-Olimex
ماژول ESP8266 Olimex یکی از همین ماژولهاست که علاوه بر این مزیت، قیمت پایینی هم دارد (حدود 3 دلار).
این ماژول را به راحتی میتوان روی یک بردبرد نصب و از تمام پینهای ESP8266 استفاده کرد. در اغلب پروژههایی که در این دوره به آنها خواهیم پرداخت، از همین ماژول استفاده خواهیم کرد. شما نیز می توانید از این ماژول یا ماژول NodeMCU که در ادامه معرفی می شود استفاده کنید.
برای کسب اطلاعات بیشتر در خصوص این ماژول به لینک زیر مراجعه کنید:
https://www.olimex.com/Products/IoT/MOD-WIFI-ESP8266-DEV/open-source-hardware
ESP12-F
یکی دیگر از گزینههایی که میتوانید انتخاب کنید، یک برد مبتنی بر ماژول ESP-12 است که در واقع یک ورژن از ESP8266 است. هدف از طراحی این برد، یکپارچگی با برد مدار چاپی (PCB) است. این ورژن همچنین به شما امکان دسترسی به تمام پینهای ESP8266 را میدهد. بهعلاوه پیدا کردن برد بریک اوت پاور/ مبدل پاور سرور /برد توزیع، برای این تراشه کار نسبتاً راحتی است. به عنوان مثال، این برد را من از یکی از وبسایت هایی که در موتور جستجوی ISEE پیدا کردم، خریدم.
برای کسب اطلاعات بیشتر در خصوص این ماژول به لینک زیر مراجعه کنید:
http://www.seeedstudio.com/wiki/images/7/7d/ESP-12E_brief_spec.pdf
همچنین برای کسب اطلاعات بیشتر در خصوص برد بریک اوت Adafruit ESP8266 که با ماژول ESP-12 ادغام شده میتوانید، به لینک زیر مراجعه کنید:
http://www.adafruit.com/product/2471
NodeMCU
راهحل دیگر استفاده از کیت توسعه NodeMCU است که به برد Olimex شباهت دارد اما یک تبدیل USB-to-Serial و یک منبع تغذیه آنبرد (داخلی) نیز دارد. استفاده از این کیت سادهتر است، اما در زمان نگارش این مقاله پیدا کردن آن کار چندان راحتی نبوده است. برای کسب اطلاعات بیشتر در خصوص NodeMCU به لینک زیر مراجعه کنید:
همچنین می توانید با استفاده از موتور جستوجوگر قطعات ISEE هم این ماژول را پیدا کنید.
توجه داشته باشید که هنگام استفاده از ماژول NodeMCU، شما باید پینهای ماژول را به گونهای متناظر سازی کنید که با پینهای تعریف شده در محیط توسعه Arduino IDE تطابق داشته باشند. اگر میخواهید اطلاعات بیشتری در خصوص تطابق پینها کسب کنید به لینک زیر مراجعه کنید:
https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en#new_ gpio_map
الزامات سختافزاری
حال بیایید نگاهی به مواردی که برای عملکرد صحیح ماژول ESP8266 ضروری است داشته باشیم. معمولاً برای اینکه ESP8266 به درستی کار کند، اینطور فرض میشود که در اختیار داشتن این ماژول کوچک کافیست و به هیچ چیز دیگری نیاز نیست. با این حال این فرضیه اشتباه است و در ادامه دلیل آن را توضیح خواهیم داد.
رابط سریال
در ابتدا باید به روشی ESP8266 را برنامهنویسی کنید، بدین منظور میتوانید از بورد Arduino استفاده کنید اما یکی از ویژگی های متمایز ESP8266، عملکرد مستقل آن با استفاده پردازشگر تعبیه شده داخلیاش است.
بنابراین برای برنامهنویسی چیپ از رابط FTI USB to Srial استفاده خواهم کرد. اما شما می توانید از هر ماژول مبدل USB به Serial دیگری استفاده کنید.
توجه داشته باشید که رابط باید با سطح منطقی تراشه ESP8266 سازگار باشد، پس باید ولتاژ آن 3.3 ولت باشد.
من از ماژولی استفاده کردم امکان سوئیچ کردن بین 3.3 ولت و 5 ولت را دارد.
مبدل تغدیه
همچنین برای تراشه به یک منبع تغذیه اختصاصی نیاز خواهید داشت. فراموش کردن این نکته منجر به مسائل زیادی می شود. تغذیه ماژول ما 3.3v است و به عنوان مثال، در صورتی که بخواهیم ماژول را با تغذیه پین رابط سریال FTDI برقرار کنیم، ممکن است در آینده درچار مشکل شویم. چرا که سطح جریان مورد نیاز این ماژول مخصوصا در حالتی که بخش WiFi آن فعال است زیاد می شود و دیگر منطقی نیست این جریان را با رابط سریال تامین کنیم.
بنابراین، برای ماژولهای ESP8266،شما به یک مبدل تغذیه با پورت USB و یا جک آداپتوری نیاز خواهید داشت. من از منبع تغذیه بردبورد استفاده کردم که میتواند تا 500 میلیآمپر را با ولتاژ 3.3 ولت تأمین کند.
در ادامه لیستی از تمام اجزای مورد نیاز را خواهید دید که برای عملکرد درست تراشه ESP8266 به آنها نیاز خواهید داشت:
- ماژول ESP8266 Olimex
- منبع تغذیه 3.3 ولت برای بردبورد
- ماژول USB FTDI با ولتاژ 3.3 ولت
- برد بورد
- سیمهای جامپر
پیکربندی سختافزاری
اکنون میخواهیم نگاهی به روش پیکربندی سختافزاری برد ESP8266 بیندازیم. نحوه اتصال اجزای مختلف این برد به شرح زیر است:
بسته به بردی که استفاده میکنید، پینها نامهای مختلفی خواهند داشت؛ بنابراین، من در جهت کمک به شما برای هر ماژول، یک تصویر تهیه کردهام. اینها پینهایی هستند که در برد کوچک ESP به آنها نیاز خواهید داشت.
پینهای برد ESP-12 که روی آداپتور بردبورد نصب شدهاند هم مشابه قبلی است:
و عکس آخر مربوط به برد Olimex است:
در پایان برد Olimex شبیه تصویر زیر خواهد بود:
اطمینان حاصل کنید که همه اجزا را مطابق با نقشه مدار (schematics) به هم وصل میکنید. در غیر این صورت نمیتوانید به ادامه کار بپردازید.
همچنین لازم است که تمام سوئیچهای اجزا (ماژول FTDI و مبدل تغذیه) روی 3.3 ولت تنظیم شده باشند. در غیر این صورت تراشه آسیب خواهد دید.
یک سیم را به پین GPIO 0 در ESP8266 وصل کنید. فعلاً آن را به چیز دیگری وصل نکنید. بعداً و هنگام برنامهنویسی تراشه به آن نیاز خواهید داشت.
نصب Arduino IDE
پس از پیکربندی سختافزاری ESP8266 ، حال وقت آن است که به سراغ نصب محیط توسعه Arduino IDE برویم.
از آنجا که تراشه یک ترنسیور سریالی/ وایفای است، اصلیترین روش استفاده از ماژول ESP8266 استفاده از فرمانهای سریالی است. با این حال، این کار راحتی نیست و من توصیه نمیکنم که این کار را انجام دهید.
توصیه من این است که از Arduino IDE استفاده کنید که فرایند راحتی هم دارد. بدین منظور باید Arduino IDE را روی کامپیوتر خود نصب کنید. در ادامه از یک Arduino IDE شناخته شده بهره میگیریم و به همین دلیل به راحتی میتوانید از تراشه ESP8266 استفاده کنید. این روشی است که در کل مقاله از آن استفاده خواهیم کرد.
اکنون قصد داریم ESP8266 را با استفاده از Arduino IDE برنامه نویسی و پروگرام کنیم. این روش یک راه عالی برای استفاده از است، چراکه از یک Arduino IDE شناخته شده استفاده میکنیم و بهعلاوه میتوانیم از کتابخانههای موجود در Arduino مجدداً استفاده کنیم.
اگر Arduino IDE را هنوز نصب نکردهاید، آخرین ورژن آن را میتوانید از آدرس زیر دریافت و نصب کنید.
http://www.arduino.cc/en/main/software
اکنون باید مراحل زیر را پشت سر بگذارید تا بتوانید ESP8266 را با Arduino IDE پیکربندی کنید.
- Arduino IDE را باز کنید.
- پنجره Preferences را باز کنید.
- URL زیر را در فیلد URLs Additional Board Manager وارد کنید:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
- از منوی Tools | Board ، Boards Manager را باز کنید.
- پلتفرم esp8266 را طبق عکس زیر نصب کنید.
اتصال ماژول به شبکه وای فای
پس از طی کردن مراحل قبلی، حال نوبت آن است که بررسی کنیم ESP8266 و Arduino IDE به درستی کار میکنند یا خیر. در این مرحله همچنین میخواهیم ماژول را به شبکه وایفای متصل کنیم.
بدین منظور باید مراحل زیر را طی کنید:
1. ابتدا باید یک کد ساده بنویسیم و سپس آن را روی ماژول آپلود کنیم. هدف از نوشتن این کد، اتصال به شبکه وای فای محلی و پرینت آدرس IP بورد است. این کد به صورت زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | // Import required libraries #include <ESP8266WiFi.h> // WiFi parameters constchar* ssid = "your_wifi_name"; constchar* password = "your_wifi_password"; void setup(void) { // Start Serial Serial.begin(115200); // Connect to WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Print the IP address Serial.println(WiFi.localIP()); } void loop() { } |
شما میتوانید به سادگی کد را کپی کرده و سپس آن را در محیط توسعه Arduino IDE که قبلاً دانلود کردهاید، جای گذاری کنید. البته فراموش نشود که عبارت “your_wifi_name”و “your_wifi_password” را به ترتیب با نام WiFi و رمز عبور Access Point محلی (مودم، تلفن همراه و … ) جایگذین کنید.
2. در منوی Tools | Boards گزینه Generic ESP8266 Module را انتخاب کنید. همچنین، پورت سریال متناسب با مبدل FTDI مورد استفاده را انتخاب کنید.
3. پس از آن باید برد را در حالت بوت لودر قرار دهیم تا بتوانیم آن را برنامهنویسی کنیم. برای انجام این کار باید با استفاده از یک سیم، GPIO0 را به زمین متصل کنیم. سپس با خاموش و روشن کردن منبع تغذیه، ماژول را وارد مدار میکنیم.
4. کد را روی ماژول آپلود کنید. پس از اتمام آپلود Serial monitor را باز کنید. سرعت Serial monitor را روی 115200 قرار دهید. حالا کابل بین GPIO0 و GND را جدا کنید و ماژول را مجددا ریست کنید. اگر مراحل را درست انجام داده باشید، پیام زیر را خواهید دید.
WiFi connected
192.168.1.103
اگر این پیام و IP را مشاهده کردید، به شما تبریک میگویم، ESP8266 شما به شبکه وای فای متصل شده است! حال میتوانید اولین پروژه خود را با استفاده از این ماژول تعریف کنید.
خلاصه
در این مقاله ابتدا با اصول اولیه ESP8266 و سپس با برخی از مرسوم ترین بوردهای موجود برای ESP8266 آشنا شدیم. سپس نحوه سیمکشی ماژولهای ESP8266 و در نهایت نحوه نصب Arduino IDE و پیکربندی آن را فراگرفتیم.
در مقاله بعدی، با استفاده از ابزارهایی که راه اندازی کردیم، به تعریف پروژههای ساده مبتنی بر ماژول ESP8266 خواهیم پرداخت.
1 |
بسیار عالی
منتظر قسمت های بعدیتون هستم.
متشکرنپم
محمد رضای عزیز
ممنون از به اشتراگ گذاری نظرتون
هر هفته یک قسمت از این آموزش منتشر میشه
بی صبرانه منتظر قسمت بعدی هستم
قسمت جدید فردا منتشر میشه محمدرضا عزیز