Bài 7: Lập trình ESP32 Touch Pin bật tắt led với một cái chạm tay

lap trinh esp32 touch pin dieu khien led

Trong bài này chúng ta sẽ cùng nhau học cách sử dụng ESP32 Touch pin, sau đó điều khiển led bằng cách chạm mà không cần nút nhấn. Touch Pin là một ngoại vi khá hay ho mà các dòng vi điều khiển khác ít gặp, cùng làm theo hướng dẫn để có thể điều khiển nó nhé

Bài 7 trong Serie Học ESP32 từ A tới Z

Cảm biến chạm (Touch Sensor)

Nguyên lý hoạt động của cảm biến chạm

Chúng ta đều biết con người và các loài động vật đều có dòng điện sinh học trong người, mặc dù rất nhỏ thế nên với độ nhạy của các linh kiện bán dẫn, chúng ta hoàn toàn có thể đọc được sự thay đổi này.

Như trong hình khi ngón tay tiếp xúc với Touch Pad sẽ có dòng điện đi từ tay B sang E của cặp transistor mắc darlington. Tín hiệu sau khi qua cặp diode đó có điện áp đủ mạnh để có thể mở con transistor công xuất. Làm đóng mạch điện và tải hoạt động

ac hum touch switch e1296843439693
Cảm biến chạm

Touch Pin trong ESP32

Esp32 sử dụng nguyên lý tương tự như vậy, đầu vào Touch pin sẽ được khuếch đại tín hiệu để có thể dò được sự thay đổi (chạm) trên chân đó. Sau đó quy đổi thành giá trị có thể đo lường và lập trình được

Trong ESP32 có 9 chân Touch pin

  • 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)

Lập trình ESP32 Touch Pin điều khiển Led

Trong bài này chúng ta sẽ sử dụng Touch Pin thay cho nút nhấn thông thường, điều khiển bật tắt Led,và chúng ta có thể thay đổi độ nhạy của Touch Pad đó.

Linh kiện cần chuẩn bị:

  • Breadboard
  • Kit ESP32
  • Led và trở
  • Pad chạm hoặc một lớp bọc thực phẩm nhôm

Sơ đồ nguyên lý

Sơ đồ nguyên lý ESP32 Touch Pin
Sơ đồ nguyên lý ESP32 Touch Pin

Code và giải thích code

Copy đoạn code này và dán vào Platform IO hoặc Arduino

#include <Arduino>

// chọn chân touch
const int touchPin = 4; 
const int ledPin = 16;

// Giới hạn touch (độ nhạy)
const int threshold = 20;
// Giá trị touch
int touchValue;

void setup(){
  Serial.begin(9600);
  delay(1000);
  // khởi tạo led là output
  pinMode (ledPin, OUTPUT);
}

void loop(){
  // đọc giá trị touch
  touchValue = touchRead(touchPin);
  Serial.print(touchValue);
  //nếu giá trị nhỏ hơn giới hạn
  if(touchValue < threshold){
    // bật led
    digitalWrite(ledPin, HIGH);
    Serial.println(" - LED on");
  }
  else{
    // nếu lớn hơn hoặc bằng thì tắt led
    digitalWrite(ledPin, LOW);
    Serial.println(" - LED off");
  }
  delay(500);
}

Giải thích Code

Hàm touchValue = touchRead(touchPin); được sử dụng để đọc giá trị chân touch pin về

Sau đó so sánh với giá trị threshold nếu nhỏ hơn giá trị đó thì bật Led, nếu lớn hơn thì sẽ tát led

Nạp code và chạy thử

Trạng thái chân Touch pin sẽ được truyền về Serial monitor. Hãy để ý các thông số đó để cài đặt threshold cho phù hợp

esp32 touch 1

 

Kết luận

Một số lưu ý khi sử dụng ESP32 Touch pin

  • Khi bạn chạm vào GPIO cảm ứng, giá trị mà cảm biến đọc được sẽ giảm xuống.
  • Bạn có thể đặt một giá trị ngưỡng để thực hiện một điều gì đó xảy ra khi nó phát hiện chạm vào.
  • Các chân cảm ứng ESP32 có thể được sử dụng để đánh thức ESP32 khỏi Sleep Mode

Hi vọng bài viết này có ích cho bạn. Nếu thấy hay hãy chia sẻ nó tới bạn be nhé. Đừng quên tham gia nhóm Nghiện lập trình để kết nối với những người bạn cùng đam mê.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *