Search Code

Hướng dẫn ESP32 18/55 - Phát hiện độ nghiêng bằng ESP32 | Bộ học IoT ESP32 của SunFounder

Hướng dẫn ESP32 18/55 - Phát hiện độ nghiêng bằng ESP32 | Bộ học IoT ESP32 của SunFounder

Trong hướng dẫn này, chúng ta sẽ sử dụng vi điều khiển SunFounder ESP32 để tạo một dự án đơn giản phát hiện độ nghiêng bằng công tắc nghiêng. Khi công tắc nghiêng được kích hoạt, đèn LED sẽ tắt, và khi nó ở vị trí thẳng đứng, đèn LED sẽ bật. Dự án này không chỉ là một giới thiệu tuyệt vời về làm việc với cảm biến nghiêng mà còn là nền tảng cho nhiều ứng dụng robot khác nhau. Để có hướng dẫn trực quan chi tiết, hãy xem video được liên kết ở trên (trong video tại 00:00).

công_tắc_nghiêng

Giải thích phần cứng

Các thành phần chính được sử dụng trong dự án này bao gồm vi điều khiển ESP32, một công tắc nghiêng và một đèn LED. ESP32 là một vi điều khiển mạnh mẽ với Wi-Fi và Bluetooth tích hợp, lý tưởng cho các ứng dụng IoT. Công tắc nghiêng là một thiết bị đơn giản chứa một viên bi kim loại bên trong hộp. Khi bị nghiêng, viên bi di chuyển và ngắt mạch, cho phép chúng ta phát hiện trạng thái nghiêng. Đèn LED sẽ hiển thị trực quan trạng thái nghiêng dựa trên trạng thái của công tắc. Ngoài các thành phần này, chúng ta cũng sẽ sử dụng điện trở để giới hạn dòng điện và kéo xuống. Điện trở 220 ohm kết nối với đèn LED đảm bảo đèn LED hoạt động an toàn mà không tiêu thụ quá nhiều dòng điện. Điện trở 10k ohm hoạt động như một điện trở kéo xuống cho công tắc nghiêng, đảm bảo chân đầu vào đọc được trạng thái xác định khi công tắc không được kích hoạt.

Chi tiết bảng dữ liệu

Nhà sản xuất SunFounder
Số bộ phận ESP32
Điện áp Logic/IO 3,3 V
Điện áp cung cấp 5 V
Dòng điện đầu ra (mỗi kênh) 12 mA
Dòng điện đỉnh (mỗi kênh) 40 mA
Hướng dẫn tần số PWM 1 kHz
Ngưỡng logic đầu vào 0,8 V (thấp), 2,0 V (cao)
Sụt áp / RDS(on) / bão hòa 0,2 V
Giới hạn nhiệt 85 °C
Đóng gói Mô-đun ESP32
Ghi chú / biến thể Bao gồm khả năng Wi-Fi và Bluetooth

 

  • Đảm bảo giá trị điện trở phù hợp để tránh làm hỏng đèn LED.
  • Giữ dây nối gọn gàng để tránh đoản mạch.
  • Sử dụng điện trở kéo xuống để đảm bảo đọc ổn định từ công tắc nghiêng.
  • Kiểm tra các kết nối trước khi cấp nguồn cho mạch để tránh hỏng linh kiện.
  • Xác minh hướng của công tắc nghiêng để hoạt động chính xác.

Hướng dẫn nối dây

ESP32-18_tile_wiring

Để nối dây các thành phần, bắt đầu với công tắc nghiêng, không có phân cực, vì vậy có thể kết nối theo bất kỳ hướng nào. Kết nối một chân của công tắc nghiêng với nguồn 3,3V và chân còn lại với chân 14 trên ESP32. Để đảm bảo chân 14 đọc được trạng thái xác định khi công tắc không được kích hoạt, kết nối một điện trở 10k ohm từ cùng chân đó xuống đất. Tiếp theo, lấy đèn LED và cắm vào bảng mạch với chân dài hơn (cực dương) kết nối với điện trở 220 ohm. Kết nối đầu còn lại của điện trở với chân 26 trên ESP32. Chân ngắn hơn (cực âm) của đèn LED nên được kết nối với đất. Cuối cùng, kết nối chân đất của ESP32 với thanh đất của bảng mạch và chân 3,3V với thanh nguồn. Đảm bảo kiểm tra lại tất cả các kết nối để tránh đoản mạch hoặc đọc sai. Nếu bạn làm theo các bước này, bạn sẽ có một thiết lập cảm biến nghiêng hoạt động sẵn sàng để lập trình.

Ví dụ mã & hướng dẫn chi tiết

Mã bắt đầu bằng việc định nghĩa số chân cho công tắc nghiêng và đèn LED. Công tắc nghiêng được kết nối với chân 14, và đèn LED được kết nối với chân 26. Trạng thái của công tắc nghiêng được lưu trong biến tiltState.


// Đặt số chân
const int tiltPin = 14;  // Công tắc nghiêng
const int ledPin = 26;   // Đèn LED

// Biến để lưu trạng thái nghiêng
int tiltState = 0;

Đoạn trích này cho thấy việc gán chân và khai báo biến sẽ theo dõi trạng thái nghiêng. tiltPin được đặt làm đầu vào để đọc trạng thái công tắc. Trong hàm setup(), giao tiếp nối tiếp được khởi tạo và chế độ chân được đặt cho công tắc nghiêng và đèn LED. Điều này đảm bảo ESP32 có thể đọc đầu vào từ công tắc nghiêng và điều khiển đèn LED tương ứng.


void setup() {
  Serial.begin(115200);
  // Khởi tạo chân nghiêng làm đầu vào
  pinMode(tiltPin, INPUT);
  // Khởi tạo chân LED làm đầu ra
  pinMode(ledPin, OUTPUT);
}

Phần này rất quan trọng vì nó thiết lập môi trường, cho phép ESP32 giao tiếp hiệu quả và điều khiển đầu ra dựa trên trạng thái công tắc nghiêng. Hàm loop() liên tục kiểm tra trạng thái của công tắc nghiêng. Nếu công tắc thẳng đứng, đèn LED sẽ bật; nếu nghiêng, đèn LED sẽ tắt. Trạng thái hiện tại được in ra màn hình nối tiếp để gỡ lỗi.


void loop() {
  // Đọc trạng thái của công tắc nghiêng
  tiltState = digitalRead(tiltPin);

  Serial.println(tiltState);
  // Nếu công tắc thẳng đứng
  if (tiltState == HIGH) {
    // Bật đèn LED
    digitalWrite(ledPin, HIGH);
  } else {
    // Tắt đèn LED
    digitalWrite(ledPin, LOW);
  }
}

Vòng lặp này chạy liên tục, cho phép giám sát thời gian thực trạng thái công tắc nghiêng và điều khiển đèn LED tương ứng. Đầu ra có thể được quan sát trong màn hình nối tiếp, giúp dễ dàng xác minh chức năng.

Trình diễn / Điều gì sẽ xảy ra

Khi mọi thứ đã được kết nối đúng cách và mã được tải lên, bạn sẽ thấy đèn LED bật khi công tắc nghiêng ở vị trí thẳng đứng và nó sẽ tắt khi bị nghiêng. Sự tương quan trực tiếp giữa trạng thái nghiêng và phản hồi của đèn LED thể hiện hiệu quả chức năng của công tắc nghiêng. Các lỗi thường gặp bao gồm đảm bảo rằng việc nối dây là chính xác và xác minh rằng các điện trở được đặt phù hợp để tránh đoản mạch (trong video tại 12:00).

Mốc thời gian video

  • 00:00 Bắt đầu
  • 1:44 Giới thiệu dự án
  • 2:49 Tài liệu
  • 6:43 Giải thích về cách nối dây Arduino
  • 10:39 Giải thích mã Arduino
  • 13:40 Chọn bo mạch ESP32 và cổng COM trên Arduino IDE
  • 15:22 Trình diễn độ nghiêng của dự án

Hình ảnh

ESP32-18_tile_wiring
ESP32-18_tile_wiring
tilt_switch
tilt_switch
ESP32-18_tile_schematic
ESP32-18_tile_schematic
817-ESP32 Tutorial 18/55- Arduino code for tilt sensor
Ngôn ngữ: C++
// Set pin numbers
const int tiltPin = 14;  // Tilt Switch
const int ledPin = 26;   // LED

// Variable for storing the tilt status
int tiltState = 0;

void setup() {
  Serial.begin(115200);
  // Initialize the tilt pin as an input
  pinMode(tiltPin, INPUT);
  // Initialize the LED pin as an output
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // Read the state of the tilt switch
  tiltState = digitalRead(tiltPin);

  Serial.println(tiltState);
  // If the switch is upright
  if (tiltState == HIGH) {
    // Turn LED on
    digitalWrite(ledPin, HIGH);

  } else {
    // Turn LED off
    digitalWrite(ledPin, LOW);
  }
}

Tài nguyên & tài liệu tham khảo

Tập tin📁

Không có tệp nào khả dụng.