ESP32 ต่อ WiFi ไม่ได้ ติด Timeout ค้างตอน Connect แก้ยังไง?

คุณเคยเจอไหม อัปโหลดโค้ดเข้า ESP32 แล้ว Serial Monitor ขึ้นจุด …….. ไม่หยุด สุดท้ายบอร์ดเหมือนค้าง ไม่อ่าน Sensor ไม่ควบคุม Relay และต้องกด Reset ใหม่?

ปัญหานี้เจอบ่อยมากในงาน ESP32 IoT โดยเฉพาะมือใหม่ที่เริ่มต่อ WiFi ครั้งแรก เพราะโค้ดตัวอย่างหลายตัวใช้การรอ WiFi แบบไม่มี Timeout ถ้า WiFi ต่อไม่ติด ระบบก็จะติดอยู่ตรงนั้นตลอด

บทความนี้เราจะมาแก้ปัญหา ESP32 ต่อ WiFi ไม่ได้ ติด Timeout แบบใช้งานจริง ไม่ใช่แค่บอกให้เช็กชื่อ WiFi กับรหัสผ่าน แต่จะพาคุณเขียนโค้ดให้ ESP32 รอ WiFi เป็นเวลา แล้วถ้าต่อไม่ได้ก็ยังทำงานส่วนอื่นต่อได้

ถ้าคุณเจอปัญหา WiFi แบบอื่นร่วมด้วย เช่น ต่อไม่ติดเลย, หา WiFi ไม่เจอ, ได้ IP แปลก ๆ หรือ Router ไม่ยอมให้เชื่อมต่อ แนะนำให้อ่านบทหลักนี้ควบคู่กัน:

อ่านบทหลัก: ESP32 เชื่อมต่อ WiFi ไม่ได้ แก้ยังไง

ESP32 ต่อ WiFi ไม่ได้ ติด Timeout คืออะไร?

ESP32 WiFi Timeout คืออาการที่บอร์ดพยายามเชื่อมต่อ WiFi แต่เชื่อมต่อไม่สำเร็จภายในเวลาที่เหมาะสม เช่น 5 วินาที, 10 วินาที หรือ 15 วินาทีถ้าเราเขียนโค้ดแบบไม่มี Timeout บอร์ดจะรอ WiFi ไปเรื่อย ๆ จนดูเหมือนระบบค้าง ทั้งที่จริง ๆ ESP32 ยังทำงานอยู่ แต่ติดอยู่ใน loop รอการเชื่อมต่อ WiFiตัวอย่างโค้ดที่มักทำให้มือใหม่เจอปัญหา:
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
}
โค้ดนี้ดูง่ายและใช้ได้ในงานทดลอง แต่ถ้าเอาไปใช้กับงานจริง เช่น Smart Farm, ระบบแจ้งเตือน, ระบบควบคุม Relay หรือ Data Logger จะเริ่มมีปัญหา เพราะถ้า WiFi ไม่ติด ระบบจะไม่ขยับไปทำงานส่วนอื่นเลย
สรุปแบบช่าง: ปัญหาไม่ได้อยู่ที่ WiFi อย่างเดียว แต่อยู่ที่เราเขียนโค้ดให้ ESP32 “รอแบบไม่มีทางออก”
อาการที่มักเจอเมื่อ ESP32 ต่อ WiFi แล้วค้าง เช่น Connecting ไม่จบ ไม่แสดง IP และ Relay ไม่ตอบสนอง

อาการที่พบบ่อยเมื่อ ESP32 ต่อ WiFi แล้วค้าง

ถ้าคุณกำลังเจออาการเหล่านี้ มีโอกาสสูงว่าโค้ดกำลังติดอยู่ที่ขั้นตอนเชื่อมต่อ WiFi

  • Serial Monitor แสดงจุด ..... ไม่หยุด
  • ขึ้นข้อความ Connecting to WiFi แล้วไม่ไปต่อ
  • ไม่แสดง IP Address
  • Relay ไม่ทำงาน
  • Sensor ไม่อ่านค่า
  • ปุ่มกดไม่ตอบสนอง
  • ต้องกดปุ่ม Reset บ่อย ๆ
  • เปลี่ยน Router แล้วต่อไม่ได้
  • ใช้ Hotspot มือถือได้ แต่ Router บ้านไม่ได้

อาการนี้ไม่ได้แปลว่า ESP32 เสียเสมอไป ส่วนใหญ่เกิดจาก 2 กลุ่มปัญหา คือ

  1. WiFi ต่อไม่สำเร็จจริง เช่น SSID ผิด, รหัสผ่านผิด, สัญญาณอ่อน
  2. โค้ดรอ WiFi แบบบล็อกระบบ ทำให้โปรแกรมไม่ไปทำงานส่วนอื่น

WiFi Timeout คืออะไร?

Timeout แปลแบบภาษาคนทำโปรเจกต์คือ “ให้เวลารอแค่ช่วงหนึ่งพอ ถ้ารอแล้วไม่สำเร็จ ให้ระบบไปทำอย่างอื่นต่อ”ยกตัวอย่างง่าย ๆ ถ้าเราตั้ง WiFi Timeout ไว้ 10 วินาที ESP32 จะพยายามต่อ WiFi ภายใน 10 วินาที ถ้าต่อได้ก็เข้า Online Mode ถ้าต่อไม่ได้ก็ให้ระบบทำงานต่อใน Offline Modeแนวคิดนี้สำคัญมากกับงาน IoT จริง เพราะระบบไม่ควรฝากชีวิตไว้กับ WiFi อย่างเดียว

ทำไมไม่ควรรอ WiFi แบบไม่มีวันจบ?

เพราะงานจริงมีสิ่งที่สำคัญกว่า WiFi เช่น

  • ระบบรดน้ำต้องทำงานตามเวลา
  • Sensor ต้องอ่านค่าต่อเนื่อง
  • Relay ต้องควบคุมอุปกรณ์ได้
  • ระบบเตือนภัยต้องตรวจจับต่อไป
  • เครื่องจักรต้องไม่หยุดเพราะ Router มีปัญหา

ดังนั้นแนวคิดที่เหมาะกับ ESP32 คือ Local First ให้ระบบหลักทำงานในบอร์ดก่อน ส่วน WiFi, Cloud, Telegram, Google Sheets หรือ Dashboard เป็นส่วนเสริม

ถ้าคุณยังไม่เข้าใจเรื่องโค้ดค้างจาก delay หรือ loop ที่บล็อกระบบ แนะนำอ่านบทนี้เสริม:


อ่านต่อ: ESP32 ใช้ delay() แล้วค้าง แก้ยังไง

สาเหตุที่ ESP32 ต่อ WiFi แล้วติด Timeout

1. ชื่อ WiFi หรือรหัสผ่านผิด

เป็นสาเหตุพื้นฐานที่สุด แต่ก็เจอบ่อยที่สุด โดยเฉพาะกรณีมีตัวอักษรพิมพ์เล็ก พิมพ์ใหญ่ ช่องว่าง หรือสัญลักษณ์พิเศษ

const char* ssid = "YourWiFi";
const char* password = "YourPassword";

ให้ลองคัดลอกชื่อ WiFi และรหัสผ่านใหม่อีกครั้ง อย่าพิมพ์ด้วยความจำอย่างเดียว

2. ใช้ WiFi 5GHz แต่ ESP32 รองรับ 2.4GHz

ESP32 ทั่วไปใช้ WiFi 2.4GHz ถ้าคุณพยายามเชื่อมต่อกับ WiFi 5GHz จะต่อไม่ได้

Router บางรุ่นใช้ชื่อ WiFi เดียวกันทั้ง 2.4GHz และ 5GHz ทำให้มือใหม่สับสน แนะนำให้ลองแยกชื่อ WiFi เช่น

  • HomeWiFi_2.4G
  • HomeWiFi_5G

แล้วให้ ESP32 ต่อกับชื่อที่เป็น 2.4GHz

3. สัญญาณ WiFi อ่อน

ถ้า ESP32 อยู่ไกล Router หรือมีผนังหลายชั้นกั้น อาจต่อไม่ติดหรือต่อช้ามากจนเหมือนติด Timeout

วิธีทดสอบง่ายที่สุดคือ เอา ESP32 ไปวางใกล้ Router ก่อน ถ้าต่อได้ แปลว่าปัญหาอาจมาจากสัญญาณ

4. Router จำกัดจำนวนอุปกรณ์

Router บางตัว โดยเฉพาะ Router บ้านหรือ Hotspot มือถือ อาจจำกัดจำนวนอุปกรณ์ที่เชื่อมต่อได้ ถ้าอุปกรณ์เต็ม ESP32 อาจต่อไม่สำเร็จ

5. ESP32 ได้ไฟไม่พอ

ตอน ESP32 เปิด WiFi จะใช้กระแสเพิ่มขึ้น ถ้าไฟเลี้ยงไม่นิ่ง อาจเกิดอาการ Reset, ต่อ WiFi ไม่ติด หรือค้างแบบสุ่ม

คำแนะนำจากงานจริง:

  • ใช้สาย USB คุณภาพดี
  • อย่าจ่ายไฟผ่านสายยาวเกินไป
  • ถ้าใช้ Relay หรือ Sensor หลายตัว ควรแยกแหล่งจ่ายไฟ
  • ถ้าระบบ Reset ตอน WiFi ทำงาน ให้สงสัยเรื่องไฟก่อน

6. โค้ดใช้ while รอ WiFi แบบบล็อกระบบ

นี่คือจุดสำคัญของบทความนี้ ถ้าเขียนโค้ดให้รอ WiFi ใน while โดยไม่มีเงื่อนไข Timeout ระบบจะไม่ไปทำอย่างอื่นเลย

7. Router ใช้ Security Mode ที่บางบอร์ดเชื่อมต่อยาก

บางครั้ง Router ตั้งค่า WPA3 หรือโหมดผสมบางแบบ อาจทำให้ ESP32 บางรุ่นเชื่อมต่อยาก แนะนำให้ลองตั้งค่าเป็น WPA2-Personal เพื่อทดสอบ

8. WiFi หลุดแล้วไม่มีระบบ Reconnect

ต่อ WiFi ติดตอนเปิดเครื่อง ไม่ได้แปลว่าจะติดตลอด ถ้า WiFi หลุดกลางทาง แล้วโค้ดไม่มีระบบ reconnect งาน IoT ก็จะหยุดส่งข้อมูลทันที

เช็กเบื้องต้นก่อนแก้โค้ด

ก่อนแก้โค้ด แนะนำให้เช็กตามลำดับนี้ก่อน จะช่วยตัดปัญหาได้เร็วขึ้น

Checklist สำหรับมือใหม่

  • WiFi เป็น 2.4GHz หรือไม่
  • SSID ถูกต้องไหม
  • Password ถูกต้องไหม
  • ลองใช้ Hotspot มือถือแล้วต่อได้ไหม
  • บอร์ดอยู่ใกล้ Router หรือยัง
  • ไฟเลี้ยง ESP32 นิ่งพอไหม
  • เปิด Serial Monitor ที่ baud rate ถูกต้องหรือไม่
  • ลองอัปโหลดโค้ด WiFi Scan ดูว่าเจอชื่อ WiFi หรือไม่

ถ้าอยากเข้าใจคำสั่ง WiFi ของ ESP32 แบบเป็นระบบ เช่น WiFi.begin(), WiFi.status(), WiFi.localIP() แนะนำอ่านบทนี้:

อ่านเพิ่มเติม: ESP32 WiFi Library Functions ที่ควรรู้

วิธีแก้ด้วย WiFi Timeout แบบง่าย

แนวคิดคือ ให้ ESP32 พยายามต่อ WiFi ภายในเวลาที่กำหนด เช่น 10 วินาที ถ้าต่อไม่ได้ ให้ระบบทำงานต่อ ไม่ต้องค้างอยู่ตรงนั้น

ตัวอย่างโค้ด ESP32 WiFi Timeout

#include <WiFi.h>

const char* ssid = "YOUR_WIFI";
const char* password = "YOUR_PASSWORD";

const unsigned long wifiTimeout = 10000; // 10 วินาที

void setup() {
  Serial.begin(115200);
  delay(1000);

  Serial.println("Connecting to WiFi...");
  WiFi.begin(ssid, password);

  unsigned long startAttemptTime = millis();

  while (WiFi.status() != WL_CONNECTED &&
         millis() - startAttemptTime < wifiTimeout) {
    delay(500);
    Serial.print(".");
  }

  if (WiFi.status() == WL_CONNECTED) {
    Serial.println();
    Serial.println("WiFi Connected!");
    Serial.print("IP Address: ");
    Serial.println(WiFi.localIP());
  } else {
    Serial.println();
    Serial.println("WiFi Timeout! Continue without WiFi...");
  }
}

void loop() {
  // งานหลักของระบบยังทำงานต่อได้
  Serial.println("Main loop is running...");
  delay(1000);
}

อธิบายโค้ด

  • wifiTimeout คือเวลาสูงสุดที่ยอมให้ ESP32 รอ WiFi
  • startAttemptTime คือเวลาที่เริ่มพยายามต่อ WiFi
  • millis() - startAttemptTime ใช้วัดเวลาที่ผ่านไป
  • ถ้า WiFi ต่อสำเร็จ จะได้ IP Address
  • ถ้าครบเวลาแล้วยังต่อไม่ได้ ระบบจะออกจาก while
Tip จากงานจริง: สำหรับมือใหม่ ให้เริ่มจาก Timeout 10 วินาทีก่อน เพราะอ่าน Serial Monitor ทัน และยังไม่หน่วงระบบเกินไป

เขียน WiFi Reconnect แบบไม่บล็อกระบบ

โค้ด Timeout ด้านบนช่วยแก้ปัญหาตอนเปิดเครื่อง แต่ในงานจริง WiFi อาจหลุดระหว่างทำงานได้ ดังนั้นเราควรมีระบบ reconnect ที่ไม่ทำให้ loop ค้าง

หลักคิดคือ:

ถ้า WiFi หลุด
↓
รอให้ครบเวลาที่กำหนด
↓
ลองเชื่อมต่อใหม่
↓
ระหว่างนั้น Sensor และ Relay ยังทำงานต่อ

ตัวอย่างโค้ด Reconnect WiFi แบบไม่บล็อก

#include <WiFi.h>

const char* ssid = "YOUR_WIFI";
const char* password = "YOUR_PASSWORD";

unsigned long lastReconnectAttempt = 0;
const unsigned long reconnectInterval = 5000; // ลองใหม่ทุก 5 วินาที

unsigned long lastSensorRead = 0;
const unsigned long sensorInterval = 2000; // อ่าน sensor ทุก 2 วินาที

void setup() {
  Serial.begin(115200);
  delay(1000);

  WiFi.begin(ssid, password);
  Serial.println("Start WiFi connection...");
}

void loop() {
  handleWiFi();
  readSensorTask();
  relayControlTask();
}

void handleWiFi() {
  if (WiFi.status() == WL_CONNECTED) {
    return;
  }

  if (millis() - lastReconnectAttempt >= reconnectInterval) {
    lastReconnectAttempt = millis();

    Serial.println("WiFi disconnected. Trying to reconnect...");
    WiFi.disconnect();
    WiFi.begin(ssid, password);
  }
}

void readSensorTask() {
  if (millis() - lastSensorRead >= sensorInterval) {
    lastSensorRead = millis();

    Serial.println("Read sensor value...");
    // ใส่โค้ดอ่าน Sensor ตรงนี้
  }
}

void relayControlTask() {
  // ใส่โค้ดควบคุม Relay ตรงนี้
  // เช่น ตรวจ setpoint, ตรวจเวลา, ตรวจปุ่มกด
}

จุดเด่นของโค้ดแบบนี้

  • ESP32 ไม่ค้างตอน WiFi หลุด
  • Sensor ยังอ่านค่าต่อได้
  • Relay ยังทำงานได้
  • ระบบลองต่อ WiFi ใหม่เอง
  • เหมาะกับงาน IoT จริงมากกว่าโค้ดพื้นฐาน

ถ้าคุณอยากต่อยอดแนวคิดนี้ให้ ESP32 ทำหลายงานพร้อมกัน เช่น อ่าน DHT22, อ่านปุ่มกด, ควบคุม Relay, เช็ก WiFi และส่งข้อมูลขึ้น Cloud แนะนำอ่านบทนี้:

อ่านต่อ: ทำหลายงานพร้อมกันบน ESP32 โดยไม่ใช้ delay

ถ้าคุณเพิ่งเริ่มต้นกับ ESP32 ปัญหา WiFi Timeout อาจดูเหมือนเรื่องยาก แต่จริง ๆ แล้วนี่คือหนึ่งในพื้นฐานสำคัญของงาน IoT เพราะหลายโปรเจกต์ของ ESP32 ต้องใช้ WiFi เช่น ส่งข้อมูล Sensor, ควบคุม Relay ผ่านเว็บ, แจ้งเตือนผ่าน Telegram หรือบันทึกข้อมูลลง Google Sheetsก่อนจะไปต่อเรื่องโค้ด แนะนำให้ดูภาพรวมก่อนว่า ESP32 ใช้ทำอะไรได้บ้าง เพื่อให้คุณเห็นว่าเมื่อแก้ WiFi ได้แล้ว เราจะต่อยอดไปทำโปรเจกต์อะไรได้อีกบ้าง

ตัวอย่างงานจริงในระบบ Smart Farm

ลองนึกภาพระบบรดน้ำต้นไม้อัตโนมัติที่ใช้ ESP32 อ่านค่า Soil Moisture แล้วควบคุมปั๊มน้ำ

ถ้าเขียนโค้ดให้ ESP32 รอ WiFi แบบไม่มี Timeout แล้ว Router มีปัญหา ผลที่เกิดขึ้นคือ:

  • ESP32 ไม่อ่านค่าความชื้นดิน
  • ระบบไม่สั่งเปิดปั๊มน้ำ
  • พืชอาจขาดน้ำ
  • ข้อมูลไม่ถูกส่งขึ้น Cloud
  • ผู้ใช้เข้าใจผิดว่า ESP32 เสีย

แต่ถ้าเขียนแบบมี Timeout และ Reconnect ระบบจะทำงานแบบนี้:

เปิดเครื่อง
↓
พยายามต่อ WiFi 10 วินาที
↓
ถ้าต่อได้: ส่งข้อมูลขึ้น Online Dashboard
↓
ถ้าต่อไม่ได้: ควบคุมปั๊มน้ำแบบ Local ต่อไป
↓
ทุก 5 วินาทีลอง reconnect ใหม่
↓
เมื่อ WiFi กลับมา ค่อยส่งข้อมูลต่อ
แนวคิดสำคัญ:
งาน Smart Farm ไม่ควรหยุดเพราะ WiFi ไม่ติด เพราะหน้าที่หลักของระบบคือดูแลต้นไม้ ไม่ใช่รอ Internet
ตัวอย่างงาน Smart Farm ที่ใช้ ESP32 ควบคุมระบบแบบ Local First แม้ WiFi ไม่ติด

ควรตั้ง Timeout กี่วินาทีดี?

ไม่มีค่าตายตัว แต่เลือกตามลักษณะโปรเจกต์ได้
ประเภทโปรเจกต์Timeout แนะนำเหตุผล
ทดลองพื้นฐาน10 วินาทีดูผลใน Serial Monitor ง่าย
Sensor Logging10–15 วินาทีรอ WiFi ได้บ้าง แต่ไม่ควรค้าง
Smart Farm5–10 วินาทีระบบควบคุมต้องทำงานต่อ
Relay Control5 วินาทีไม่ควรให้ระบบหน่วงนาน
Telegram / Google Sheets10–20 วินาทีต้องใช้ Internet แต่ยังควรมีทางออก
สำหรับมือใหม่ ผมแนะนำเริ่มที่ 10 วินาที แล้วค่อยปรับตามหน้างาน

Debug ยังไงถ้า ESP32 ยังต่อ WiFi ไม่ได้

ถ้าใส่ Timeout แล้ว ESP32 ยังต่อ WiFi ไม่ได้ ให้เพิ่มข้อมูล Debug ใน Serial Monitor เพื่อแยกปัญหา

1. แสดงสถานะ WiFi.status()

Serial.print("WiFi status: ");
Serial.println(WiFi.status());

2. แสดงเวลาที่ใช้ในการเชื่อมต่อ

Serial.print("Connect time: ");
Serial.print(millis() - startAttemptTime);
Serial.println(" ms");

3. แสดง IP Address เมื่อต่อสำเร็จ

Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

4. ลองใช้ Hotspot มือถือ

ถ้า ESP32 ต่อ Hotspot มือถือได้ แต่ต่อ Router บ้านไม่ได้ แปลว่าปัญหาอาจอยู่ที่ Router เช่น Security Mode, DHCP, การจำกัดอุปกรณ์ หรือชื่อ WiFi แบบรวม 2.4GHz/5GHz

5. ลองใช้ WiFi Scan

ถ้า ESP32 Scan ไม่เจอชื่อ WiFi ที่ต้องการ อาจเป็นเพราะสัญญาณอ่อน หรือ WiFi นั้นเป็น 5GHz

ค่า WiFi.status() ที่ควรรู้

สถานะความหมายแบบเข้าใจง่าย
WL_CONNECTEDเชื่อมต่อ WiFi สำเร็จ
WL_DISCONNECTEDยังไม่ได้เชื่อมต่อ หรือหลุดจาก WiFi
WL_IDLE_STATUSกำลังรอสถานะการเชื่อมต่อ
WL_CONNECT_FAILEDเชื่อมต่อล้มเหลว

ข้อควรระวังเวลาทำ WiFi Timeout

  • อย่าเรียก WiFi.begin() ถี่เกินไปใน loop
  • อย่าใช้ delay() ยาว ๆ ในงานจริง
  • อย่าให้ระบบควบคุม Relay พึ่ง Internet อย่างเดียว
  • ควรแยกฟังก์ชัน WiFi ออกจากงาน Sensor และ Relay
  • ควรมีข้อความ Debug ใน Serial Monitor เสมอ

สรุป ESP32 ต่อ WiFi ไม่ได้ ติด Timeout แก้ยังไง?

ถ้า ESP32 ต่อ WiFi แล้วค้าง ติด Timeout หรือ Serial Monitor ขึ้นจุดไม่หยุด อย่าเพิ่งสรุปว่าบอร์ดเสีย ให้เช็กก่อนว่าโค้ดของคุณกำลังรอ WiFi แบบไม่มีทางออกหรือไม่

แนวทางแก้ที่เหมาะกับงานจริงคือ:

  • เช็ก WiFi 2.4GHz, SSID, Password และสัญญาณก่อน
  • ใส่ Timeout ให้การเชื่อมต่อ WiFi
  • ใช้ millis() แทนการรอแบบยาว ๆ
  • ให้ระบบทำงานต่อได้แม้ WiFi ไม่ติด
  • ทำ Reconnect แบบไม่บล็อก loop
  • ออกแบบระบบแบบ Local First โดยเฉพาะงาน Smart Farm และ Relay Control

ถ้าคุณกำลังเริ่มเรียน ESP32 และอยากเข้าใจภาพรวมทั้งหมดตั้งแต่พื้นฐาน WiFi, Sensor, Relay ไปจนถึงการทำโปรเจกต์ IoT จริง สามารถดูบทเรียนรวมได้ที่:

ดูบทเรียน ESP32 ทั้งหมดบน DevaDIY

คอร์สสอนใช้ AI ช่วยเขียนโค้ด ESP32 และสร้างโปรเจกต์ IoT

อยากเขียนโค้ด ESP32 ให้เป็นระบบ ไม่ค้าง ไม่มั่ว และต่อยอดเป็นโปรเจกต์จริง?

ปัญหา WiFi Timeout เป็นแค่หนึ่งตัวอย่างของสิ่งที่มือใหม่เจอบ่อย เวลาทำ ESP32 IoT จริงยังมีเรื่อง Sensor, Relay, millis(), reconnect, Telegram, Google Sheets และการจัดโครงสร้างโค้ดอีกหลายจุด

ถ้าคุณอยากเรียนแบบทำตามได้ เห็นของจริง และเข้าใจว่าควรสั่ง AI อย่างไรไม่ให้โค้ดมั่ว คอร์สแนว ESP32 IoT ด้วย AI ของ DevaDIY จะช่วยให้คุณเริ่มจากพื้นฐานแล้วต่อยอดเป็นโปรเจกต์จริงได้ง่ายขึ้น

FAQ คำถามพบบ่อยเกี่ยวกับ ESP32 WiFi Timeout

1. ESP32 ต่อ WiFi แล้วขึ้นจุดไม่หยุดเกิดจากอะไร?

ส่วนใหญ่เกิดจากโค้ดรอ WiFi ใน while loop โดยไม่มี Timeout ถ้า WiFi ต่อไม่ติด ระบบก็จะวนอยู่ตรงนั้นตลอด

ESP32 ทั่วไปใช้ WiFi 2.4GHz ไม่รองรับ 5GHz ถ้าต่อกับ WiFi 5GHz จะเชื่อมต่อไม่ได้

ตัว WiFi.begin() ไม่ได้ทำให้ค้างโดยตรง แต่โค้ดที่เขียนรอ WiFi.status() แบบไม่มี Timeout อาจทำให้ระบบเหมือนค้างได้

ใช้ได้ในตัวอย่างพื้นฐาน แต่ในงานจริงไม่ควรใช้ delay ยาว ๆ เพราะจะทำให้งานอื่นหยุด ควรใช้ millis() และออกแบบแบบ non-blocking

สำหรับมือใหม่เริ่มที่ 10 วินาทีได้ ถ้าเป็นงาน Relay หรือ Smart Farm ที่ต้องทำงานเร็ว อาจลดเหลือ 5 วินาที

ได้ ถ้าเขียนโค้ดให้มี Timeout และไม่บล็อก loop ระบบยังอ่าน Sensor และควบคุม Relay ได้ แม้ไม่มี WiFi

ให้ตรวจ WiFi.status() ใน loop แล้วใช้ millis() กำหนดช่วงเวลาลองเชื่อมต่อใหม่ เช่น ทุก 5 วินาที โดยไม่หยุดงานหลัก

อาจเกิดจาก Router ใช้ 5GHz, Security Mode ไม่เข้ากัน, DHCP มีปัญหา หรือจำกัดจำนวนอุปกรณ์ที่เชื่อมต่อ

ให้เช็ก DHCP ของ Router, ลอง Restart Router หรือทดลองกำหนด Static IP ถ้ายังไม่ได้ให้ดูบทหลักเรื่อง ESP32 เชื่อมต่อ WiFi ไม่ได้

ไม่ควรพึ่ง WiFi ทั้งหมด ระบบหลัก เช่น รดน้ำ เปิดไฟ พ่นหมอก ควรทำงานแบบ Local ได้ ส่วน WiFi ใช้สำหรับแสดงผล แจ้งเตือน หรือบันทึกข้อมูลเพิ่มเติม

Shopping Cart
Scroll to Top