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 Pin | GPIO |
|---|---|
| T0 | GPIO 4 |
| T1 | GPIO 0 |
| T2 | GPIO 2 |
| T3 | GPIO 15 |
| T4 | GPIO 13 |
| T5 | GPIO 12 |
| T6 | GPIO 14 |
| T7 | GPIO 27 |
| T8 | GPIO 33 |
| T9 | GPIO 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 → สายสำหรับสัมผัส

#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 – คำถามที่พบบ่อย
- ESP32 รองรับพินสัมผัสกี่พิน?
ส่วนใหญ่ 10 พิน (T0–T9) แต่บางรุ่นอาจมีต่างออกไป - ต้องใช้ Library เสริมไหม?
ไม่จำเป็น Arduino IDE รองรับ touchRead() อยู่แล้ว - สามารถใช้แทนปุ่มกดได้ไหม?
ได้ และช่วยลดชิ้นส่วนกลไก - ใช้ในงานกันน้ำได้ไหม?
ได้ถ้าออกแบบแผ่นสัมผัสและซีลกันน้ำอย่างดี - อ่านค่าพินสัมผัสพร้อม Wi-Fi ได้หรือไม่?
ได้ ไม่มีข้อจำกัดเหมือน ADC2 - สามารถปรับความไวได้ไหม?
ได้ โดยปรับ threshold ในโค้ด - ใช้กับวัสดุอะไรได้บ้าง?
โลหะ, แผ่นฟอยล์, แผ่น PCB - พินสัมผัสกับ Deep Sleep ใช้ยังไง?
กำหนดให้เป็น wake-up source ในโค้ด - ต้องต่อตัวต้านทานไหม?
ไม่จำเป็นสำหรับการอ่านค่า แต่ถ้าต่อกับวงจรอื่นอาจต้อง - พินสัมผัสกับ Analog Pin ต่างกันยังไง?
พินสัมผัสตรวจจับประจุไฟฟ้า ส่วน Analog วัดแรงดันไฟฟ้า




