در این مقاله مجموعه ای از توابع مفید Wi-Fi برای ESP32 را بررسی خواهیم کرد. در این تحلیل کتابخانه WiFi.h عناوینی مانند، اسکن شبکه های Wi-Fi، اتصال به شبکه Wi-Fi، دریافت قدرت اتصال Wi-Fi، بررسی وضعیت اتصال، را بررسی خواهیم کرد. ESP32 نسل پیشرفته ESP8266 است. یکی از تفاوتهای آن بلوتوث داخلیاش میباشد. همچنین دارای هسته وایفای ۲,۴ گیگا هرتزی و بلوتوث داخلی تولید شده با تکنولوژی ۴۰ نانومتری شرکت TSMC میباشد. این ماژول دارای بهترین پرفورمنس در مصرف انرژی میباشد یعنی با کمترین مصرف انرژی بهترین نتیجه را برای ما به همراه دارد. اگر بخواهیم دقیقتر به این برد نگاه کنیم باید بگوییم که این یک chip است که پلتفرم NodeMCU در اون پیاده سازی شده که به این نوع چیپ ها System on a chip microcontrollers هم گفته میشود. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
نصب کتابخانه WiFi.h
هنگام نصب افزونه ESP32 در Arduino IDE، این کتابخانه به طور خودکار نصب می شود. اگر ESP32 را نصب نکرده اید، می توانید مراحل زیر را دنبال کنید. با این حال اگر هنوز روش نصب را نمیدانید، مطابق توضیحات ادامه دهید. ابتدا در نرم افزار Arduino IDE به مسیر File> Preferences بروید. لینک زیر را در بخش مشخص شده قرار دهید.
https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
- سپس به مسیر Tools > Board > Boards Manager بروید.
- در بخش board manager کلمه ESP32 را سرچ کنید و بر روی install کلیک کنید.
فراخوانی کتابخانه
#include <WiFi.h>
حالت های مختلف در WiFi.h
در برد های ESP32 این امکان فراهم است تا حالت اجرایی وایفای را بصورت نرافزاری برای پروژه های مختلف تغییر دهیم. برد ESP32 می تواند به عنوان Wi-Fi Station ،Access Point یا هر دو عمل کند. برای تنظیم حالت Wi-Fi از ()WiFi.mode استفاده کنید و حالت مورد نظر را به عنوان آرگومان تنظیم کنید
WiFi.mode(WIFI_STA) | در این حالت تراشه ESP به دیگر نقاط دسترسی متصل میشود |
WiFi.mode(WIFI_AP) | در این حالت نقاط دسترسی میتوانند به یکدیگر متصل شوند |
WiFi.mode(WIFI_STA_AP) | در این حالت اکان اتصال دیگر ESP ها به این ESP فراهم میشود |
مستندات عملکرد اعضا
- ;()WiFi.begin
شبکه وای فای را با کتابخانه WiFi آغاز می کند و وضعیت مدنظر را ارائه می دهد.
- ssid: SSID (شناسه تنظیم سرویس) نام شبکه WiFi است که می خواهید به آن متصل شوید.
- keyIndex: شبکه های رمزگذاری شده WEP می توانند تا ۴ کلید مختلف را در خود نگه دارند. این مشخص می کند که از کدام کلید استفاده می کنید.
- key: یک رشته هگزادسیمال به عنوان کد امنیتی برای شبکه های رمزگذاری شده WEP استفاده می شود.
- pass: شبکه های رمزگذاری شده WPA برای امنیت از رمز عبور به صورت رشته استفاده می کنند.
WiFi.begin(); WiFi.begin(ssid); WiFi.begin(ssid, pass); WiFi.begin(ssid, keyIndex, key);
- ;()WiFi.disconnect
با فراخوانی این تابع WiFi را از شبکه فعلی قطع می کنید.
WiFi.disconnect();
- ;()WiFi.config
این تابع به شما امکان می دهد آدرس IP ثابت را پیکربندی کنید و همچنین آدرس های DNS gateway و subnet را روی WiFi تغییر دهید. برخلاف ;()WiFi.begin که به طور خودکار WiFi را برای استفاده از DHCP پیکربندی می کنید، ;()WiFi.config به شما امکان می دهد به صورت دستی آدرس شبکه را تنظیم کنید.
- ip: آدرس IP دستگاه (آرایه ۴ بایت)
- dns: آدرس سرور DNS.
- gateway: آدرس IP گیتوی شبکه.
WiFi.config(ip); WiFi.config(ip, dns); WiFi.config(ip, dns, gateway); WiFi.config(ip, dns, gateway, subnet);
- ;()WiFi.setDNS
این تابع به شما این امکان را میدهد تا سرور DNS (Domain Name System) را پیکربندی کنید.
WiFi.setDNS(dns_server1) WiFi.setDNS(dns_server1, dns_server2)
- ;()WiFi.SSID
این تابع SSID شبکه فعلی را که به آن متصل هستید را دریافت می کند. همچنین با وارد کردن نام اکسس پوینت قادر به مشخص کردن هدف برای دریافت اطلاعات هستیم.
WiFi.SSID(); WiFi.SSID(wifiAccessPoint)
- ;()WiFi.BSSID
با فراخوانی این تابع آدرس MAC روتری را که به آن متصل هستید دریافت می کنید.
WiFi.BSSID(bssid);
- ;()WiFi.RSSI
این تابع قدرت سیگنال متصل به روتر را اندازه می گیرد، پارامتر wifiAccessPoint، مشخص می کند که از چه شبکه ای اطلاعات به دست می آید.
WiFi.RSSI(); WiFi.RSSI(wifiAccessPoint);
- ;()WiFi.encryptionType
این تابع نوع رمزگذاری شبکه فعلی را دریافت می کند.با استفاده از پازامتر wifiAccessPoint، مشخص می کنیم که از چه شبکه ای باید اطلاعات را بدست آوریم.
WiFi.encryptionType(); WiFi.encryptionType(wifiAccessPoint);
- ;()WiFi.scanNetworks
این تابع شبکه های WiFi موجود را اسکن می کند و شماره بدست آمده را برمی گرداند، که میتوانیم این مقادیر در سریال مانیتور یا انواع نمایشگر ها نمایش دهیم.
WiFi.scanNetworks();
- ;()WiFi.status
این تابع وضعیت اتصال را بررسی میکند. پاسخ های برگشتی از این تابع به شرح زیر میباشند.
WL_CONNECTED: هنگام اتصال به شبکه WiFi اختصاص داده می شود.
WL_NO_SHIELD: اختصاص داده می شود زمانی که هیچ شبکه WiFi وجود ندارد.
WL_IDLE_STATUS: این وضعیت موقتی است که با فراخوانی ;()WiFi.begin فعال می ماند و تا پایان تعداد تلاشها، در نتیجه WL_CONNECT_FAILED. یا برقراری اتصال فعال می شود، در نتیجه WL_CONNECTED.
WL_NO_SSID_AVAIL: اختصاص داده شده در صورت عدم وجود SSID.
WL_SCAN_COMPLETED: پس از اتمام شبکه های اسکن، نمایش داده می شود.
WL_CONNECT_FAILED: وقتی اتصال برای همه تلاش ها ناموفق باشد، این مقدار برگردانده می شود.
WL_CONNECTION_LOST: وقتی اتصال قطع شود، برگردانده می شود.
WL_DISCONNECTED: هنگام قطع شدن از شبکه اختصاص داده می شود.
WiFi.status();
- ;()WiFi.getSocket
WiFi.getSocket();
- ;()WiFi.macAddress
WiFi.macAddress(mac);
قطعات سازگار با کتابخانه
این کتابخانه با تمام تراشه های سری ESP32 ساخت شرکت espressif همخوانی دارد. نمونه هایی مانند سری تراشه هایی مانند WROOM و WROVER از این موارد هستند.
جمع بندی
در این آموزش مجموعه ای از پرکاربردترین و مفیدترین عملکردهای Wi-Fi ESP32 را بررسی کردیم. اگرچه مثالهای زیادی برای استفاده از قابلیتهای Wi-Fi ESP32 وجود دارد، اما اسناد کمی در مورد نحوه استفاده از توابع Wi-Fi با ESP32 با استفاده از Arduino IDE وجود دارد. به همین دلیل تصمیم گرفتیم این راهنما را برای سهولت استفاده از توابع مربوط به Wi-Fi ESP32 در پروژه های شما تهیه کنیم.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
بسیار عالی ، ممنونم که بجای اینکه برنامه آماده بزارید ، کتابخونه رو شرح دادید. اینجوری اطلاعاتمون برای انجام پروژه خیلی بهتره . با قدرت ادامه بده!! منتظر توضیحات بقیه کتابخونه ها هم هستم.
با سلام
سپاس از همراهی شما
سلام. این کتابخانه با کتابخانه esp8266wifi.h یکی هست یا تفاوت داره؟
با سلام
بایستی توابع هر کدام را بررسی کنید تا به پاسخ سوالتان برسید.