Raspberry Pi Cảm Biến Chạm (Touch Sensor)

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng cảm biến chạm điện dung với Raspberry Pi. Cụ thể, chúng ta sẽ học:

Phần Cứng Cần Thiết

1×Raspberry Pi 5
1×Cảm Biến Chạm
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)

Giới Thiệu Về Cảm Biến Chạm

Cảm biến chạm điện dung, còn được gọi là nút chạm hoặc công tắc chạm, thường được sử dụng để điều khiển các thiết bị (ví dụ: đèn cảm ứng chạm). Nó có cùng mục đích như một nút nhấn. Nhiều thiết bị hiện đại được trang bị nó thay vì nút nhấn truyền thống, vì nó mang lại cho sản phẩm vẻ ngoài tinh tế hơn.

Sơ Đồ Chân Cảm Biến Chạm

Cảm biến chạm có ba chân:

  • Chân GND: Phải được kết nối với đất (0V).
  • Chân VCC: Phải được kết nối với nguồn VCC (5V hoặc 3.3V).
  • Chân SIGNAL: Đây là chân đầu ra. Sẽ ở mức LOW khi không được chạm và HIGH khi được chạm. Chân này cần được kết nối với chân đầu vào của Raspberry Pi.
cảm biến chạm sơ đồ chân

Cách Hoạt Động

  • Khi cảm biến không được chạm, chân SIGNAL của cảm biến sẽ ở mức LOW.
  • Tuy nhiên, khi cảm biến được chạm, chân SIGNAL của cảm biến sẽ ở mức HIGH.

Raspberry Pi - Cảm Biến Chạm

Chân SIGNAL của cảm biến chạm được kết nối với một chân đầu vào của Raspberry Pi.

Bằng cách kiểm tra trạng thái của chân Raspberry Pi (được thiết lập làm chân đầu vào), chúng ta có thể phát hiện xem cảm biến chạm có được kích hoạt hay không.

Sơ Đồ Kết Nối

Raspberry Pi cảm biến chạm sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Cách Lập Trình Cho Cảm Biến Chạm

  • Thiết lập chân Raspberry Pi ở chế độ đầu vào số với hàm GPIO.setup().
GPIO.setup(TOUCH_PIN, GPIO.IN)
  • Sử dụng hàm GPIO.input() để xác định trạng thái của chân Raspberry Pi.
touch_state = GPIO.input(TOUCH_PIN)

Có hai trường hợp sử dụng phổ biến cho cảm biến chạm:

  • Trường hợp 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, thực hiện hành động ngược lại.
  • Trường hợp 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 hành động.

Tùy thuộc vào ứng dụng, một trong hai trường hợp này được chọn. Ví dụ, khi sử dụng cảm biến chạm để điều khiển LED:

  • Nếu mục tiêu là LED sáng khi cảm biến được chạm và tắt khi cảm biến KHÔNG được chạm, trường hợp thứ nhất nên được sử dụng.
  • Nếu mục tiêu là LED chuyển đổi giữa ON OFF mỗi khi cảm biến được chạm, trường hợp thứ hai nên được sử dụng.

Code Raspberry Pi Cho Cảm Biến Chạm

Chúng ta sẽ học hai mẫu code:

  • Raspberry Pi đọc giá trị từ cảm biến chạm và in ra Terminal.
  • Raspberry Pi kiểm tra xem cảm biến được chạm hay được thả.

Raspberry Pi đọc giá trị từ cảm biến chạm và in ra Terminal

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 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 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, cài đặt nó bằng lệnh sau:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Tạo file script Python touch_sensor.py và thêm code sau:
# Mã Raspberry Pi này được phát triển bởi newbiely.vn # Mã Raspberry Pi này được cung cấp để sử dụng công khai, không có ràng buộc. # Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: # https://newbiely.vn/tutorials/raspberry-pi/raspberry-pi-touch-sensor import RPi.GPIO as GPIO # Set the GPIO mode to BCM (Broadcom SOC channel numbering) GPIO.setmode(GPIO.BCM) # Set the pin number connected to the touch sensor TOUCH_PIN = 12 # Set the GPIO pin as an input GPIO.setup(TOUCH_PIN, GPIO.IN) try: while True: # Read the state from the touch sensor touch_state = GPIO.input(TOUCH_PIN) # The touch sensor outputs LOW (0) when not touched, and HIGH (1) when touched if touch_state == GPIO.LOW: print("Touch sensor is not touched.") else: print("Touch sensor is touched!") except KeyboardInterrupt: # Clean up the GPIO settings on program exit GPIO.cleanup()
  • Lưu file và chạy script Python bằng cách thực thi lệnh sau trong terminal:
python3 touch_sensor.py
  • Đặt ngón tay lên cảm biến và sau đó bỏ ra.
  • Kiểm tra kết quả trong Terminal.
PuTTY - Raspberry Pi
Touch sensor is not touched. Touch sensor is not touched. Touch sensor is not touched. Touch sensor is touched! Touch sensor is touched! Touch sensor is touched! Touch sensor is touched! Touch sensor is touched! Touch sensor is touched! Touch sensor is not touched. Touch sensor is not touched.

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.

Raspberry Pi phát hiện cảm biến được chạm hoặc thả

Các Bước Nhanh

  • Tạo file script Python TO_BE_UPDATED.py và thêm code sau:
# Mã Raspberry Pi này được phát triển bởi newbiely.vn # Mã Raspberry Pi này được cung cấp để sử dụng công khai, không có ràng buộc. # Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: # https://newbiely.vn/tutorials/raspberry-pi/raspberry-pi-touch-sensor import RPi.GPIO as GPIO import time # Set the GPIO mode to BCM (Broadcom SOC channel numbering) GPIO.setmode(GPIO.BCM) # Set the pin number connected to the touch sensor TOUCH_PIN = 12 # Set the GPIO pin as an input GPIO.setup(TOUCH_PIN, GPIO.IN) # Variable to track the touch sensor state prev_touch_state = GPIO.LOW # Assuming the sensor is not touched initially try: while True: touch_state = GPIO.input(TOUCH_PIN) if touch_state != prev_touch_state: if touch_state == GPIO.HIGH: # Sensor touched event print("Touch sensor is touched!") else: # Sensor released event print("Touch sensor is released!") prev_touch_state = touch_state time.sleep(0.1) # A small delay to debounce the input except KeyboardInterrupt: # Clean up the GPIO settings on program exit GPIO.cleanup()
  • Lưu file và chạy script Python bằng cách thực thi lệnh sau trong terminal:
python3 touch_sensor_events.py
  • Chạm và giữ ngón tay trên cảm biến.
  • Kiểm tra kết quả trong Terminal.
PuTTY - Raspberry Pi
Touch sensor is touched!
  • Bỏ ngón tay khỏi cảm biến.
  • Kiểm tra kết quả trên Terminal.
PuTTY - Raspberry Pi
Touch sensor is touched! Touch sensor is released!

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.