เคยเบื่อกับปุ่มกดแบบกลไก (Mechanical buttons) ที่กดยาก เสียงดัง หรือเสื่อมสภาพไวไหมครับ? ในอุปกรณ์ยุคใหม่ ไม่ว่าจะเป็นสมาร์ทโฟน โคมไฟ หรือแผงควบคุม Smart Home ต่างก็หันมาใช้ "ระบบสัมผัส" กันหมดแล้ว เพราะมันดูโมเดิร์นและตอบสนองได้ดีกว่า
วันนี้เราจะมาลุยโปรเจกต์สนุกๆ โดยการนำบอร์ด ESP32 มาจับคู่กับ Touch Sensor (TTP223) เมื่อมีคนเอานิ้วไปแตะ บอร์ดจะรับสัญญาณไปสั่งให้ไฟ LED สว่างขึ้น พร้อมโชว์ข้อความแจ้งเตือนบนหน้าจอ LCD ทันที! ระบบนี้ต่อยอดไปทำสวิตช์ไฟหรือระบบรักษาความปลอดภัยในบ้านได้สบายๆ เลยครับ
คลิกเพื่อดูวิดีโอสาธิตการทำงานมุมอื่นๆ (View More)
รายการอุปกรณ์ (Supplies)
- บอร์ด ESP32 Dev Module
- โมดูลเซ็นเซอร์สัมผัส Touch Sensor Module (TTP223B)
- หน้าจอ LCD Display (พร้อมโมดูล I2C)
- หลอดไฟ LED
- แผงทดลองวงจร (Breadboard) และ สายจัมเปอร์ (Jumper wires)
คลิกเพื่อดูรูปอุปกรณ์เพิ่มเติม (View More)
Step 1: ทำความรู้จัก Touch Sensor (TTP223)
โมดูล TTP223 เป็นสวิตช์สัมผัสแบบคาปาซิทีฟ (Capacitive touch switch) หลักการทำงานของมันคือ "การวัดค่าประจุไฟฟ้าที่เปลี่ยนไป" เมื่อผิวหนังของเราไปสัมผัสหรือเข้าใกล้แผ่นเซ็นเซอร์ มันไม่ต้องการแรงกดทางกลไกเลย แค่แตะเบาๆ เซ็นเซอร์ก็จะส่งสัญญาณดิจิทัลออกไปให้ไมโครคอนโทรลเลอร์ (ESP32) ทันที มีขาสัญญาณง่ายๆ แค่ 3 ขา คือ VCC, GND และ OUT (SIG)
Step 2: การต่อวงจร (Connections)
การต่อสายไฟในโปรเจกต์นี้ไม่ซับซ้อนครับ ให้ต่ออุปกรณ์เข้ากับบอร์ด ESP32 ตามนี้เลย:
การต่อ Touch Sensor:
- VCC ต่อเข้ากับ 3.3V
- GND ต่อเข้ากับ GND
- OUT (หรือ SIG) ต่อเข้ากับ GPIO 4
การต่อหน้าจอ LCD (ผ่าน I2C):
- VCC ต่อเข้ากับ 5V
- GND ต่อเข้ากับ GND
- SDA ต่อเข้ากับ GPIO 13
- SCL ต่อเข้ากับ GPIO 14
การต่อหลอด LED:
- ขาบวก (+) ต่อเข้ากับ GPIO 26
- ขาลบ (-) ต่อเข้ากับ GND
คลิกเพื่อดูรูปภาพการตั้งค่าและการต่อสาย (View More)
Step 3: โค้ดดิ้ง (Code)
สำหรับซอร์สโค้ดในการสั่งงาน ESP32 คุณสามารถดาวน์โหลดไฟล์ .ino จากลิงก์ด้านล่าง หรือจะคัดลอกโค้ดโครงสร้างพื้นฐานที่เราสรุปไว้ให้ ไปวางใน Arduino IDE แล้วอัปโหลดลงบอร์ดได้เลยครับ
คลิกเพื่อดูและคัดลอกโค้ด (View More)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// กำหนดพินตามวงจร
const int touchPin = 4;
const int ledPin = 26;
// ตั้งค่า LCD (SDA=13, SCL=14) ที่อยู่ 0x27 ขนาด 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
pinMode(touchPin, INPUT);
pinMode(ledPin, OUTPUT);
// กำหนดขา I2C แบบ Custom สำหรับ ESP32
Wire.begin(13, 14);
lcd.init();
lcd.backlight();
}
void loop() {
int touchState = digitalRead(touchPin);
if (touchState == HIGH) {
digitalWrite(ledPin, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Touch Detected!");
lcd.setCursor(0, 1);
lcd.print("LED ON");
} else {
digitalWrite(ledPin, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("No Touch");
lcd.setCursor(0, 1);
lcd.print("LED OFF");
}
delay(200); // หน่วงเวลาเล็กน้อยเพื่อความเสถียร
}
💻 ดาวน์โหลดไฟล์ Arduino Code (.ino) ต้นฉบับที่นี่
Step 4 & 5: ผลลัพธ์และหลักการทำงาน
เมื่ออัปโหลดโค้ดเสร็จ ระบบจะทำงานเป็นสเต็ปดังนี้ครับ:
- เซ็นเซอร์สัมผัสจะคอยตรวจสอบความเปลี่ยนแปลงของประจุไฟฟ้าบนพื้นผิวแผงเซ็นเซอร์อยู่ตลอดเวลา
- เมื่อเราเอานิ้วไปแตะ ค่าประจุจะเปลี่ยน เซ็นเซอร์จะส่งสัญญาณ
HIGH ไปหา ESP32
- บอร์ด ESP32 ตรวจจับสัญญาณได้ ก็จะสั่งให้ ไฟ LED ติดสว่าง และหน้าจอ LCD เปลี่ยนเป็นข้อความ "Touch Detected"
- พอเอานิ้วออก สัญญาณหายไป LED จะดับ และหน้าจอจะกลับมาโชว์ "No Touch"
คลิกเพื่อดูรูปผลลัพธ์การทำงานและผัง Logic (View More)
Step 6 & 7: การนำไปประยุกต์ใช้ และบทสรุป
ระบบเซ็นเซอร์สัมผัสนี้ถูกนำไปใช้ในอุปกรณ์อิเล็กทรอนิกส์สมัยใหม่มากมาย เช่น สวิตช์ไฟติดผนังแบบสัมผัส (Touch-Based Light Switches), แผงควบคุม Smart Home, หรือระบบรักษาความปลอดภัย
สรุป: โปรเจกต์นี้แสดงให้เห็นว่าการใช้ ESP32 ตรวจจับการสัมผัสของมนุษย์นั้นทำได้ง่ายดายมาก ระบบสามารถให้ฟีดแบ็กหรือตอบสนองกลับมาได้อย่างชัดเจนและรวดเร็ว ถือเป็นจุดเริ่มต้นที่ดีในการทำโปรเจกต์ IoT เจ๋งๆ ชิ้นต่อไปของคุณครับ!
คลิกเพื่อดูรูปภาพสรุปและแอปพลิเคชัน (View More)
อยากได้อุปกรณ์ไปสร้างโปรเจกต์ Smart Home ล้ำๆ แบบนี้ไหม?
คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา