ESP32 devkit V1 Pinout คู่มือ GPIO แบบครบถ้วน เลือกพินให้ถูก ใช้งานได้ไม่มีพลาด

ESP32 DevKit V1 Pinout (DOIT) — ขาไหนใช้ได้/ห้ามใช้ + Safe GPIO + I2C SPI UART

หน้านี้สรุปแบบ “หยิบไปใช้ได้ทันที” สำหรับนักศึกษา / Maker มือใหม่ / ช่างไฟที่อยากเริ่มทำระบบอัตโนมัติด้วย ESP32 DevKit V1

หมายเหตุ: “DevKit V1” มีหลายรุ่นย่อย (30/36/38 pin) ตำแหน่งพินบนบอร์ดอาจต่างกัน แต่ หมายเลข GPIO และพฤติกรรมการทำงานเหมือนกัน

แผนผังพิน (Pinout) ของ ESP32

ภาพนี้เป็นแผนผังของ ESP32 DevKit V1 (DOIT) รุ่น 30 GPIO — ใช้อ้างอิง “ตำแหน่งพินบนบอร์ด” และ “หมายเลข GPIO” ก่อนต่อวงจรจริง

ตำแหน่งขาesp32 divket v1 30 pins

Quick Answer: ถ้าจะเริ่มต่อวงจรวันนี้ ใช้ขาไหน?

✅ GPIO ที่ “แนะนำ” (เริ่มต้นง่าย โอกาสเจอบั๊กน้อย)

เหมาะกับงานทั่วไป: คุมรีเลย์, อ่านสวิตช์, ต่อเซนเซอร์ I2C, ทำ PWM, ฯลฯ

🚫 GPIO ที่ “ห้ามใช้” (ชนกับ Flash)

ขากลุ่มนี้มักผูกกับ SPI Flash บนบอร์ด ถ้าเอาไปต่อใช้งานอาจบูตไม่ขึ้น/ค้าง

⚠️ Input-only (ใช้เป็นอินพุตได้อย่างเดียว)

ใช้กับงานอ่านเซนเซอร์/อ่านสวิตช์ได้ดี แต่ สั่งออก (OUTPUT) ไม่ได้

⚠️ Strapping pins (ระวังตอนเปิดเครื่อง/บูต)

ถ้าต่อวงจรแล้ว “ดึงระดับไฟผิด” อาจทำให้บูตโหมดแปลก ๆ หรืออัปโหลดโปรแกรมไม่ได้

I2C / SPI / UART ใช้ขาไหน (พร้อมก็อปไปใช้)

I2C (เจอบ่อยสุด)

  • SDA = GPIO21
  • SCL = GPIO22

I2C ของ ESP32 “เปลี่ยนขาได้” แต่ค่าเริ่มต้น 21/22 ใช้แล้วไม่ปวดหัว

UART (Serial)

  • UART0: TX=GPIO1, RX=GPIO3 (มักใช้กับ USB-Serial เพื่ออัปโหลด/ดู Serial Monitor)
  • ถ้าจะต่ออุปกรณ์ภายนอก แนะนำไปใช้ UART1/2 และกำหนดขาเอง

ถ้าเอา GPIO1/3 ไปต่อโมดูลอื่น บางทีอัปโหลดจะรวน หรือ Serial Monitor อ่านมั่ว

เซนเซอร์สัมผัสแบบสัมผัสไฟฟ้า (Capacitive Touch GPIOs)

ESP32 มี Touch Sensor ในตัว เหมาะทำปุ่มสัมผัส/สวิตช์แตะ/งาน UI ง่าย ๆ โดยไม่ต้องใช้โมดูลเพิ่ม
 

กลุ่ม Touch (ชื่อในโค้ดมักเรียก T0–T9):

  • T0 = GPIO4
  • T1 = GPIO0
  • T2 = GPIO2
  • T3 = GPIO15
  • T4 = GPIO13
  • T5 = GPIO12
  • T6 = GPIO14
  • T7 = GPIO27
  • T8 = GPIO33
  • T9 = GPIO32
ระวัง: บางขาในกลุ่ม Touch เป็น Strapping pins (เช่น GPIO0/2/12/15) ถ้าจะใช้เป็นปุ่มสัมผัสต้องออกแบบให้ไม่รบกวนตอนบูต

ตัวแปลงสัญญาณอนาล็อกเป็นดิจิทัล (ADC)

ถ้าคุณอ่านค่าเซนเซอร์อนาล็อก (เช่น soil moisture, LDR, pot) ให้รู้ว่า ESP32 มี ADC 2 ชุด และมีข้อจำกัดเมื่อเปิด Wi‑Fi

ADC1 (แนะนำ)

  • GPIO32–39
  • ข้อดี: ใช้งานร่วมกับ Wi‑Fi ได้ “เสถียรกว่า”

ADC2 (มีข้อจำกัด)

  • GPIO0,2,4,12–15,25–27
  • ข้อควรระวัง: บางกรณีอ่าน ADC2 พร้อม Wi‑Fi อาจเพี้ยน/อ่านไม่ได้

คำแนะนำ DevaDIY: ถ้าคุณทำโปรเจกต์ที่ “เปิด Wi‑Fi ตลอด” ให้พยายามใช้ ADC1 (GPIO32–39) เป็นหลัก

ตัวแปลงสัญญาณดิจิทัลเป็นอนาล็อก (DAC)

  • GPIO25 = DAC1
  • GPIO26 = DAC2

ใช้ทำ analog out แบบง่าย ๆ เช่น สร้างแรงดันควบคุม, ทดสอบวงจร, สร้างสัญญาณ waveform (งานพื้นฐาน)

GPIO ของ RTC (Real‑Time Clock / Deep Sleep)

ขาใน RTC domain สามารถใช้เป็น “ปลุกจาก Deep Sleep” ได้ เหมาะกับงานประหยัดพลังงาน (ใช้แบต/โซลาร์)

  • GPIO0,2,4,12–15,25–27,32–39
ตัวอย่าง use case: เซนเซอร์ PIR ปลุกบอร์ด, ปุ่มกดปลุก, อ่านเซนเซอร์เป็นรอบ ๆ แล้วกลับไป sleep

PWM (Pulse Width Modulation) บน ESP32

ESP32 ใช้ระบบ LEDC PWM ทำให้เลือกความถี่/ความละเอียดได้ดี เหมาะกับ LED dimming และควบคุมมอเตอร์/พัดลม

  • ใช้ได้กับ GPIO ส่วนใหญ่ (ยกเว้นกลุ่ม Input-only 34–39)
  • งานยอดฮิต: คุมความสว่าง LED, คุมสปีดพัดลม, ทำ buzzer/tone

📘 ดูตัวอย่างการใช้งาน ควบคุมความสว่าง LED ด้วย Arduino IDE

I2C บน ESP32

ค่าเริ่มต้นที่นิยมที่สุด: SDA = GPIO21SCL = GPIO22
  • ใช้กับ OLED, BME280, DS3231, LCD I2C และเซนเซอร์อีกเยอะมาก
  • I2C “ย้ายขาได้” (Wire.begin(SDA, SCL)) แต่มือใหม่เริ่ม 21/22 จะง่ายสุด
📘 ดูตัวอย่างการใช้งาน LCD I2C กับ ESP32

SPI บน ESP32

ด้านล่างคือ mapping ที่เจอบ่อยใน ESP32 DevKit V1 (DOIT) สำหรับ VSPI/HSPI

VSPI (ค่าที่นิยม)

  • SCK = GPIO18
  • MISO = GPIO19
  • MOSI = GPIO23
  • CS = GPIO5

HSPI (ค่าที่นิยม)

  • SCK = GPIO14
  • MISO = GPIO12
  • MOSI = GPIO13
  • CS = GPIO15

ข้อควรระวัง: อย่าสับสนกับ GPIO6–11 (ขา Flash) เพราะมักทำให้บอร์ดค้าง/บูตไม่ขึ้น

Interrupts

ใช้ “จับเหตุการณ์ทันที” เช่น ปุ่มกด, encoder, pulse sensor (ตอบสนองไวกว่า polling)

  • GPIO ส่วนใหญ่รองรับ interrupt
  • กลุ่ม Input-only 34–39 ก็ใช้ interrupt ได้ (แต่สั่ง output ไม่ได้)

UART Pins – การสื่อสารแบบอนุกรม

  • UART0: TX = GPIO1, RX = GPIO3 (ใช้กับ USB‑Serial สำหรับ Upload/Serial Monitor)
  • UART1 / UART2: ย้ายขาได้ เหมาะต่ออุปกรณ์ภายนอก เช่น GPS, RS485, โมดูลอื่น ๆ

ถ้าจะต่ออุปกรณ์ภายนอกจริงจัง แนะนำ หลีกเลี่ยงการใช้ GPIO1/3 เพื่อไม่ให้ชนกับการอัปโหลด/ดีบัก

📘 ดูตัวอย่างการส่งข้อมูลระหว่าง ESP32  ผ่าน UART

Strapping Pins

ขากลุ่มนี้มีผลต่อโหมดบูต/แรงดันตอนเริ่มเปิดเครื่อง

  • GPIO0
  • GPIO2
  • GPIO12
  • GPIO15

อาการยอดฮิต: ต่อวงจรแล้วบูตไม่ขึ้น / อัปโหลดไม่ได้ / ค้างตอนเปิดเครื่อง → ให้เช็คขากลุ่มนี้ก่อนเสมอ

ตาราง GPIO แบบใช้งานจริง (มือใหม่ดูแล้วเลือกได้เลย)

GPIOแนะนำ?เหมาะกับงานข้อควรระวัง
4,5SafeDigital I/O, PWM, คุมรีเลย์โดยรวมใช้ได้สบาย
18,19,21,22,23SafeSPI/I2C, Digital I/O, งานทั่วไป21/22 นิยมทำ I2C
25,26,27SafeDigital I/O, PWM, (บางรุ่นใช้ DAC ที่ 25/26)เหมาะงานเอาต์พุต
32,33SafeDigital I/O, ADC (บางงานนิยมใช้)ดีสำหรับงานอ่านค่า/ควบคุม
34–39Input-onlyอ่านสวิตช์, อ่านเซนเซอร์ (Analog)สั่ง OUTPUT ไม่ได้
0,2,12,15Strappingใช้ได้ แต่ต้องออกแบบวงจรให้ไม่รบกวนตอนบูตดึง HIGH/LOW ผิด = บูตพัง/อัปโหลดไม่ได้
6–11Avoidไม่แนะนำให้เอาไปต่อใช้งานชน SPI Flash บนบอร์ด
1,3ระวังUART0 (Serial Monitor / Upload)ต่ออุปกรณ์อื่นอาจทำให้อัปโหลดรวน

ทริคเลือกพินให้ไม่พัง (รุ่นพี่เตือนก่อน)

  1. เริ่มจาก Safe GPIO ก่อน แล้วค่อยขยับไปขาที่ต้องระวัง (Strapping / UART0)
  2. อย่าใช้ 6–11 ถ้าเป็น DevKit V1 ทั่วไป เพราะมักชน Flash
  3. ขา 34–39 เอาไว้ “อ่านอย่างเดียว” อย่าหวังเอาไปคุมรีเลย์
  4. ถ้าโปรเจกต์คุณมี Wi-Fi ตลอดเวลา แล้วใช้ Analog เยอะ ๆ ให้เลือกขาและวงจรดี ๆ (จะช่วยลดอาการอ่านเพี้ยน)

อ่านต่อ (บทความที่เกี่ยวข้อง)

SEO Trick: หน้าลูก (WiFi / WebServer / I2C) ต้องลิงก์ “กลับมาหน้านี้” ด้วย เพื่อทำคลัสเตอร์ ESP32 ให้แข็ง

FAQ: คำถามยอดฮิต ESP32 DevKit V1 Pinout

DevKit V1 30-pin กับ 38-pin ต่างกันยังไง?

ตำแหน่งพินบนบอร์ดอาจต่างกันตามผู้ผลิต แต่ “หมายเลข GPIO” และการทำงานเหมือนกัน เวลาอ้างอิงให้ดูที่เลข GPIO เป็นหลัก

สาเหตุยอดฮิตคือไปใช้ Strapping pins (0/2/12/15) แล้ววงจรดึงไฟผิดตอนบูต หรือเอา UART0 (GPIO1/3) ไปใช้ร่วมกับอุปกรณ์ภายนอก

ไม่จำเป็น ESP32 เปลี่ยนขา I2C ได้ แต่ 21/22 เป็นค่ามาตรฐานที่คนใช้เยอะ มือใหม่เริ่มจากคู่นี้ก่อนจะง่ายสุด

ใช้กลุ่ม Safe GPIO เช่น 4,5,18,19,21,22,23,25,26,27,32,33 ได้เลย เลี่ยง 6–11 และระวัง 0,2,12,15

ไม่ได้ครับ กลุ่มนี้เป็น Input-only ใช้สำหรับ “อ่านค่า” อย่างเดียว

Shopping Cart
Scroll to Top