บทนำ
การเชื่อมต่อ WiFi ถือเป็นพื้นฐานสำคัญของ ESP32 ในการทำงานร่วมกับ IoT, Smart Farm, MQTT, Firebase และโครงงานต่าง ๆ แต่หลายครั้งมือใหม่เจอปัญหา “ESP32 เชื่อมต่อ WiFi ไม่ได้” ซึ่งอาจเกิดได้จากทั้งการเขียนโค้ด, Router, หรือการตั้งค่าที่ไม่ถูกต้อง บทความนี้จะพาไปดูสาเหตุ วิธีตรวจสอบ วิธีแก้ และตัวอย่างโค้ด
ก่อนจะเริ่มทำโปรเจกต์ ลองไปทำความรู้จัก ESP32 และฟีเจอร์เด่นที่คุณควรรู้ กันก่อน

สาเหตุหลักที่ทำให้ ESP32 เชื่อมต่อ WiFi ไม่ได้
1.1 ใส่ SSID หรือ Password ไม่ถูกต้อง
- ตัวอักษรเล็ก-ใหญ่มีผล เช่น “MyWiFi” ไม่เท่ากับ “mywifi”
- รหัสผ่านเกิน 63 ตัวอักษร ESP32 จะไม่เชื่อมต่อ
1.2 Access Point อยู่ไกลเกินไป / สัญญาณอ่อน
- ESP32 มีเสาสัญญาณเล็ก ถ้าสัญญาณต่ำกว่า -70 dBm จะเชื่อมต่อยาก
- ใช้คำสั่ง WiFi.RSSI() เพื่อเช็กความแรงสัญญาณ
1.3 รหัสผ่านมีอักขระพิเศษ
- เช่น @#$%^&*() อาจทำให้การเข้ารหัสผิดพลาด ควรลองรหัสแบบง่ายเพื่อทดสอบ
1.4 ใช้ความถี่ 5GHz (ESP32 รองรับแค่ 2.4GHz)
- ถ้า Router ปล่อย WiFi 2 คลื่น (2.4 + 5GHz) ให้เลือก SSID ที่เป็น 2.4GHz เท่านั้น
1.5 การเขียนโค้ดผิดลำดับ
- ต้องใช้ WiFi.begin(ssid, password); ก่อน while(WiFi.status() != WL_CONNECTED)
- ถ้าลืม delay() ใน loop เชื่อมต่อ อาจทำให้ ESP32 รีสตาร์ท
1.6 ปัญหาจาก Router
- DHCP ปิดอยู่ → ไม่แจก IP ให้ ESP32
- MAC Filter → บล็อก ESP32 อัตโนมัติ
- IP ซ้ำกับอุปกรณ์อื่น
1.7 Library หรือ Core Arduino ไม่อัปเดต
- ใช้ ESP32 Arduino Core เวอร์ชันเก่า อาจมีบั๊กเรื่อง WiFi
- ควรอัปเดตจาก ESP32 Arduino Core ล่าสุด
เพิ่งเริ่มต้นกับ ESP32? ไม่แน่ใจว่าไลบรารี WiFi มีฟังก์ชันอะไรให้ใช้บ้าง — คลิกอ่าน ESP32 WiFi Library Functions เพิ่มเติมได้เลย
วิธีตรวจสอบปัญหาเบื้องต้น
- เปิด Serial Monitor เพื่อดูข้อความ Debug
- ใช้คำสั่ง WiFi.status()
- WL_CONNECTED = เชื่อมต่อแล้ว
- WL_NO_SSID_AVAIL = หา WiFi ไม่เจอ
- WL_CONNECT_FAILED = รหัสผิด หรือ Router ปฏิเสธ
- เพิ่ม Serial.println(WiFi.localIP()); เพื่อดูว่าได้รับ IP จริงหรือ

วิธีแก้ปัญหา ESP32 เชื่อมต่อ WiFi ไม่ได้
3.1 ตรวจสอบ SSID และ Password
- คัดลอกจากมือถือ/คอมมาแทนการพิมพ์เพื่อลดความผิดพลาด
3.2 ใช้ Static IP
- ถ้า Router แจก DHCP ไม่เสถียร ลองตั้งค่าแบบ Static IP
IPAddress local_IP(192,168,1,200); IPAddress gateway(192,168,1,1); IPAddress subnet(255,255,255,0); WiFi.config(local_IP, gateway, subnet); WiFi.begin(ssid, password);
3.3 เพิ่มโค้ด Retry / Auto Reconnect
- ใช้ Loop ตรวจสอบและเชื่อมต่อใหม่อัตโนมัติ
3.4 ใช้ WiFiManager
- ทำให้ผู้ใช้เปลี่ยนรหัสผ่านผ่าน Web Page โดยไม่ต้องแก้โค้ด
👉 บทความ ESP32 WiFi Manager
3.5 ตรวจสอบ Router
- ต้องเป็น 2.4GHz
- เปิด DHCP
- รีสตาร์ท Router ถ้ามีปัญหา
3.6 อัปเดต Arduino Core
- ไปที่ Boards Manager → ติดตั้ง ESP32 by Espressif เวอร์ชันล่าสุด
เรียนรู้วิธีสร้าง WiFi Manager บน ESP32 ด้วย ESPAsyncWebServer — เข้าอ่านที่ ESPAsyncWebServer Create WiFi Manager เพื่อโค้ดตัวอย่างและขั้นตอนครบถ้วน
ตัวอย่างโค้ดแก้ปัญหา
4.1 โค้ดเชื่อมต่อ WiFi พื้นฐาน
#include <WiFi.h>
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected!");
Serial.println(WiFi.localIP());
}
void loop() {}
4.2 โค้ด Auto Reconnect
void loop() {
if (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi lost... reconnecting");
WiFi.begin(ssid, password);
delay(5000);
}
}
4.3 โค้ด Static IP + Debug
IPAddress local_IP(192,168,1,200);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
void setup() {
Serial.begin(115200);
WiFi.config(local_IP, gateway, subnet);
WiFi.begin(ssid, password);
}
สรุป
- ปัญหาหลักคือ SSID/Password, ความถี่ 5GHz, DHCP
- ใช้ Serial Monitor ตรวจสอบ Error จะช่วยแก้ได้เร็ว
- แนะนำให้ใช้ WiFiManager ในโปรเจกต์จริง เพื่อให้ผู้ใช้เปลี่ยน WiFi เอง
FAQ
ทำไม ESP32 ต่อ WiFi ไม่ติดทั้งที่รหัสถูกต้อง?
→ อาจเป็นเพราะ Router เป็น 5GHz
ESP32 รองรับ WiFi 5GHz ไหม?
→ ไม่รองรับ มีแค่ 2.4GHz
ถ้า WiFi หลุดบ่อยควรทำยังไง?
→ เพิ่ม Auto Reconnect หรือ Static IP
ใช้มือถือแชร์ Hotspot ให้ ESP32 ได้ไหม?
→ ได้ แต่ต้องเป็น 2.4GHz
Serial Monitor ขึ้น WL_NO_SSID_AVAIL คืออะไร?
→ หา SSID ไม่เจอ
ต้องใช้ Static IP หรือ DHCP?
→ แนะนำ DHCP แต่ Static ช่วยแก้ปัญหาบางกรณี
ถ้า Router ปิด DHCP จะเชื่อมต่อได้ไหม?
→ ไม่ เว้นแต่ใช้ Static IP
ทำไม ESP32 ต่อ WiFi แล้วช้า?
→ อาจเกิดจากสัญญาณอ่อนหรือ IP ซ้ำ
ควรอัปเดต ESP32 Core Arduino บ่อยไหม?
→ ควร เพื่อแก้บั๊กและเพิ่มฟีเจอร์
ทำไม WiFiManager ถึงสะดวกกว่า?
→ ไม่ต้องแก้โค้ดเมื่อเปลี่ยนเครือข่าย






