บทความ › ไมโครคอนโทรลเลอร์และโค้ด

ESP32-C5 ชิป ESP32 ตัวแรกที่ต่อ Wi-Fi 5 GHz ได้ ของเล่นเราได้อะไร

ESP32-C5 ผลิตจริงตั้งแต่ เม.ย. 2025 เป็นชิปแรกของ Espressif ที่มี Wi-Fi 6 ทั้ง 2.4 และ 5 GHz พร้อม BLE และ Thread/Zigbee เมื่อไหร่ 5 GHz ช่วยของเล่น เมื่อไหร่ไม่ช่วย

เริ่มต้น อ่าน 6 นาที 23 ตุลาคม 2569 ของใหม่ที่ช่างควรลอง 2026 · บทที่ 9/20

อ่านจบแล้วจะรู้
  • ESP32-C5 เป็นชิปแรกของ Espressif ที่ต่อ Wi-Fi ได้ทั้ง 2.4 GHz และ 5 GHz และเข้าสายการผลิตจริงเมื่อ 30 เม.ย. 2025
  • 5 GHz คนใช้น้อยกว่าและมีช่องที่ไม่ชนกันเยอะกว่า แต่ระยะสั้นกว่าและทะลุผนังได้แย่กว่า 2.4 GHz
  • ของเล่นส่วนใหญ่ส่งข้อมูลไม่กี่ KB ต่อวินาที ประโยชน์ของ 5 GHz จึงอยู่ที่ความนิ่งในบ้านที่คลื่นแน่น ไม่ใช่ความเร็ว
  • ใช้กับ Arduino core ของ ESP32 รุ่นใหม่ (3.3.3 มีในรายชื่อชิปที่รองรับ) และ ESP-IDF ตั้งแต่ v5.5

ESP32-C5 คือชิปตัวแรกของ Espressif ที่ต่อ Wi-Fi ย่าน 5 GHz ได้ นอกจาก 2.4 GHz ที่ ESP32 ทุกรุ่นก่อนหน้าใช้ ชิปนี้เข้าสายการผลิตจริงเมื่อ 30 เมษายน 2025 สำหรับของเล่นที่บ้าน ข้อดีหลักไม่ใช่ความเร็ว แต่คือได้หนีจากย่าน 2.4 GHz ที่แน่นไปด้วยเราเตอร์เพื่อนบ้าน เครื่องใช้ในบ้าน และอุปกรณ์ Bluetooth

ถ้ายังไม่เคยเทียบ ESP32 รุ่นต่าง ๆ อ่านเลือกบอร์ด ESP32 รุ่นไหนดี ก่อน บทนี้ต่อจากตรงนั้น

ESP32-C5 มีอะไรบ้าง

ตัวเลขจากประกาศของ Espressif

ESP32-C5
คอร์หลักRISC-V 32 บิต คอร์เดียว สูงสุด 240 MHz
คอร์ประหยัดไฟ (LP)สูงสุด 40 MHz
Wi-FiWi-Fi 6 ย่าน 2.4 GHz และ 5 GHz
BluetoothBluetooth 5 (LE)
802.15.4มี ใช้กับ Thread และ Zigbee
SRAM / ROM384 KB / 320 KB
GPIOสูงสุด 29 ขา
หน่วยความจำเพิ่มรองรับ PSRAM ภายนอก

รายละเอียดที่ควรรู้: ในโหมด Wi-Fi 6 (802.11ax) ชิปใช้ช่องกว้าง 20 MHz ส่วนโหมดเก่า 802.11b/g/n ใช้ได้ 20 หรือ 40 MHz และมี Target Wake Time (TWT) ที่ให้อุปกรณ์หลับนานขึ้นโดยยังไม่หลุดจากเราเตอร์ ถ้าเราเตอร์เป็น Wi-Fi 6 ด้วย

เทียบกับรุ่นที่คุ้นมือ

ESP32-C3ESP32-C6ESP32-C5
ย่าน Wi-Fi2.4 GHz2.4 GHz2.4 + 5 GHz
มาตรฐานWi-Fi 4Wi-Fi 6Wi-Fi 6
ความเร็วคอร์หลัก160 MHz160 MHz240 MHz
Thread / Zigbeeไม่มีมีมี
SRAM400 KB512 KB384 KB

C5 จึงเหมือน C6 ที่เพิ่มย่าน 5 GHz และคอร์เร็วขึ้น แต่ SRAM น้อยกว่าเล็กน้อย

2.4 GHz กับ 5 GHz ต่างกันตรงไหน

2.4 GHz5 GHz
ช่องที่ไม่ทับกัน3 ช่อง (1, 6, 11)มีให้เลือกมากกว่าหลายเท่า
ความแน่นแน่น ใช้ร่วมกับเตาไมโครเวฟ โทรศัพท์ไร้สาย Bluetoothโล่งกว่า
ระยะไกลกว่าสั้นกว่า ทะลุผนังได้แย่กว่า

คู่มือของผู้ผลิตอุปกรณ์ Wi-Fi รายหนึ่งให้ตัวเลขคร่าว ๆ ว่า 2.4 GHz ครอบคลุมราว 75–100 ฟุต (ประมาณ 23–30 m) ส่วน 5 GHz ที่ความเร็วเต็มราว 25–35 ฟุต (ประมาณ 8–11 m) ตัวเลขจริงขึ้นกับผนัง เสาอากาศ และเราเตอร์ ใช้เป็นภาพรวมเท่านั้น

5 GHz ไม่ได้ทำให้ส่งไกลขึ้น มันทำให้คลื่นโล่งขึ้น ถ้าปัญหาคือระยะ อย่าหวังว่าเปลี่ยนเป็น 5 GHz แล้วจะดีขึ้น

ตัวอย่าง: ของเล่นเราต้องการแบนด์วิดท์เท่าไรจริง ๆ

สมมติรถบังคับที่ส่งค่าเซนเซอร์กลับมาที่หน้าเว็บในมือถือ

  1. หนึ่งข้อความมีค่ามุม ความเร็ว แบตเตอรี่ และเวลา รวมเป็น JSON ราว 64 ไบต์
  2. ส่ง 20 ครั้งต่อวินาที: 64 × 20 = 1,280 ไบต์ต่อวินาที
  3. แปลงเป็นบิต: 1,280 × 8 = 10,240 บิตต่อวินาที หรือราว 10 kbit/s
  4. Wi-Fi ระดับ 1 Mbit/s ซึ่งเป็นอัตราต่ำสุดของ 802.11b ยังมากกว่าที่ใช้ราว 100 เท่า

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

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

5 GHzระยะสั้นกว่าคลื่นโล่ง ช่องเยอะทะลุผนังได้น้อยกว่า2.4 GHzระยะไกลกว่าแน่น มีแค่ 3 ช่องไม่ทับกันอุปกรณ์ในบ้านใช้เยอะ
5 GHz แลกระยะกับคลื่นที่โล่งกว่า

เมื่อไหร่ 5 GHz ช่วยของเล่น

  • คอนโดหรือหอพักที่เห็นชื่อ Wi-Fi เป็นสิบ ย่าน 2.4 GHz แน่นจนบอร์ดหลุดบ่อย ย้ายไป 5 GHz แล้วนิ่งขึ้น
  • งานโชว์หรืองานแข่ง ที่คนเป็นร้อยถือมือถือและเปิด Bluetooth พร้อมกัน
  • ของที่ต้องตอบไว เช่นปุ่มกดเกมตอบคำถามผ่านเราเตอร์ ความหน่วงที่นิ่งสำคัญกว่าความเร็วเฉลี่ย
  • บอร์ดอยู่ใกล้เราเตอร์ ห้องเดียวกันหรือห้องติดกัน

เมื่อไหร่ไม่ช่วย

  • บอร์ดอยู่สวนหรือโรงรถ ห่างเราเตอร์หลายผนัง ใช้ 2.4 GHz ดีกว่า
  • โปรเจกต์ใช้ ESP-NOW ระหว่างบอร์ดสองตัวโดยไม่มีเราเตอร์ (ดูบทรีโมตด้วย ESP-NOW) ปัญหาเรื่องเราเตอร์แน่นไม่เกี่ยว
  • ต้องการ Bluetooth Classic เช่นลำโพง C5 ไม่มี

เริ่มเขียนโค้ดกับ C5

  • Arduino: Arduino core ของ ESP32 รุ่น 3.3.3 มี ESP32-C5 อยู่ในรายชื่อชิปที่รองรับแล้ว (รุ่น 3.3.0 ยังไม่มี) อัปเดตบอร์ดแพ็กเกจใน Arduino IDE ก่อน แล้วเลือกบอร์ดเป็น ESP32-C5
  • ESP-IDF: รองรับเริ่มต้นใน v5.5 ใช้ idf.py set-target esp32c5
  • เลือกย่าน: ถ้าเราเตอร์ใช้ชื่อเดียวกันทั้งสองย่าน บอร์ดจะเลือกเอง ถ้าอยากบังคับย่าน ทางง่ายสุดคือแยกชื่อเครือข่าย 2.4 กับ 5 GHz ในเราเตอร์ แล้วให้บอร์ดต่อกับชื่อที่ต้องการ

ข้อผิดพลาดที่เจอบ่อย

  • คิดว่า 5 GHz ส่งไกลกว่า ตรงข้าม ระยะสั้นกว่า ถ้าบอร์ดหลุดตอนเดินออกห่าง ลองกลับไป 2.4 GHz
  • ใช้โค้ดหรือขาจากบอร์ด C3/C6 แบบไม่ดูผังขา C5 มี GPIO สูงสุด 29 ขา เลขขาบนบอร์ดแต่ละรุ่นไม่ตรงกัน เปิดผังขาของบอร์ดที่ซื้อเสมอ
  • Arduino core เก่า รุ่น 3.3.0 ลงไปไม่มี C5 ให้เลือก อัปเดตก่อนแล้วค่อยสงสัยบอร์ด
  • ซื้อ C5 เพราะอยากได้ Bluetooth เสียง ไม่มี Bluetooth Classic
  • คาดหวัง Wi-Fi 6 เต็มรูปจากเราเตอร์เก่า ฟีเจอร์อย่าง TWT ต้องใช้เราเตอร์ Wi-Fi 6 ด้วย ถ้าเราเตอร์เป็น Wi-Fi 4/5 บอร์ดยังต่อได้ แต่ไม่ได้ฟีเจอร์นั้น

ของเล่นส่วนใหญ่ไม่ต้องการความเร็ว ต้องการคลื่นที่นิ่ง ถ้า 2.4 GHz ที่บ้านนิ่งอยู่แล้ว บอร์ดเดิมก็พอ

แหล่งข้อมูล

คำถามที่พบบ่อย

ESP32-C5 ต่อเราเตอร์ที่มีแต่ 5 GHz ได้ไหม

ได้ เพราะชิปรองรับทั้งสองย่าน แต่ระยะจะสั้นกว่า 2.4 GHz วางบอร์ดให้อยู่ห้องเดียวกับเราเตอร์หรือใกล้ ๆ ก่อนแล้วค่อยขยับออก

ควรเปลี่ยนจาก ESP32-C3 หรือ C6 มาใช้ C5 ทุกโปรเจกต์ไหม

ไม่จำเป็น ถ้า 2.4 GHz ที่บ้านใช้ได้ดีอยู่แล้ว บอร์ดเดิมยังเหมาะกว่าเพราะตัวอย่างโค้ดและบอร์ดให้เลือกเยอะกว่า C5 คุ้มเมื่อเจอปัญหาคลื่นแน่น หรืออยากได้ 5 GHz กับ Thread/Zigbee ในชิปเดียว

ESP32-C5 มี Bluetooth Classic ไหม

ไม่มี มีแค่ Bluetooth 5 (LE) ถ้าต้องส่งเสียงไปลำโพงแบบ Bluetooth Classic ยังต้องใช้ ESP32 รุ่นแรก

วงจรและโค้ดในบทความทดสอบกับบอร์ดตัวอย่าง บอร์ดต่างรุ่นอาจใช้ขาต่างกัน ตรวจ pinout ของบอร์ดที่ใช้ก่อนต่อไฟเสมอ

อ่านต่อ

#โค้ดกลาง

รีโมตของเล่นด้วย ESP-NOW บอร์ดคุยกันตรง ไม่ต้องมี เราเตอร์

ใช้ ESP-NOW ส่งคำสั่งจาก ESP32 ตัวหนึ่งไปอีกตัวโดยไม่ผ่าน Wi-Fi บ้าน ข้อความไม่เกิน 250 ไบต์ โค้ด MicroPython ตัวส่งตัวรับ ระบบหยุดเมื่อสัญญาณหาย และโหมด long range

อ่าน 8 นาที
#โค้ดขั้นสูง

ใช้ Wi-Fi เป็นเซนเซอร์ จับการเคลื่อนไหว ด้วย CSI บน ESP32

Channel State Information คือข้อมูลละเอียดของคลื่น Wi-Fi ที่เปลี่ยนเมื่อมีคนขยับ ใช้ esp-radar กับ esp_wifi_sensing ทำเซนเซอร์จับคนโดยไม่ใช้กล้อง และเรื่องความเป็นส่วนตัว

อ่าน 7 นาที
#โค้ดเริ่มต้น

ต่อปุ่มกดกับ ESP32 ให้นิ่ง pull-up และ debounce ด้วย millis()

ทำไมขาอินพุตลอยแล้วอ่านค่ามั่ว pull-up กับ pull-down ต่างกันยังไง ปุ่มเด้งกี่มิลลิวินาที โค้ด debounce ด้วย millis() และขา strapping ที่ไม่ควรต่อปุ่ม

อ่าน 8 นาที