📶 وصل شدن ESP32 به وایفای و گرفتن IP در شبیهساز
تمام جذابیت ESP32 در وایفای آن است. قبل از اینکه وبسرور بسازیم یا داده به اینترنت بفرستیم، باید یاد بگیریم برد چطور به یک شبکه وصل میشود و آدرس IP میگیرد. خوشبختانه لازم نیست مودم خانه را دست بزنی: در شبیهساز ESP32، همانطور که در ووکوی (Wokwi) مرسوم است، یک شبکهی مجازی آماده داریم. در شبیهساز از شبکهی Wokwi-GUEST بدون رمز استفاده کن.
چه میسازیم؟
برنامهای که به وایفای وصل میشود، در سریال مانیتور مینویسد «وصل شدم» و آدرس IP و قدرت سیگنال را نشان میدهد. چراغ آبی روی برد هم نشانهی وصل بودن است: اگر شبکه قطع شود، خاموش میشود و برد خودش دوباره تلاش میکند.
قطعهها و سیمکشی
- فقط یک برد ESP32. هیچ سیمی لازم نیست؛ از LED داخلی روی GPIO2 استفاده میکنیم.
کد کامل
#include <WiFi.h>
const char* ssid = "Wokwi-GUEST"; // the simulator's virtual network
const char* password = ""; // no password
void setup() {
Serial.begin(115200);
pinMode(2, OUTPUT);
WiFi.mode(WIFI_STA); // station = a guest on a router
WiFi.begin(ssid, password);
Serial.print("Connecting");
unsigned long start = millis();
while (WiFi.status() != WL_CONNECTED) {
delay(300);
Serial.print(".");
if (millis() - start > 15000) { // give up after 15 s
Serial.println();
Serial.println("No Wi-Fi. Check the name and password.");
return;
}
}
Serial.println();
Serial.print("Connected! My IP: ");
Serial.println(WiFi.localIP());
Serial.print("Signal (RSSI): ");
Serial.println(WiFi.RSSI());
digitalWrite(2, HIGH); // built-in LED = connected
}
void loop() {
static unsigned long last = 0;
if (millis() - last > 5000) { // check every 5 seconds
last = millis();
if (WiFi.status() == WL_CONNECTED) {
digitalWrite(2, HIGH);
} else {
digitalWrite(2, LOW);
Serial.println("Wi-Fi lost, reconnecting...");
WiFi.reconnect();
}
}
}
توضیح بخشهای مهم
#include <WiFi.h>کتابخانهی وایفای که همراه هستهی ESP32 نصب است. لازم نیست چیزی دانلود کنی.WiFi.mode(WIFI_STA);حالت «ایستگاه» یعنی برد مثل گوشی تو به یک مودم وصل میشود. حالت دیگری هم به اسم AP هست که خود برد مودم میشود؛ آن را بعداً یاد میگیریم.WiFi.begin(ssid, password);شروع وصل شدن. این دستور منتظر نمیماند، برای همین بعدش یک حلقهیwhileداریم که تا وصل شدن صبر کند.- شرط
millis() - start > 15000نمیگذارد برنامه برای همیشه در حلقه گیر کند. اگر ۱۵ ثانیه گذشت و وصل نشد، پیام خطا میدهد. WiFi.localIP()آدرسی که مودم به برد داده است. بعداً همین آدرس را در مرورگر باز میکنی تا صفحهی وب برد را ببینی.WiFi.RSSI()قدرت سیگنال به دسیبل است و همیشه منفی. هرچه به صفر نزدیکتر، بهتر: مثلاً ۵۰- عالی است و ۹۰- خیلی ضعیف.- در
loopباmillis()هر پنج ثانیه وضعیت را چک میکنیم، بدون اینکه باdelayبرنامه را قفل کنیم.
Wokwi-GUEST اسم و رمز وایفای خانه را بنویس، ولی هیچوقت کدی را که رمز واقعیات در آن است در اینترنت منتشر نکن.IP دقیقاً چیست؟
آدرس IP مثل پلاک خانه در شبکه است. وقتی برد به مودم وصل میشود، مودم یک پلاک خالی، مثلاً چیزی شبیه 192.168.1.23، به آن میدهد. هر وسیلهی دیگری در همان شبکه، مثل گوشی تو، با همین آدرس میتواند برد را پیدا کند. این آدرس معمولاً داخلی است؛ یعنی از بیرون خانه دیده نمیشود و همین برای امنیت پروژههای اول خوب است.
اجرا در شبیهساز
نسخهی آمادهی این برنامه در تینکرکد فارسی است: پروژهی «وصل شدن ESP32 به وایفای». خواندن مثال رایگان است و اجرای ESP32 با اشتراک Plus ممکن میشود. برای یک تمرین بامزهتر، وایفای و چراغ نفسکش را ببین و اگر درسمحور جلو میروی، درس «وصل شدن به وایفای» با تمرین همراه است.
اشکالهای رایج
- نقطهها تمام نمیشوند: اسم شبکه را اشتباه نوشتهای.
Wokwi-GUESTبا حروف بزرگ و خط تیره است. - IP به شکل 0.0.0.0 چاپ میشود: قبل از وصل شدن کامل IP را چاپ کردهای. حلقهی
whileرا حذف نکن. - روی برد واقعی وصل نمیشود: ESP32 فقط وایفای ۲٫۴ گیگاهرتز را میشناسد؛ شبکهی ۵ گیگاهرتز مودم را نمیبیند.
- برنامه بعد از قطعی کار نمیکند: بخش وصل شدن دوباره در
loopرا جا انداختهای.
حالا که برد IP دارد، وقت ساختن اولین سایت روی آن است: وبسرور ESP32 و روشن کردن LED از مرورگر. برای دیدن همهی پروژههای شبکه، سری به وایفای و اینترنت اشیا و صفحهی ESP32 بزن.
برنامهی وایفای ESP32 را باز کن 📶