ESP32 Button (Nút Nhấn)
Button (nút nhấn) là một linh kiện cơ bản và được sử dụng rộng rãi trong nhiều dự án ESP32. Nó không đơn giản như vẻ ngoài (do đặc tính cơ học, vật lý). Người mới bắt đầu có thể gặp nhiều khó khăn với nó. Hướng dẫn này sẽ làm cho nó trở nên dễ dàng cho người mới bắt đầu. Hãy bắt đầu!
※ Lưu ý:
Trước khi trình bày về button, chúng tôi muốn lưu ý rằng có hai lỗi phổ biến mà người mới thường gặp:
- Vấn đề floating input (chân vào trôi nổi):
- Triệu chứng: Khi kết nối button với chân input của ESP32, trạng thái của chân input là ngẫu nhiên và không khớp với trạng thái nhấn của button.
- Nguyên nhân: Chân button KHÔNG sử dụng điện trở pull-down hoặc điện trở pull-up.
- Giải pháp: ⇒ Sử dụng điện trở pull-down hoặc điện trở pull-up trên chân input. Chi tiết sẽ được mô tả sau trong hướng dẫn này.
- Triệu chứng: Code trên ESP32 đọc trạng thái của button và xác định sự kiện nhấn bằng cách phát hiện sự thay đổi trạng thái (HIGH sang LOW, hoặc LOW sang HIGH). Khi button thực sự chỉ được nhấn một lần, code ESP32 phát hiện nhiều lần nhấn thay vì một lần.
- Nguyên nhân: Do đặc tính cơ học và vật lý, khi bạn nhấn một lần vào button, trạng thái của chân input sẽ nhanh chóng chuyển đổi giữa LOW và HIGH nhiều lần thay vì một lần
- Giải pháp: ⇒ Debounce. Chi tiết sẽ được mô tả trong hướng dẫn ESP32 - Nút Nhấn - Debounce.
Hiện tượng chattering gây ra trục trặc chỉ trong một số loại ứng dụng cần phát hiện chính xác số lần nhấn. Trong một số loại ứng dụng, nó không có hại.
Phần cứng cần chuẩn bị
| 1 | × | mô-đun phát triển ESP-WROOM-32 | ||
| 1 | × | Alternatively, ESP32 Uno-form board | ||
| 1 | × | Alternatively, ESP32 S3 Uno-form board | ||
| 1 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) | ||
| 1 | × | breadboard-mount Button with Cap | ||
| 1 | × | breadboard-mount Button Kit | ||
| 1 | × | Panel-mount Push Button | ||
| 1 | × | mô-đun nút nhấn | ||
| 1 | × | breadboard (Bo mạch thí nghiệm) | ||
| 1 | × | dây jumper (Dây jumper) | ||
| 1 | × | (Tùy chọn) DC Power Jack | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Breakout Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP32 |
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
ESP32 Code
Các Bước Nhanh
- Mới sử dụng ESP32? Hãy xem ESP32 - Cài Đặt Phần Mềm.
- Thực hiện kết nối dây như hình trên.
- Kết nối bo mạch ESP32 với PC của bạn qua cáp micro USB
- Mở Arduino IDE trên PC của bạn.
- Chọn đúng bo mạch ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
- Sao chép code bên dưới và dán vào Arduino IDE.
- Biên dịch và upload code lên bo mạch ESP32 bằng cách nhấp vào nút Upload trên Arduino IDE

- Mở Serial Monitor trên Arduino IDE

- Nhấn và thả button nhiều lần
- Xem kết quả trên Serial Monitor. Nó sẽ như bên dưới:
1 là HIGH, 0 là LOW.
Giải Thích Code Từng Dòng
Code ESP32 trên có chứa giải thích từng dòng. Hãy đọc các comments trong code!
Chỉnh Sửa ESP32 Code
Hãy chỉnh sửa code để phát hiện các sự kiện nhấn và thả
Các Bước Nhanh
- Mới sử dụng ESP32? Hãy xem ESP32 - Cài Đặt Phần Mềm.
- Chỉnh sửa code như bên dưới
- Biên dịch và upload code lên bo mạch ESP32 bằng cách nhấp vào nút Upload trên Arduino IDE

- Mở Serial Monitor trên Arduino IDE

- Nhấn button và sau đó thả ra
- Xem kết quả trên Serial Monitor. Nó sẽ như bên dưới:
※ Lưu ý:
- Serial Monitor có thể in ra nhiều sự kiện nhấn và thả mặc dù bạn chỉ thực hiện một lần nhấn và thả. Đây là hành vi bình thường của button. Hành vi này được gọi là "chattering phenomenon" (hiện tượng rung lắc). Trong một số ứng dụng, chúng ta cần một phương pháp để loại bỏ nó. Bạn có thể tìm hiểu thêm trong ESP32 - Button Debounce tutorial.
- Để làm cho nó đơn giản cho người mới bắt đầu, đặc biệt khi sử dụng nhiều button, chúng tôi đã tạo ra một thư viện gọi là ezButton. Bạn có thể tìm hiểu về thư viện ezButton ở đây.
- Đối với button module, sử dụng pinMode(BUTTON_PIN, INPUT). Nó xuất ra LOW khi không nhấn và HIGH khi nhấn.
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.
Kiến Thức Bổ Sung
- NÊN: Nếu cảm biến có hai trạng thái: đóng và mở, nó cần điện trở pull-up hoặc pull-down để làm cho các trạng thái này trở thành hai trạng thái: LOW và HIGH. Ví dụ, push-button, switch, magnetic contact switch (cảm biến cửa)...
- KHÔNG NÊN: Nếu cảm biến xuất ra hai mức điện áp (LOW và HIGH), nó KHÔNG cần điện trở pull-up hoặc pull-down. Ví dụ, ESP32 - Cảm biến chuyển động, ESP32 - Touch Sensor (Cảm Biến Cảm Ứng)...






