FAQ ESP32 + WiFi สำหรับมือใหม่

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

บทความนี้ไม่ได้จะสอนยาวแบบตำรา แต่จะพาคุณไล่ดูว่า อาการที่คุณเจออยู่ตอนนี้น่าจะเกี่ยวกับอะไร ควรเช็กตรงไหนก่อน และควรอ่านบทความไหนต่อในคลัสเตอร์ ESP32 WiFi ของ Deva DIY เพื่อให้ไปต่อได้เร็วที่สุด

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

ถ้าคุณเจอปัญหาแบบนี้ ให้เริ่มจากตรงนี้ก่อน

ถ้าคุณยังไม่แน่ใจว่าควรอ่านบทความไหนก่อน ลองดูจากอาการที่เจอได้เลยครับ

แนวคิดง่าย ๆ คือ หน้านี้เป็นเหมือนแผนที่ครับ ถ้าคุณยังหาต้นตอปัญหาไม่เจอ ให้อ่านหน้านี้ก่อน แล้วค่อยไปหน้าลึกที่ตรงกับงานของคุณ

อินโฟกราฟิกแสดง ESP32 เชื่อมต่อ WiFi พร้อมคำถามที่พบบ่อย เช่น ต่อ WiFi ไม่ติด ดู IP และใช้งาน hotspot

ตารางเช็กอาการเบื้องต้นของ ESP32 WiFi

อาการสาเหตุที่เป็นไปได้ควรเช็กก่อน
หา WiFi ไม่เจอใช้ 5GHz, SSID ซ่อน, สัญญาณอ่อนลองสแกนเครือข่ายด้วย WiFi.scanNetworks()
ต่อ WiFi ไม่สำเร็จSSID หรือรหัสผ่านผิดเช็ก WiFi.status() และลองพิมพ์ค่าออก Serial Monitor
ต่อได้แต่เปิดหน้าเว็บไม่เจอIP เปลี่ยน, คนละวงเน็ต, router แจก IP ใหม่ดู WiFi.localIP() ทุกครั้งหลังเชื่อมต่อสำเร็จ
ใช้งานไปสักพักแล้วหลุดสัญญาณอ่อน, router แกว่ง, โค้ดบล็อกนานเกินไปดู RSSI และหลีกเลี่ยง delay() ยาว
ใช้ hotspot มือถือแล้วต่อไม่ได้มือถือปล่อย 5GHz หรือเปิดโหมดประหยัดพลังงานตั้ง hotspot เป็น 2.4GHz และปิด Data Saver
ตารางอาการและวิธีเช็กปัญหา ESP32 WiFi สำหรับมือใหม่

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

ESP32 เชื่อมต่อ WiFi ยังไง?

พื้นฐานที่สุดคือใช้ WiFi.begin(ssid, password) แล้ววนเช็กสถานะด้วย WiFi.status() จนขึ้น WL_CONNECTED แต่ในการใช้งานจริงไม่ควรรอแบบไม่มีที่สิ้นสุด ควรใส่ timeout ด้วย เพื่อป้องกันบอร์ดค้างถ้าใส่ชื่อ WiFi หรือรหัสผ่านผิด

สาเหตุที่เจอบ่อยมากคือ ใส่ SSID/Password ผิด, ใช้ WiFi 5GHz, สัญญาณอ่อน หรือ router มีปัญหาเรื่องแจก IP หากคุณเจออาการนี้ตรง ๆ แนะนำให้อ่านต่อที่บทความ ESP32 เชื่อมต่อ WiFi ไม่ได้ แก้ยังไง?

ไม่รองรับครับ ถ้าคุณใช้ WiFi บ้านหรือ hotspot มือถือ ต้องแน่ใจก่อนว่าเครือข่ายที่ปล่อยเป็น 2.4GHz ไม่อย่างนั้น ESP32 จะมองไม่เห็นหรือเชื่อมต่อไม่ได้

หลังเชื่อมต่อสำเร็จ ให้ใช้ WiFi.localIP() เพื่อดู IP Address ที่ router แจกให้ ESP32 ค่านี้สำคัญมาก เพราะถ้าคุณจะเปิดหน้า Web Server หรือเรียก API จาก ESP32 คุณต้องรู้ IP ตัวนี้ก่อน

ได้ครับ แต่มีเงื่อนไขว่า hotspot ควรเปิดแบบ 2.4GHz และบางรุ่นต้องปิดโหมดประหยัดพลังงานหรือ Data Saver ด้วย ไม่อย่างนั้นมือถืออาจจำกัดการปล่อยเน็ตจน ESP32 เชื่อมต่อไม่เสถียร

อาการนี้เจอได้ถ้า router แจก IP ไม่สำเร็จ, DHCP มีปัญหา, หรืออุปกรณ์ในวงเน็ตเยอะเกินไป เบื้องต้นให้ลองรีบูต ESP32, รีสตาร์ท router และพิมพ์ค่า WiFi.localIP() ตรวจสอบทุกครั้ง ถ้าต้องการ IP คงที่ค่อยพิจารณาใช้ static IP

ได้ครับ โดยใช้ WiFi.softAP(ssid, password) แล้ว ESP32 จะปล่อย WiFi ของตัวเองออกมา เหมาะกับงานตั้งค่าเริ่มต้น เช่น ให้ผู้ใช้ต่อเข้าไปกรอกชื่อ WiFi บ้านก่อนใช้งานจริง

WebServer ใช้งานง่าย เหมาะกับงานพื้นฐาน ส่วน ESPAsyncWebServer เหมาะกับงานที่ต้องการความลื่นขึ้น ไม่บล็อก และต่อยอดไป WebSocket หรือ real-time ได้ดีกว่า ถ้าคุณจะทำหน้า config, dashboard หรือหน้า web control ที่ดูดีขึ้น มักจะไปทาง Async มากกว่า

วิธีที่นิยมคือเก็บค่า SSID และรหัสผ่านลงใน Preferences แล้วอ่านกลับมาใช้ใหม่ตอนบูตครั้งถัดไป วิธีนี้เหมาะมากกับโปรเจกต์ที่ไม่อยากแก้โค้ดใหม่ทุกครั้งเวลาเปลี่ยน WiFi

ถ้าต้องการแบบ real-time จริง ๆ เช่น ส่งค่า sensor ทุก 1–2 วินาที หรืออัปเดตสถานะอุปกรณ์ทันที มักใช้ WebSocket เพราะฝั่ง client ไม่ต้องรีเฟรชหน้าเองตลอด แต่ถ้าเป็นการส่งค่าเป็นครั้ง ๆ หรือเรียก endpoint ธรรมดา HTTP GET/POST ก็ยังใช้ได้ดี

ลำดับเช็ก 5 ขั้น ถ้า ESP32 ต่อ WiFi ไม่ได้

  1. เช็กก่อนว่าเครือข่ายเป็น 2.4GHz ไม่ใช่ 5GHz
  2. ตรวจสอบ SSID และรหัสผ่าน ว่าพิมพ์ถูกจริงหรือไม่
  3. ลองสแกน WiFi รอบตัวก่อน เพื่อดูว่า ESP32 มองเห็นเครือข่ายนี้หรือเปล่า
  4. ใส่ timeout ตอนเชื่อมต่อ อย่าปล่อยให้ while loop รอไปเรื่อย ๆ
  5. พิมพ์ WiFi.status() และ WiFi.localIP() ออก Serial Monitor เพื่อดูว่าติดตรงเชื่อมหรือไม่รับ IP

หลายคนพลาดตรงที่รีบไปแก้โค้ดลึก ๆ ทั้งที่ต้นเหตุจริงเป็นแค่ hotspot ปล่อย 5GHz หรือพิมพ์รหัสผ่านผิดครับ เพราะฉะนั้นเริ่มจาก 5 ขั้นนี้ก่อน จะช่วยประหยัดเวลาได้เยอะมาก

โค้ดตัวอย่างสั้นสำหรับเช็กการเชื่อมต่อ WiFi

ถ้าคุณอยากเช็กเร็ว ๆ ว่า ESP32 ต่อ WiFi ได้หรือยัง ลองโค้ดนี้ก่อนครับ

#include <WiFi.h>

const char* ssid = "YOUR_WIFI_NAME";
const char* password = "YOUR_WIFI_PASSWORD";

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

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

  unsigned long startAttemptTime = millis();
  const unsigned long timeoutMs = 10000;

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

  Serial.println();

  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("WiFi connected");
    Serial.print("IP Address: ");
    Serial.println(WiFi.localIP());
  } else {
    Serial.println("Connect failed");
  }
}

void loop() {
}
โค้ดนี้ไม่ได้หรู แต่ดีตรงที่ใช้เช็กได้ไวมากว่า บอร์ดต่อเน็ตได้จริงไหม และ ได้ IP แล้วหรือยัง ถ้าผ่านจุดนี้ได้ ค่อยไปต่อ Web Server, WebSocket หรือระบบควบคุมต่าง ๆ ได้ง่ายขึ้น

อ่านต่อบทความไหน ถ้าคุณจะทำโปรเจกต์จริง

สรุป

ESP32 WiFi ไม่ได้ยากเกินไปครับ แต่ปัญหาที่เจอบ่อยมักเป็นเรื่องเดิม ๆ เช่น ใช้ 5GHz, รหัสผ่านผิด, ไม่รู้ IP, hotspot มือถือไม่เหมาะ หรือโค้ดรอเชื่อมต่อแบบไม่มี timeout

ถ้าคุณยังไม่รู้ว่าปัญหาตัวเองอยู่ตรงไหน ให้ใช้หน้านี้เป็นจุดเริ่มต้นก่อน แล้วค่อยไล่อ่านหน้าลึกที่ตรงกับงานของคุณ แบบนี้จะเร็วกว่าและไม่หลงในคลัสเตอร์บทความครับ

Shopping Cart
Scroll to Top