ESP8266 Nút nhấn Động cơ servo

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng ESP8266 và một nút bấm để điều khiển động cơ servo. Chi tiết:

Quá trình ở trên được lặp lại nhiều lần.

Hướng dẫn có hai phần:

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

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×breadboard-mount Button with Cap
1×breadboard-mount Button Kit
1×Panel-mount Push Button
1×mô-đun nút nhấn
1×động cơ servo
1×breadboard
1×dây jumper
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Giới thiệu về động cơ servo và nút bấm

Nếu bạn chưa quen với động cơ servo và các nút nhấn (bao gồm bố trí chân, cách chúng hoạt động và cách lập trình chúng), các bài hướng dẫn sau đây có thể giúp ích:

Sơ đồ đấu dây

sơ đồ nối dây ESP8266 NodeMCU, nút bấm và động cơ servo

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

Xin lưu ý rằng sơ đồ nối được hiển thị ở trên chỉ phù hợp với một động cơ servo có mô-men xoắn thấp. Trong trường hợp động cơ rung thay vì quay, một nguồn điện bên ngoài phải được sử dụng để cung cấp thêm điện năng cho động cơ servo. Phần dưới đây trình bày sơ đồ nối có nguồn điện bên ngoài cho động cơ servo.

sơ đồ nối dây nguồn cấp ngoài cho động cơ servo ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Xin đừng quên kết nối GND của nguồn ngoài với GND của ESP8266.

Mã ESP8266 - Nút điều khiển động cơ servo không khử nhiễu

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-button-servo-motor */ #include <Servo.h> #define BUTTON_PIN D1 // The ESP8266 pin connected to button's pin #define SERVO_PIN D5 // The ESP8266 pin connected to servo motor's pin Servo servo; // create servo object to control a servo int angle = 0; // The current angle of servo motor int prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(angle); button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if(prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // change angle of servo motor if(angle == 0) angle = 90; else if(angle == 90) angle = 0; // rotate the servo motor to the angle position servo.write(angle); } }

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

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Xem qua tutorial ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
  • Nối các thành phần như được hiển thị trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Kết nối bo mạch ESP8266 NodeMCU với máy tính bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn đúng bo mạch ESP8266, ví dụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
  • Sao chép mã ở trên và mở nó trong Arduino IDE.
  • Nhấn nút Upload trong Arduino IDE để biên dịch và nạp mã lên ESP8266.
  • Nhấn nút nhiều lần.
  • Kiểm tra sự thay đổi ở động cơ servo.

※ Lưu ý:

Trên thực tế, mã được đề cập ở trên không phải lúc nào cũng hoạt động đúng. Để đảm bảo nó hoạt động đúng, chúng ta cần ESP8266 - Nút - Lọc nhiễu. Việc lọc nhiễu cho nút có thể khó đối với những người mới làm quen với ESP8266. May mắn thay, thư viện ezButton làm cho quá trình này trở nên đơn giản hơn nhiều.

Mã ESP8266 - Nút Điều Khiển Động Cơ Servo Với Khử Nhiễu

Tại sao debounce lại cần thiết? Xem ESP8266 - Nút - Lọc nhiễu để biết thêm thông tin.

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-button-servo-motor */ #include <Servo.h> #include <ezButton.h> #define BUTTON_PIN D1 // The ESP8266 pin connected to button's pin #define SERVO_PIN D5 // The ESP8266 pin connected to servo motor's pin ezButton button(BUTTON_PIN); // create ezButton object for pin 7; Servo servo; // create servo object to control a servo int angle = 0; // The current angle of servo motor void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. button.setDebounceTime(50); // set debounce time to 50 milliseconds servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(angle); } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { // change angle of servo motor if (angle == 0) angle = 90; else if (angle == 90) angle = 0; // rotate the servo motor to the angle position Serial.print("The button is pressed => rotate servo to "); Serial.print(angle); Serial.println("°"); servo.write(angle); } }

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

  • Cài đặt thư viện ezButton. Tham khảo Cách làm để biết hướng dẫn.
  • Sao chép mã ở trên và mở nó trong Arduino IDE.
  • Nhấn nút Tải lên trong Arduino IDE để tải mã lên ESP8266.
  • Nhấn nút nhiều lần.
  • Kiểm tra những thay đổi ở động cơ servo.

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.