سلام خدمت همه شما مایکروالکامی ها. در آخرین مطلب از مطالب مربوط به سری آموزش های ماژول های ESP822 به نحوه ارتقا و افزایش حافظه Flash ماژول ESP8266 پرداخته شد. در این مطلب به معرفی و استفاده از mDNS روی ماژول های ESP8266 و کاربرد آن پرداخته خواهد شد. پس با من تا انتهای مطلب همراه باشید. همچنین شما میتویند سایر مطالب من رو از این لینک مطالعه و بررسی کنید.
معرفی mDNS
با ایجاد یک شبکه بین ماژول ESP8266 و یک اکسس پوینت مانند مودم خانه میتوانیم از طریق دستگاه های متصل شده به مودم تبادل دیتا نماییم. البته به این شرط که تمام دستگاه به یک شبکه واحد مثلا همان مودم متصل شده باشند. کاربرد هایی زیادی از این حالت میتوان نام برد. مثلا کنترل وسایل برقی، مانیتورنیگ و… . در این حالت مشکلی که وجود دارد این است که اگر از IP استاتیک استفاده نکنیم IP دستگاه های متصل شده به مودم بعد از خاموش/روشن شدن تغییر خواهد کرد.
تصور کنید قرار است با وارد کردن IP در مرورگر، صفحه لوکال سرور را لود کرده و دستگاه ها را خاموش روشن نمایید. در حالت مطرح شده بعد از تغییر IP باید هر دفعه IP اختصاص داده شده را وارد نمایید و بقیه ماجرا. در چنین حالتی mDSN به کمکم ما خواهد آمد. DNS مخفف شده عبارت Domain Name Service است. در حقیقت این پروتکل یک فرانید مشخص در شبکه است و باعث میشود IP ما به یک نام مشخص و قابل فهم تبدیل شود.
mDNS نیز همانند DNS چنین نقشی را در شبکه محلی یا لوکال ایفا میکند. mDNS مخفف Multicast DNS میباشد. در شبکه های لوکال یا محلی مانند آنچه که در ابتدای مطلب تشریح شد برای اینکه هر بار نخواهیم IP اختصاص یافته شده به ماژول ESP8266 را در پروژه تنظیم کنیم از قابلیت mDNS میتوان استفاده کرد.
در استفاده از mDNS نیز هر دستگاه مانند دامین یک سایت نامی را خواهد گرفت. در این حالت با تنظیم ماژول وایفای ESP8266 حالت سرور و تنظیم آدرس آن، میتوان اینکار را انجام داد. در نتیجه با تغییر IP، آدرس ماژول ثابت و مشخص خواهد ماند. با توجه به نوع محلی بودن شبکه پسوند آدرس مشخص شده بصورت “local.” مثلا name.local خواهد بود.
قطعات مورد نیاز
فعال کردن mDNS روی ماژول ESP8266
برای اجرای mDNS روی ماژول ESP8266 باید کتابخانه مربوطه را نصب نمایید. در سورس کد ادامه مطلب درصورتی که ESP32 یا ESP8266 استفاده شود از کتابخانه های مربوطه و معرفی شده استفاده خواهد شد.
سورس کد استفاده از mDSN
کد های زیر را وارد Arduino IDE کرده و برروی ماژول ESP خود پروگرام نمایید. برای بررسی نحوه پروگرام کردن ماژول نیز این مطلب را مطالعه کنید. برای دانلود کتابخانه ESPAsyncWebServer از این لینک اقدام نمایید.
#ifdef ESP8266 #include <ESP8266WiFi.h> #include <ESP8266mDNS.h> #elif defined(ESP32) #include <WiFi.h> #include <ESPmDNS.h> #else #error "Board not found" #endif #include <ESPAsyncWebServer.h> AsyncWebServer server(80); // server port 80 void notFound(AsyncWebServerRequest *request) { request->send(404, "text/plain", "Page Not found"); } void setup(void) { Serial.begin(115200); WiFi.softAP("Microelecom", ""); //اختصاص یک SSID به ماژول. // در قسمت دومدستور فوق میتوانید یک رمز دلخواه وارد نمایید Serial.println("Access Point"); Serial.println(""); Serial.println(WiFi.softAPIP()); if (MDNS.begin("esp8266")) { //esp8266.local/ آدرس بصورت روبه رو خواهد بود Serial.println("MDNS responder started"); } server.on("/", [](AsyncWebServerRequest * request) { String message = "Welcom to Blog.Microele.com"; request->send(200, "text/plain", message); }); server.on("/page1", HTTP_GET, [](AsyncWebServerRequest * request) { String message = "Welcome to page1"; request->send(200, "text/plain", message); }); server.onNotFound(notFound); server.begin(); // فعال کردن وب سرور } void loop(void) { }
مشاهده نتیجه
- در صورتیکه از IP Local اختصاص داده شده ماژول (از بنده 192.164.4.1 بود) استفاده کنید و آن را وارد مرورگر نمایید صفحه مشابه زیر خواهید دید.
نمایش پیام تایید در صورت معتبر بودن آدرس وارد شده
- اگر انتهای IP وارد شده آدرس مسیر مشخصی که مورد تایید و تعریف شده ای وارد شود با صفحه زیر مواجه خواهید شد.
نمایش پیام خطا در صورت معتبر بودن آدرس وارد شده
اگر انتهای IP وارد شده آدرس مسیری که مورد تایید نبوده و تعریف نشده باشد را وارد کنید با صفحه زیر مواجه خواهید شد.
چنانچه بجای IP نیز از نام اختصاص داده شده به ماژول استفاده کنید نیز نتایج بالا را مشاهده خواهید کرد. مثلا ما نام esp8266 را وارد کردیم و در نوار جست و جو باید بصورت “esp8266.local” وارد کنیم. برای سایر مسیر ها نیز مشابه “esp8266.local/page1” استفاده میکنیم.
نکات مهم
- برای استفاده از mDNS و باز کردن صفحه وب باید حتما Bonjour را روی سیستم خود (ویندوز) نصب کنید تا صفحه توسط آدرس name.local لود شود.
- در اندروید نیز اگر باز نشد باید نسخه اندروید آن را نصب کنید.
- در مطلبی قبلا خوانده بودم که mDNS سبب تشدید خملات DDOS میشود. بد نیست شما هم یک مطالعه ای داشته باشید در این خصوص و دقیق تر آن را بررسی کنید.
نتیجه گیری
در این مطلب به معرفی و چگونگی استفاده از mDNS روی ماژول وایفای مبتنی بر تراشه ESP8266EX پرداخته شد. با استفاده از این قابلیت قادر خواهیم بود بجای وارد کردن و استفاده از IP اختصاص داده شده به ماژول، از یک آدرس استفاده نمایید. این امر باعث میشود که هرچند IP تغییر یابد دیگر نگران تغییر لینک ها یا… در پروژه نباشیم.
امیدوارم از این آموزش کمال بهره را برده باشید. در صورت داشتن هرگونه نظر یا سوال درباره این مطلب یا تجربه مشابه اون رو در انتهای همین صفحه در قسمت دیدگاه ها قرار بدید. در کوتاه ترین زمان ممکن به اون ها پاسخ خواهم داد. اگر این مطلب براتون مفید بود، اون رو به اشتراک بگذارید تا سایر دوستان هم بتوانند استفاده کنند. همینطور میتونید این مطلب را توی اینستاگرام با هشتگ microelecom# به اشتراک بگذارید و پیج مایکروالکام (microelecom@) رو هم منشن کنید.