บทความ › ไมโครคอนโทรลเลอร์และโค้ด
เลือกบอร์ด ESP32 รุ่นไหนดี เทียบ ESP32 S3 C3 C6 สำหรับงาน เมกเกอร์
ESP32 รุ่นแรก S3 C3 และ C6 ต่างกันตรงไหน คอร์ Wi-Fi 6 Bluetooth Classic กับ BLE USB ในตัว จำนวนขา พร้อมตารางเทียบ บอร์ดเล็กกับ DevKit และตัวอย่างเลือกบอร์ดตามโปรเจกต์
- อยากได้ Bluetooth Classic (เช่นเสียงแบบ A2DP) มีแค่ ESP32 รุ่นแรก รุ่น S3 C3 C6 มีแค่ Bluetooth LE
- อยากให้บอร์ดเป็นคีย์บอร์ดหรืออุปกรณ์ USB เอง เลือก S3 ที่มี USB OTG ส่วน C3 กับ C6 มี USB แค่สำหรับแฟลชและ serial
- ทุกรุ่นในบทนี้ใช้ Wi-Fi 2.4 GHz อย่างเดียว C6 เป็นรุ่นเดียวที่รองรับ Wi-Fi 6 และ Thread/Zigbee
- จำนวน GPIO ของชิปไม่เท่ากับจำนวนขาบนบอร์ด ดูผังขาของบอร์ดที่จะซื้อเสมอ
ESP32 ไม่ได้มีรุ่นเดียว ชื่อที่เห็นในร้านอย่าง S3, C3, C6 เป็นชิปคนละตัวที่ต่างกันเรื่องคอร์ ไร้สาย USB และจำนวนขา เลือกผิดรุ่นแล้วโปรเจกต์ทำไม่ได้เลยก็มี เช่นซื้อ S3 มาทำลำโพง Bluetooth ที่ต้องใช้ Bluetooth Classic บทนี้เทียบสี่รุ่นที่เจอบ่อยที่สุดด้วยข้อมูลจาก Espressif แล้วยกตัวอย่างการเลือกตามงานจริง
สี่รุ่นในตารางเดียว
ตัวเลขเป็นของตัวชิป (ข้อมูลจาก Espressif) บอร์ดแต่ละรุ่นอาจดึงขาออกมาไม่ครบ
| ESP32 (รุ่นแรก) | ESP32-S3 | ESP32-C3 | ESP32-C6 | |
|---|---|---|---|---|
| คอร์ | Xtensa LX6 สองคอร์ | Xtensa LX7 สองคอร์ | RISC-V คอร์เดียว | RISC-V คอร์เดียว + คอร์ประหยัดไฟ |
| ความเร็วสูงสุด | 240 MHz | 240 MHz | 160 MHz | 160 MHz (คอร์เล็ก 20 MHz) |
| Wi-Fi | 802.11 b/g/n (Wi-Fi 4) 2.4 GHz | Wi-Fi 4 2.4 GHz | Wi-Fi 4 2.4 GHz | Wi-Fi 6 2.4 GHz |
| Bluetooth | Classic (BR/EDR) + BLE v4.2 | BLE 5 | BLE 5 | BLE 5 |
| Thread / Zigbee (802.15.4) | ไม่มี | ไม่มี | ไม่มี | มี |
| USB ในตัวชิป | ไม่มี (บอร์ดใช้ชิปแปลง USB-UART) | USB OTG + USB Serial/JTAG | USB Serial/JTAG | USB Serial/JTAG |
| GPIO (ชิป) | 34 | 45 | 22 | 30 |
| SRAM | 520 KB | 512 KB | 400 KB | 512 KB |
ฟีเจอร์เสริมที่ต่างกันอีก: ESP32 รุ่นแรกมี DAC 8 บิต 2 ช่องและขา touch 10 ขา S3 ไม่มี DAC แต่มี touch 14 ขาและชุดคำสั่ง vector ที่ช่วยงานประมวลผลสัญญาณและโครงข่ายประสาทขนาดเล็ก C3 ไม่มีทั้ง DAC และ touch
Bluetooth: Classic มีแค่รุ่นแรก
Bluetooth มีสองแบบที่ใช้กันคนละงาน
- Bluetooth Classic (BR/EDR) ใช้กับการส่งเสียง (ลำโพง หูฟัง) และอุปกรณ์เก่าที่ต่อแบบ serial
- Bluetooth LE ประหยัดไฟ ใช้กับเซนเซอร์ ปุ่มกด รีโมต และคุยกับแอปมือถือ
ในสี่รุ่นนี้ มีแค่ ESP32 รุ่นแรกที่ทำ Classic ได้ S3, C3, C6 ทำได้แค่ LE ถ้าโปรเจกต์คือลำโพงหรือรับเสียงจากมือถือ ต้องเป็นรุ่นแรก
USB ในตัว: OTG กับ Serial/JTAG ไม่เหมือนกัน
- ESP32 รุ่นแรก ไม่มี USB ในชิป บอร์ด DevKit จึงมีชิปแปลง USB เป็น UART อยู่ข้างพอร์ต ทำหน้าที่แฟลชโค้ดและ serial monitor บางเครื่องต้องลงไดรเวอร์ของชิปแปลงก่อน
- USB Serial/JTAG (S3, C3, C6) เป็นวงจร USB สำเร็จรูปในชิป แฟลชโค้ด เปิด serial monitor และดีบักผ่าน JTAG ได้ด้วยสาย USB เส้นเดียว แต่เปลี่ยนเป็นอุปกรณ์ USB ชนิดอื่นไม่ได้
- USB OTG (มีใน S3) ทำให้บอร์ดเป็นอุปกรณ์ USB ได้หลายแบบ เช่น คีย์บอร์ด/เมาส์ (HID) อุปกรณ์ MIDI หรือแฟลชไดรฟ์ (MSC) นี่คือรุ่นที่ใช้ทำมาโครแพดหรือคอนโทรลเลอร์เกมที่เสียบคอมแล้วใช้ได้เลย
ขา USB กินขา GPIO ไปสองขา เช่น C3 ใช้ GPIO18 กับ GPIO19, S3 กับ C6 ก็มีขาประจำของตัวเอง ถ้าใช้ USB ในตัว ขาสองขานี้เอาไปใช้ทำอย่างอื่นไม่ได้
C6: Wi-Fi 6 กับบ้านอัจฉริยะ
C6 เป็นรุ่นเดียวในสี่รุ่นที่มี Wi-Fi 6 (802.11ax ที่ 2.4 GHz) และวิทยุ 802.15.4 สำหรับ Thread และ Zigbee เหมาะกับอุปกรณ์บ้านอัจฉริยะที่อยากคุยกับระบบพวกนี้ นอกจากนี้ยังมีคอร์ RISC-V ประหยัดไฟความเร็ว 20 MHz แยกจากคอร์หลัก
สิ่งที่ไม่ต่าง: ทุกรุ่นในบทนี้ใช้ Wi-Fi ย่าน 2.4 GHz อย่างเดียว Wi-Fi 6 ของ C6 ก็อยู่ที่ 2.4 GHz
บอร์ดเล็ก กับ DevKit
ชิปตัวเดียวกันมาในบอร์ดได้หลายขนาด
| บอร์ด DevKit | บอร์ดขนาดเล็ก (ขนาดนิ้วโป้ง) | |
|---|---|---|
| ขาที่ดึงออกมา | เกือบครบ เช่น ESP32-DevKitC 38 ขา, ESP32-C6-DevKitC-1 32 ขา | น้อยกว่า ต้องดูผังขาของรุ่นนั้น |
| พอร์ต USB | บางรุ่นมีสองพอร์ต (ผ่านชิปแปลง และ USB ของชิปเอง) | มักมีพอร์ตเดียว |
| เบรดบอร์ด | รุ่น 38 ขาไม่เหลือรูบนเบรดบอร์ดแผ่นเดียว | แคบกว่า เหลือรูให้เสียบสาย |
| เหมาะกับ | ทดลองบนโต๊ะ เรียนรู้ | ใส่ในของเล่นหรือกล่องพิมพ์ 3D |
เรื่องขนาดกับเบรดบอร์ดอ่านต่อได้ในบทเบรดบอร์ด ส่วนขนาดหน่วยความจำแฟลชบนบอร์ดสำคัญถ้าจะอัปเดตเฟิร์มแวร์ผ่าน Wi-Fi เพราะต้องมีพื้นที่เก็บเฟิร์มแวร์สองชุด รายละเอียดการทำ OTA และย้อนกลับเวอร์ชันอยู่ที่ 6amdev: อัปเดต ESP32 ผ่าน Wi-Fi ไม่ให้เครื่องพัง
ตัวอย่าง: เลือกบอร์ดจากความต้องการจริง
งานที่ 1: มาโครแพด 12 ปุ่ม เสียบคอมแล้วเป็นคีย์บอร์ด
- นับขา: ปุ่ม 12 + ไฟ LED แบบสายเดียว 1 + จอ OLED ผ่าน I2C 2 = 15 ขา
- ต้องเป็นอุปกรณ์ USB HID → ต้องมี USB OTG → ESP32-S3
- เช็กขา: ชิปมี 45 ขา หักขา USB 2 ขา เหลือพอ แต่ต้องดูว่าบอร์ดที่เลือกดึงขาออกมาครบ 15 ขาที่ใช้ได้จริงไหม
งานที่ 2: เซนเซอร์อุณหภูมิใช้แบต ส่งค่าเข้ามือถือทาง BLE
- นับขา: เซนเซอร์ I2C 2 + ปุ่ม 1 = 3 ขา
- ต้องการ BLE ไม่ต้องการ USB พิเศษ → C3 บอร์ดเล็กพอ
- เช็กขา: 22 − 2 (GPIO18/19 สำหรับ USB) = 20 ขาบนชิป เหลือเฟือ
งานที่ 3: ตุ๊กตาลำโพงรับเพลงจากมือถือ
- ส่งเสียงจากมือถือแบบทั่วไปใช้ Bluetooth Classic
- → ESP32 รุ่นแรก เท่านั้นในสี่รุ่นนี้
งานที่ 4: สวิตช์ไฟที่จะต่อกับระบบบ้านอัจฉริยะผ่าน Thread หรือ Zigbee
- ต้องการวิทยุ 802.15.4 → C6
เริ่มจากคำถาม “ต้องใช้ฟีเจอร์ไหนที่มีแค่บางรุ่น” (Bluetooth Classic, USB OTG, Thread/Zigbee) ก่อนนับขาและความเร็ว ฟีเจอร์ขาดซื้อเพิ่มไม่ได้ ขาขาดยังเปลี่ยนบอร์ดขนาดใหญ่ขึ้นได้
ข้อผิดพลาดที่เจอบ่อย
- ซื้อ S3 หรือ C3 มาทำลำโพง Bluetooth รุ่นพวกนี้ไม่มี Bluetooth Classic
- คิดว่า C3 ทำคีย์บอร์ด USB ได้ USB ของ C3 ทำได้แค่แฟลช serial และ JTAG ไม่ใช่ OTG
- นับ GPIO จากสเปกชิป บอร์ดเล็กดึงขาออกมาน้อยกว่ามาก บางขาถูกใช้ไปกับ USB และโมดูลบางรุ่นใช้ขาบางส่วนภายใน เช่นโมดูล ESP32-WROOM-32E ให้ขาใช้ได้สูงสุด 26 ขา จากชิปที่มี 34 ขา
- ต่อสัญญาณ 5 V เข้าขา GPIO ขาของชิป ESP ทนได้ 3.6 V ทุกรุ่นในบทนี้ทำงานที่ 3.3 V
- แฟลชไม่เข้าแล้วโทษบอร์ด เช็กก่อนว่าสาย USB ไม่ใช่สายชาร์จอย่างเดียว และบอร์ดรุ่นแรกลงไดรเวอร์ชิปแปลงแล้ว
- คาดหวัง Wi-Fi 5 GHz ทุกรุ่นในบทนี้ใช้ 2.4 GHz เท่านั้น
แหล่งข้อมูล
คำถามที่พบบ่อย
มือใหม่ควรเริ่มรุ่นไหน
ถ้ายังไม่มีเหตุผลเฉพาะ DevKit ของ ESP32 รุ่นแรกหรือ S3 มีตัวอย่างและบทความให้ตามเยอะที่สุด ถ้าทำของเล่นใช้แบตเล็ก ๆ ที่ใช้ BLE บอร์ดเล็กรุ่น C3 ก็เริ่มได้
ESP32 ต่อ Wi-Fi 5 GHz ได้ไหม
สี่รุ่นในบทนี้ไม่ได้ ใช้ 2.4 GHz อย่างเดียว ถ้าเราเตอร์แยกชื่อเครือข่าย ให้ต่อกับชื่อของ 2.4 GHz
โค้ดที่เขียนให้ ESP32 รุ่นแรกใช้กับ C3 ได้ไหม
โค้ดระดับ Arduino หรือ ESP-IDF ส่วนใหญ่ใช้ได้ แต่ต้องแก้เลขขาให้ตรงบอร์ดใหม่ และส่วนที่ใช้ฟีเจอร์เฉพาะรุ่น เช่น Bluetooth Classic, DAC หรือ touch ต้องเขียนใหม่หรือเปลี่ยนรุ่น
วงจรและโค้ดในบทความทดสอบกับบอร์ดตัวอย่าง บอร์ดต่างรุ่นอาจใช้ขาต่างกัน ตรวจ pinout ของบอร์ดที่ใช้ก่อนต่อไฟเสมอ