اگر علاقه مند به اینترنت اشیاء یا IoT هستید. احتمالا نام ماژول وای فای ESP8266 را شنیده اید. در این آموزش نحوه کار با این ماژول و آردوینو را جهت استفاده از در پروژه های اینترنت اشیاء آموزش می دهیم.
ماژول ESP8266 چیست ؟
ESP8266 یک ماژول وای فای است که امکان اتصال انواع میکروکنترلرها به شبکه WiFi را فراهم می کند.
با کمک کیت های توسعه نرمافزار ( SDK ) می توان بدون نیاز به میکروکنترلر اضافه برای ESP8266 برنامه نوشت.
تولیدکنندگان مختلف مثل Ai-Thinker بر پایه این ماژول بردهای مختلفی را روانه بازار کرده اند. اولین برد تولید شده توسط Ai-Thinker برد ESP-01 نام دارد که ما نیز در این پروژه از آن استفاده می کنیم.
با توجه به موفقیت ماژول ESP-01& تعداد متعددی برد دیگر مانند ESP-02, ESP-07, ESP-12 توسط Ai-Thinker تولید شده اند. همه این بردها بر مبنای ESP8266 هستند و تفاوت اصلی در تعداد پین های GPIO می باشد.
ماژول های مختلفی مانند ESP-WROOM، NodeMCU، WeMOS، SparkFun ESP8266 و … نیز توسعه داده شده اند.
ESP8266 ESP-01
در این پروژه ما از ماژول ESP-01 محصول Ai-Thinker استفاده می کنیم. تصویر زیر اجزاء و ۸ پین این ماژول را نشان می دهد.
همانطور که در تصویر بالا مشهود است، ماژول ESP-01 از ۸ پین تشکیل شده است. این پین های عبارتند از VCC, GND, TX, RX, RST, CH_PD, GPIO0 و GPIO2. تصویر زیر دیاگرام پین های ماژول ESP-01 را نشان می دهد.
توضیحات پین های ماژول ESP8266 ESP-01
- VCC : پین پاور که ولتاژ ۳٫۳ ولت برد را تامین می کند.
- GND : پین اتصال زمین برد.
- TX : از این پین برای ارسال دیتای سریال به سایر دستگاهها استفاده می شود.
- RX : از این پین برای دریافت دیتای سریال از سایر دستگاهها استفاده می شود.
- RST : پین ریست و از نوع active LOW می باشد. ( ESP8266 در صورت دریافت سیگنال LOW ریست می شود. )
- CH_PD : این پین از نوع active HIGH بوده و پین chip enable است. معمولا این پین به پایه ۳٫۳ ولت متصل می شود.
- GPIO0 : این پین ها دو منظوره هستند :
- اول برای استفاده معمول GIOP و به عنوان پین های I/O
- فعال سازی حالت برنامه نویسی ESP826
- GPIO2 : پین GPIO
نکته مهم : ESP8266 با ولتاژ ۵ ولت سازگار نیست و ماژول ESP-01 هیچ رگولاتوری بر روی برد خود ندارد. بهتر است، مطمئن شوید که ولتاژ ESP8266 برابر ۳٫۳ ولت و ترجیحا از یک منبع تغذیه جدا از پایه ۳٫۳ ولت برد آردوینو می باشد.
ماژول وای فای ESP8266 از یک ثابتافزار ( firmware ) ،که از دستورات AT پشتیبانی میکند، بهره می برد. پس آپلود برنامه، این ثابتافزار ( firmware ) پاک می شود. در آینده در پروژه ای جداگانه نحوه استفاده از دستورات AT و ثابت افزار پیش فرض ESP8266 و نحوه فلش کرده ثابت افزار پیش فرض را بررسی خواهیم کرد.
اکنون قصد داریم نحوه برنامه ریزی ESP8266 با کمک آردوینو و دسترسی به پین های GPIO آن را بررسی کنیم.
دیاگرام مدار ESP8266 Arduino
تصویر زیر، دیاگرام مدار ماژول ESP8266 را با وضوح بیشتری نمایش می دهد.
اجزاء مورد نیاز پروژه ESP8266 و آردوینو :
آردوینو UNO : 1 عددESP8266 ESP-01 : 1 عدد
مقاومت 1 KΩ : 1 عدد
مقاومت 2.2 KΩ : 1 عدد
خازن 100 pF ( کد 104 ) : 1 عدد
مینی بردبورد : 1 عدد
سیم : 1 عدد
آماده سازی ماژول ESP8266 ESP-01 برای نصب روی بردبورد
اگر نگاهی به پین های ماژول ESP8266 ESP-01 بکنید متوجه خواهید شد که ساختار مناسبی برای اتصال ساده به برد بورد ندارد. بنابراین در اینجا بردی ساده به عنوان رابط اتصال ماژول به بردبود آماده کرده ایم:
در این برد یک مقاومت متصل به پایه RX و همچنین یک خازن ۱۰۰ pF بین پایه های VCC و GND استفاده شده است. تصویر زیر نحوه اتصال ماژول ESP8266 ESP-01 روی مینی بردبورد را نمایش می دهد.
آماده سازی ادیتور آردوینو برای برنامه نویسی ESP8266
با انجام تغییرات کوچکی در نرم افزار آردوینو می توان برای ماژول وای فای ESP8266 برنامه نویسی انجام داد.
از منوی File گزینه Preferences را انتخاب و در قسمت Additional Boards Manager آدرس زیر را وارد کنید:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
نکته : در صورت نیاز به اضافه کردن چندین آدرس، آنها را با , از یکدیگر جدا کنید.
اکنون وارد منوی Tools، سپس گزینه Board شده و سپس Boards Manager شوید. در فیلد جستجو مقدار ESP8266 را وارید کنید. ESP8266 by ESP8266 Community را انتخاب و روی Install کلیک کنید.
توجه : دقت کنید که امکان اضافه کردن بردهای جانبی در نرم افزار نسخه ۱٫۶٫۴ و بالاتر وجود دارد. پیشنهاد می کنیم همواره آخرین نسخه نرم افزار آردوینو را نصب کنید.
ما از پین های TX و RX برای اتصال آردوینو به ماژول ESP8266 استفاده می کنیم.
بالاتر اجزاء مورد نیاز پروژه و دیاگران آن را دیدیم. در این قسمت به تشریح مدار می پردازیم.
در درجه نخست مجددا اشاره کنیم که ماژول ESP8266 با ولتاژ ۳٫۳ ولت کار می کند و هر ولتاژ بالاتر از آنف مثلا ۵ ولت، موجب آسیب جدی به برد می شود. بنابراین پین VCC و پین CH_PD ماژول ESP8266 ESP-01 به ولتاژ ۳٫۳ ولت متصل هستند.
نکته مهم بعدی این است که به خاطر داشته باشید ماژول وای فای ESP8266 دو حالت عملیاتی دارد : حالت برنامه نویسی و حالت عادی
در حالت برنامه نویسی، شما می توانید برنامه خود را بر روی ماژول ESP8266 آپلود کنید و در حالت عادی، برنامه آپلود شده اجرا می شود.
برای فعال سازی حالت برنامه نویسی باید پین GPIO0 به GND متصل کنید. ما در اینجا از یک SPDT یا Single Pole Double Through یعنی یک کلید الکترونیکی تک پل دو حالته برای اتصال پین GPIO0 استفاده کرده ایم. با تغییر وضعیت این سوئیچ بین حالت برنامه نویسی و حالت normal سوئیچ می کنیم.
به خاطر داشته باشید که RST ( ریست ) نقش مهمی را در حالت برنامه نویسی اجرا می کند. پین ریست از نوع active LOW هست بنابراین به وسیله یک شاسی به GND متصل شده است. با فشاردادن دکمه ریست ماژول ESP8266 ریست خواهد شد.
پین های RX و TX ماژول ESP8266 متناظرا به پین های RX و TX آردوینو متصل هستند. از آنجا که ولتاژ ۵ ولت برای ESP8266 قابل تحمل نیست، پین RX آردوینو به وسیله یک level converter ،متشکل از یک مقاومت ۱KΩ و یک مقاومت ۲٫۲KΩ ، متصل شده است.
در نهایت پین GPIO2 به یک LED برای تست کارکرد برنامه متصل شده است. تمام اتصالات لازم برای فعال سازی حالت برنامه نویسی ماژول ESP8266 در زیر آمده است:
- VCC – – > 3.3V
- GND – – > GND
- CH_PD – – > 3.3V
- RST – – > Normally Open; GND to Reset
- GPIO0 – – > GND
- TX – – > TX of Arduino
- RX – – > RX of Arduino (through level converter)
پس از اطمینان از صحت اتصالات بالا و تنظیم ESP8266 در حالت برنامه نویسی ( اتصال GPIO0 به GND )، آردوینو را به سیستم متصل کنید.
وقتی ماژول ESP8266 روشن شد. دکمه RST نرم افزار آردوینو را فشار دهید. در نرم افزار وارد گزینه Tools و سپس Board شوید. برد Generic ESP8266 را انتخاب کنید. پورت مناسب را در نرم افزار آردوینو انتخاب کنید.
اکنون یک برنامه جدید ایجاد کنید و کد زیر آپلود کنید. قبل از زدن دکمه آپلود از اتصال پین GPIO0 و GND اطمینان حاصل پیدا کنید و سپس دکمه RST را فشار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 | void setup() { pinMode(2, OUTPUT); } void loop() { digitalWrite(2, HIGH); delay(1000); digitalWrite(2, LOW); delay(1000); } |
اکنون دکمه آپلود را فشار دهید. مدتی طول می کشد تا برنامه compile و آپلود شود. فرآیند compile و آپلود در پایین نرم افزار آردوینو قابل مشاهده است. پس از آپلود موفقیت آمیز برنامه می توانید اتصال پین GPIO0 از زمین را قطع کنید. LED متصل به GPIO2 چشمک خواهد زد.
2 Comments
نصیر
خیلی عالی بود
لطفا اموزش های اردوینو خوبتون رو ادامه بدید
علی
چی میشه اگه مقاومت ۲٫۲ و ۱۰ کیلو اهم نزاریم؟ مقاومت ها و خازن برای چیه؟