حالت کاری اکسس پوینت (Access Point) در ماژول ESP8266

حالت کاری اکسس پوینت Access Point (Soft AP) در ماژول ESP8266
نوشته شده توسط

سلام به همه مایکروالکامی ها. در مطلب قبلی نحوه پروگرام کردن ماژول ESP8266 که یک ماژول وایفای (WiFi) هست رو بررسی کردیم. در این قسمت قراره با هم ESP8266 را در حالت یا مد کاری اکسس پوینت Access Point بدون میکروکنترلر برنامه ریزی و تنظیم کنیم. به این کار اصطلاحا Soft AP نیز گفته می‌شود. پس با من تا انتهای مطلب همراه باشید. همچنین شما میتونید سایر مطلب من رو از این قسمت مطالعه کنید.


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

ماژول های وایفای ESP8266 قابلیت برنامه ریزی و تنظیم ماژول در 3 حالت و مد کاری را دارند.

  1. مد کاری Access Point
  2. مد کاری STATION
  3. مد Both

مد کاری Access Point

در این حالت ماژول ESP8266 طوری تنظیم می‌شود که سایر دستگاه ها میتوانند به آن متصل شده و تبادل داده کنند. مثلا از طریق گوشی به اون وصل شده و دستگاه های برقی رو کنترل کنید.

حالت و مد کاری Access Point اکسس پوینت در ماژول ESP8266
حالت و مد کاری Access Point اکسس پوینت در ماژول ESP8266

مد کاری STATION

در این حالت ماژول ESP8266 به یک اکسس پوینت Access Point دیگه وصل شده و دیتا رد بدل خواهد شد. مثلا متصل کردن ماژول ESP به مودم WiFi اطراف خود.

حالت و مد کاری Station در ماژول ESP8266
حالت و مد کاری Station در ماژول ESP8266

مد کاری Both

همینطور که نام این مد کاری مشخص هست، ماژول ESP8266 در هر دو حالت یعنی هم Access Point و هم STATION تنظیم خواهد شد.

حالت و مد کاری Both (Access Point + Station Mode) در ماژول ESP8266
حالت و مد کاری Both (Access Point + Station Mode) در ماژول ESP8266

در حالت عادی با استفاده از دستورات AT Command میتونیم حالت کاری را تنظیم کنیم. اما این هنگامی است که برنامه روی ماژول پروگرام نشده باشد. اگر مطلب قبلی را مطالعه کرده باشید این نکته ذکر شد که وقتی ماژول ESP8266 پروگرام بشه دیگه از دستورات AT پیروی نمیکنه. دلیل این هم مشخص هست. چون با پروگرام ماژول فریمور روی اون پاک خواهد شد. خب بطبع دیگه از دستورات AT پیشتیبانی نخواهد کرد.


قطعات مورد نیاز

همچنین شما میتونید با استفاده AMS1117 نیز تغذیه ماژول رو فراهم کنید. برای طراحی با این رگولاتور پیشنهاد میکنم این مطلب رو که حاوی نکات مهم و عملی در طراحی با این رگولاتور هست رو مطالعه کنید.


تنظیم مد کاری Access Point در ماژول ESP8266

در حالت عادی بدون پروگرام کردن ESP8266 میتونیم مد کاری را با دستورات AT مشخص کنیم. برای اینکار کافیه با دستور (AT+CWMODE=X) این کارو انجام بدیم. بجای X عدد متناظر با مد کاری را قرار میدیم. برای تنظیم مد Access Point در حالتی که برنامه را روی ماژول پروگرام کردیم دیگه نمیتونیم از این دستور استفاده کنیم. پس نیاز هست که با برنامه نویسی این وضعیت را اجرا کنیم.


برنامه نویسی

برای تنظیم مد اکسس پوینت (Access Point) در ماژول ESP برنامه زیر را طبق مطلب پروگرام کردن ماژول ESP8266 روی آن آپلود میکنیم.

#include <ESP8266WiFi.h>

void setup()
{
  Serial.begin(115200);
  Serial.println();

  Serial.print("Setting soft-AP ... ");
  boolean result = WiFi.softAP("SSID", "Password");
  if (result == true)
  {
    Serial.println("Ready");
  }
  else
  {
    Serial.println("Failed!");
  }
    Serial.println(WiFi.localIP());
}

void loop()
{
  Serial.printf("Stations connected = %d\n", WiFi.softAPgetStationNum());
}

تحلیل کد ها

در بخش اول کتابخانه مربوط را معرفی میکنیم. این کتابخانه در هنگام نصب بورد های ESP8266 نیز نصب خواهد شد.

در کد بالا با استفاده از دستور زیر میتوان نام و پسورد ماژول را تعیین کنیم.

WiFi.softAP("SSID", "Password");

بجای SSID نام مورد نظر بین دبل کوتیشن ها و بجای Password یک رمز دلخواه را جایگزین کنید. حتما این دو مقدار بین دبل کوتیشن باشد. خروجی این تابع یا True هست یا False. اگر درست تنظیمات اعمال شود متغیر result برابر True شده و در نتیجه شرط خط بعد اجرا خواهد شد و نتیجه روی سریال مانیتور نمایش داده خواهد شد.

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

Serial.println(WiFi.localIP());

تعداد دستگاه های متصل به ماژول را میتوان با استفاده از کد زیر در سریال مانیتور نمایش داد.

Serial.printf("Stations connected = %d\n", WiFi.softAPgetStationNum());

در صورتی که بخواهید IP ماژول رو خودمون تنظیم کنیم همینطور پورت رو از برنامه زیر استفاده کنید.

#include <ESP8266WiFi.h>

const char *ssid = "SSID";
const char *password = "Password";

unsigned int localPort = 8888;
IPAddress    apIP(192, 168, 4, 1);
IPAddress    broadcastIP(255, 255, 255, 255);
struct ip_addr *IPaddress;
IPAddress address;
WiFiServer server(4444);

void setup() {
  delay(1000);
  Serial.begin(115200);
  Serial.println();
  Serial.print("Configuring access point...");

  WiFi.mode(WIFI_AP);
  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  Serial.print(" MAC Address is:");
  Serial.println (WiFi.softAPmacAddress());

  server.begin();

}

void loop()
{
    Serial.printf("Stations connected = %d\n", WiFi.softAPgetStationNum());
}

نام و پسورد ماژول رو میتونید بین دابل کوتیشن ها در متغیر های زیر جایگزین کنید.

const char *ssid = "SSID";
const char *password = "Password";

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

WiFiClient client = server.available();
 if (client)
{
    String c = client.readString();
    Serial.println(c);
}

این تکه کد را در هر جا که نیاز داشتید قرار دهید. بعنوان مثال در حلقه لوپ.


نتیجه گیری

در این مطلب نحوه تنظیم مد کاری اکسس پوینت Access Point در ماژول ESP8266 هنگامی که مستقیما از ماژول بدون میکروکنترلر استفاده می‌شود بیان گردید. برای اینکار چون فریمور روی ماژول دیگر نصب نیست باید با برنامه نویسی این عملیات انجام شود و کد های مورد نیاز برای فعال سازی و تنظیم این حالت بررسی و درج شد.

امیدوارم از این آموزش کمال بهره را برده باشید. در صورتی که هرگونه نظر یا سوال داشتید درباره این آموزش لطفا اون رو در انتهای همین صفحه در قسمت دیدگاه ها قرار بدید. در کوتاه ترین زمان ممکن به اون ها پاسخ خواهم داد. اگر این مطلب براتون مفید بود، اون رو حتما به اشتراک بگذارید. همینطور میتونید این آموزش را پس از اجرای عملی توی اینستاگرام با هشتگ microelecom# به اشتراک بگذارید و پیج مایکروالکام (microelecom@) رو هم منشن کنید.

۶ دیدگاه برای “حالت کاری اکسس پوینت (Access Point) در ماژول ESP8266

  1. WiFiClient client = server.available();
    if (client)
    {
    String c = client.readString();
    Serial.println(c);
    }

    لطفا این کد بالا رو به کد اصلی اظافه کنید ، من هر جوری اظافه میکنم ارور میده .

  2. برای این پست و توضیحاتتون ممنونم
    من قصد دارم داده هایی که توسط چندسنسور به میکروکنترلر آرم میره رو به ماژول esp بدم تا انها رو به صورت بیسیم به کامپیوتر بفرسته تا روی آنها پردازشی صورت بگیره
    طی پروژه ای قبلا بخش سنسورها ومیکرو در برنامه keil و همینطور cubeID کدهاشون رو نوشتم و الان فقط بخش ارتباط و ارسال رو قصد دارم اضافه کنم
    منتها تصویر درستی از روندی که بایددانجام بگیره ندارم
    چه مدی انتخاب کنم ؟ یا نمای کلی توابع که باید در کدنویسی به کار ببرم؟ به ترتیب چه بخش و توابعی رو باید دربرنامه بنوسم
    من نمیتونم از اردویینو استفاده کنم چرا که علم و شناختی از ان ندارم و اینکه برام ممکن نیست همه کدهای سنسوره رو از سر بنویسم
    برای همین تسلط و شناخت گام به گام کاری که بی صورت بگیره برام مهمه

    1. سلام، شما میتونید این کارو انجام بدید و فرقی نداره میکرو شما چه مدلی هست. روند کار اینجوری هست که شما باید از دستورات AT ماژول استفاده کنید. برای اینکه کلاینت به ماژول متصل بشه و دیتا رد و بدل بشه میتونید اون را در حالت اکسس پوینت قرار بدید. همینطور علاوه بر اینکه از طریق ماژول ESP میتونید دیتا ارسال کنید میتونید دیتا هم دریافت کنید که مجددا دستورات AT مربوط به خودش را داره. برای اینکه هم دیتا ارسال بشه و هم ماژول دیتا بگیره حالت کاری ماژول را در حالت ۳ قرار بدید طبق توضیحات داکیومنت مربوط به AT پیش برید.
      اگر سوالی بود حتما بپرسید خوشحال میشم کمکی بتونم انجام بدم. همینطور از بخش تیکت هم میتونید اقدام کنید برای راهنمایی های بیشتر.

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

نشانی ایمیل شما منتشر نخواهد شد.