در این مقاله روش ساخت Access point در ماژول ESP32 و اتصال چند کلاینت به آن را آموزش خواهیم داد. همراه ما باشید. برای مشاهده لیست فروشندگان ماژول ESP32 کلیک کنید.
نقطه دسترسی (Access Point)
نقطه دسترسی (Access Point) اجازه میدهد چند سامانه کامپیوتری را از طریق شبکههای بیسیم به یکدیگر متصل و یک شبکه محلی بیسیم (WLAN) به وجود آوریم. یک نقطه دسترسی از طریق کابل اترنت به یک روتر، سوئیچ یا هاب متصل می شود و یک سیگنال Wi-Fi را به یک منطقه تعیین شده ارسال می کند.
برای آنکه دستگاههای درون یک شبکه سیمی را به یکدیگر و به اینترنت متصل کنیم باید Access Point را به روتر وصل کنیم. کار اصلی روتر اختصاص دادن آدرسهای آیپی به دستگاههای تحت شبکه و دریافت بستههای داده از دستگاههایی مانند Access Point و اتصال دستگاهها به اینترنت و امکان پیادهسازی یک شبکه بیسیم است. Access Point با ایجاد یک نقطه دسترسی، یک نام شبکه (SSID) منتشر میکند تا سایر دستگاههای وایفای بتوانند با استفاده از وایفای به نقطه دسترسی ساخته شده متصل شوند. دستگاههایی که به Access Point متصل میشوند در یک شبکه محلی با یکدیگر در ارتباط هستند.
انواع مد های کاری ماژول ESP32
ماژول وای فای ESP32 قابلیت برنامه ریزی و تنظیم در 3 حالت و مد کاری را دارد.
- مد کاری Access Point
در این حالت ماژول ESP32 به گونه ای تنظیم میشود که سایر دستگاه ها بتوانند به آن متصل شده و تبادل داده انجام دهند. مثلا از طریق گوشی به آن متصل شده و دستگاه های برقی را کنترل کنند.
- مد کاری STATION
در این حالت ماژول ESP32 به یک Access Point دیگر متصل و دیتا رد و بدل خواهد شد. مثلا متصل کردن ماژول ESP32 به مودم Wi-Fi اطراف خود.
- مد کاری Both
در این حالت ماژول ESP32 در هر دو حالت Access Point و Station تنظیم خواهد شد.
حالا که با مفهوم نقطه اتصال (Access Point) و مد های کاری ESP32 آشنا شدید به شروع پروژه می پردازیم.
در این آموزش یک ESP32 را در مد کاری Access Point و دیگر ماژول های ESP32 را در نقش کلاینت یا Station تنظیم می کنیم.کلاینت می تواند یک ماژول ESP32، گوشی موبایل و یا یک کامپیوتر باشد.
در واقع با تبدیل شدن ESP32 به Access Point با تخصیص یک SSID (نام شبکه)، یک رمز عبور و یک آدرس آی پی دلخواه، ماژول های دیگر می توانند به آن متصل شوند و در شبکه محلی به تبادل اطلاعات بپردازند.
ساخت Access Point در ماژول ESP32
در مرحله اول کد مربوط به ماژول Access Point را در Arduino IDE می نویسیم. سپس آن را در ESP32 که می خواهیم از آن به عنوان Access Point استفاده کنیم، آپلود می کنیم. کتابخانه های مورد نیاز برای این کد <WiFi.h> و <WiFiClient.h> می باشند.
#include <WiFi.h> #include <WiFiClient.h> const char* ssid = "esp32server"; const char* password = "123456789"; WiFiServer server(80); IPAddress local_IP(192,168,1,105); IPAddress subnet(255,255,255,0); void setup(void){ Serial.begin(115200); WiFi.mode(WIFI_AP); Serial.print("Setting soft_AP configuration ..."); Serial.println(WiFi.softAPConfig(local_IP,local_IP,subnet) ? "Ready" : "Failed"); Serial.print("Setting soft_AP ..."); Serial.println(WiFi.softAP(ssid,password) ? "Ready" : "Failed"); server.begin(); Serial.print("IP: " ); Serial.println(WiFi.softAPIP()); } void loop(void){ WiFiClient client = server.available(); if(!client) return ; String request = client.readStringUntil('\r'); Serial.print("from client: " ); Serial.println(request); client.print("Dear client. I am server."); client.println("\r"); client.flush(); client.stop(); delay(1000); }
در این کد SSID و password دلخواه را جهت اتصال کلاینت ها وارد می کنیم. همچنین یک آدرس آی پی دلخواه به Access Point اختصاص می دهیم. همینطور که در کد مورد نظر مشاهده می شود سرور بر روی پورت 80 بالا می آید. اگر سرور برای کلاینت در دسترس باشد کلمه Ready چاپ می شود و در غیر این صورت Failed چاپ می شود. در صورت اتصال موفق عبارت Dear client. I am server برای کلاینت ارسال و در سریال مانیتور آن چاپ می شود. عبارت بالا می تواند با هر اطلاعات دیگری یا مقادیر سنسورها جایگزین شود.
اتصال کلاینت ها به Access Point
در سمت دیگر کلاینت قرار دارد. کتابخانه ها، SSID، password و آی پی دقیقا مشابه کد Access Point می باشد. در صورت اتصال صحیح به سرور، connected to WiFi ،SSID و آی پی تخصیص داده و به کلاینت در سریال مانیتور آن چاپ می شود. در نهایت عبارت Hi server, I am client برای سرور ارسال و در سریال مانیتور آن چاپ می شود. اگر از گوشی یا کامپیوتر به عنوان کلاینت استفاده شود، بعد از اتصال به شبکه با وارد کردن آی پی سرور در مرورگر عبارت ارسالی نمایش داده می شود.
#include<WiFi.h> #include <WiFiClient.h> char ssid[] = "esp32server"; char pass[] = "123456789"; IPAddress server(192,168,1,105); void setup() { Serial.begin(115200); WiFi.begin(ssid,pass); while(WiFi.status() != WL_CONNECTED){ Serial.print("."); delay(500); } Serial.println("connected to WiFi"); Serial.print("IP: "); Serial.println(WiFi.localIP()); Serial.print("SSID: "); Serial.println(WiFi.SSID()); } void loop() { WiFiClient client; if(client.connect(server,80)){ client.print("Hi server, I am client \r"); String answer = client.readStringUntil('\r'); Serial.print("from server: "); Serial.println(answer); client.flush(); } }
Thank you for the good writeup. It in truth was a leisure account it. Glance advanced to more brought agreeable from you! By the way, how can we communicate?
Hello
we’re glad to have get deal with foreign markets to explode our business. As this offer relates to our international team, you can be in touch with head of that department. here we leave you email of head master of international team.
good to see you
mmb_mohammad@yahoo.com
Great post.