آموزش کامل ESP8266

آموزش ESP8266 – بخش اول { معرفی ماژول و اصطلاحات تخصصی }

مقدمه

با سلام خدمت همه شما عزیزان. در ادامه پروژه های دوره ی آردوینو این بار میخواهیم به بررسی کامل و جامع ESP8266 بپردازیم و اون رو از صفر راه اندازی کنیم. ما در بخش پروژه های آردوینو تمامی خطوط کدها رو توضیح خواهیم داد و اصلا نگران این که ممکنه جاییش رو متوجه نشید نباشید.

در بخش اول این آموزش ما میخوایم ابتدا این ماژول را معرفی می کنیم و سپس یه سری اصطلاحات تخصصی رو با هم دیگه بررسی کنیم. با ما همراه باشید.

معرفی ماژول

احتمالا این روزها اسم اینترنت اشیا ( IOT ) و یا هوشمندسازی خانه ها رو زیاد میشنوید. وسایلی بسازیم که که با اینترنت در ارتباط باشه . اما آیا تلفن های موبایل این کار رو نمی کنند؟

اما این کار هم به همین سادگی ها نیست و پیچیدگی های خاص خودش رو داره.

حالا یه شرکت به نام Espressif Systems اومد یه ماژول ساخت به نام ماژول ESP8266 که کار اینترنت اشیا رو برای ما خیلی راحت میکنه و در عین سادگی میتونیم وسایلی با قابلیت اتصال به اینترنت بسازیم.

این ماژول چند تا خاصیت داره که بسیار به معروف شدنش کمک کرده.اول این که سایز کوچکی داره و ثانیا این که قیمت فوق العاده پایینی داره. ( قیمت این ماژول ها ا(در خرداد 96) در فروشگاه های اینترنتی اکثرا بین 10 تا 20 هزارتومن هست). قابلیت بعدی این ماژول این هست که بسیار ساده راه اندازی میشه. همه این ویژگی ها در کنار هم به معروف شدن این ماژول بسیار کمک کرده.

حالا اجازه بدید قبل از ادامه بحث یه خورده این ماژول رو دقیق تر بشناسیم.

ESP8266 چیست؟

تقریبا اکثر مردم ESP8266  رو با نام ماژول WiFi میشناسن. در حالی که ESP8266 دراصل یک میکروکنترلر هست. ESP8266 در واقع نام یکی از میکروکنترلرهای شرکت Espressif Systems  هست که در کشور چین در حال فعالیت هست. یکی از قابلیت های این میکروکنترلر این هست که فعالیت های مربوط به WiFi رو هم انجام بده. به همین خاطر هست که اکثر مردم اون رو با نام ماژول WiFi میشناسن. ولی ESP8266 در واقع یک یک میکروکنترلر هست و میشه ازش به عنوان یک میکروکنترلر هم برای پردازش اطلاعات استفاده کرد. درشکل زیر تصویری از این ماژول آورده شده است:

اجزای ماژول ESP-01

این ماژول انواع مختلفی داره که از ESP8266-01 تا ESP8266-12 نام گذاری شده. مدلی که ما قصد داریم دراین سری از آموزش ها  ازش استفاده کنیم ، مدل ESP8266-01 هست .علت هم اینه که اولا قیمت بسیار مناسبی داره ( در حدود 11هزارتومن ) و ثانیا این که بسیار در دسترس هست و راحت گیر میاد. اگر چه همه مدل های این ماژول از یک پردازنده یکسان استفاده میکنند و تفاوت اون ها در تعداد پایه های در دسترس و شکل ظاهری شون هست.

انواع ماژول های ESP - آموزش  ESP8266

دوستان توجه داشته باشید که مدل ESP-01 در دو نوع Blue و Black وجود داره که تفاوت ظاهری این دو نوع در حجم حافظه های فلش اون ها هست و مدل Blue دارای حافظه فلشی به حجم 0.5MB و مدل Black دارای حافظه ی فلشی به حجم 1MB است.در شکل زیر این تفاوت نشون داده شده.

دوستان حتما توجه داشته باشید که این ماژول با 3.3 ولت کار میکنه و به هیچ عنوان تغذیه 5 ولت رو به این ماژول ندید.

معرفی اصطلاحات مهم در تئوری WiFi

در این بخش ما قصد داریم یه سری واژگان تخصصی که در هنگام کار با این ماژول بهش نیاز پیدا میکنید رو تعریف کنیم و با هم خیلی خوب بشناسیم تا بعدا به مشکل برنخوریم. اگه با این لغات آشنایی دارید که میتونید از این بخش عبور کنید ولی اگه این واژگان رو نمیدونید چیه پیشنهاد من این هست که ابتدا این بخش رو بخونید .

TCP یا Transfer Protocol Control

 اگه بخوایم کلمه به کلمه این کلمه رو معنی کنیم بدست میاریم “پروتکل انتقال اطلاعات”. و در واقع میشه مجموعه ای از قوانین که بر اساس آن ، اینترنت کارمیکند و شبکه ها با یکدیگر در ارتباط هستند. ما دو نوع پروتکل داریم که در اون کامپیوترها میتونن با یکدیگر تبادل اطلاعات کنن. اولین نوع همین TCP هست که گاهی با TCP/IP نیز شناخته میشه و دومین نوع UDP هست که در ادامه در موردش صحبت خواهیم کرد. 
دراینترنت اکثرا از TCP استفاده میشه. چون ما میخوایم ماژول WiFi مون هم با اینترنت در ارتباط باشه ناچاره باید با این پروتکل کار کنه. ما میتونیم ماژولمون رو جوری برنامه ریزی کنیم که با  پروتکل TCP و یا پروتکل UDP کار کنه. اگه دوست دارید در مورد این اصطلاح آشنایی بیشتری پیدا کنید پیشنهاد میکنم لینک زیر رو بخونید:

پروتکل TCP/IP چیست؟

پروتکل TCP/IP

UDP یا User Datagram Control

UDP هم یک مثل TCP یک نوع پروتکل هست. این پروتکل نسبت به TCP سرعت بالاتری داره ولی دقت پایین تری داره. علتش هم اینه که پروتکل TCP در طی ارسال داده از بیت های ACK استفاده میکنه در حالی که UDP این کار رو انجام نمیده.

نکته: اگه بخوایم خیلی ساده بیت های ACK رو توضیح بدیم در واقع اگه یه فرستنده اطلاعات رو ارسال کنه منتظر بمونه تا گیرنده بهش بگه این اطلاعات بهم رسیده. این کار ( اعلام گیرنده از رسیدن اطلاعات) با یه سری بیت انجام میشه که به اون بیت ها، بیت های ACK گفته میشه.

کاربرد TCP بیشتر در جاهایی هست که برامون قابلیت اطمینان شبکه ( از رسیدن اطلاعات) برامون اولویت زیادی داره.  در حالی که از UDP بیشتر در جاهایی استفاده میشه که سرعت از قابلیت اطمینان شبکه( رسیدن همه داده ها) اولویت بیشتری داده. برای مثال در ویدیو کنفرانس ها از UDP استفاده میشه پون اگه مثلا چند تا بایت هم نرسه روی کل ویدیو نمیتونه تاثیر زیادی بذاره و احتمالا فرد پیغام خودش رو میتونه برسونه حتی اگه یه سری از بایت ها نرسن در حالی که در همین ویدیو کنفرانس ها سرعت بسیار مهم هست.

اکثر کدهایی که برای ماژول ESP8266 نوشته میشه و مورد استفاده قرار میگیره بر مبنای پروتکل TCP/IP هست.

AP و STA

وقتی که کار با ESP8266 رو شروع میکنیم دو تا واژه هست که بسیار زیاد بهش برخورد میکنیم. اجازه بدید با یه مثال این دو تا کلمه رو توضیح بدیم.

اولین کلمه AP که مخفف Access Point هست و کلمه دوم STA که مخفف Station هست .

فرض کنید داخل خونه نشستید و با لپتاپتون به اینترنت وصل میشید. شما مستقیم که به اینترنت وصل نمیشید. ابتدا به مودم وصل میشید و سپس از مودم به اینترنت وصل میشید. در این حالت لپتاپ شما نقش یک (STA(Station و مودم شما نقش یک AP ( Access Point) رو دارد.

با این مثال میتونیم این دو مفهوم رو توضیح بدیم. دستگاهی که این وسط به شما کمک میکنه برای اتصال با نام Access Point شناخته میشه. در واقع دستگاهی که نقطه اتصال شما به دنیای اینترنت هست رو با نام Access Point میشناسیم.

به عنوان مثالی دیگه فرض کنید گوشی شما مشکل داره و دوست شما هاتسپات گوشی خودش رو روشن میکنه و شما با استفاده از گوشی دوستتون به اینترنت وصل میشید. در این حالت گوشی دوست شما درنقش AP و گوشی شما در نقش STA هست. البته اگه دوست شما خودش هم به اینترنت وصل بشه بدیهی هست که همزمان با این که نقش AP رو داره نقش STA رو هم داره.

پس دستگاهی که نقطه اتصال شما به اینترنت هست رو AP میگن و شما که کل کارتون اینه که به اینترنت وصل بشی و ازش استفاده کنی و کاری هم به کسی نداشته باشی میشه  STA.

ما در خونه هامون هم از مودم برای اتصال به اینترنت  استفاده میکنیم و با استفاده از اون به اینترنت وصل میشیم. مودم هایی که در خانه استفاده میکنیم نمونه ای از  Access Point است.

ماژول ESP8266 در سه مد کاری میتونه فعالیت کنه: اول مد AP ( یعنی خودش نقش یک Access Point رو ایفا کنه) دوم مد STA ( یعنی خودش به یک Access Point وصل بشه) و حالت سوم هم ترکیبی هست. یعنی از ترکیب دو مد قبلی استفاده میکنه.

ماژول ESP8266 در نقش یک STA

ماژول ESP8266 در نقش یک AP

ماژول ESP8266 در نقش یک STA و AP

SSID(Service Set IDentifier)

این کلمه ساده ترین کلمه در بین تمامی کلماتی که قصد داریم اون ها رو تعریف کنیم هست. به نام شبکه WiFi میگن SSID . اکثر ما وقتی میخوایم به یکی از مودم ها وصل بشیم یه سری اسم مشاهده میکنیم. هر کدوم از این اسم ها یک SSID هست. در شکل زیر اسم WiFi-unchile یک نمونه از SSID هست. بقیه اسم ها هم هر کدوم یک نمونه SSID هستند.

نمونه ای از یک SSID

در واقع هر Access Point یک اسم ( شناسه) داره که به اون شناسه SSID میگن.

API(Application Programing Interface)

ترجمه این عبارت میشه “رابط برنامه نویسی کاربردی” که همونطور که از اسمش هم پیداست API  در واقع یک رابط هست. رابط بین ما و حالا یک وبسایت یا یک سیستم عامل یا یک نرم افزار.  حالا کار این رابط چیه؟

این رابط میاد و یه سری درخواست ها رو از ما میگیره، اون ها رو پردازش میکنه و نتیجه اش رو به ما برمیگردونه. بدیهی هست که در اون پردازش ها طرف مقابل ما یعنی اون سیستم عامل یا نرم افزار دخیل هست.

در بیشتر فعالیت های که ما در اینترنت انجام میدیم از API استفاده میشه. مثلا وقتی که شما یه خرید آنلاین انجام میدید. یا وقتی که شما در یک سایت ثبت نام میکنید. در واقع شما درخواستتون روبه اون سایت ارسال میکنید ، یه سری پردازش ها انجام میشه و در نهایت یه خروجی به شما تحویل داده میشه ( این که ثبت نام شما با موفقیت انجام شد )

API چیست

ماژول ESP8266 هم از API ها استفاده میکنه. مثلا وقتی میخواد زمان یا وضعیت آب و هوایی یه منطقه رو بدست بیاره یه درخواست به یک API یک وبسایت میفرسته و اون وبسایت پردازش های لازم رو انجام میده و در نهایت خروجی رو به ماژول ESP8266 برمیگردونه.

Web Server

وب سرور در واقع یک مجموعه از سخت افزار و نرم افزار هستند که به کمک همدیگه کاری میکنن که محتوای وب سایت ها برای ما نمایش داده بشه. همه ای این محتواهایی که در وبسایت ها مشاهده میکنید بر روی یک وب سرور در حال اجراست. یه سری کامپیوترها وجود داره که کارشون اینه که وب سرور باشن.

وب سرور

ما میتونیم از ESP8266 به عنوان یک وب سرور هم استفاده کنیم و از هر جای  جهان به اون وصل بشیم.

خوب دوستان. امیدوارم که از این جلسه هم نهایت استفاده رو برده باشید.مثل همیشه میتونید ما رو در تلگرام و یا اینستاگرام دنبال کنید.

شاید دوست داشته باشید مطالب زیر را نیز بخوانید:

20 نظر

  • سید سعید خیابانی

    سلام خسته نباشید
    ببخشید ایا امکان اتصال حافظه جانبی به ESP ها هست ؟ اگر هست تا چه مقدار رو تحمل میکنند ؟
    و برای ساخت مازول ارسال خودکار فایل از چه قطعه ای استفاده کنیم بهتره ؟

    • حامد قاسمی

      با سلام.
      پیشنهاد می شود برای اتصال حافظه های جانبی به جای ماژول ESP8266 از ماژول ESP32استفاده کنید. ضمن این که اتصال حافظه خارجی به پایه های خروجی ESP8266 دست شما را در استفاده از این ماژول کمی می بندد. چون این ماژول پایه های کمی دارد. البته در صورتی که تاکید دارید که حتما به این ماژول یک حافظه خارجی متصل کنید ، میتوانید حافظه روی ماژول را بردارید و یک حافظه با رابط SPI و حداکثر حجم 16 مگابایت به آن متصل کنید.
      سوال دوم خود را به صورت دقیق تر بفرمایید تا توضیحات لازم ارایه شود.
      موفق باشید.

  • مونا پورعلی

    سلام . وقتتون بخیر . ببخشید یه سوال داشتم . بین ماژول های WIFI که در بازار هست کدومشون با فرکانس بالاتری کار میکنند و سرعت انتقال داده ی بالاتری دارند ؟

    و اینکه از چه پروتکل WIFI استفاده میکنند ؟

    • حامد قاسمی

      با سلام. تقریبا همه ماژول های موجود در بازار از پروتکل 811.b/g/n استفاده میکنند که البته برخی از آنها از نوع n که بالاترین سرعت را دارد پشتیبانی نمیکنند. به همین خاطر پیشنهاد می شود از ماژولی استفاده کنید که از این نوع استفاده میکند. در شکل زیر مقایسه نسبتا کاملی بین انواع ماژول های wifi انجام شده است:

      طبیعی است که به لحاظ قیمت نیز ماژول ESP از بقیه با صرفه تر است. پیشنهاد میشود با توجه به کار خود ، یکی از ورژن های مربوط به این ماژول را انتخاب کنید.
      موفق باشید.

  • مصطفی

    ماژول وایکارد از این بهتر و پیشرفته تره ولی متأسفانه آموزش فارسی پیدا نکردم
    شما آموزش نمیذارید؟
    سایتش اینه
    wicard.net

    • حامد قاسمی

      با سلام.
      متاسفانه این ماژول هنوز به اندازه کافی فراگیر نشده است و خود ماژول نیز در سایت های ایرانی وجود ندارد. به همین علت فعلا ما نیز از قرار دادن آموزش های مربوط به این ماژول صرف نظر کرده ، اما در آینده و در صورت استفاده فراوان ، آموزش های مربوطه قرار خواهد گرفت .
      موفق باشید.

  • علی

    سلام برای این e s p و همینطور اردوينو از چه زبانهای برنامه نویسی استفاده می شه؟ مثلا c c++ c# java کدوم؟ و بین c ها کدوم یکی؟

    • حامد قاسمی

      با سلام. برای ارتباط با چیپ ESP شما میتوانید از روش های زیر استفاده کنید:
      1- دستورات AT Command
      2-زبان Lua
      3-Arduino
      4-Micro Python
      موفق باشید.

  • امیرحسین پیر بداقی

    مطالب گرد اوری شده عالیه
    ممنون .

    • حامد قاسمی

      سپاس از لطف شما.

  • سوران آراسته

    با سلام و درود خدمت شما دوست گرامی
    واقعا مطالب وبسایت و علل خصوص این مطلب واقعا عالیه و کاملا مشهوده که کلی براش وقت صرف شده.
    امیدوارم گام هاتون پایدار و مسیرتون سبز و موفق باشه.

    • حامد قاسمی

      با سلام.
      سپاس از لطف و محبت شما دوست گرامی.

  • محمد حق گو

    سلام ممنون از سایت خوبتون
    می خواستم بدونم آیا می تونیم ازش برای دریافت فایل های بزرگ مثل فیلم از روی سایتمون استفاده کنیم و برامون فیلمی که از طریق سایت خاص ارسال شده رو به یک ذخیره کننده مثل فلش مموری بدیم یا اینکه اگه مستقیماً فلش رو راه اندازی نمی کنه اول از طرف سایت فیلمو دریافت کرده و سپس به راسپبری پای زیره داده که روی یک فلش ذخیره کنه؟ با تشکر

    • حامد قاسمی

      با سلام خدمت شما.
      بله این کار امکام پذیر است ولی نکته ای که در اینجا وجود دارد این است که باید شما به اینترنت وصل شوید و با ماژول ESP8266 به تنهایی نمیتوان به اینترنت متصل شد و باید از یک مودم استفاده کرد.
      ولی طبیعتا با توجه به سرعت اینترنت شما ، نیاز به یک حجم بر روی خود ESP دارید. مثلا اگر سرعت اینترنت شما 2 مگابایت است ، نمیتوانید از این مازول استفاده کنید ، چون حجم حافظه Flash روی برد 1 مگابایت است. در واقع باید سرعت خود را با حجم حافظه ی موجود بر روی برد هماهنگ کنید.
      موفق باشید.

      • علی

        اینکه فرمودید سرعت اینترنت فرضا 2 مگ هست ولی حافظه روی ماژول 1مگ هست ،درنتیجه کار نمی کنه ، خوب با چه سرعتی از اینترنت کار ميکنه؟

        • حامد قاسمی

          خوب طبیعتا نیاز هست که شما سرعتی پایین تر از 1 مگابایت را داشته باشید. ولی باید توجه کنید که شما هر لحظه نیز باید داده ها را از حافظه ی ماژول به یک حافظه خارجی با حجم بالا انتقال دهید. مثلا اگر سرعت شما 300 کیلوبایت بر ثانیه باشد شما نیاز دارید تا هر 2 تا 3 ثانیه حافظه ماژول را تخلیه کنید تا فضا برای ورود داده های جدید باز شود.
          موفق باشید.

  • محمد

    سلام، ممنون از اطلاعات مفیدتون بسیار عالی بود.
    یک سئوال و آن هم این که میشه از این ماژول برای دیتا لاگین و ارسال وایرلس داده های سنسور استفاده کرد؟
    و اگر ممکن شود، برای مثال من اگر 19 بایت داده رو بخواهم بفرستم ماکزیمم با چه نرخی این ماژول می تواند داده جابه جا کند؟

    • حامد قاسمی

      با سلام خدمت شما.
      بله. از این سنسور به تنهایی میتوان برای ارسال داده های یک سنسور استفاده کرد و از این بابت مشکلی نمی باشد.
      برای ارسال داده نیز میتوان از همان بادریت 9600 استفاده کرد که بادریت مطمینی می باشد.
      موفق باشید.

  • محسن دستخوش

    سلام سایت جامع و کاملی دارید
    ممنون از وقتی که برای اماده سازی مطالب گذاشتید .

    • حامد قاسمی

      سلام.
      ممنون از لطف شما

  • نوشتن نظر

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *