Lab.Vatli365
← Cấp độ 3 · Cảm biến đơn giản

Bài 18 · Vật lí · Công nghệ

Cảm biến chạm điện dung
một miếng giấy bạc trở thành nút nhấn không có bộ phận chuyển động

ESP32 có sẵn phần cứng đo cảm ứng điện dung. Chỉ cần một vùng kim loại nối vào chân phù hợp, bàn tay đến gần làm điện dung thay đổi. Không có tiếp điểm cơ khí, nhưng ngưỡng lại nhạy với môi trường nên hiệu chuẩn là phần quan trọng nhất.

Thời lượng
1 tiết (45 phút)
Chi phí một nhóm
≈ 2 nghìn đồng (chưa tính bo)
Cấp độ
3 / 12
Trạng thái
Đã có phần cứng, đang hoàn thiện
01

Mục tiêu và yêu cầu cần đạt

Khác nút nhấn ở bài 2, vùng chạm không đóng một công tắc. Nó tạo một thay đổi nhỏ mà chương trình phải đo và phân loại. Vì thế học sinh cần nhìn cả hai phân bố số trước khi quyết định đâu là “đã chạm”.

Sau bài này học sinh làm được

  • Mô tả định tính điện dung thay đổi khi bàn tay đến gần vùng kim loại.
  • Dùng TouchPad đọc GPIO32 mà không thêm module cảm biến.
  • Thu hai nhóm số liệu có chạm và không chạm.
  • Chọn ngưỡng nằm giữa hai nhóm và kiểm tra báo sai.
  • Khảo sát ảnh hưởng của diện tích miếng chạm và lớp cách điện.
Gắn với chương trình
  • Vật lí — điện trường, tụ điện và ảnh hưởng của môi trường điện môi.
  • Công nghệ — thiết kế giao diện người–máy và đánh giá độ tin cậy.

Đối chiếu yêu cầu cần đạt theo khối lớp trước khi sử dụng trong KHBD chính thức.

02

Lí thuyết

Bàn tay làm đổi điện dung

Vùng kim loại và môi trường xung quanh tạo thành một tụ điện rất nhỏ. Cơ thể người dẫn điện và ghép điện dung với môi trường. Khi ngón tay đến gần, thời gian nạp điện thay đổi; phần cứng touch của ESP32 biến thay đổi đó thành một con số.

Không có một ngưỡng dùng cho mọi người

Độ ẩm không khí, nguồn USB, chiều dài dây, diện tích giấy bạc và cả cách chạm làm nền số thay đổi. Ngưỡng 400 trong mã chỉ là ví dụ. Cần đo vùng “không chạm” và “có chạm” ngay tại chỗ rồi đặt ngưỡng trong khoảng trống giữa chúng.

GPIO32 là chân touch của ESP32 thường

Bài dùng đúng ESP32 DevKit V1 trong hồ sơ bo. Không suy ra rằng mọi biến thể ESP32 đều có cùng chân touch; đặc biệt không chuyển nguyên sơ đồ sang C3.

03

Linh kiện

Linh kiệnMô tả, lưu ý khi muaSố lượng · giá
ESP32 DevKit V1Bo ESP32 thường, không dùng ESP32-C3 cho bài này1 · 90–150k
Giấy bạc hoặc miếng kim loại nhỏBo tròn cạnh, dán dưới lớp băng trong1
Điện trở 1 MΩNối tiếp theo bảng chân của hồ sơ bo1 · 200đ
LED 5 mm và điện trở 220 ΩĐèn phản hồi khi chạm1 bộ · 700đ
Băng dính trong và dây cắmCố định vùng chạm1 bộ
04

Lắp mạch và sơ đồ nối dây

Đỏ · nguồn dương Đen · GND Vàng · SCL Xanh dương · SDA Trắng · tín hiệu Xanh lá · 1-Wire
KhốiNối dâyNguồn
Vùng chạmGPIO32 → điện trở 1 MΩ → miếng giấy bạcKhông nối miếng chạm với 3V3 hay GND
LEDGPIO23 → 220 Ω → chân dài LED · chân ngắn → GNDĐúng bảng chân hồ sơ bo
Lớp bảo vệDán băng trong phủ kín giấy bạcKhông để cạnh sắc lộ ra
B18.1 Ảnh thực

Miếng giấy bạc bo tròn được dán dưới băng trong, nối qua điện trở 1 MΩ tới GPIO32.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có
B18.2 Hình vẽ

GPIO32 nối tiếp điện trở 1 MΩ tới vùng chạm; LED ở GPIO23 qua điện trở 220 Ω.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có
B18.3 Đồ thị

Hai cụm số đọc không chạm và có chạm, với đường ngưỡng nằm trong khoảng trống giữa hai cụm.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có

Làm vùng chạm an toàn

  1. Cắt giấy bạc thành hình tròn hoặc vuông khoảng 3 cm, bo kín các góc.
  2. Dán giấy bạc lên bìa, phủ một lớp băng dính trong để cách điện.
  3. Nối giấy bạc qua điện trở 1 MΩ tới GPIO32.
  4. Lắp LED ở GPIO23 qua điện trở 220 Ω.
  5. Giữ dây vùng chạm ngắn và xa dây USB để giảm nhiễu.
Vùng chạm không nhận nguồn

Miếng kim loại không nối 3V3, 5V, pin hay bất kì nguồn ngoài nào. Phủ kín cạnh sắc và không dùng vật kim loại lớn như cửa, khung bàn hoặc ống nước làm điện cực.

Dây quá dài trở thành ăng-ten

Nếu số đọc nhảy dù không ai chạm, rút ngắn dây, cố định nó và tránh chạy song song với cáp USB. Đừng chữa nhiễu bằng cách đặt ngưỡng quá sát vùng chạm.

05

Mã nguồn

Mã dùng TouchPad của MicroPython trên ESP32 DevKit V1. Vùng chạm chỉ nối GPIO32 qua điện trở 1 MΩ, tuyệt đối không nối nguồn ngoài.

Bước 1 — lấy hai nhóm số
# Moi lan chay, dat TRANG_THAI la "khong_cham" hoac "co_cham"
from machine import Pin, TouchPad
import time

cam_ung = TouchPad(Pin(32))
TRANG_THAI = "khong_cham"

def lay_20_mau():
    cac_mau = []
    for lan in range(20):
        cac_mau.append(cam_ung.read())
        time.sleep_ms(100)
    print("Nho nhat:", min(cac_mau))
    print("Lon nhat:", max(cac_mau))
    print("Trung binh:", sum(cac_mau) // len(cac_mau))

print("Chuan bi", TRANG_THAI, "trong 5 giay")
time.sleep_ms(5000)
lay_20_mau()

Chạy một lần với TRANG_THAI = "khong_cham", rồi đổi thành "co_cham" và chạy lại. Nếu hai khoảng chồng lên nhau nhiều, sửa bố trí trước khi chọn ngưỡng.

Bước 2 — biến vùng chạm thành nút
# Bai 18 - Cam bien cham dien dung co san trong ESP32
from machine import Pin, TouchPad
import time

# ===== CẤU HÌNH =====
CHAN_CHAM = 32
CHAN_LED = 23
NGUONG_CHAM = 400       # thay bang nguong cua chinh mieng cham
CHU_KY_MS = 200
# ====================

cam_ung = TouchPad(Pin(CHAN_CHAM))
led = Pin(CHAN_LED, Pin.OUT)

while True:
    gia_tri = cam_ung.read()
    print("Cam ung:", gia_tri)

    # Tren bo thu, cham tay thuong lam so doc giam.
    if gia_tri < NGUONG_CHAM:
        led.on()
    else:
        led.off()

    time.sleep_ms(CHU_KY_MS)

Với mạch thử, số thường giảm khi chạm. Hãy thay NGUONG_CHAM và kiểm tra lại dấu so sánh bằng dữ liệu của chính bo.

Em mô tả bằng tiếng Việt, hệ thống dựng thuật toán và chương trình, rồi nạp thẳng xuống ESP32 qua Wi-Fi.

06

Hiệu chuẩn và kiểm thử

So diện tích vùng chạm

Miếng chạmKhông chạm: khoảng sốCó chạm: khoảng sốKhoảng cách hai nhómBáo sai/10
1 × 1 cm…………
3 × 3 cm…………
5 × 5 cm…………

Danh sách kiểm

  • Miếng chạm chỉ nối GPIO32 qua điện trở 1 MΩ.
  • Cạnh giấy bạc được bo và phủ băng cách điện.
  • Hai nhóm có ít nhất 20 mẫu mỗi nhóm.
  • Ngưỡng nằm giữa hai vùng, không lấy từ nhóm khác.
  • LED ở GPIO23 phản hồi ổn định trong 10 lần thử.
07

Kinh nghiệm và cạm bẫy

Chạm vào dây khác với chạm vào mặt nút

Khi dựng bài, tôi thử bằng cách cầm trực tiếp đầu dây nên hai nhóm số cách nhau rất xa. Sau khi phủ băng và chỉ chạm lên mặt sản phẩm, chênh lệch nhỏ hơn nhiều. Hiệu chuẩn phải làm trên đúng hình thức sử dụng cuối cùng.

Nền đổi sau khi chuyển cổng USB

Đổi máy tính hoặc bộ nguồn có thể làm nền cảm ứng đổi. Nếu sản phẩm chuyển sang nguồn khác, lấy lại hai mốc; đừng giữ nguyên ngưỡng chỉ vì mã vẫn chạy.

08

Ứng dụng trong dạy học

Vật líCông nghệToánSTEM

Vật lí — một tụ điện không nhìn thấy

Học sinh không cần hai bản kim loại đối diện rõ ràng mới gặp điện dung. Chính vùng chạm, cơ thể và môi trường tạo hệ điện dung phân bố; thay hình học là thay số đo.

Toán — tách hai cụm dữ liệu

Mục tiêu của ngưỡng là tách hai nhóm với ít lỗi nhất. Có thể cho nhóm đánh dấu toàn bộ 40 số trên một trục số rồi chọn ranh giới bằng mắt trước khi tính.

Bài học STEM 5 hoạt động — “Nút chạm cho mô hình bảo tàng”

Hoạt động 1 — Xác định vấn đề. Cần một nút bền, phẳng và dễ lau cho mô hình trưng bày.

Tiêu chí sản phẩm: nhận đúng ít nhất 9/10 lần; không tự kích trong 30 giây; không có kim loại sắc lộ ra.

Hoạt động 2 — Kiến thức nền. Điện dung, TouchPad, phân bố dữ liệu và ngưỡng.

Hoạt động 3 — Đề xuất phương án. So hình dạng, diện tích và vật liệu phủ.

Hoạt động 4 — Chế tạo và thử. Mỗi nhóm thử chéo sản phẩm của nhóm khác.

Hoạt động 5 — Báo cáo và điều chỉnh. Dựa vào lần bỏ sót và kích nhầm để sửa kích thước hoặc ngưỡng.

Hướng mở rộng
  • Tạo hai nút chạm và đo ảnh hưởng qua lại.
  • So một, hai và ba lớp băng cách điện.
  • Thêm logic chỉ tính một lần cho mỗi lượt chạm.
  • Hướng thi Khoa học kĩ thuật: giao diện chạm thấp áp cho mô hình hỗ trợ người dùng.