Bài 4: Sử Dụng Cảm Biến Ánh Sáng (LDR) Với Arduino

1. Mục Tiêu Bài Học

Trong bài học này, chúng ta sẽ tìm hiểu cách sử dụng cảm biến ánh sáng LDR (Light Dependent Resistor) với Arduino để đo cường độ ánh sáng và điều khiển đèn LED dựa vào mức độ sáng của môi trường.

2. Tìm Hiểu Về Analog Trên Arduino

Arduino có các chân analog được đánh số từ A0 đến A5 trên Arduino Uno. Các chân này có thể đọc giá trị điện áp đầu vào từ 0V đến 5V, sau đó chuyển đổi thành một giá trị số từ 0 đến 1023 (độ phân giải 10-bit). Điều này cho phép Arduino đọc dữ liệu từ nhiều loại cảm biến khác nhau như cảm biến ánh sáng, nhiệt độ, độ ẩm, áp suất, v.v.

Công thức chuyển đổi từ giá trị đọc được sang điện áp thực tế:

Điện áp (V) = (Giá trị đọc được / 1023.0) * 5.0

Ví dụ: Nếu Arduino đọc được giá trị 512, điện áp sẽ là:

(512 / 1023.0) * 5.0 ≈ 2.5V

Điều này rất hữu ích khi làm việc với các cảm biến analog như LDR, cảm biến nhiệt độ, cảm biến lực, v.v.

3. Linh Kiện Cần Chuẩn Bị

  • 1 bo mạch Arduino Uno (hoặc các phiên bản khác)

  • 1 cảm biến ánh sáng LDR

  • 1 điện trở 10kΩ (để tạo cầu phân áp)

  • 1 đèn LED

  • 1 điện trở 220Ω

  • Dây cắm Jumper

  • 1 Breadboard (bảng mạch thử nghiệm)

4. Nguyên Lý Hoạt Động

Cảm biến ánh sáng LDR có điện trở thay đổi theo cường độ ánh sáng. Khi ánh sáng mạnh, điện trở của LDR giảm, khi ánh sáng yếu, điện trở tăng. Arduino có thể đọc giá trị điện áp từ cảm biến thông qua chân analog (A0 - A5) để xác định độ sáng.

Dựa vào giá trị đo được, chúng ta có thể:

  • Bật LED khi môi trường tối

  • Tắt LED khi môi trường sáng

5. Sơ Đồ Kết Nối

Bài 9: Cảm biến ánh sáng (Quang trở) cách chia điện áp trong môi trường  Arduino | ARDUINO KIT

  • Một chân của LDR nối với 5V.

  • Chân còn lại của LDR nối với A0 của Arduino và đồng thời nối với một đầu điện trở 10kΩ.

  • Đầu còn lại của điện trở 10kΩ nối với GND.

  • Chân dài của LED nối với D13 trên Arduino (qua điện trở 220Ω).

  • Chân ngắn của LED nối với GND.

6. Code Đọc Cảm Biến Ánh Sáng Và Điều Khiển LED

Dưới đây là đoạn mã giúp Arduino đọc giá trị từ cảm biến LDR và bật/tắt LED theo điều kiện ánh sáng:

#define LDR_PIN A0
#define LED_PIN 13
#define THRESHOLD 500  // Ngưỡng sáng tối

void setup() {
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600); // Bật Serial để theo dõi giá trị
}

void loop() {
  int lightValue = analogRead(LDR_PIN); // Đọc giá trị từ cảm biến LDR
  Serial.println(lightValue); // In giá trị lên Serial Monitor

  if (lightValue < THRESHOLD) {
    digitalWrite(LED_PIN, HIGH); // Bật LED khi trời tối
  } else {
    digitalWrite(LED_PIN, LOW);  // Tắt LED khi trời sáng
  }

  delay(500); // Chờ để cập nhật giá trị
}

7. Giải Thích Code

  • analogRead(LDR_PIN); → Đọc giá trị điện áp từ LDR.

  • Serial.println(lightValue); → In giá trị lên Serial Monitor để theo dõi.

  • if (lightValue < THRESHOLD) {...} → So sánh giá trị đo được với ngưỡng sáng/tối.

  • digitalWrite(LED_PIN, HIGH); → Bật LED khi trời tối.

  • digitalWrite(LED_PIN, LOW); → Tắt LED khi trời sáng.

8. Thực Hành Và Mở Rộng

  • Thay đổi giá trị ngưỡng sáng/tối để phù hợp với môi trường thực tế.

  • Thêm nhiều đèn LED hoặc động cơ để phản ứng với mức độ ánh sáng khác nhau.

  • Sử dụng màn hình LCD hoặc OLED để hiển thị mức độ ánh sáng.

9. Tổng Kết

Trong bài học này, bạn đã học cách sử dụng cảm biến ánh sáng LDR để đo cường độ ánh sáng và điều khiển LED dựa vào độ sáng của môi trường. Đồng thời, bạn cũng đã hiểu cách Arduino đọc tín hiệu analog và chuyển đổi thành dữ liệu hữu ích.

Ở bài tiếp theo, chúng ta sẽ tìm hiểu về cách đọc giá trị từ cảm biến nhiệt độ với Arduino.

Hãy tiếp tục thực hành để nâng cao kỹ năng của bạn!