اینترنت اشیا IOT برد ESP8266 برد Nodemcu برد ویموس Wemos

راه اندازی و کار با ماژول ESP8266، بخش هشتم: شناخت و راه اندازی MDNS

نوشته شده توسط معین صابری

در سلسله آموزش های ماژول ESP8266، در قسمت هشتم  یکی از قابلیت های کلیدی و کاربردی این ماژول، MDNS،  را مورد بحث و بررسی قرار می دهیم. در قسمت قبلی در رابطه با لایه Transparent، امکانات و کاربرد آن صحبت کردیم. همانطور که اطلاع دارید آی پی آدرس ماژول های ESP پس از هر بار اتصال به مودم و قطع شدن از آن، تغییر می یابد. این موضوع در سناریو خانه هوشمند که در قسمت قبلی راجع به آن صحبت شد، سبب ایجاد مشکلاتی خواهد شد. در این سناریو شما باید آی پی آدرس هر ماژول را با هربار اتصال بدانید تا بتوانید به آن فرمان دهید. چنین موردی طراحی و پیاده سازی شبکه را بسیار سخت می کند. اما به لطف وجود MDNS، ماژول ها دارای نام دامنه ثابت شده که دیگر نیازی به دانستن آی پی آن ها نیست. در این آموزش به این مفهوم می پردازیم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید.

 


MDSN تعریف و کاربرد


در این قسمت به بررسی مقهوم MDNS پرداخته و سپس آموزش را در پی می گیریم. پیش از بررسی مفهوم MDNS، می بایست به تعریف و تشریح مفهوم DNS بپردازیم. عبارت DNS که مخفف Domain Name Service است، یک پروسه کلی در شبکه اینترنت جهت تبدیل آدرس آی پی به نام دامنه است. در این روش، آدرس آی پی هر سرور اینترنتی، به نام دامنه آن نگاشت می شود.

MDSN تعریف و کاربرد در برد ESP8266 - دیجی اسپارک

 

بنابراین در سرویس DNS، آدرس آی پی به نام تبدیل می شود. به عنوان مثال، یکی از آی پی آدرس های گوگل برابر با ۱۴۲٫۲۵۰٫۱۸۵٫۴۶ است. طبعا به خاطر سپاری این آدرس مشکل خواهد بود. سرویس DNS  با تبدیل آدرس آی پی سرویس گوگل به google.com، به خاطر سپاری آن را ممکن کرده و همواره آدرسی ثابت برای سرویس گوگل فراهم می کند. دقیقا مشابه همین سرویس، سرویس MDNS را خواهیم داشت. این عبارت که مخفف MulticastDNS است، سرویس DNS را در شبکه محلی (LOCAL) اجرا می کند. در این سرویس دستگاه های حاضر در شبکه یک آدرس به صورت نام، همانند google.com دریافت می کنند. ماژول های ESP نیز از این سرویس پشتیبانی کامل می نمایند. در این سروش شما با قرار دادن ماژول در حالت سرور و تعریف آدرس، می توانید آدرس سرور همانند سایت ها تعریف کنید. بدین ترتیب با تغییر آی پی ماژول، آدرس سرور ثابت خواهد ماند. از آنجاییکه شبکه به صورت محلی اداره می شود،  بنابراین پسوند آدرس ها .local خواهد بود. به عنوان مثال می توانیم سروری با آدرس esp8266.local بسازیم. در ادامه به شرح این موضوع و نحوه ایجاد آدرس دامنه برای سرورها می پردازیم.

 


اجرای MDNS در ماژول ESP8266


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

ESP8266mDNS.h

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

MDNS.begin("esp8266")

 

در تابع فوق نام آدرس ورودی را esp8266 تعیین کرده ایم. در ادامه به کمک تابع زیر می بایست مشخصات سرور خود را تعیین کنید. در تابع زیر ورودی اول پروتکل ارتباطی، ووردی دوم سرشاخه پروتکل ارتباطی یعنی tcp یا udp و ورودی سوم شماره پورت را تعیین می کند.

 MDNS.addService("http", "tcp", 80);

در تابع فوق ما ورودی اول را به صورت http، ورودی دوم از نوع tcp و ورودی سوم را از نوع پورت ۸۰ تعیین کرده ایم. در قمت بعدی این موارد را طی یک برنامه کامل مشاهده خواهیم نمود.

 


اجرای یک نمونه برنامه


پس از معرفی اجزا و قسمت های مختلف سرویس MDNS، نوبت به اجرای یک نمونه برنامه می رسد. در این برنامه مطابق قسمت های قبلی، یک سرور تعریف می کنیم. در این سرور پایه GPIO4 به عنوان خروجی تعریف شده که با ارسال مقدار ۱، LED متصل به پایه روشن و با ارسال ۰، LED خاموش خواهد شد.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

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

 

پس از آپلود و اجرای برنامه، نوبت به تست آن می رسد. در اینجا ما از مرورگر رایانه خود استفاده می کنیم. توجه داشته باشید هر ماژول ESP و رایانه نیز باید به یک مودم متصل باشند. در حقیقت در پشت صحنه، پروتکل لایه انتقال(Transparent) نیز در حال اجراست. بنابراین در مروگر خود آدرس http://esp8266.local/?data=1 وارد کنید. در این سناریو به کمک متد get و با ارسال عدد ۱ که در متغیر data قرار می گیرد، فرمان جهت روشن نمودن لامپ ارسال می شود. سرور پس از دریافت فرمان، پیغامی مبنی بر دریافت موفقیت آمیز پیام را در صفحه مرورگر ظاهر می نماید.

آموزش راه اندازی ESP8266 بخش هشتم MDNS - دیجی اسپارک

 

در ادامه، زمانیکه داده ها توسط سرور دریافت شوند، وضعیت و روال کار در سریال مانیتور مطابق تصویر زیر به نمایش در می آید.

گزارش وضعیت سریال مانیتور ESP8266 - دیجی اسپارک

 


لوازم مورد نیاز


مبدل سریال به USB

ماژول ESP8266-12E

ماژول مبدل SMD به DIP

 


جمع بندی


در سلسله آموزش های ماژول ESP8266، این قسمت به یکی از مهم ترین و کلیدی ترین قابلیت های ماژول ESP8266، سرویس MDNS پرداختیم.  به کمک MDNS می توانیم به جای آی پی آدرس، با نامی که برای ماژول ESP در حالت سرور تعیین می کنیم، به آن متصل شویم. این موضوع دقیقا مثل نام وب سایت ها مثال digispark است. بدین ترتیب با تغییر آی پی ماژول در اثر قطعی برق و یا موارد مشابه، نام آدرس ماژول دقیقا مثل یک وب سایت ثابت باقی می ماند.  این مورد در خانه های هوشمند بسیار حائز اهمیت است. چراکه با قطع شدن برق و اتصال مجدد، آی پی ماژول ها ممکن است تغییر کند. در این حالت با استفاده از سرویس MDNS، آدرس آی پی همواره ثابت مانده به سادگی می توان به دستگاه ها متصل شد.

 

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

 

درباره نویسنده

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۷ دیدگاه

  • سلام
    در صورت استفاده از بستر اینترنت جهت کنترل و مانیتورینگ ماژول، آیا میشه از این تکنیک استفاده کرد؟
    یعنی بجای .local از IP (استاتیک یا دینامیک) استفاده کرد. (با فرض انجام پروسه Port forwarding روی پورت مشخص) و

  • سلام مهندس با تشکر ازمطالب کاربردی شما .
    در اینجا آدرسی که گفتین در مرورگر میزنیم . ولی کاری انجام نمیشه . ولی بجای آدرش اگر آی پی را بزنیم سیستم کار میکنه و ال ای دی خاموش و روشن میشه و پیامش هم توی سریال نمایش داده میشه . خوب علتش چیه که با آدرس کار نمیکنه ؟

        • سلام
          بسیار عالی
          آیا برنامه بونجور را روی ویندوز خود نصب کرده اید؟ مطابق آموزش این برنامه باید حتما نصب گردد.

      • سلام مجدد .
        Windows 7 X64 استفاده میکنم . البته به دلایلی مجبورم از این سیستم عامل استفاده کنم .

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

            • سلام
              برای اجرای مورد مد نظر شما تنها راه همین MDNS و بونجور است. چه مشکلی با این نرم افزار داشتید؟ این نرم افزار را می توانید حتی از سایت های معتبر داخلی دانلود و سپس نصب کنید. این نرم افزار را که نصب کردید خودکار فعال شده و نیازی به دخالت کاربر ندارد.

  • سلام
    من میخوام بدون استفاده از ip یک سایت بسارم این کار با این ماژول انجام پذیره ؟؟؟

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

    • سلام
      این آموزش دقیقا همین کار را انجام می دهد. به کمک MDNS می توانید نام دلخواه تعیین کنید، مثلا lamp.local

  • سلام و درود
    مهندس بنده میخواهم پروژه ای پیاده کنم که بتوانم از طریق موبایل و اپلیکیشنی که خودم میسازم به مودم وصل شوم و با برد esp ارتباط برقرار کنم که در اینجا هم نیاز است برد esp ای پی ثابتی داشته باشد که در مطلب بالا توضیح دادید اما اگر میشود لطفا راهنمایی کنید که ارتباط اپلیکیشن با چه پروتکلی و چگونه باید با وای فای برقرار شود که بتوان برد esp را در میان وسایل دیگری که به مودم اتصال دارند بصورت خودکار شناسایی نمود و با ان ارتباط برقرار کرد؟
    ممنون میشوم اگر راهنماییم کنید

    • سلام و متشکرم از شما
      دقیقا با همین روش
      زمانیکه شما آدرس دامنه به ESP اختصاص می دهید، سایر دستگاه ها هم با همان دامنه ارتباط برقرار خواهند کرد. اگر مبهم است بفرمایید بیشتر صحبت کنیم.

    • سلام
      برای ساخت نرم افزار از mitappinvertor که تحت وب هست استفاده کنید
      من خودم همین کار شما رو کردم