ESP32 เชื่อมต่อ WiFi ไม่ได้ แก้ยังไง? รู้สาเหตุและโค้ดที่แก้ไขได้

ESP32 เชื่อมต่อ WiFi ไม่ได้

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

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

 

Key Takeaways

  • ESP32 เชื่อมต่อ WiFi ไม่ได้ อาจเกิดจาก WiFi/รหัสผ่านผิด หรือสัญญาณไม่เสถียร 
  • หาก ESP32 ค้นหา WiFi ไม่เจอ ควรเช็ก Router, WiFi 2.4GHz และชื่อ SSID 
  • ปัญหา ESP32 WiFi หลุดบ่อยอาจเกิดจากสัญญาณอ่อน ไฟเลี้ยงไม่พอ หรือไม่มีโค้ด Reconnect 
  • WiFi.status() ช่วยบอกสาเหตุว่าเชื่อมต่อไม่สำเร็จ หา SSID ไม่เจอ หรือ WiFi หลุด
  • โค้ดเชื่อมต่อพื้นฐาน โค้ดสแกน WiFi ช่วยแก้ปัญหา ESP32 อัพโหลดโค้ดแล้ว WiFi ไม่ทำงานได้ตรงจุดขึ้น

 

สารบัญบทความ

ESP32 เชื่อมต่อ WiFi ไม่ได้ เกิดจากอะไร
ESP32 เชื่อมต่อ WiFi ไม่ได้ มีอาการแบบไหนบ้าง
ตรวจหาสาเหตุ ESP32 เชื่อมต่อ WiFi ไม่ได้
แนะนำโค้ดสำหรับแก้ ESP32 เชื่อมต่อ WiFi ไม่ได้
ความหมายของ WiFi.status ที่ควรรู้
คำถามที่พบได้บ่อย (FAQs)
ESP32 เชื่อมต่อ WiFi ไม่ได้ แก้อย่างไรให้พร้อมต่อยอดโปรเจคกับ Global Byte

 

ESP32 เชื่อมต่อ WiFi ไม่ได้ เกิดจากอะไร

ESP32 เชื่อมต่อ WiFi ไม่ได้ มักเกิดจากการตั้งค่าเครือข่ายไม่ตรงกับที่บอร์ดรองรับ โค้ดเชื่อมต่อผิดลำดับ หรือสภาพแวดล้อมของ Router ไม่พร้อมใช้งาน โดยสาเหตุที่พบบ่อยมีทั้งฝั่ง WiFi และฝั่งโค้ด สาเหตุหลักที่ควรตรวจสอบ ได้แก่

  • ชื่อ WiFi หรือรหัสผ่านผิด: SSID และ Password ต้องตรงทุกตัว รวมถึงตัวพิมพ์เล็ก-ใหญ่และช่องว่าง
  • ใช้ WiFi 5GHz: ESP32 ส่วนใหญ่รองรับ WiFi 2.4GHz เป็นหลัก หากเชื่อมต่อกับ 5GHz อาจทำให้ ESP32 ค้นหา WiFi ไม่เจอได้
  • สัญญาณอ่อนหรืออยู่ไกลจาก Router: หาก RSSI ต่ำเกินไป อาจทำให้เชื่อมต่อยากหรือเกิด ESP32 WiFi หลุดบ่อย
  • Router หรือ DHCP มีปัญหา: บางครั้งบอร์ดเชื่อมต่อได้ แต่ไม่ได้ IP Address ทำให้ใช้งานต่อไม่ได้
  • โค้ดเชื่อมต่อผิดลำดับ: เช่น ลืมเรียก WiFi.begin(), ไม่ตั้ง WiFi.mode(WIFI_STA) หรือไม่มี Debug Message
  • ไฟเลี้ยงไม่พอ: หากใช้งานร่วมกับ Relay, Sensor หรือโมดูลอื่น ไฟตกอาจทำให้บอร์ด Restart ระหว่างเชื่อมต่อ
  • Board Package หรือ Library เก่า: อาจทำให้พฤติกรรมการเชื่อมต่อไม่เสถียรหรือไม่ตรงกับตัวอย่างโค้ดใหม่

สำหรับคนที่เริ่มทำ ESP32 โปรเจค ควรดูรุ่นบอร์ด, ESP32 Pinout, แหล่งจ่ายไฟ และการรองรับ WiFi / ESP32 Bluetooth ควบคู่กับ ESP32 ราคาก่อนซื้อ เพื่อเลือกอุปกรณ์ให้เหมาะกับงานตั้งแต่แรก

 

ESP32 เชื่อมต่อ WiFi ไม่ได้ มีอาการแบบไหนบ้าง

อาการของ ESP32 เชื่อมต่อ WiFi ไม่ได้ อย่างแรกควรสังเกตข้อความบน Serial Monitor และพฤติกรรมของบอร์ดร่วมด้วย ซึ่งอาการที่พบบ่อย ได้แก่

  • ค้างที่ Connecting: มักเกี่ยวกับ SSID ผิด Password ผิด สัญญาณอ่อน หรือบอร์ดมองไม่เห็น WiFi
  • ขึ้น WL_NO_SSID_AVAIL: แปลว่าไม่พบชื่อเครือข่าย อาจเกิดจาก WiFi ปิดอยู่ ชื่อผิด หรือใช้ 5GHz
  • ขึ้น WL_CONNECT_FAILED: มักเกี่ยวกับรหัสผ่านผิด หรือ Router ปฏิเสธการเชื่อมต่อ
  • ต่อได้แต่ไม่ได้ IP: อาจเกี่ยวกับ DHCP, Router ค้าง หรือ IP Address ชนกันในเครือข่าย
  • ต่อได้แต่หลุดบ่อย: อาจมาจากสัญญาณอ่อน ไฟเลี้ยงไม่นิ่ง หรือยังไม่มี Reconnect Logic
  • ESP32 อัพโหลดโค้ดแล้ว WiFi ไม่ทำงาน: ควรเช็กว่าโค้ดเรียกใช้ WiFi ถูกลำดับหรือไม่ และเปิด Serial Monitor ที่ Baud Rate ตรงกับโค้ดหรือเปล่า

 

ตรวจหาสาเหตุ ESP32 เชื่อมต่อ WiFi ไม่ได้

วิธีตรวจหาสาเหตุ ESP32 เชื่อมต่อ WiFi ไม่ได้ ควรเริ่มจากจุดง่ายที่สุดก่อน เช่น SSID, Password, ความถี่ WiFi และค่า WiFi.status() จากนั้นจึงค่อยตรวจโค้ดและ Router ขั้นตอนแนะนำมีดังนี้

  • เช็กชื่อ WiFi และรหัสผ่าน: ตรวจว่าชื่อ WiFi ไม่มีช่องว่างเกิน ตัวพิมพ์เล็ก-ใหญ่ถูกต้อง และรหัสผ่านตรงกับ Router หรือ Hotspot ที่ใช้จริง
  • ยืนยันว่าใช้ WiFi 2.4GHz: หาก ESP32 ต่อ WiFi ไม่ได้ หรือหาเครือข่ายไม่เจอ ให้ตรวจว่าไม่ได้เลือก SSID ของช่องสัญญาณ 5GHz
  • เปิด Serial Monitor ให้ถูก Baud Rate: หากโค้ดกำหนด Serial.begin(115200); ต้องตั้ง Serial Monitor เป็น 115200 เช่นกัน
  • พิมพ์ค่า WiFi.status ออกมาดู: ค่า Status จะช่วยบอกว่าบอร์ดไม่เจอ SSID, เชื่อมต่อไม่สำเร็จ หรือหลุดการเชื่อมต่อ
  • ตรวจ IP Address หลังเชื่อมต่อ: ใช้ WiFi.localIP() เพื่อตรวจว่าบอร์ดได้รับ IP แล้วหรือยัง
  • ตรวจระดับสัญญาณ: ใช้ WiFi.RSSI() เพื่อดูว่าสัญญาณอ่อนเกินไปหรือไม่ หากอ่อนมากอาจทำให้ ESP32 WiFi หลุดบ่อย
  • ลองเชื่อมต่อกับ Hotspot มือถือเพื่อแยกปัญหา: หากต่อ Hotspot ได้ แต่ต่อ Router บ้านไม่ได้ อาจต้องกลับไปดูการตั้งค่า Router หรือ DHCP
  • เช็กไฟเลี้ยงและอุปกรณ์ที่ต่อร่วมกัน: งานอุปกรณ์ Smart Home หรือ อุปกรณ์ IoT ที่มีหลายโมดูล ควรดูไฟเลี้ยงให้เพียงพอ ไม่ควรให้บอร์ด Restart ระหว่างเชื่อมต่อ

 

แนะนำโค้ดสำหรับแก้ ESP32 เชื่อมต่อ WiFi ไม่ได้

โค้ดสำหรับแก้ ESP32 เชื่อมต่อ WiFi ไม่ได้ จะสามารถบอกได้ว่าปัญหาอยู่ที่ SSID, Password, Router หรือการเชื่อมต่อหลุดระหว่างใช้งาน 
วิธีตั้งค่า ESP32 เชื่อมต่อ WiFi มีดังนี้

โค้ดเชื่อมต่อ WiFi พื้นฐาน

#include <WiFi.h>

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

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

WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);

Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

Serial.println("\nWiFi connected");
Serial.print("IP: ");
Serial.println(WiFi.localIP());
Serial.print("RSSI: ");
Serial.println(WiFi.RSSI());
}

void loop() {

โค้ดสแกนหา WiFi รอบตัว

#include <WiFi.h>

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  Serial.println("Scan start...");
  int n = WiFi.scanNetworks();

  if (n == 0) {
    Serial.println("No WiFi found");
  } else {
    Serial.println("WiFi found:");
    for (int i = 0; i < n; i++) {
      Serial.print(i + 1);
      Serial.print(": ");
      Serial.print(WiFi.SSID(i));
      Serial.print(" RSSI=");
      Serial.println(WiFi.RSSI(i));
    }
  }
}

void loop() {
}

โค้ด Reconnect เมื่อ WiFi หลุด

#include <WiFi.h>

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

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nConnected");
}

void loop() {
  if (WiFi.status() != WL_CONNECTED) {
    Serial.println("WiFi lost, reconnecting...");
    WiFi.disconnect();
    WiFi.reconnect();
    delay(3000);
  }
}

โค้ดแต่ละส่วนหมายถึงอะไร

โค้ดนี้ช่วยแก้ปัญหา ESP32 เชื่อมต่อไวไฟไม่ได้ให้ดีขึ้น เพราะไม่ปล่อยให้บอร์ดค้างอยู่ใน while ตลอดเวลา และแสดงสถานะออกมาทาง Serial Monitor

  • #include <WiFi.h> เรียก Library สำหรับใช้งาน WiFi บน ESP32
  • WiFi.mode(WIFI_STA); ตั้งให้ ESP32 เป็น Station เพื่อเชื่อมต่อ Router
  • WiFi.begin(ssid, password); เริ่มเชื่อมต่อ WiFi ด้วยชื่อและรหัสผ่านที่กำหนด
  • wifiTimeout จำกัดเวลารอเชื่อมต่อ ไม่ให้โปรแกรมค้างไม่รู้จบ
  • WiFi.status() ใช้ดูสถานะการเชื่อมต่อ
  • WiFi.localIP() ใช้ดู IP Address เมื่อเชื่อมต่อสำเร็จ
  • WiFi.RSSI() ใช้ดูความแรงสัญญาณ เพื่อวิเคราะห์ปัญหา ESP32 WiFi หลุดบ่อย

ข้อควรระวังในการใส่โค้ด

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

  • เปลี่ยน YOUR_WIFI_NAME และ YOUR_WIFI_PASSWORD เป็นข้อมูลจริงทุกครั้ง
  • ตรวจตัวพิมพ์เล็ก-ใหญ่ของ SSID และ Password ให้ตรง
  • ใช้ WiFi 2.4GHz หากบอร์ดหรือ Router ไม่รองรับโหมดอื่น
  • ไม่ควรลบ Timeout ออก หากต้องการให้โปรแกรมส่วนอื่นทำงานต่อได้
  • หากใช้งานร่วมกับ Sensor, Relay หรือโมดูลอื่น ควรตรวจไฟเลี้ยงให้เหมาะสม
  • หากทำงานจริง ควรเพิ่ม Reconnect Logic เพื่อป้องกัน ESP32 WiFi หลุดบ่อย

ความหมายของ WiFi.status ที่ควรรู้

ค่า WiFi.status() ช่วยให้รู้ว่า ESP32 เชื่อมต่อ WiFi ไม่ได้ติดอยู่ที่ขั้นตอนไหน ไม่ต้องเดาสาเหตุเอง หากอ่านค่านี้ร่วมกับอาการจริง จะช่วยแก้ปัญหาได้ตรงจุดมากขึ้น

ค่า WiFi.status 

ความหมาย 

ตีความแบบใช้งานจริง 

WL_CONNECTED 

เชื่อมต่อสำเร็จ 

ไปตรวจ IP, RSSI และการส่งข้อมูลต่อได้ 

WL_NO_SSID_AVAIL 

หา SSID ไม่เจอ 

ชื่อ WiFi ผิด, WiFi ปิด, ใช้ 5GHz หรืออยู่นอกระยะ 

WL_CONNECT_FAILED 

เชื่อมต่อไม่สำเร็จ 

รหัสผ่านผิด หรือ Router ปฏิเสธการเชื่อมต่อ 

WL_DISCONNECTED 

ยังไม่ได้เชื่อมต่อ / หลุดการเชื่อมต่อ 

ตรวจสัญญาณ, Router, ไฟเลี้ยง หรือ Reconnect Logic 

 

คำถามที่พบได้บ่อย (FAQs)

ทำไม ESP32 เชื่อมต่อ WiFi บ้านได้ แต่ต่อกับ Hotspot มือถือไม่ได้?

อาจเกิดจาก Hotspot ใช้ย่านความถี่หรือ Security ที่บอร์ดมองไม่เห็น ควรตั้ง Hotspot ให้รองรับ 2.4GHz และตรวจชื่อ WiFi / Password ให้ถูกต้อง

 

ใช้ทั้ง WiFi และ Bluetooth พร้อมกันบน ESP32 จะทำให้ WiFi หลุดไหม?

การใช้ ESP32 Bluetooth พร้อม WiFi อาจเพิ่มภาระการทำงานของระบบ หากเขียนโค้ดไม่ดีหรือสัญญาณไม่นิ่ง อาจทำให้ WiFi หลุดได้ จึงควรตรวจ RSSI และเพิ่ม Reconnect Logic

 

ESP32 เชื่อมต่อ WiFi ไม่ได้ แก้อย่างไรให้พร้อมต่อยอดโปรเจคกับ Global Byte

ESP32 เชื่อมต่อ WiFi ไม่ได้ ควรเริ่มแก้จากการตรวจชื่อ WiFi, Password, ความถี่ 2.4GHz, ค่า WiFi.status(, IP Address และ RSSI ก่อน จากนั้นจึงค่อยตรวจโค้ด, Router, DHCP และไฟเลี้ยง หากทำงาน ESP32 IoT, อุปกรณ์ IoT หรือ อุปกรณ์ Smart Home ควรมี Timeout, Debug Message และ Reconnect Logic เพื่อให้ระบบเสถียรมากขึ้น

หากคุณกำลังมองหาแหล่งซื้ออุปกรณ์สำหรับทำโปรเจค Arduino และ ESP32 Global Byte เป็นตัวแทนจำหน่ายที่ถูกรับรองอย่างเป็นทางการในเครือข่าย Raspberry Pi พร้อมรวบรวมอุปกรณ์อิเล็กทรอนิกส์ครบวงจร ตั้งแต่ Raspberry Pi, ESP32, โมดูลและเซนเซอร์, Switch Hub, Power Supply, เคส ไปจนถึงบริการให้คำปรึกษาและพัฒนาโซลูชันต้นแบบ ช่วยให้คุณพร้อมเริ่มโปรเจคอย่างมั่นใจได้ทันที

จากไอเดีย สู่ไลน์ผลิต—ครบจบที่ GlobalByte

ช่องทางการติดต่อ : 
http://openlink.co/globalbyte


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี