Arduino Cảm biến cửa

Cảm biến cửa được sử dụng rộng rãi trong lĩnh vực an ninh. Nó được dùng để phát hiện/giám sát các lối vào (như cửa, cửa sổ, ...). Cảm biến cửa còn được biết đến với các tên gọi 'entry sensors', 'contact sensors', hoặc 'window sensors'.

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×cảm biến cửa
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về cảm biến cửa

Bố trí chân

Cảm biến cửa gồm hai thành phần:

  • Một công tắc lá từ có hai chân
  • Một nam châm
sơ đồ chân của cảm biến cửa

Giống như một công tắc bình thường, chúng ta không cần phân biệt hai chân của công tắc từ.

Cách hoạt động

Nam châm được gắn vào cửa (phần di động), và công tắc từ được gắn vào khung cửa (phần cố định). Hai thành phần này tiếp xúc với nhau khi cửa đóng.

  • Khi nam châm ở gần công tắc lá từ, mạch của công tắc lá từ đóng.
  • Khi nam châm ở xa công tắc lá từ, mạch của công tắc lá từ mở.
cảm biến cửa: cách hoạt động và sơ đồ chân

※ Lưu ý:

Chính công tắc thanh từ không xuất ra mức LOW hay HIGH trên các chân của nó. Nó chỉ ở trạng thái đóng hoặc mở. Tùy thuộc vào cách chúng ta kết nối các chân của nó với Arduino, giá trị trên chân có thể là LOW, HIGH hoặc là một giá trị nổi (floating) không xác định. Để tránh giá trị nổi này, chúng ta PHẢI sử dụng điện trở kéo lên hoặc kéo xuống trên chân Arduino.

Nếu ta nối một chân của công tắc từ với GND, chân kia của công tắc từ nối với pin đầu vào của Arduino kèm theo một điện trở kéo lên (pull-up) có thể là nội (internal) hoặc ngoại (external).

  • Khi nam châm ở gần công tắc reed, giá trị tại chân đầu vào của Arduino là LOW
  • Khi nam châm ở xa công tắc reed, giá trị tại chân đầu vào của Arduino là HIGH

Vậy:

  • Để kiểm tra trạng thái của cửa, chúng ta chỉ cần kiểm tra trạng thái của pin đầu vào của Arduino:
    • Nếu trạng thái là LOW, cửa đóng
    • Nếu trạng thái là HIGH, cửa đang mở
  • Để phát hiện các sự kiện mở cửa/đóng cửa, chúng ta có thể phát hiện sự thay đổi trạng thái trên pin đầu vào của Arduino:
    • Nếu trạng thái thay đổi từ LOW sang HIGH, sự kiện mở cửa được phát hiện
    • Nếu trạng thái thay đổi từ HIGH sang LOW, sự kiện đóng cửa được phát hiện

Sơ đồ đấu dây

sơ đồ nối dây cảm biến cửa Arduino

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 Arduino ở chế độ đầu vào kỹ thuật số bằng cách sử dụng hàm pinMode(). Ví dụ, chân 13
pinMode(13, INPUT_PULLUP);
  • Đọc trạng thái của chân Arduino bằng cách sử dụng hàm digitalRead().
int doorState = digitalRead(13);

Mã Arduino - Kiểm tra trạng thái mở và đóng cửa

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino 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/arduino/arduino-door-sensor */ const int DOOR_SENSOR_PIN = 13; // Arduino pin connected to door sensor's pin int doorState; void setup() { Serial.begin(9600); // initialize serial pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode } void loop() { doorState = digitalRead(DOOR_SENSOR_PIN); // read state if (doorState == HIGH) { Serial.println("The door is open"); } else { Serial.println("The door is closed"); } }

Hướng dẫn từng bước

  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấn nút Tải lên trên Arduino IDE để tải mã lên Arduino
  • Đưa nam châm lại gần công tắc reed và sau đó đưa nó ra xa công tắc reed.
  • Xem kết quả trên Serial Monitor.
COM6
Send
The door is open The door is open The door is closed The door is closed The door is closed The door is closed The door is closed The door is open The door is open
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Mã Arduino - Phát hiện các sự kiện mở cửa và đóng cửa

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino 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/arduino/arduino-door-sensor */ const int DOOR_SENSOR_PIN = 13; // Arduino pin connected to door sensor's pin int currentDoorState; // current state of door sensor int lastDoorState; // previous state of door sensor void setup() { Serial.begin(9600); // initialize serial pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode currentDoorState = digitalRead(DOOR_SENSOR_PIN); // read state } void loop() { lastDoorState = currentDoorState; // save the last state currentDoorState = digitalRead(DOOR_SENSOR_PIN); // read new state if (lastDoorState == LOW && currentDoorState == HIGH) { // state change: LOW -> HIGH Serial.println("The door-opening event is detected"); // TODO: turn on alarm, light or send notification ... } else if (lastDoorState == HIGH && currentDoorState == LOW) { // state change: HIGH -> LOW Serial.println("The door-closing event is detected"); // TODO: turn off alarm, light or send notification ... } }
  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấp chuột vào nút Tải lên trên Arduino IDE để nạp mã lên Arduino
  • Di chuyển nam châm lại gần công tắc cảm từ và sau đó di chuyển nó ra xa công tắc cảm từ.
  • Xem kết quả trên Serial Monitor.
COM6
Send
The door-closing event is detected The door-opening event is detected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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.