در سلسله آموزش های ماژول ESP32، بخش ششم در رابطه با تعریف ماژول در مد سرور صحبت خواهیم نمود. مد سرور، مدی است که در آن ماژول ESP می تواند همنانند یک سرور اینترنتی، به درخواست های کاربران پاسخ داده و برنامه نوشته شده را اجرا نماید. در این حالت شما می توانید برنامه های مختلفی را روی ماژول در حالت سرور اجرا کنید. به عنوان مثال یک تلفن همراه با اتصال به ماژول، درخواست روشن شدن یک لامپ را به سرور ESP32 ارسال می کند. در این حالت ماژول ESP با دریافت درخواست، می تواند آن را اجرا نماید. مد سرور در هر دو حالت AP و STA قابل اجرا بوده و محدودیتی از این بابت وجود ندارد. در ادامه این آموزش با مرجع تخصصی ESP32 به زبان فارسی، دیجی اسپارک همراه باشید.
سرور تعریف و کاربرد
پیش از اینکه به ادامه بحث بپردازیم، مختصری در رابطه با تعریف سرور و کاربرد آن در شبکه می پردازیم. ارتباط در شبکه اینترنت، چه به صورت محلی LOCAL و چه به صورت توزیع شده(در بستر اینترنت) به صورت مد کلاینت/سرور اجرا می گردد. در این مد، کلاینت دستگاهی است که به سرور متصل شده و درخواست های خود را به سرور ارسال می کند. سرور با دریافت درخواست های کلاینت، آن ها را اجرا می کند.
مطابق تصویر فوق، کلاینت درخواست هایی را به سررو ارسال کرده و سرور با دریافت درخواست ها، ضمن تحلیل و پردازش ها، پاسخ مناسب را به کلاینت ارسال می نماید. برای روشن تر شدن موضوع، فرض کنید که یک رله به ماژول ESP متصل بوده و قصد دارید که این رله را با تلفن همراه خود، کنترل کنید. در اینجا ماژول ESP در مد سرور قرار گرفته و گوشی به عنوان کلاینت، در خواست روشن و یا خاموش بودن رله را به سرور ESP ارسال می کند. سرور ESP با دریافت درخواست، آن را تحلیل کرده و پس از اجرا، پاسخ مناسب را به کلاینت ارسال می کند. کلاینت با دریافت پاسخ نیز، می تواند از اجرای صحیح روال کنترل رله، مطمئن شود. این درخواست ها می تواند در قالب رشته به ماژول ESP ارسال شود. به عنوان مثال با ارسال مقدار ۱ رله فعال و با دریافت مقدار ۰ از کلاینت، رله غیر فعال می شود. در نهایت می توان یک پیام مشخص، به عنوان مثال عبارت OK را به عنوان اجرای صحیح درخواست به کلاینت ارسال نمود.
در رابطه با بحث سرور، توجه داشته باشید که این مفهوم با قابلیت نقطه دسترسی کاملا متفاوت است. مد نقطه دسترسی، مدی است که در آن ماژول برای ایجاد شبکه، به دستگاه های متصل آی پی تخصیص می دهد. اما مد سرور، مدی است که ماژول درخواست های دستگاه های دارای آی پی را اجرا می کند. ماژول ESP32 در حالت سرور، هم می تواند در مد نقطه دسترسی(AP) و هم در مد ایستگاهی(STATION) فعال باشد. در قسمت های بعدی به این موضوع بیشتر می پردازیم.
توابع و دستورات مربوط به مد سرور
برای قرارگیری ماژول در مد سرو، توابع از پیش تعریف شده آردوینو وجود داشته که شما به سادگی می توانید ماژول را در حالت سرور قررا دهید. برای قرار گیری ماژول در مد سرور، می بایست شماره پورت را تعریف کنید. جهت اطلاعات بیشتر در زمینه پورت و اطلاعات شبکه ای، می توانید بر روی این لینک کلیک کنید. در ادامه، جهت تعریف ماژول در حالت سرور، می بایست کتابخانه وب سرور به شکل زیر در برنامه قرار گیرد.
#include <WebServer.h>
توجه داشته باشید که این کتابخانه بر روی نرم افزار آردوینو نصب بوده و نیازی به نصب مجدد آن نیست. برای تعریف ماژول در حالت سرور، می بایست یک نمونه شی از کلاس کتابخانه فوق تعریف گردد. این نمونه به صورت زیر تعریف می گردد.
WebServer server(80)
در قطعه کد فوق، server یک شی ساخته شده از کلاسWebServer بوده و عدد ۸۰ نیز تعیین کننده شماره پورت است. در ادامه به کمک تابع زیر می بایست سرور را تنظیم کنید.
server.on(Path, Method, Run_Script)
تابع فوق دارای ۳ پارامتر مهم در ورودی است. به کمک این پارامترها می توانید تنظیمات مربوط به سرور را انجام دهید. این پارامترها به شرح زیر توضیح داده می شوند:
- Path: به کمک این متغیر آدرسی از سرور که قرار است درخواست مدیریت شوند تعیین می شوند. در حقیقت به کمک این متغیر، کلاینت آدرس داده ها و درخواست ها را به این آدرس ارسال می کند. این متغیر از نوع رشته تعیین می گردد.
- Method: به کمک این متغیر متد ارسال داده ها از سوی کلاینت و مدیریت آن توسط سرور تعیین می گردد. این متد می تواند از نوع GET و یا POST باشد. ورودی این تابع به صورت HTTP_GET به عنوان متد GETو به صورت HTTP_POST به صورت POST تعیین می گردد.
- Run_Script: نام تابعی است که در آن درخواست کاربر دریافت، مدیریت و اجرا می شود. در این تابع کارهایی که هنگام دریافت درخواست (request) می بایست انجام شود، قرار می گیرد. این تابع زمانی اجرا می شود که درخواستی از سوی کاربر ارسال شود.
همچنین در ادامه، تابع زیر باید در loop به طور مداوم فراخوانی شود. این تابع سبب می شود تا با دریافت درخواست از کلاینت، تابع سرور(Run_Script) اجرا گردد.
handleClient()
همانطور که پیشتر گفته شد، مد سرور می تواند هم در حالت AP و هم در حالت STA اجرا گردد. در قسمت بعدی به این دو موضوع پرداخته نحوه عملکرد را به صورت برنامه کامل مشاهده می کنیم.
تعریف ماژول در حالت مد سرور
در این قسمت به بررسی قرار گیری ماژول در حالت سرور و چگونگی دریافت و پرداش داده ها می پردازیم. برنامه زیر ماژول را در حالت نقطه دسترسی قرار می دهد. سپس سرور را بر روی آدرس “/” تنظیم می کند. در نهایت تابع sendr وظیفه اجرای درخواست های کاربر را بر عهده دارد. توجه داشته باشید که حین ارسال داده ها تحت متد POST و یا GET، داده ها می بایست در متغیر data قرار گیرند. این مورد در تابع send به کمک یک شرط لحاظ شده است.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
مطابق فرمت متد GET، برای تعیین داده های ارسالی از علامت ? استفاده می شود. پس از آن مقادیر درون متغیر ذخیره می گردند. به تصویر زیر دقت کنید.
در صورتیکه بخواهید در مد STA ماژول را در حالت سرور قرار دهید، روال کلی کار دقیقا به شکل فوق، اما با یک تفاوت خواهد بود. این تفاوت تنها در آی پی آدرس سرور است. در اینجا، آی پی سرور همان آی پی است که ماژول از مودم متصل به آن، دریافت کرده است.
لوازم متناسب با آموزش
جمع بندی
در سلسله آموزش های ماژول ESP32 بخش ششم به قرارگیری ماژول ESP32 در مد سرور پرداختیم. مد سرور حالتسیت که در آن همانند یک سرور اینترنتی، می تواند به درخواست های کلاینت ها نظیر تلفن همراه، رایانه و حتی سایر ماژول ها پاسخ دهد. در این آموزش ماژول ESP32 ابتدا در حالت نقطه دسترسی قرار گرفته و پس از با دستورات برنامه نویسی که در این آموزش به آن پرداخته شد، ماژول وارد مد سرور می گردد. سپس با اجرای وب سرور، چنانچه داده ای تحت متد GET به سرور ارسال شود، سرور آن را دریافت کرده و پاسخ مناسب را ارسال می کند. این پاسخ را می توان در مرورگر رایانه و یا تلفن همراه نیز، مشاهده نمایید.
چنانچه مطالب این آموزش را گنک یافتید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در مطالب درج شده و یا کدها وجود دارد میتوانید از همین طریق اطلاع رسانی کنید.
ادامه مطالب این آموزش
راه اندازی و کار با ESP32 بخش هفتم: لایه انتقال و ارتباط با موبایل توسط مودم
راه اندازی و کار با برد ESP32 بخش هشتم: اجرای متد GET
راه اندازی و کار با برد ESP32 قسمت نهم: اجرای متد POST
راه اندازی و کاری با ماژول ESP32 قسمت دهم: شناخت و راه اندازی MDNS
راه اندازی و کار با ماژول ESP32 قسمت یازدهم: ESP-Cam دوربین و کارت SD
راه اندازی و کار با برد ESP32 قسمت دوازدهم: راه اندازی بلوتوث Bluetooth
سلام وقتتون بخیر
من از دو تا nodemcu استفاده میکنم . ارتباط رو بینشون برقرار میکنم ولی درخواستم در ۱۹۲٫۱۶۸٫۴٫۱ نه تو گوشیم باز میشه و طبعا وقتی بورد دوم هم درخواست میکنه چیزی دریافت نمیکنه.
پینگ رو میتونم بگیرم ولی نمیدونم چرا ۱۹۲٫۱۶۸٫۴٫۱ کار نیمکنه . پورت ۸۰ هم راه انداختم.
سلام و متشکرم
این مورد به سرور باز می گردد. تنظیمات سرور به درستی انجام نگرفته است.
سلام وقتتونبخیر
من مطالب شما رو مطالعه کردم من میخوام پریز هوشمند با esp32 درستکنم در تعداد بالا و به تازگی فهمیدم که باید سرور داشته باشم برای امنیت بالا واینکه حک نشه ایا برای شما امکان داره که منو راهنمایی کنید یا در انجام این پروژه کمک کنید
با سلام و تشکر از شما
در پروژه های اینترنت اشیا دو بخش مختلف دارید. یکی بخش سخت افزاری که شامل انواع بردهای میکروکنترلر میشود. از جمله میتوان ESP32 را در نظر گرفت. بخش دوم هم سرور هست. سرورها میتوانند به هر حالتی باشند در هر دیتاسنتری و فقط تنظیمات و برنامه نویسیهای سمت سرور هستند که وضعیت امنیتی و… را مشخص میکنند.