Arduino Cảm biến ánh sáng

Trong bài hướng dẫn này, chúng ta sẽ học:

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

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×cảm biến ánh sáng
1×10 kΩ Resistor
1×breadboard
1×dây jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Cảm biến ánh sáng LDR có giá cả rất phải chăng, nhưng nó đòi hỏi một điện trở để kết nối dây, điều này có thể làm cho việc lắp đặt trở nên phức tạp hơn. Để đơn giản hóa việc nối dây, bạn có thể sử dụng một mô-đun cảm biến ánh sáng LDR như một lựa chọn thay thế.

Về cảm biến ánh sáng

Cảm biến ánh sáng được sử dụng trong hướng dẫn này là một điện trở quang, còn được gọi là điện trở phụ thuộc ánh sáng hoặc tế bào quang.

Nó được sử dụng không chỉ để phát hiện ánh sáng mà còn để đo độ sáng/độ rọi của ánh sáng môi trường.

Sơ đồ chân

Một điện trở quang có hai chân. Vì nó là một loại điện trở, chúng ta không cần phân biệt các chân này. Chúng đối xứng.

sơ đồ chân cảm biến ánh sáng

Cách hoạt động

Càng nhiều ánh sáng chiếu lên mặt của điện trở quang, điện trở của nó càng nhỏ. Do đó, bằng cách đo điện trở của điện trở quang, chúng ta có thể biết ánh sáng môi trường sáng đến mức nào.

cách hoạt động của cảm biến ánh sáng

WARNING

Giá trị cảm biến ánh sáng chỉ phản ánh xu hướng xấp xỉ của cường độ ánh sáng, nó KHÔNG đại diện cho lưu lượng quang thông chính xác. Do đó, nó chỉ nên được sử dụng trong một ứng dụng không yêu cầu độ chính xác cao.

Arduino - Cảm biến ánh sáng

Các chân A0–A5 trên Arduino Uno có thể hoạt động như đầu vào tương tự. Đầu vào tương tự này chuyển đổi điện áp (từ 0V đến VCC) thành các giá trị số nguyên (từ 0 đến 1023), được gọi là giá trị ADC hoặc giá trị tương tự.

Bằng cách kết nối một chân của cảm biến quang trở tới một chân đầu vào analog, ta có thể đọc giá trị analog từ chân đó bằng cách sử dụng hàm analogRead(), và sau đó ta có thể biết mức độ sáng tương đối.

Sơ đồ đấu dây

sơ đồ đấu dây cảm biến ánh sáng Arduino

This image is created using Fritzing. Click to enlarge image

Mã Arduino

Mã dưới đây đọc giá trị từ cảm biến quang điện và xác định mức độ sáng một cách định tính.

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino 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/arduino/arduino-light-sensor */ void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } void loop() { // reads the input on analog pin A0 (value between 0 and 1023) int analogValue = analogRead(A0); Serial.print("Analog reading: "); Serial.print(analogValue); // the raw analog reading // We'll have a few threshholds, qualitatively determined if (analogValue < 10) { Serial.println(" - Dark"); } else if (analogValue < 200) { Serial.println(" - Dim"); } else if (analogValue < 500) { Serial.println(" - Light"); } else if (analogValue < 800) { Serial.println(" - Bright"); } else { Serial.println(" - Very bright"); } delay(500); }

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

  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấn vào nút Tải lên trên Arduino IDE để tải mã lên Arduino
  • Mở Serial Monitor
  • Phát sáng lên cảm biến
  • Xem kết quả trên Serial Monitor:
COM6
Send
Analog reading: 163 - Dim Analog reading: 152 - Dim Analog reading: 187 - Dim Analog reading: 188 - Dim Analog reading: 957 - Very bright Analog reading: 972 - Very bright Analog reading: 981 - Very bright
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Cảm biến ánh sáng và đèn LED

  • Đoạn mã dưới đây bật LED khi tối, ngược lại tắt LED.
/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino 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/arduino/arduino-light-sensor */ // constants won't change const int LIGHT_SENSOR_PIN = A0; // Arduino pin connected to light sensor's pin const int LED_PIN = 3; // Arduino pin connected to LED's pin const int ANALOG_THRESHOLD = 500; // variables will change: int analogValue; void setup() { pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode } void loop() { analogValue = analogRead(LIGHT_SENSOR_PIN); // read the input on analog pin if(analogValue < ANALOG_THRESHOLD) digitalWrite(LED_PIN, HIGH); // turn on LED else digitalWrite(LED_PIN, LOW); // turn off LED }
  • Sơ đồ nối dây cho mã ở trên:
sơ đồ đấu dây LED cảm biến ánh sáng Arduino

This image is created using Fritzing. Click to enlarge image

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.

Thách thức bản thân

  • Tự động bật đèn khi phòng của bạn tối. Gợi ý: Tham khảo Arduino - rơ-le.