Hướng dẫn này sẽ chỉ bạn cách sử dụng ESP32 với button và solenoid lock. Cụ thể, chúng ta sẽ học cách sử dụng button để điều khiển solenoid lock không có debouncing và có debouncing. Mỗi khi button được nhấn, khóa sẽ mở trong 10 giây sau đó tự động khó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à Solenoid Lock
Chúng tôi có các hướng dẫn cụ thể về solenoid lock 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ề pinout phần cứng, 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 Solenoid Lock 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-solenoid-lock */#define BUTTON_PIN 22 // ESP32 pin GPIO22 connected to button#define RELAY_PIN 27 // ESP32 pin GPIO27 connected to the solenoid lock relay// variables will change:int prev_button_state; // the previous state of buttonint button_state; // 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 button_state = digitalRead(BUTTON_PIN);}voidloop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new stateif (prev_button_state == HIGH && button_state == 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-solenoid-lock */#include <ezButton.h>#define BUTTON_PIN 22 // ESP32 pin GPIO22 connected to button#define RELAY_PIN 27 // ESP32 pin GPIO27 connected to the solenoid lock relayezButtonbutton(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 board ESP32 bằng cách nhấn nút Upload trên Arduino IDE
Nhấn button một lần.
Quan sát trạng thái của lưỡi khóa
※ Lưu ý:
Vì code trên đã sử dụng hàm delay(), chúng ta không cần debouncing 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.