🔧 Overview: ทำไมต้องสแกน WiFi?
ESP32 สามารถสแกนหาเครือข่าย WiFi รอบตัวได้ในไม่กี่วินาที
ประโยชน์หลัก:
- ใช้ทำ WiFi Manager เพื่อให้ผู้ใช้เลือกเครือข่ายได้
- ตรวจสอบสัญญาณ WiFi ในพื้นที่ติดตั้งระบบ
- ใช้ในการ ดีบักระบบ Smart Farm ว่าเจอ WiFi ไหม
📚 ถ้ายังไม่รู้จัก ESP32 มาก่อน อ่านก่อนที่นี่
📦 อุปกรณ์ที่ใช้
- ESP32 Dev Module (NodeMCU, DOIT, หรือรุ่นอื่น ๆ)
- สาย USB Type C หรือ MicroUSB
- โปรแกรม Arduino IDE
📲 โค้ด Arduino IDE สำหรับสแกน WiFi
#include "WiFi.h"
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("กำลังสแกน WiFi...");
int n = WiFi.scanNetworks(); // สแกนทั้งหมด
if (n == 0) {
Serial.println("ไม่พบเครือข่าย");
} else {
Serial.printf("พบทั้งหมด %d เครือข่าย:\n", n);
for (int i = 0; i < n; ++i) {
Serial.printf("%d: %s (RSSI: %d) %s\n",
i + 1,
WiFi.SSID(i).c_str(),
WiFi.RSSI(i),
(WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? "เปิด" : "มีรหัส"
);
}
}
}
void loop() {
// ไม่ทำอะไรซ้ำ
}
🧠 อธิบายโค้ด
| บรรทัด | คำสั่ง | ความหมาย |
|---|---|---|
WiFi.scanNetworks() | ค้นหา WiFi รอบตัว | |
WiFi.SSID(i) | ชื่อ WiFi ที่พบ | |
WiFi.RSSI(i) | ความแรงสัญญาณ (dBm) | |
WiFi.encryptionType(i) | ตรวจว่าเป็นแบบเปิดหรือมีรหัส |
📈 ตัวอย่างผลลัพธ์บน Serial Monitor
พบทั้งหมด 3 เครือข่าย: 1: MyHome (RSSI: -55) มีรหัส 2: ESP32Lab (RSSI: -65) เปิด 3: AIS_Fiber (RSSI: -70) มีรหัส
🔗 ใช้ต่อยอดอะไรได้บ้าง?
- ทำระบบ เลือก WiFi แบบมี UI → สร้างหน้า WiFi Manager ด้วย ESPAsyncWebServer
- ทำระบบ เชื่อมต่อ WiFi อัตโนมัติ → ESP32 WiFi เชื่อมต่อแบบมือโปร
- เก็บ SSID ที่เคยเชื่อมไว้ → บันทึก SSID ด้วย Preferences
⚠️ ข้อควรระวัง
คำสั่ง
scanNetworks()ใช้เวลาประมาณ 3–6 วินาทีอย่าเรียกคำสั่งนี้ถี่เกินไปใน loop → ควรกำหนดให้ scan เมื่อกดปุ่มหรือรีเควสต์จากผู้ใช้
📊 Flowchart การทำงาน
| [เริ่มต้น] ↓ เปิด Serial Monitor ↓ เรียก WiFi.scanNetworks() ↓ วนลูปแสดงผล SSID + RSSI ↓ จบ |
📌 สรุป
ESP32 สแกน WiFi ได้ในไม่กี่บรรทัด
ใช้ได้กับระบบ WiFi Manager / การดีบัก / ตรวจความแรงสัญญาณ
เป็นพื้นฐานสำคัญก่อนจะต่อยอดไปใช้กับระบบฟาร์มอัตโนมัติ
❓FAQ ESP32 Scan WiFi – คำถามที่คนค้นหาบ่อย
Q: ESP32 หา WiFi ไม่เจอ ทำยังไง?
A: ตรวจสอบว่า:
- ใช้ WiFi 2.4GHz (ESP32 ไม่รองรับ 5GHz)
- อยู่ในพื้นที่มีสัญญาณชัดเจน
- Router ไม่ซ่อน SSID (Hidden)
Q: ESP32 สแกน WiFi ได้กี่เครือข่าย?
A: ไม่มีจำกัดแน่นอน ขึ้นอยู่กับจำนวน WiFi รอบตัว และระยะสัญญาณ
Q: ESP32 สแกน WiFi แล้วต่ออัตโนมัติได้ไหม?
A: ได้! ต้องนำ SSID และ password ไปใช้กับ WiFi.begin()
→ ดูวิธีบันทึก WiFi ด้วย Preferences
Q: ESP32 รู้ได้ยังไงว่า WiFi มีรหัสหรือไม่?
A: ใช้ WiFi.encryptionType(i) → ถ้าเป็น WIFI_AUTH_OPEN แปลว่าเปิด
Q: ESP32 ดู SSID ของ WiFi ที่เจอได้ยังไง?
A: ใช้คำสั่ง WiFi.SSID(i) เพื่อดึงชื่อ WiFi ที่พบ
Q: ESP32 สแกน WiFi แล้วแสดงผลบนเว็บได้ไหม?
A: ได้ โดยใช้ ESPAsyncWebServer ร่วมกับ HTML
→ ดูตัวอย่าง Web Server แสดง WiFi Scan
Q: สแกน WiFi กับ ESP8266 เหมือนกับ ESP32 ไหม?
A: หลักการคล้ายกัน แต่ ESP8266 ต้องใช้ ESP8266WiFi.h แทน WiFi.h
Q: ESP32 ดูความแรง WiFi ยังไง?
A: ใช้ WiFi.RSSI(i) ค่าจะติดลบ เช่น -40 แรงมาก / -90 อ่อนมาก
Q: ESP32 Scan WiFi บ่อย ๆ มีผลเสียไหม?
A: ถ้าสแกนถี่เกินไป (ทุกวินาที) จะกินพลังงานและอาจทำให้ระบบค้าง แนะนำให้มีดีเลย์หรือสแกนตามคำสั่งผู้ใช้
Q: ESP32 มีตัวอย่างโค้ดสแกน WiFi ไหม?
A: มี พร้อมอธิบายครบ → อ่านบทความ: สแกน WiFi ด้วย ESP32






