ESP32 Module Cảm Biến Ánh Sáng LDR
Module cảm biến ánh sáng LDR có thể cảm nhận và đo lường ánh sáng xung quanh nó. Module có hai đầu ra: một đầu ra digital có thể là LOW hoặc HIGH, và một đầu ra analog.
Trong hướng dẫn này, chúng ta sẽ học cách sử dụng ESP32 và module cảm biến ánh sáng LDR cùng nhau để phát hiện và đo lường cường độ ánh sáng. Đây là những gì chúng ta sẽ tìm hiểu:
- Cách kết nối module cảm biến ánh sáng LDR với ESP32.
- Cách lập trình ESP32 để phát hiện ánh sáng bằng cách đọc tín hiệu digital từ module cảm biến ánh sáng LDR.
- Cách lập trình ESP32 để đo mức độ ánh sáng bằng cách đọc tín hiệu analog từ module cảm biến ánh sáng LDR.

Sau đó, bạn có thể thay đổi code để làm cho LED hoặc bóng đèn bật lên (sử dụng relay) khi phát hiện ánh sáng.
Nếu bạn quan tâm đến cảm biến ánh sáng ở dạng thô, tôi khuyên bạn nên khám phá hướng dẫn cho ESP32 - Cảm Biến Ánh Sáng.
Phần Cứng Cần Thiết
| 1 | × | mô-đun phát triển ESP-WROOM-32 | ||
| 1 | × | Alternatively, ESP32 Uno-form board | ||
| 1 | × | Alternatively, ESP32 S3 Uno-form board | ||
| 1 | × | Cáp USB Type-C | ||
| 1 | × | Module Cảm Biến Ánh Sáng LDR | ||
| 1 | × | breadboard | ||
| 1 | × | Dây Jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Breakout Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP32 |
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về Module Cảm Biến Ánh Sáng LDR
Module cảm biến ánh sáng LDR có thể được sử dụng để phát hiện có ánh sáng hay không hoặc có bao nhiêu ánh sáng trong khu vực xung quanh nó. Module có một chân đầu ra digital và một chân đầu ra analog cho các tùy chọn khác nhau.
Sơ Đồ Chân
Module cảm biến ánh sáng LDR có bốn chân:
- Chân VCC: Kết nối chân này với nguồn điện (từ 3.3V đến 5V).
- Chân GND: Kết nối chân này với đất (0V).
- Chân DO: Đây là chân đầu ra digital. Nó cho tín hiệu HIGH khi trời tối và LOW khi có ánh sáng. Bạn có thể điều chỉnh ngưỡng giữa tối và sáng bằng potentiometer tích hợp.
- Chân AO: Đây là chân đầu ra analog. Giá trị giảm khi ánh sáng sáng hơn và tăng khi ánh sáng tối hơn.

Ngoài ra, module cảm biến ánh sáng LDR được trang bị hai đèn LED báo hiệu:
- Đèn LED PWR báo hiệu trạng thái nguồn điện.
- Đèn LED DO phản ánh trạng thái ánh sáng trên chân DO: nó sáng khi có ánh sáng và tắt khi trời tối.
Cách Hoạt Động
Về chân DO:
- Module cảm biến ánh sáng LDR có một potentiometer cho phép bạn điều chỉnh độ nhạy hoặc ngưỡng để phát hiện ánh sáng.
- Khi cường độ ánh sáng trong môi trường xung quanh cao hơn ngưỡng đã đặt (được coi là có ánh sáng), đầu ra của cảm biến trên chân DO trở thành LOW, và đèn LED DO bật.
- Khi cường độ ánh sáng trong môi trường xung quanh thấp hơn ngưỡng đã đặt (được coi là tối), đầu ra của cảm biến trên chân DO trở thành HIGH, và đèn LED DO tắt.
Về chân AO:
- Giá trị đọc từ chân AO tỷ lệ nghịch với cường độ ánh sáng trong môi trường xung quanh. Nói cách khác, khi cường độ ánh sáng tăng (sáng hơn), giá trị trên chân AO giảm.
- Tương tự, khi cường độ ánh sáng giảm (tối hơn), giá trị trên chân AO tăng.
Điều quan trọng cần lưu ý là việc điều chỉnh potentiometer không ảnh hưởng đến giá trị trên chân AO.
Sơ Đồ Đấu Nối
Module cảm biến ánh sáng cung cấp hai đầu ra, DO và AO, có thể được sử dụng riêng lẻ hoặc cùng nhau.
- Cách kết nối ESP32 và module ldr bằng breadboard

This image is created using Fritzing. Click to enlarge image
Nếu bạn chưa rõ cách cấp nguồn cho ESP32 và các linh kiện khác, xem: Cách Cung Cấp Nguồn Điện Cho ESP32.
- Cách kết nối ESP32 và module ldr bằng screw terminal block breakout board

Code ESP32 - Đọc giá trị từ chân DO
Các Bước Nhanh
- Nếu đây là lần đầu tiên bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
- Thực hiện đấu nối như hình ảnh trên.
- Kết nối bo mạch ESP32 với PC của bạn qua cáp micro USB
- Mở Arduino IDE trên PC của bạn.
- Chọn đúng bo mạch ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
- Sao chép code trên và mở bằng Arduino IDE
- Nhấp nút Upload trên Arduino IDE để tải code lên ESP32
- Che và bỏ che module cảm biến ánh sáng LDR bằng tay bạn hoặc vật gì đó
- Xem kết quả trên Serial Monitor.
Nếu bạn quan sát thấy trạng thái LED luôn bật hoặc tắt, bất kể có ánh sáng hay không, bạn có thể điều chỉnh potentiometer. Việc điều chỉnh này cho phép bạn tinh chỉnh độ nhạy ánh sáng của cảm biến.
Hơn nữa, code có thể được sửa đổi theo yêu cầu của bạn. Ví dụ, bạn có thể lập trình LED để kích hoạt hoặc đèn bật khi phát hiện ánh sáng. Ngoài ra, bạn có thể linh hoạt làm cho servo motor quay. Hướng dẫn chi tiết và tutorial về các tùy chọn tùy chỉnh này có thể được tìm thấy ở cuối hướng dẫn này.
Code ESP32 - Đọc giá trị từ chân AO
Các Bước Nhanh
- Sao chép code trên và mở bằng Arduino IDE
- Nhấp nút Upload trên Arduino IDE để tải code lên ESP32
- Che và bỏ che module cảm biến ánh sáng LDR bằng tay bạn hoặc vật gì đó
- Xem kết quả trên Serial Monitor.
※ Lưu ý:
Hướng dẫn này sử dụng hàm analogRead() để đọc giá trị từ ADC (Analog-to-Digital Converter) kết nối với module LDR. ESP32 ADC phù hợp cho các dự án KHÔNG cần độ chính xác cao. Tuy nhiên, đối với các dự án cần đo lường chính xác, vui lòng lưu ý:
- ESP32 ADC không hoàn toàn chính xác và có thể cần hiệu chuẩn để có kết quả đúng. Mỗi bo mạch ESP32 có thể hơi khác nhau, vì vậy bạn cần hiệu chuẩn ADC cho từng bo mạch riêng lẻ.
- Hiệu chuẩn có thể khó khăn, đặc biệt đối với người mới bắt đầu, và có thể không phải lúc nào cũng cho kết quả chính xác mà bạn muốn.
Đối với các dự án cần độ chính xác cao, hãy xem xét sử dụng ADC bên ngoài (ví dụ ADS1115) với ESP32 hoặc sử dụng Arduino, có ADC đáng tin cậy hơn. Nếu bạn vẫn muốn hiệu chuẩn ESP32 ADC, hãy tham khảo ESP32 ADC Calibration Driver
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.