Raspberry Pi Button (Nút Nhấn)
Hướng dẫn này chỉ cho bạn cách sử dụng Raspberry Pi với nút nhấn. Cụ thể, chúng ta sẽ học:
- Cách kết nối nút nhấn với Raspberry Pi
- Cách lập trình Raspberry Pi để đọc trạng thái của nút nhấn
- Cách lập trình Raspberry Pi để phát hiện sự kiện nhấn và thả nút nhấn.
- Cách ngăn chặn vấn đề floating input khi sử dụng nút nhấn với Raspberry Pi.
- Cách ngăn chặn vấn đề chattering khi sử dụng nút nhấn với Raspberry Pi.
Nút nhấn còn được gọi là pushbutton, tactile button hoặc momentary switch. Đây là một linh kiện cơ bản và được sử dụng trong nhiều dự án Raspberry Pi. Nó rất dễ sử dụng. Tuy nhiên, nó có thể gây khó hiểu cho người mới bắt đầu do các khía cạnh cơ học, vật lý và cách sử dụng. Hướng dẫn này đã đơn giản hóa nó cho người mới bắt đầu.
Phần cứng cần chuẩn bị
| 1 | × | Raspberry Pi 5 | ||
| 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 | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Raspberry Pi | ||
| 1 | × | (Khuyến nghị) Raspberry Pi Prototyping Base Plate & Breadboard Kit | ||
| 1 | × | (Khuyến nghị) HDMI Touch Screen Monitor for Raspberry Pi |
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sơ Đồ Đấu Nối
- Sơ đồ đấu nối giữa Raspberry Pi và nút nhấn gắn PCB

This image is created using Fritzing. Click to enlarge image
- Sơ đồ đấu nối giữa Raspberry Pi và nút nhấn gắn bảng điều khiển

This image is created using Fritzing. Click to enlarge image
Cách Lập Trình Cho Nút Nhấn
- Sử dụng hàm GPIO.setup() để khởi tạo chân Raspberry Pi như một đầu vào pull-up nội bộ. Ví dụ, chân 16:
- Sử dụng hàm GPIO.input() để xác định trạng thái của chân Raspberry Pi.
※ Lưu ý:
Có hai trường hợp sử dụng phổ biến:
- Thứ nhất: Nếu trạng thái đầu vào là HIGH, thực hiện một hành động. Nếu trạng thái đầu vào là LOW, làm ngược lại.
- Thứ hai: Nếu trạng thái đầu vào thay đổi từ LOW sang HIGH (hoặc HIGH sang LOW), thực hiện một số hành động.
Chúng ta chọn một trong những cách này tùy thuộc vào ứng dụng. Ví dụ, khi sử dụng nút nhấn để điều khiển LED:
- Nếu chúng ta muốn LED bật khi nút được nhấn và tắt khi nút KHÔNG được nhấn, chúng ta NÊN sử dụng trường hợp sử dụng thứ nhất.
- Nếu chúng ta muốn LED chuyển đổi giữa BẬT và TẮT mỗi khi chúng ta nhấn nút, chúng ta NÊN sử dụng trường hợp sử dụng thứ hai.
Code Raspberry Pi - Đọc trạng thái của nút nhấn
Các Bước Nhanh
- Đảm bảo bạn đã cài đặt Raspbian hoặc bất kỳ hệ điều hành tương thích Raspberry Pi nào khác trên Pi của bạn.
- Đảm bảo Raspberry Pi của bạn được kết nối với cùng mạng cục bộ với PC của bạn.
- Đảm bảo Raspberry Pi của bạn được kết nối internet nếu bạn cần cài đặt một số thư viện.
- Nếu đây là lần đầu tiên bạn sử dụng Raspberry Pi, hãy xem Raspberry Pi - Cài Đặt Phần Mềm
- Kết nối PC của bạn với Raspberry Pi qua SSH sử dụng SSH client tích hợp trên Linux và macOS hoặc PuTTY trên Windows. Xem cách kết nối PC với Raspberry Pi qua SSH.
- Đảm bảo bạn đã cài đặt thư viện RPi.GPIO. Nếu chưa, hãy cài đặt bằng lệnh sau:
- Tạo file Python script button.py và thêm code sau:
- Lưu file và chạy Python script bằng cách thực thi lệnh sau trong terminal:
- Nhấn và thả nút nhấn nhiều lần.
- Kiểm tra kết quả đầu ra trên Serial Monitor.
1 là HIGH, 0 là LOW.
Script chạy trong vòng lặp vô hạn liên tục cho đến khi bạn nhấn Ctrl + C trong terminal.
Giải Thích Code
Hãy xem giải thích từng dòng có trong phần comment của source code!
Code Raspberry Pi - Phát hiện sự kiện nhấn nút
Các Bước Nhanh
- Tạo file Python script button_pressed.py và thêm code sau:
- Lưu file và chạy Python script bằng cách thực thi lệnh sau trong terminal:
- Nhấn nút và giữ trong một khoảnh khắc.
- Kiểm tra kết quả đầu ra trên Serial Monitor.
Script chạy trong vòng lặp vô hạn liên tục cho đến khi bạn nhấn Ctrl + C trong terminal.
Giải Thích Code
Hãy xem giải thích từng dòng có trong phần comment của source code!
※ Lưu ý:
- Ngay cả khi bạn chỉ nhấn và thả nút một lần, kết quả đầu ra trong Terminal có thể hiển thị nhiều sự kiện nhấn và thả. Đây là hành vi dự kiến của nút nhấn. Hiện tượng này được gọi là "chattering". Để tìm hiểu thêm về nó, vui lòng tham khảo hướng dẫn Raspberry Pi - Button Debounce.
- Nếu bạn đang sử dụng module nút nhấn, hãy cấu hình chân ở chế độ input bằng cách sử dụng GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_OFF). Với thiết lập này, module sẽ xuất ra LOW khi nút không được nhấn và HIGH khi nút được 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.
Thử Thách Bản Thân
- Khi nút được nhấn, LED sẽ được bật.
- Khi nút không được nhấn, LED sẽ được tắt.
- Mỗi lần nút được nhấn, LED sẽ chuyển đổi giữa BẬT và TẮT.
Kiến Thức Bổ Sung
Những trường hợp nào nên và không nên sử dụng điện trở pull-down/pull-up cho chân đầu vào?
- Nếu cảm biến có trạng thái đóng hoặc mở, cần có điện trở pull-up hoặc pull-down để làm cho các trạng thái này trở thành LOW và HIGH. Ví dụ về các cảm biến như vậy là nút nhấn, công tắc, và công tắc tiếp xúc từ tính (cảm biến cửa).
- Mặt khác, nếu cảm biến có hai mức điện áp xác định (LOW và HIGH), thì KHÔNG cần điện trở pull-up hoặc pull-down. Ví dụ về các cảm biến như vậy là cảm biến chuyển động và cảm biến cảm ứng.




