Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng Điện trở phụ thuộc ánh sáng (LDR) với vi điều khiển ESP32 để đo cường độ ánh sáng. Bằng cách đọc điện trở của LDR, chúng ta có thể kích hoạt các hành động, chẳng hạn như bật còi khi mức ánh sáng vượt quá một ngưỡng nhất định. Dự án này sẽ minh họa sự tương tác giữa mức ánh sáng và khả năng đọc tương tự của ESP32, cho phép chúng ta tạo ra các ứng dụng phản hồi dựa trên ánh sáng xung quanh. (trong video lúc 5:30)
Giải thích phần cứng
Các thành phần chính chúng ta sẽ sử dụng trong dự án này bao gồm vi điều khiển ESP32, một LDR và một điện trở 10 kΩ. LDR thay đổi điện trở của nó dựa trên cường độ ánh sáng chiếu vào bề mặt: ánh sáng nhiều hơn dẫn đến điện trở thấp hơn, trong khi ánh sáng ít hơn dẫn đến điện trở cao hơn. Đặc tính này cho phép chúng ta đo các mức ánh sáng khác nhau bằng cách kết nối LDR trong cấu hình cầu phân áp với điện trở.
Vi điều khiển ESP32 có Wi-Fi và Bluetooth tích hợp, khiến nó trở nên lý tưởng cho các dự án IoT. Nó có một số chân tương tự có thể đọc các mức điện áp thay đổi, mà chúng ta sẽ sử dụng để theo dõi điện áp trên LDR. Điện áp này sẽ được chuyển đổi thành giá trị tương tự mà ESP32 có thể xử lý và sử dụng để kích hoạt các hành động như kích hoạt còi.
Chi tiết từ bảng dữ liệu
Nhà sản xuất
Espressif Systems
Số bộ phận
ESP32
Điện áp Logic/IO
3,3 V
Điện áp cấp nguồn
3,0 - 3,6 V
Dòng điện đầu ra (mỗi GPIO)
Tối đa 40 mA
Hướng dẫn tần số PWM
1 kHz - 40 kHz
Ngưỡng logic đầu vào
Cao: tối thiểu 2,0 V, Thấp: tối đa 0,8 V
Sụt áp / RDS(on) / bão hòa
Tối đa 0,3 V
Giới hạn nhiệt
-40 °C đến 125 °C
Đóng gói
QFN48
Ghi chú / biến thể
Hỗ trợ nhiều giao thức Wi-Fi và Bluetooth
Sử dụng điện trở 10 kΩ nối tiếp với LDR để chia điện áp.
Đảm bảo ESP32 được cấp nguồn 3,3 V để tránh hư hỏng.
Kết nối LDR và điện trở đúng cách để đo cường độ ánh sáng.
Sử dụng tụ điện để tách rời nếu cần để ổn định nguồn điện.
Kiểm tra các giá trị đọc tương tự để đảm bảo chúng nằm trong phạm vi dự kiến.
Hướng dẫn nối dây
ESP32-22_light_sensor-wiring
Để nối LDR và điện trở với ESP32, hãy bắt đầu bằng cách kết nối một đầu của LDR với chân nguồn 3,3 V trên ESP32. Đầu còn lại của LDR nên được kết nối với một đầu của điện trở 10 kΩ. Kết nối đầu còn lại của điện trở với đất.
Tiếp theo, kết nối một dây jumper từ điểm nối giữa LDR và điện trở đến chân 35 trên ESP32. Thiết lập này tạo ra một cầu phân áp, cho phép ESP32 đọc điện áp thay đổi dựa trên cường độ ánh sáng chiếu vào LDR. Đảm bảo tất cả các kết nối chắc chắn và LDR được đặt ở vị trí có thể cảm nhận chính xác các thay đổi ánh sáng.
Ví dụ mã và hướng dẫn chi tiết
Trong mã, chúng ta bắt đầu bằng cách khởi tạo giao tiếp nối tiếp để theo dõi các giá trị đọc từ LDR. Định danh chính ở đây là analogValue, lưu trữ giá trị đọc từ chân 35.
void setup() {
Serial.begin(115200);
}
void loop() {
int analogValue = analogRead(35);
Serial.printf("ADC analog value = %d\n",analogValue);
delay(100);
}
Đoạn mã này khởi tạo màn hình nối tiếp ở tốc độ baud 115200 và liên tục đọc giá trị tương tự từ chân 35. Giá trị được in ra màn hình nối tiếp, cho phép chúng ta quan sát cách nó thay đổi theo các mức ánh sáng khác nhau.
Khi cường độ ánh sáng thay đổi, điện trở của LDR thay đổi, và do đó điện áp được ESP32 đọc cũng sẽ thay đổi, phản ánh điều kiện ánh sáng (trong video lúc 12:45).
Trình diễn / Điều gì sẽ xảy ra
Khi bạn chạy chương trình và quan sát màn hình nối tiếp, bạn sẽ thấy ADC analog value dao động dựa trên điều kiện ánh sáng xung quanh. Khi bạn che LDR, giá trị sẽ tăng lên, cho biết điện trở cao hơn, trong khi để nó tiếp xúc với ánh sáng mạnh sẽ làm giảm giá trị đáng kể. Hành vi này có thể được sử dụng để kích hoạt còi hoặc bất kỳ hành động nào khác dựa trên các ngưỡng được xác định trước.
Nếu các giá trị đọc không thay đổi như mong đợi, hãy kiểm tra các vấn đề về nối dây, đảm bảo LDR không bị treo, và xác nhận rằng ESP32 được cấp nguồn đúng cách. Điều này sẽ giúp tránh các lỗi phổ biến và đảm bảo hoạt động trơn tru (trong video lúc 15:30).
Mốc thời gian video
00:00 Bắt đầu
1:48 Giới thiệu về LDR
8:33 Giải thích cách nối dây
11:07 Giải thích mã Arduino
13:07 Chọn bo mạch ESP32 và cổng COM trong Arduino IDE
821-ESP32 Tutorial 22/55- Arduino code for Light dependant resistor
Ngôn ngữ: C++
void setup() {
// initialize serial communication at 115200 bits per second:
Serial.begin(115200);
}
void loop() {
// read the analog value
int analogValue = analogRead(35);
// print out the values you read:
Serial.printf("ADC analog value = %d\n",analogValue);
delay(100); // delay in between reads for clear read from serial
}
Tiết lộ: Là một đối tác của Amazon, chúng tôi kiếm tiền từ các giao dịch đủ điều kiện. Điều này có nghĩa là chúng tôi có thể nhận được một khoản hoa hồng nhỏ nếu bạn nhấp vào liên kết và thực hiện một giao dịch mà không tốn thêm chi phí nào cho bạn.