WiFiClient.h กับ WiFiClientSecure.h ใช้ยังไง?
ถ้าคุณงงว่า “จะต่อ Wi-Fi ต้อง include อะไร” และ “ทำไมเรียก https แล้วหลุด/ต่อไม่ติด”
บทความนี้สรุปให้แบบชัด ๆ พร้อมแนวทางเลือกใช้ในงานจริง (Smart Farm / IoT / แจ้งเตือน Telegram)
เรียนรู้ว่า ESP32 คืออะไร
พร้อมคำอธิบายคุณสมบัติหลักและการใช้งานที่ง่ายดาย
รวมข้อมูล ESP32 Pinout และ GPIO
แบบละเอียด ทั้งตารางพินที่ควรใช้และควรหลีกเลี่ยง
สอนใช้งาน Arduino IDE
ตั้งแต่พื้นฐานจนถึงขั้นสูง ทั้งการติดตั้ง การเขียนโค้ด C/C++ สำหรับ ESP32 และบอร์ดตระกูล Arduino
1) สองบรรทัดนี้คืออะไร?
ในโปรเจกต์ ESP32 (Arduino IDE / PlatformIO) เรามักเจอ 2 บรรทัดนี้บ่อยมาก:
#include <WiFi.h> #include <WiFiClientSecure.h>
WiFi.h คือ “ตัวจัดการ Wi-Fi” ของ ESP32
ใช้ต่อเน็ต, สแกน Wi-Fi, ดูสถานะ, ทำโหมด AP/STA, reconnect ฯลฯ
WiFiClientSecure.h คือ “ไคลเอนต์สำหรับ HTTPS/TLS”
ใช้ตอนจะเรียก https:// (Telegram / Firebase / API ภายนอก)
พูดง่าย ๆ: WiFi.h = “ต่อ Wi-Fi ให้ได้ก่อน” และ WiFiClientSecure.h = “ถ้าจะต่อ https ต้องใช้ตัวนี้เพิ่ม”
2) เลือกใช้แบบเร็ว
ถ้าคุณทำงานในเครือข่ายบ้าน/LAN (http) เช่น เข้า Web UI ของ ESP32 หรือคุยกับอุปกรณ์ในวงเดียวกัน → เริ่มที่ WiFi.h เชื่อมต่อเครือข่าย → WiFiClient.h สำหรับส่ง/รับข้อมูลแบบ HTTP ในวง LAN
ถ้าคุณเรียก API ข้างนอกที่เป็น https (Telegram, Google, เว็บบริการต่าง ๆ) → ต้องใช้
WiFiClientSecure.hตัวอย่างเคสที่ใช้ (ไม่ secure)
- Web Server ภายในบ้าน (Local-first)
- HTTP ไปยัง Raspberry Pi / Server ใน LAN
- ESP32 ↔ ESP32 ในวงเดียวกัน
ตัวอย่างเคสที่ต้องใช้ WiFiClientSecure
- ส่งแจ้งเตือน Telegram
- เรียก REST API ที่เป็น https
- Webhook ออกอินเทอร์เน็ต
3) WiFi.h ทำอะไรได้บ้าง (ฟีเจอร์หลัก)
โหมดการทำงาน
- STA (ต่อเราเตอร์)
- AP (ปล่อย Wi-Fi เอง)
- STA+AP (ใช้คู่กัน)
ฟังก์ชันที่ใช้บ่อย
- Scan Wi-Fi: WiFi.scanNetworks()
- Connect: WiFi.begin(ssid, pass)
- Status: WiFi.status(), RSSI
- IP: WiFi.localIP()
ทริคงานจริง: ใช้ Wi-Fi Event เพื่อทำ reconnect แบบนิ่ง ๆ แทนการวน loop รอ status อย่างเดียว
งานฟาร์มหรือระบบควบคุม ถ้า Wi-Fi แกว่งแล้วเครื่องค้าง = จบเลย ควรมีโค้ดจัดการหลุด/กลับมาเสมอ
4) WiFiClientSecure.h เพิ่มอะไรจาก WiFi ธรรมดา?
WiFiClientSecure คือคลาส client ที่ “คุยกับเซิร์ฟเวอร์แบบเข้ารหัส (TLS)” ซึ่งเป็นแกนของ HTTPS
แนวทางง่ายสุด (แต่ไม่ปลอดภัย): setInsecure()
เหมาะกับทดลอง/เดโม แต่ไม่แนะนำกับงานจริงที่ต้องการความปลอดภัย
แนวทางที่ปลอดภัยกว่า: ใส่ CA Certificate
เครื่องจะตรวจว่าเซิร์ฟเวอร์เป็น “ตัวจริง” ลดความเสี่ยงโดนดักกลางทาง
ข้อพลาดที่เจอบ่อย: HTTPS ต่อไม่ติดเพราะ “เวลาใน ESP32 ไม่ถูก”
TLS ใช้เวลาเป็นส่วนหนึ่งในการตรวจ cert ถ้าเวลาผิดมาก ๆ มักจะ fail ได้
5) Flow การทำงานจริง (ภาพรวม)
ลำดับคิดแบบงานจริง: ต่อ Wi-Fi → เลือก client → ส่ง request → handle error → retry
1) WiFi.begin(...) ให้ต่อเน็ตได้ก่อน 2) เลือก Client: - HTTP ใน LAN: WiFiClient - HTTPS ออกเน็ต: WiFiClientSecure 3) connect(host, port) 4) ส่ง GET/POST 5) อ่าน response + timeout 6) ถ้าพัง: close + retry + backoff
แนะนำ: ใส่ timeout ทุกครั้ง
ถ้าไม่ใส่ timeout บางเคสจะ “ค้างนิ่ง” แล้วระบบอัตโนมัติพังยาว
6) ตารางเปรียบเทียบ WiFiClient vs WiFiClientSecure
| ประเด็น | WiFiClient | WiFiClientSecure |
|---|---|---|
| ใช้ทำอะไร | TCP Client สำหรับ HTTP/เชื่อมต่อไม่เข้ารหัส | TCP Client สำหรับ HTTPS/TLS (เข้ารหัส) |
| URL ที่รองรับ | http:// | https:// |
| Port ที่ใช้บ่อย | 80 (หรือพอร์ต TCP อื่น) | 443 (หรือพอร์ต TLS อื่น) |
| ความปลอดภัย | ต่ำ (ข้อมูลวิ่ง plaintext) | สูงกว่า (เข้ารหัสระหว่างทาง) |
| ตรวจ Certificate | ไม่เกี่ยว | มีโหมดตรวจ cert (CA cert) / หรือข้ามตรวจด้วย setInsecure() |
| เรื่อง “เวลาในบอร์ด” | ไม่ค่อยเกี่ยว | เกี่ยว ถ้า verify cert (เวลาเพี้ยนทำให้ cert invalid ได้) |
| ทรัพยากรที่ใช้ (RAM/CPU) | น้อยกว่า | มากกว่า (TLS handshake + buffer) |
| ความเร็ว/ความหน่วง | เร็วกว่า/เบากว่า | หน่วงกว่าเล็กน้อยตอนเริ่ม connect |
| เหมาะกับงาน | Local-first, LAN, Web server ในบ้าน, คุยกับ Raspberry Pi ในวงเดียวกัน | Telegram, API ภายนอก, Cloud, Webhook ที่เป็น https |
| จุดพลาดที่เจอบ่อย | ลืมใส่ timeout / reconnect | cert/เวลาไม่ถูก, handshake fail, ใช้ setInsecure() แบบไม่รู้ความเสี่ยง |
| แนะนำสำหรับ Smart Farm | คุมระบบในวง LAN (เสถียร + ไม่พึ่งเน็ต) | ใช้เฉพาะ “ออกเน็ต” เช่น แจ้งเตือน/ส่งข้อมูลขึ้นบริการ |
สรุปสั้น: งานที่ “ออกเน็ต” ส่วนใหญ่หนีไม่พ้น WiFiClientSecure
7) Use case ที่เจอบ่อย (Smart Farm / DevaDIY)
Local-first (แนะนำมาก)
ควบคุมผ่านมือถือในวง Wi-Fi เดียวกัน → เร็ว เสถียร ไม่ฝากชีวิตไว้กับเน็ต
ใช้: WiFi.h + Web Server (HTTP ภายใน LAN)
แจ้งเตือน Telegram / Webhook
ออกอินเทอร์เน็ตเป็น https เกือบทั้งหมด
ใช้:
WiFiClientSecure.hFAQ: คำถามที่พบบ่อย
1) ใช้ WiFiClientSecure ต้อง include WiFi.h ด้วยไหม?
ส่วนใหญ่ “ต้อง” เพราะคุณยังต้องใช้ WiFi.begin() และฟังก์ชันจัดการเครือข่ายจาก WiFi.h อยู่ดี (Secure เป็นแค่ client สำหรับ https)
2) WiFiClientSecure ใช้ทำ HTTP ธรรมดาได้ไหม?
ได้ แต่ไม่คุ้ม และเสียทรัพยากรเกินจำเป็น ถ้าเป็น http:// ใน LAN ใช้ WiFiClient จะเหมาะกว่า
3) setInsecure() คืออะไร อันตรายไหม?
setInsecure() คือสั่งให้ client “ไม่ตรวจ certificate” → ต่อได้ง่ายขึ้น แต่ความปลอดภัยตกลง เหมาะสำหรับเดโม/ทดสอบ ไม่แนะนำกับงานจริงที่มีข้อมูลสำคัญ
4) ทำไม HTTPS ต่อไม่ติด ทั้งที่ Wi-Fi ต่อแล้ว?
สาเหตุยอดฮิต: เวลาในบอร์ดผิด, cert เปลี่ยน/หมดอายุ, สัญญาณอ่อน, หรือ handshake timeout ควรเช็คเรื่องเวลาและใส่ timeout/retry เสมอ
5) ต้องตั้งเวลา (NTP) ไหมถึงจะใช้ HTTPS ได้?
แนะนำให้ตั้งเวลา เพราะ TLS ตรวจช่วงเวลาของ certificate ถ้าเวลาเพี้ยนมาก ๆ มีโอกาสเชื่อมต่อไม่ผ่าน
6) ทำไมบางที connect แล้วหลุดทันที?
มักเกิดจาก timeout สั้นเกินไป, สัญญาณ Wi-Fi อ่อน, หรือ server ปฏิเสธ (เช่น SNI/host ไม่ตรง) ตรวจ host/port และเพิ่ม timeout ที่เหมาะสม
7) ถ้าจะส่งแจ้งเตือน Telegram ต้องใช้ตัวไหน?
Telegram ใช้ https เป็นหลัก → ใช้ WiFiClientSecure (และอย่าลืมดูเรื่องเวลา/cert)
Wi-Fi STA/AP | WiFi basics
รู้จักโหมดเชื่อมต่อ Wi-Fi ทั้งแบบต่อเน็ตบ้าน (STA) และปล่อย Wi-Fi ให้มือถือเข้า (AP)
WiFi Manager
ทำระบบตั้งค่า Wi-Fi แบบมืออาชีพ: กดปุ่มเข้าโหมดตั้งค่า แล้วกรอก SSID/รหัสผ่านได้เลย
Web Server
ทำหน้าเว็บควบคุมบนมือถือได้ทันที: ปุ่มเปิด-ปิดรีเลย์ + แสดงค่าสถานะ เห็นผลจริงเร็ว
รวมการสอนใช้ WiFi บน ESP32
สอนจากพื้นฐาน การสแกนหาเครือข่าย การทำ WiFi Manager ไปจนถึงการส่งข้อมูลแบบ Real-time ผ่าน WebSocket อธิบายชัด พร้อมโค้ดตัวอย่าง ใช้งานได้จริง
โครงงาน esp32 DIY
รวมไอเดียโปรเจกต์ DIY ด้วย ESP32 ที่ทำเองได้ เช่น ฟาร์มอัตโนมัติ ควบคุมอุปกรณ์ผ่านมือถือ ตั้งเวลา เปิด/ปิด อัตโนมัติ เหมาะสำหรับ Maker และนักศึกษา
แหล่งรวมวิชาปล่อยของสำหรับคนทำโปรเจกต์
มัดรวมทุกเทคนิค ESP32 ที่ต้องใช้: จะต่อ WiFi ให้เสถียร, ไล่ขา Pinout ให้แม่น หรือมองหาไอเดียโครงงานใหม่ๆ มาที่นี่ที่เดียวจบ สไตล์ DevADiy



