توصیه شده, مفاهیم شبکه و اینترنت در راه‌اندازی ماژول ESP8266

راه‌اندازی ماژول وای‌فای ESP8266 و تبادل دیتا از طریق HTTP(S) | قسمت یازدهم مفاهیم شبکه و اینترنت در راه‌اندازی ماژول ESP8266

مفاهیم شبکه و انترنت در راه اندازی ماژول ESP8266

تا اینجا، ده قسمت از آموزش مفاهیم شبکه و اینترنت در راه‌اندازی ماژول ESP8266 با ما همراه بودید! خیلی خوبه! من اگه بودم دیگه ادامه نمی­دادم…! از صبر و پشتکاری که دارید ممنونم. همان‌طور که قبلاً اشاره شد، روش ­های مختلفی برای کار با ماژول ESP8266 وجود داره. ولی هر کدوم معایب و مزایای خودشون را دارند. در اولین گام و در این سری از آموزش که شامل یازده قسمت شد، سعی کردم با AT COMMANDها این ماژول را راه­ اندازی کنم. توی این قسمت سعی می­کنم یه ارتباط کامل اینترنتی با ماژول وای ­فای ESP8266 با استفاده از دستورات AT داشته باشم. خوب… بریم به ادامه مطالب بپردازیم.

حالت های کاری مختلف ماژول ESP8266

این ماژول به‌صورت کلی در سه حالت

۱. Station (یا همان client)

 ۲. Access point

۳. Station + Access point

کار می­کنه. البته می­تونه در حالت سرور نیز باشد.

اینکه از چه شکل از ماژول ESP8266 دارید استفاده می­کنید، مهم نیست؛ ولی احتمالاً از یکی از انواع (شکل­ های) زیر هست!

حالت های کاری مختلف ماژول ESP8266

دستورات AT command

هر بار که ماژول را روشن می­کنید و شروع به ارسال دستور و… می­کنید، ماژول هر چیزی را که دریافت می­کنه به‌صورت Echo و قبل از پاسخ بر می­گردونه. میتونید با دستور زیر حالت echo را خاموش یا روشن کنید:

این ماژول به‌صورت Default با نرخ تبادل دیتای 115200 کار می­کنه، که البته با دستور زیر قابل تغییر هست. دقت کنید، متن کامل دستور در دیتاشیت قطعه و خود سایت وجود داره. من فقط یه اشاره کلی به متن دستور می­کنم:

بعد از تنظیم Baud rate (اگر نیاز بود)، مد یا حالت کاری ماژول را با دستور زیر بررسی می­کنیم. اگر بخواهیم ماژول مانند لپ‌تاپ یا کامپیوتر و… در حالت مصرف‌کننده اینترنت باشد، باید در حالت Client قرار بگیره. پس با دستور زیر بررسی می­کنیم که ماژول در چه مد کاری در حال کار است:

پاسخ دستور بالا یکی از اعداد، 1 به معنی حالت کاری Station(client)، یا عدد 2 به معنی حالت کاری Access point و یا عدد 3 به معنی  هر دو حالت قبلی است. برای تغییر دادن حالت کاری از همان دستور بالا به صورت زیر استفاده کنید:

ماژول ESP8266 به‌صورت پایه، در حالت single connection mode قرار دارد. یعنی در حالت Access point که مثل مودم عمل می­کنه و بقیه ادوات به‌وسیله وای­ فای به اون متصل میشند، در هر زمانی فقط یک اتصال TCP وجود دارد و این اتصال قبل از اینکه اتصال جدید بتواند تشکیل شود (از/به یک آدرس IP راه دور مشابه یا متفاوت)، باید بسته شده باشد.

در “حالت اتصال چندگانه” (CIPMUX=1) ماژول می­تواند تا پنج اتصال مختلف (از/به آدرس‌های IP راه دور یکسان یا متفاوت) را به طور هم‌زمان حفظ کند. هیچ نیازی به بستن یک اتصال قبل از راه‌اندازی دیگری وجود ندارد، تا زمانی که بیش از پنج اتصال به طور هم‌زمان باز نباشد.

این خاصیت به‌خصوص زمانی که ماژول به‌عنوان یک سرور عمل می­کند ویژگی مفید است؛ زیرا با حالت اتصال تک سرور نمی‌تواند درخواست جدیدی را درحالی‌که یک مشتری متصل است بپذیرد؛ بنابراین تا زمانی که به یک مشتری (Client) هر داده­ای ارائه می‌شود، هر درخواست اتصال دیگری رد می‌شود.

زمانی که بخواهید به یک شبکه اینترنت بی سیم وصل بشید ابتدا ماژول باید در حالت Station قرار گرفته باشد. سپس باید شبکه ­های اینترنت بی­سیم در اطراف ماژول را جستجو کرد. برای جستجوی شبکه­ های وای­ فای اطراف ماژول از دستور زیر استفاده می­کنیم:

اتصال به وای فای

حالا، بین وای­ فای ­های اطراف ماژول، اونی که نام و رمز عبورش را میدونیم باید انتخاب بشه. چطوری؟ اگر SSID و Password شبکه وای‌فای را دارید، با دستور زیر به اون وصل بشید:

AT+CWJAP=[<ssid>],[<pwd>] برای اطمینان از اتصال به شبکه، ماژول پاسخی در قالب متن زیر به شما خواهد داد. ممکن است دریافت این پیام چند لحظه­ ای طول بکشد، زیرا ماژول باید از مودم و شبکه اینترنت یک IP دریافت کند. دو خط آخر پاسخ، ممکن است در پاسخ ماژول شما نباشد. نگران این موضوع نباشید. 

قطع و وصل کردن اینترنت ماژول

WIFI CONNECTEDWIFI GOT IPOK[WIFI GOT IPv6 LL][WIFI GOT IPv6 GL] برای قطع‌کردن اتصال ماژول به اینترنت، از دستور زیر استفاده کنید: AT+CWQAPOK تا حالا تونستید ماژول را به اینترنت وصل و قطع کنید. ولی یادتون نره که از حالا به بعد اتصال ماژول به اینترنت به‌صورت خودکار انجام خواهد شد.

یعنی اگر ماژول خاموش و مجدد روشن بشه و همون شبکه وای­ فای که قبلاً بهش متصل بوده، در دسترس باشه، به‌صورت خودکار به اون وصل خواهد شد!! شاید این موضوع در بعضی از پروژه­ ها مفید باشه ولی بعضی جاها هم خیلی خوب نیست! با دستور زیر اتصال خودکار ماژول به شبکه وای­ فای را میتونید متوقف کنید. AT+CWAUTOCONN=0OK نکته مهمی که باید بهش اشاره کرد اینه که بعضی از دستورات فقط در یک حالت کاری ماژول پاسخ میدند و در حالت­ های کاری دیگه یا جواب نمیدند یا پاسخ ERROR خواهند داد.تعداد دستورات و عملکرد آنها زیاده و بستگی به نیاز کاربر داره.

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

❗ عدم پاسخگویی دستورات قسمت HTTP در ماژول ESP8266

ِ

شاید زمانی که سایت شرکت سازنده این ماژول را مشاهده می­کردید، و لیست دستورات Basic ،WIFI ،TCP/IP و HTTP را بررسی و امتحان می­کردید، متوجه این مطلب شده باشید که دستورات قسمت HTTP در ماژول ESP8266 جواب نمی­دهد و فقط پاسخ خطا (ERROR) به شما نشان می­دهد.”لطفاً دست به گیرنده ­های خود نگذارید، مشکل از فرستنده است!” شاید باورتون نشه ولی برای رسیدن به این عبارت، روزها وقت گذاشتم! بله، ماژول ESP8266 فاقد دستورات HTTP در AT COMMANDهاست!

چه فاجعه­ ای! چه بد! پس من 11 قسمت را بیخودی خوندم …!

اصلاً نگران نباشید (مثل پیام بازرگانی­ ها گفتم!). اگر بخواهید از دستورات AT COMMAND برای ایجاد یک ارتباط اینترنتی استفاده کنید باید اون را در قالب دستورات TCP/IP اجرا کنید. یعنی چی؟ پروتکل TCP/IP میتونه دستورات مربوط به HTTP مثل GET و POST را اجرا کنه. پس بجای استفاده مستقیم از دستورات HTTP باید اونها را در قالب دستورات TCP/IP اجرا کنیم.

کل ماجرا این دوره چی بود!؟❗❕

همین! کل ماجرا و شیوه ایجاد ارتباط اینترنتی با این ماژول و با استفاده از AT COMMANDها، توی همین چند خط بالا خلاصه شد! یعنی شما 11 قسمت را خوندید که برسید به پاراگراف بالا!!

آموزش کامل ارسال دستور GET و POST

البته اینکه متن کامل دستور GET و POST شما چی باید باشه، بستگی به طراح وب شما داره، در زمان طراحی صفحه وب برای دستور GET یا POST به‌غیراز این دو عبارت باید از عبارت‌های کمکی دیگری هم استفاده کنیم. این عبارات در زمان طراحی سایت، مشخص می­شوند. زمانی که شما می‌خواهید با ماژول و با استفاده از دستور GET یا POST با سایت موردنظر، تبادل داده انجام دهید، باید از این عبارات کمکی اطلاع داشته باشید و در یک قالب صحیح دستور خود را ارسال کنید.

 

برای مثال، مقدار یک سنسور دما را به یک سایت با IP (آدرس) زیر ارسال می­کنم. ابتدا با دستورات پروتکل TCP/IP به سایت یا IP موردنظر وصل شدم، بعد برای ارسال از دستور GET و در قالب شکل زیر استفاده کردم. آدرس سایت و محلی که داده باید به آنجا ارسال شود به‌صورت زیر است:

آدرس جایی که دیتا باید به آن ارسال شود.

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

راه‌اندازی ماژول وای‌فای ESP8266 و تبادل دیتا از طریق HTTP(S) | قسمت یازدهم مفاهیم شبکه و اینترنت در راه‌اندازی ماژول ESP8266

اون مقدار قرمزرنگ Value هم، همان مقدار سنسور دماست که قرار بود ارسال کنیم. پس دستور GET باتوجه‌به پروتکل TCP/IP و همچنین طراحی سایت و مقدار سنسور دمای 101، به‌صورت زیر خواهد شد:

راه‌اندازی ماژول وای‌فای ESP8266 و تبادل دیتا از طریق HTTP(S) | قسمت یازدهم مفاهیم شبکه و اینترنت در راه‌اندازی ماژول ESP8266

این دستور کامل نیست! و اگه اینو ارسال کنید، ماژول بهتون خطا میده! در ادامه دستور بالا و برای تکمیل پروتکل TCP/IP باید آن را به‌صورت کامل شده زیر ارسال کنید:

راه‌اندازی ماژول وای‌فای ESP8266 و تبادل دیتا از طریق HTTP(S) | قسمت یازدهم مفاهیم شبکه و اینترنت در راه‌اندازی ماژول ESP8266

تا اینجا با استفاده از پروتکل TCP/IP و متد GET تونستیم داده­ای را ارسال کنیم. شاید از خودتون بپرسید، متد GET برای دریافت باشه! پس چرا برای ارسال استفاده شد؟! بله کاملاً صحیح هستش. میتونیم از متد GET که برای ارسال درخواستِ دریافتِ داده هست، برای ارسال داده نیز استفاده کنیم.

برای متد POST هم چیزی شبیه به فرایند بالا را داریم. یعنی با پروتکل TCP/IP به سایت مدنظر متصل میشید، بعد باتوجه‌به طراحی سایت برای متد POST، از این دستور استفاده می­کنیم. باتوجه‌به اینکه طراح سایت من چه ساختاری برای دستور POST قرار داده، این دستور را اجرا می­کنم:

ابتدا با دستورات پروتکل TCP/IP به سایت یا IP موردنظر وصل شدم و بعد دستور POST به­ صورت زیر:

دقت کنید که دستور GET را میتونید داخل قسمت URL وارد کنید؛ ولی دستور POST را از این طریق نمیتونید ارسال کنید.

خب… بریم روند اجرای دستورات بالا را با ماژول ESP8266 ببینیم:

1. دستور GET در ESP8266

برای ارسال از طریق ESP8266 نیز باید مراحلی را طی کرد که به ترتیب:

تا دستور شماره 2 را میتوان به راحتی از دستورات موجود در قسمت TCP/IP مربوط به ماژول پیدا (البته مقدار عددی در دستور دو بستگی به تعداد کارکتر موجود در دستور سه دارد) کرد. ولی چیزی درباره دستور سوم به چندین دلیل بیان نشده.

دلیل اول: شیوه و متن ارسالی در دستور GET یا POST بستگی به برنامه ­نویس سرور و هاست دارد.

دلیل دوم: اینکه در سمت دریافت‌کننده چه چیزی داده ­ها را دریافت می­کند، متفاوت است. مثلاً صفحه وب باشد یا اپلیکیشن و…

تا این /api/getrequest?data=  قسمت به‌وسیله طراح‌هاست مشخص می­شود. از HTTP/1.1 به بعد را باید در ساختار ارسال و دریافت دستورات جستجو کرد. من این کار را با نرم­ افزار HTTP debugger انجام دادم.

دستور GET در ESP8266

در نرم ­افزار بالا ابتدا IP یا Domain ای که می‌خواهید را انتخاب کنید و سپس آن را ردیابی کنید و ببینید در طی ارسال و دریافت دستوراتی مثل GET چه چیزهایی همراه می­شود. با کمی صبر و جستجو در اینترنت به نتیجه من خواهید رسید.

2. دستور POST در ESP8266

برای ارسال از طریق ESP8266 نیز باید مراحلی را طی کرد که در زیر و در قالب یک مثال به ترتیب:

دو دستور اول که مشابه دستور GET است. البته دستور دو بستگی به تعداد کاراکتر ارسالی در دستور سه دارد. قسمت /api/postrequest بستگی به برنامه­نویس وب دارد.

شاید باورتان نشود؛ ولی کل مطالب 11 قسمت را خواندیم تا فقط همین دو صفحه آخر را بتوانیم اجرا کنیم ولی از آنچه انجام می­دهیم کاملاً مطمئن و آگاه هستیم و هیچ کپی برداری کورکورانه از کسی نداشته­ ایم. امیدوارم مطالب این 11 قسمت بدرد شما هم خورده باشه و استفاده کرده باشید. احتمال داره در حین نوشتن این 11 قسمت، نتونسته باشم جاهایی رو خوب بیان کنم یا برداشت اشتباه خودم را به شما هم منتقل کرده باشم.

از این بابت از شما خواننده گرامی عذرخواهی می­کنم. این چند صفحه آخر را با دقت بخوانید و اجرا کنید و حتماً قبل از اون درباره اینترنت و شبکه اطلاعات کافی داشته باشید. درضمن نرم ­افزارهایی که با اون بشه شبکه یا اینترنت را مانیتور کرد، نیز بدردتون خواهد خورد.

راستی این مجموعه 11 قسمتی فقط برای راه ­اندازی ماژول از طریق AT COMMANDها بود. روش­ های استفاده مختلف دیگه مثل استفاده از آردوینو و پایتون برای استفاده هم هست. که امیدوارم دوستان دیگه هم تمایل برای به اشتراک گذاشتن دانششون با دیگران را داشته باشند و تبدیل به چراغ روشنی برای مسیر بقیه دوستان بشن. به امید روزهای روشن…

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

نوشته های مشابه

1 دیدگاه در “راه‌اندازی ماژول وای‌فای ESP8266 و تبادل دیتا از طریق HTTP(S) | قسمت یازدهم مفاهیم شبکه و اینترنت در راه‌اندازی ماژول ESP8266

  1. Avatar for موسوی موسوی گفت:

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

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

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