Arduino Khóa Solenoid

Ổ khóa solenoid còn được biết đến với tên gọi ổ khóa điện từ. Nó có thể được sử dụng để khóa hoặc mở khóa tủ, ngăn kéo, cửa. Trong bài hướng dẫn này, chúng ta sẽ học cách điều khiển ổ khóa solenoid bằng Arduino.

Một phương án thay thế cho khóa solenoid là khóa điện từ. Bạn có thể tìm hiểu thêm trong Arduino - Khóa điện từ.

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×Solenoid Lock
1×Relay
1×12V Power Adapter
1×DC Power Jack
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ề khóa solenoid

Sơ đồ chân

Khóa solenoid gồm hai dây:

  • Dây dương (+) (đỏ): cần được kết nối với 12V của nguồn cấp DC
  • Dây âm (-) (đen): cần được kết nối với điểm đất (GND) của nguồn cấp DC
cấu hình chân cắm của khóa điện từ

Cách hoạt động

  • Khi Khóa điện từ được cấp nguồn, chốt khóa (lẫy khóa) được đẩy ra ⇒ Cửa được khóa
  • Khi Khóa điện từ không được cấp nguồn, chốt khóa (lẫy khóa) rút vào ⇒ Cửa được mở

※ Lưu ý:

Khóa solenoid thường dùng nguồn 12V, 24V hoặc 48V. Do đó, chúng ta KHÔNG THỂ kết nối khóa solenoid trực tiếp với chân Arduino. Chúng ta phải kết nối nó với chân Arduino thông qua một rơ-le.

Nếu chúng ta kết nối khóa solenoid với một rơ-le (chế độ tiếp điểm thường mở):

  • Khi rơ-le mở, cửa được mở khóa
  • Khi rơ-le đóng, cửa bị khóa

Bằng cách kết nối Arduino với relay, chúng ta có thể lập trình cho Arduino để điều khiển khóa solenoid. Tìm hiểu thêm về relay tại Arduino - rơ-le.

Sơ đồ đấu dây

sơ đồ đấu dây khóa điện từ Arduino

This image is created using Fritzing. Click to enlarge image

Sơ đồ mạch điện thực sự:

kết nối thực tế của khóa solenoid Arduino

Mã Arduino

Đoạn mã dưới đây khóa và mở cửa mỗi 5 giây.

/* * 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-solenoid-lock */ // constants won't change const int RELAY_PIN = A5; // the Arduino pin, which connects to the IN pin of relay // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 3 as an output. pinMode(RELAY_PIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(RELAY_PIN, HIGH); // uhlock the door delay(5000); digitalWrite(RELAY_PIN, LOW); // lock the door delay(5000); }

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
  • Xem trạng thái của lưỡi khóa

Arduino - Khóa solenoid điều khiển bằng nút nhấn

  • Sơ đồ mạch điện
sơ đồ nối dây khóa solenoid bằng nút nhấn Arduino

This image is created using Fritzing. Click to enlarge image

  • Mã Arduino
/* * 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-solenoid-lock */ #include <ezButton.h> // constants won't change const int BUTTON_PIN = 12; // Arduino pin connected to button's pin const int RELAY_PIN = A5; // Arduino pin connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 12; void setup() { Serial.begin(9600); // initialize serial pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode button.setDebounceTime(50); // set debounce time to 50 milliseconds digitalWrite(RELAY_PIN, LOW); // lock the door } void loop() { button.loop(); // MUST call the loop() function first if(button.isPressed()) { Serial.println("The button is pressed"); digitalWrite(RELAY_PIN, HIGH); // unlock the door in 10 seconds delay(10000); // 10 seconds digitalWrite(RELAY_PIN, LOW); // lock the door again } }

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

  • Cài đặt thư viện ezButton. Xem Hướng dẫn
  • 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
  • Nhấn nút một lần.
  • Xem trạng thái của lưỡi khóa trong 10 giây.

※ Lưu ý:

Trong đoạn mã ở trên, chúng ta đã sử dụng hàm delay. Do đó, chúng ta không cần xử lý lọc nhiễu cho nút. Tuy nhiên, chúng tôi vẫn cung cấp mã có lọc nhiễu để phòng khi bạn muốn làm thêm nhiều tác vụ mà không dùng hàm delay. Xem Cách sử dụng millis() thay cho delay()

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.