Raspberry Pi Cảm Biến Cửa

Cảm biến cửa là một tính năng phổ biến trong các hệ thống an ninh. Nó được sử dụng để phát hiện và giám sát các lối vào như cửa ra vào và cửa sổ. Thiết bị này còn được gọi là cảm biến tiếp xúc, cảm biến ra vào, hoặc cảm biến cửa sổ.

Hướng dẫn này sẽ chỉ bạn cách sử dụng Raspberry Pi với cảm biến cửa. 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 Cửa
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)

Về Cảm Biến Cửa

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

Cảm biến cửa bao gồm hai phần:

  • Một reed switch có hai chân
  • Một nam châm
cảm biến cửa sơ đồ chân

Tương tự như một công tắc/nút nhấn thông thường, không cần phân biệt giữa hai chân của reed switch.

Cách Hoạt Động

Nam châm được gắn vào cửa ra vào/cửa sổ (phần chuyển động), và reed switch được gắn vào khung cửa (phần cố định). Khi cửa đóng, hai thành phần này tiếp xúc với nhau:

  • Khi nam châm gần reed switch, mạch của reed switch đóng lại
  • Khi nam châm xa reed switch, mạch của reed switch mở ra
cảm biến cửa how it works sơ đồ chân

※ Lưu ý:

Reed switch không cung cấp giá trị LOW hoặc HIGH trên các chân của nó. Nó chỉ có trạng thái đóng hoặc mở. Giá trị của chân được kết nối với Raspberry Pi có thể là LOW, HIGH, hoặc một giá trị trôi nổi (không dự đoán được). Để tránh giá trị trôi nổi, chúng ta phải sử dụng điện trở pull-up hoặc pull-down trên chân Raspberry Pi.

Nếu chúng ta kết nối một chân của reed switch với GND và chân còn lại của reed switch với một chân đầu vào của Raspberry Pi có điện trở pull-up (nội bộ hoặc bên ngoài):

  • Khi nam châm gần reed switch, giá trị ở chân đầu vào Raspberry Pi là LOW
  • Khi nam châm xa reed switch, giá trị ở chân đầu vào Raspberry Pi là HIGH

Để biết trạng thái của cửa, chúng ta chỉ cần kiểm tra trạng thái của chân đầu vào Raspberry Pi:

  • Nếu trạng thái là LOW, cửa đang đóng
  • Nếu trạng thái là HIGH, cửa đang mở

Để phát hiện sự kiện mở cửa/đóng cửa, chúng ta có thể theo dõi sự thay đổi trạng thái trên chân đầu vào Raspberry Pi:

  • Nếu trạng thái chuyển từ LOW sang HIGH, sự kiện mở cửa được phát hiện
  • Nếu trạng thái chuyển từ HIGH sang LOW, sự kiện đóng cửa được phát hiện

Sơ Đồ Kết Nối

Raspberry Pi cảm biến cửa 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 Cửa

  • Khởi tạo chân Raspberry Pi thành chế độ đầu vào số bằng cách sử dụng hàm GPIO.setup(). Ví dụ, đoạn code sau có thể được sử dụng để khởi tạo chân 13 là đầu vào:
GPIO.setup(DOOR_SENSOR_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  • Sử dụng hàm GPIO.input() để xác định trạng thái của chân Raspberry Pi.
door_state = GPIO.input(DOOR_SENSOR_PIN)

Code Raspberry Pi - Kiểm Tra Trạng Thái Mở và Đóng Cửa

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 bằng SSH client có sẵn 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:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Tạo file script Python door_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-door-sensor import RPi.GPIO as GPIO import time # Set the GPIO mode to BCM GPIO.setmode(GPIO.BCM) # Define the GPIO pin number to which the sensor is connected DOOR_SENSOR_PIN = 16 # Setup the GPIO pin as an input GPIO.setup(DOOR_SENSOR_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) try: while True: # Read the state of the door sensor (HIGH when open, LOW when closed) door_state = GPIO.input(DOOR_SENSOR_PIN) if door_state == GPIO.HIGH: print("Door is OPEN") else: print("Door is CLOSED") time.sleep(0.1) # Add a small delay to avoid excessive reads except KeyboardInterrupt: print("Exiting...") GPIO.cleanup()
  • Lưu file và chạy script Python bằng cách thực thi lệnh sau trong terminal:
python3 door_sensor.py
  • Đưa nam châm lại gần reed switch, sau đó di chuyển ra xa.
  • Kiểm tra kết quả trên Terminal.
PuTTY - Raspberry Pi
Door is OPEN Door is OPEN Door is OPEN Door is CLOSED Door is CLOSED Door is CLOSED Door is CLOSED Door is CLOSED Door is OPEN Door is OPEN

Script chạy trong một vòng lặp vô hạn liên tục cho đến khi bạn nhấn Ctrl + C trong terminal.

Bạn sẽ nhận thấy code liên tục in ra trạng thái hiện tại của cửa. Nếu bạn muốn chỉ in trạng thái cửa khi có sự thay đổi, hãy xem phần tiếp theo.

Code Raspberry Pi - Phát Hiện Sự Kiện Mở Cửa và Đóng Cửa

  • Tạo file script Python door_sensor_events.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-door-sensor import RPi.GPIO as GPIO import time # Set the GPIO mode to BCM GPIO.setmode(GPIO.BCM) # Define the GPIO pin number to which the sensor is connected DOOR_SENSOR_PIN = 17 # Setup the GPIO pin as an input GPIO.setup(DOOR_SENSOR_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Variable to store the previous state of the door sensor prev_door_state = GPIO.HIGH try: while True: # Read the state of the door sensor (HIGH when open, LOW when closed) door_state = GPIO.input(DOOR_SENSOR_PIN) if door_state != prev_door_state: if door_state == GPIO.HIGH: print("Door is OPEN") else: print("Door is CLOSED") prev_door_state = door_state time.sleep(0.1) # Add a small delay to avoid excessive reads except KeyboardInterrupt: print("Exiting...") GPIO.cleanup()
  • Lưu file và chạy script Python bằng cách thực thi lệnh sau trong terminal:
python3 door_sensor_events.py
  • Đưa nam châm lại gần reed switch, sau đó di chuyển ra xa.
  • Kiểm tra kết quả trên Terminal.
PuTTY - Raspberry Pi
Door is OPEN Door is CLOSED
  • Bạn sẽ thấy trạng thái của cửa chỉ được in ra khi trạng thái thay đổi

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.