Hướng dẫn này sẽ chỉ bạn cách sử dụng ESP32 với button và khóa điện từ. Cụ thể, chúng ta sẽ học cách sử dụng button để điều khiển khóa điện từ không có debouncing và có debouncing. Mỗi lần button được nhấn, sẽ mở khóa cửa trong 10 giây sau đó khóa cửa lại.
Tiết lộ: Một số liên kết trong bài viết này là liên kết tiếp thị Amazon và có thể nhận hoa hồng theo chính sách của chương trình.
Về Button và Khóa Điện Từ
Chúng tôi có các hướng dẫn chi tiết về khóa điện từ và button. Mỗi hướng dẫn chứa thông tin chi tiết và hướng dẫn từng bước về sơ đồ chân, nguyên lý hoạt động, kết nối dây với ESP32, code ESP32... Tìm hiểu thêm tại các liên kết sau:
Code ESP32 - Button Điều Khiển Khóa Điện Từ Không Có Debouncing
/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 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/esp32/esp32-button-controls-electromagnetic-lock */#define BUTTON_PIN 22 // ESP32 pin GPIO22 connected to button's pin#define RELAY_PIN 27 // ESP32 pin GPIO27 connected to relay's pin// variables will change:int lastButtonState; // the previous state of buttonint currentButtonState; // the current state of buttonvoidsetup() {Serial.begin(9600); // initialize serialpinMode(BUTTON_PIN, INPUT_PULLUP); // set ESP32 pin to input pull-up modepinMode(RELAY_PIN, OUTPUT); // set ESP32 pin to output modedigitalWrite(RELAY_PIN, HIGH); // lock the door currentButtonState = digitalRead(BUTTON_PIN);}voidloop() { lastButtonState = currentButtonState; // save the last state currentButtonState = digitalRead(BUTTON_PIN); // read new stateif (lastButtonState == HIGH && currentButtonState == LOW) {Serial.println("The button is pressed");digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 secondsdelay(10000); // 10 secondsdigitalWrite(RELAY_PIN, HIGH); // lock the door again }}
/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 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/esp32/esp32-button-controls-electromagnetic-lock */#include <ezButton.h>#define BUTTON_PIN 22 // ESP32 pin GPIO22 connected to button's pin#define RELAY_PIN 27 // ESP32 pin GPIO27 connected to relay's pinezButtonbutton(BUTTON_PIN); // create ezButton object that attach to pin 7;voidsetup() {Serial.begin(9600); // initialize serialpinMode(RELAY_PIN, OUTPUT); // set ESP32 pin to output modebutton.setDebounceTime(50); // set debounce time to 50 millisecondsdigitalWrite(RELAY_PIN, HIGH); // lock the door}voidloop() {button.loop(); // MUST call the loop() function firstif (button.isPressed()) {Serial.println("The button is pressed");digitalWrite(RELAY_PIN, LOW); // unlock the door in 10 secondsdelay(10000); // 10 secondsdigitalWrite(RELAY_PIN, HIGH); // lock the door again }}
Biên dịch và upload code lên bo mạch ESP32 bằng cách nhấn nút Upload trên Arduino IDE
Đặt tấm armature gần điện từ.
Nhấn button một lần.
Quan sát sự hút giữa tấm armature và điện từ trong 10 giây.
※ Lưu ý:
Vì code trên sử dụng hàm delay(), nên chúng ta không cần phải debounce cho button. Tuy nhiên, chúng tôi vẫn cung cấp code có debouncing để phòng trường hợp bạn chỉnh sửa code này và không sử dụng hàm 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.