دستورات مقدماتی وای فای ESP8266

سلام!

در قسمت پنجم از سری ماژول وای فای ESP8266 طریقه برنامه این ماژول با IDE آردوینو توضیح داده شد و کد Hello World برقی رو آپلود کردیم (همون Blink). در این قسمت دستورات پایه وای فای را بررسی خواهیم کرد. پس همراه ما باشید



دستورات وای فای

با Example های کتابخونه شروع میکنیم، مثال های مربوط به وای فای ESP در مسیر زیر هستند:

File --> Examples --> ESP8266WiFi

اسکن شبکه ها

برای اسکن شبکه های وای فای موجود کد WiFiScan رو باز میکنیم.

توی این کد از هدر فایل ESP8266WiFi.h استفاده شده که اغلب دستورات اتصال به شبکه وای فای رو در خودش داره.

در تابع Setup بعد از راه اندازی پورت سریال با کد زیر مواجه میشد:

WiFi.mode(WIFI_STA);
WiFi.disconnect();

خط اول کد مشخص میکنه که ESP در وضعیت Station هست (یعنی قرار هست به یک اکسس پوینت متصل بشه) و در خط دوم اگر به شبکه وای فای متصل بوده، قطع می شود.

در loop برنامه ابتدا تمام شبکه های موجود توسط دستور زیر اسکن می شوند:

int n = WiFi.scanNetworks();

که n تعداد شبکه های پیدا شده است.

و سپس یک حلقه for که اسم شبکه وای فای WiFi.SSID، قدر سیگنال اون WiFi.RSSI و همچنین نوع رمزنگاری شبکه WiFi.encryptionType در سریال مانیتور چاپ می شود. البته تمام توابع فوق یک ورودی دارند که عددی است بین صفر تا n و شبکه وای فای مورد نظر رو تعیین می کند.

در مورد قدرت سیگنال در پی نوشت همین پست بیشتر بخونید!


اتصال به یک شبکه

برای اتصال به یک وای فای کافیه SSID و Passwrod اون رو به صورت زیر در کد وارد کنید:

WiFi.begin(SSID, PASSWORD);

البته ورودی این تابع میتواند دو پوینتر (متغیر) const char* باشد. پس از اجرای این دستور ESP تلاش می کند به شبکه وای فای موجود متصل شود. پس از اتصال خروجی تابع WiFi.status برابر با WL_CONNECTED خواهد شد.

پس میتونیم برای نشان دادن اتصال از کد زیر استفاده کنیم تا زمانی که در حال اتصال است نقطه چاپ کند و پس از اتصال از طریق سریال مانیتور اطلاع دهد.

while (WiFi.status() != WL_CONNECTED) {
       delay(500);
       Serial.print(&quot.&quot);
}
Serial.println(&quot&quot);
Serial.println(&quotWiFi connected&quot);
Serial.println(&quotIP address: &quot);
Serial.println(WiFi.localIP());

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


اتصال به چند شبکه

در قسمت قبل ESP فقط به شبکه معرفی شده می توانست متصل شود و اگر شبکه در دسترس نبود نمیتوانست به جایی وصل شود. در این جا یک لیست به ESP خواهیم داد تا به هر کدام دردسترس بود یا قدرت سیگنال بیشتری داشت متصل شود.

برای این منظور مثال WiFiMulti رو باز کنید. در این مثال علاوه بر هدر فایل ESP8266WiFi از ESP8266WiFiMulti.h هم استفاده شده که مربوط به اتصال به چند شبکه است.

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

wifiMulti.addAP(&quotSSID1&quot, &quotPASSWORD1&quot);
wifiMulti.addAP(&quotSSID2&quot, &quotPASSWORD2&quot);
wifiMulti.addAP(&quotSSID3&quot, &quotPASSWORD3&quot);

و زمانی که ESP به یکی از شبکه ها متصل شد تابع wifiMulti.run() خروجی WL_CONNECTED را بر میگرداند.



پی نوشت: قدر سیگنال!

تابع ()WiFi.RSSI اگر با آرگومان فراخوانی شود قدر سیگنال شبکه ای که ایندکس آن به تابع داده شده را بر میگرداند و اگر بدون آرگومان باشد و همچنین به یک شبکه متصل باشیم، قدرت سیگنال شبکه متصل را خواهد داد.

این قدرت سیگنال یک عدد منفی بین صفر تا 120- است بر حسب دسیبل (dBm) که متناسب است با میلی وات (خیلی تئوری شدااا) اگر این عدد:

  • بزرگ تر مساوی 50dBm- باشد یعنی قدرت سیگنال 100% است مثلا 25dBm-
  • کوچک تر مساوی 100dBm- باشد یعنی قدرت سیگنال 0% است مثلا 110dBm-
  • در غیر این موارد قدرت سیگنال از رابطه 2×(dBm + 100) بدست می آید مثلا 75dBm- معادل 50% است.

معمولا قدرت سیگنال کمتر از 80dBm- بسته به نویز محیط، شبکه پایداری نخواهد بود!



ممنون که همراه ما بودین. در قسمت هفتم ساخت یک وب سرور ساده را با ESP8266 شروع خواهیم کرد.

پیشاپیش منتظر نظرات، پیشنهادات و انتقادات شما هستم.