Bài viết này sẽ hướng dẫn các bạn sử dụng chân cảm ứng điện dung sử dụng Arduino IDE. Các chân cảm ứng này có thể cảm nhận được sự thay đổi của bất kỳ thứ gì chứa điện tích. Chúng thường được dùng để đánh thức ESP32 khi nó đang trong chế độ deep sleep (ngủ sâu).
Bạn đang cần ESP32 để thực hành? Mua ngay tại đây.
Mục lục
Các chân cảm ứng điện dung của ESP32:
ESP32 có 10 GPIO cảm ứng điện dung. Các GPIO này có thể cảm nhận được các biến thể của bất kỳ thứ gì chứa điện tích, như da người. Vì vậy, chúng ta có thể phát hiện sự thay đổi khi chạm vào GPIO.
Các chân này có thể dễ dàng tích hợp vào các miếng đệm điện dung, và thay thế các nút cơ học. Ngoài ra, các chân cảm ứng cũng có thể được sử dụng làm nguồn đánh thức khi ESP32 đang ở chế độ ngủ sâu.
Nhìn vào hình bên dưới, các chân cảm ứng chạm được đánh dấu bằng màu hồng.
touchRead()
Đọc cảm biến chạm rất đơn giản. Trong Arduino IDE bạn dùng hàm touchRead() với đối số là chân GPIO bạn muốn đọc.
touchRead(GPIO);
Code – Đọc cảm biến chạm:
Để xem cách hàm hoạt động, vào File > Examples > ESP32 > Touch và mở TouchRead
// ESP32 Touch Test // Just test touch pin - Touch6 is T6 which is on GPIO 14. void setup() { Serial.begin(115200); delay(1000); // give me time to bring up serial monitor Serial.println("ESP32 Touch Test"); } void loop() { Serial.println(touchRead(T6)); // get value using T6 delay(1000); }
Ví dụ này đọc chân cảm biến chạm T6 là chân GPIO 14. Giá trị đọc được gửi qua Serial Monitor
Trong setup(), khởi tạo Serial để hiển thị kết quả đọc được ra cảm biến:
Serial.begin(115200); delay(1000); // give me time to bring up serial monitor Serial.println("ESP32 Touch Test"); Trong loop(), in giá trị đọc được từ chân T6 lên Serial: Serial.println(touchRead(T6)); // get value using T6
Kết quả đọc được:
Vào Tools > SerialPlotter để xem nhiều hơn:
Thử điều khiển Led:
Upload đoạn code sau:
const int ledPin = 19; // change with your threshold value const int threshold = 20; // variable for storing the touch pin value int touchValue; void setup(){ Serial.begin(115200); delay(1000); // give me time to bring up serial monitor // initialize the LED pin as an output: pinMode (ledPin, OUTPUT); } void loop(){ // read the state of the pushbutton value: touchValue = touchRead(T6); Serial.print(touchValue); // check if the touchValue is below the threshold // if it is, set ledPin to HIGH if(touchValue < threshold){ // turn LED on digitalWrite(ledPin, HIGH); Serial.println(" - LED on"); } else{ // turn LED off digitalWrite(ledPin, LOW); Serial.println(" - LED off"); } delay(500); }
Kết quả như sau:
Kết luận,
Bài viết trên đã mô tả cho bạn khái niệm cảm biến điện dung cũng như cách sử dụng, điều khiển cảm biến này trên ESP32. Chúc các bạn thành công!
Để xem tất cả các bài hướng dẫn về lập trình Arduino, bạn truy cập vào đây nhé: Tổng hợp các bài hướng dẫn về Arduino. Nếu bạn có bất kỳ ý kiến đóng góp hoặc thắc mắc gì, bạn có thể để lại comment phía dưới hoặc liên hệ với OhStem qua Fanpage để được hỗ trợ nhé!