ภาพปกบทความ ESP32 Touch Sensor Pins แสดงบอร์ด ESP32 เชื่อมต่อกับพินสัมผัส T0 และวงจร LED บน breadboard พร้อมข้อความหัวข้อใหญ่ด้านบน

ESP32 Touch Sensor Pins – การใช้งานปุ่มสัมผัส Capacitive Touch กับ Arduino IDE

ESP32 Touch Sensor Pins – การใช้งานปุ่มสัมผัส Capacitive Touch ในงาน IoT

บทนำ

ESP32 ไม่ได้มีแค่พินดิจิทัลและอนาล็อกเท่านั้น แต่ยังมี พินสัมผัสไฟฟ้า (Capacitive Touch Pins) ที่สามารถตรวจจับการเปลี่ยนแปลงของประจุไฟฟ้า เช่น การสัมผัสด้วยนิ้วมือ ทำให้สามารถใช้งานแทนปุ่มกดแบบกลไกได้อย่างง่ายดาย เหมาะสำหรับงาน IoT และโปรเจกต์ที่ต้องการดีไซน์สวยงาม ไม่มีปุ่มนูนให้เสียรูป

นอกจากนี้ พินสัมผัสยังสามารถใช้เป็น แหล่งปลุก (Wake-up Source) ให้ ESP32 ตื่นจากโหมด Deep Sleep ได้

รายละเอียดพื้นฐานของ ESP32 คืออะไร พร้อมจุดเด่นและวิธีเริ่มต้นใช้งาน

รายการพินสัมผัส (Touch Pins)

พินสัมผัสของ ESP32 มีทั้งหมด 10 พิน (ขึ้นกับรุ่นบอร์ด) โดยเชื่อมต่อกับ GPIO ดังนี้

Touch PinGPIO
T0GPIO 4
T1GPIO 0
T2GPIO 2
T3GPIO 15
T4GPIO 13
T5GPIO 12
T6GPIO 14
T7GPIO 27
T8GPIO 33
T9GPIO 32

อ่านเพิ่มเติม: ESP32 Pinout DEVKIT V1 – แผนผังและการใช้งานพิน

ฟังก์ชัน touchRead()

ESP32 มีฟังก์ชันใน Arduino IDE ชื่อ touchRead() สำหรับอ่านค่าจากพินสัมผัส โดยรับหมายเลข GPIO เป็นอาร์กิวเมนต์ เช่น

 int value = touchRead(GPIO_PIN);

ค่าที่อ่านได้จะเป็นตัวเลข ซึ่งจะ ลดลงเมื่อมีการสัมผัส และ สูงขึ้นเมื่อไม่มีการสัมผัส

ตัวอย่างโค้ด – อ่านค่าพินสัมผัส

void setup() {
Serial.begin(115200); // เริ่มการสื่อสารผ่าน Serial Monitor
}

void loop() {
int touchValue = touchRead(4); // อ่านค่าจากพินสัมผัส GPIO4
Serial.println(touchValue); // แสดงค่าใน Serial Monitor
delay(1000); // หน่วงเวลา 1 วินาที
}

การทำงาน

  • touchRead(4) จะอ่านค่าจากพินสัมผัส GPIO4 (T0)
  • ค่าลดลง = สัมผัส, ค่าสูง = ไม่สัมผัส

ตัวอย่างโค้ด – ควบคุม LED ด้วยพินสัมผัส

อุปกรณ์ที่ต้องใช้

  • ESP32 Development Board
  • LED + ตัวต้านทาน 330Ω
  • สาย Jumper
  • Breadboard

การต่อวงจร

  • LED → GPIO 2 (ผ่านตัวต้านทาน)
  • GND → Cathode ของ LED
  • GPIO 4 → สายสำหรับสัมผัส
แผนผังการต่อวงจร ESP32 กับ LED และพินสัมผัส (GPIO4) โดยใช้ตัวต้านทาน 330Ω ต่ออนุกรมกับ LED เชื่อม GPIO5 เป็นขาเอาต์พุตควบคุม LED และ GPIO4 เป็นพินรับสัมผัสบนบอร์ดทดลอง (Breadboard)

#define TOUCH_PIN 4 // พินสัมผัส
#define LED_PIN 2 // พินสำหรับ LED

void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(115200);
}

void loop() {
int touchValue = touchRead(TOUCH_PIN);
Serial.println(touchValue);

if (touchValue < 30) {
digitalWrite(LED_PIN, HIGH); // เปิดไฟ LED
} else {
digitalWrite(LED_PIN, LOW); // ปิดไฟ LED
}
delay(100);
}

การประยุกต์ใช้งาน


  • ปุ่มเปิด/ปิดไฟในระบบ Smart Home
  • ปุ่มควบคุมปั๊มน้ำใน Smart Farm
  • ปุ่มปลุก ESP32 จากโหมด Deep Sleep
  • ปุ่มสัมผัสสำหรับงาน Interactive เช่น ของเล่น, เครื่องดนตรี

ข้อควรระวัง

  • ระยะตรวจจับขึ้นกับขนาดแผ่นสัมผัสและสภาพแวดล้อม
  • ค่าที่อ่านได้อาจมีสัญญาณรบกวน ควรใช้การกรองค่า (Filtering)
  • ไม่ควรใช้พินสัมผัสร่วมกับฟังก์ชันอื่นที่อาจชนกัน

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

  1. ESP32 รองรับพินสัมผัสกี่พิน?
    ส่วนใหญ่ 10 พิน (T0–T9) แต่บางรุ่นอาจมีต่างออกไป
  2. ต้องใช้ Library เสริมไหม?
    ไม่จำเป็น Arduino IDE รองรับ touchRead() อยู่แล้ว
  3. สามารถใช้แทนปุ่มกดได้ไหม?
    ได้ และช่วยลดชิ้นส่วนกลไก
  4. ใช้ในงานกันน้ำได้ไหม?
    ได้ถ้าออกแบบแผ่นสัมผัสและซีลกันน้ำอย่างดี
  5. อ่านค่าพินสัมผัสพร้อม Wi-Fi ได้หรือไม่?
    ได้ ไม่มีข้อจำกัดเหมือน ADC2
  6. สามารถปรับความไวได้ไหม?
    ได้ โดยปรับ threshold ในโค้ด
  7. ใช้กับวัสดุอะไรได้บ้าง?
    โลหะ, แผ่นฟอยล์, แผ่น PCB
  8. พินสัมผัสกับ Deep Sleep ใช้ยังไง?
    กำหนดให้เป็น wake-up source ในโค้ด
  9. ต้องต่อตัวต้านทานไหม?
    ไม่จำเป็นสำหรับการอ่านค่า แต่ถ้าต่อกับวงจรอื่นอาจต้อง
  10. พินสัมผัสกับ Analog Pin ต่างกันยังไง?
    พินสัมผัสตรวจจับประจุไฟฟ้า ส่วน Analog วัดแรงดันไฟฟ้า
Shopping Cart
Scroll to Top