Mô hình tự động bật đèn khi trời tối

Mô hình tự động bật đèn khi trời tối

Ứng dụng sử dụng cảm biến cường độ ánh sáng để có thể đọc được giá trị ánh sáng, khi cường độ ánh sáng cao tương ứng với trời sáng thì đèn sẽ tự động tắt, khi cường độ ánh sáng yếu tương ứng với trời tối thì đèn sẽ tự động sáng.

Các linh kiện chuẩn bị

Chức năng các linh kiện

  • Board UnoX

    • Đọc dữ liệu cường độ ánh sáng từ cảm biến.
    • Xuất tín hiệu điều khiển led.
  • Cảm biến cường độ ánh sáng

    • Đo cường độ ánh sáng của môi trường (đơn vị cường độ ánh sáng là lux)
    • Gửi dữ liệu cường độ ánh sáng đến board UnoX
  • LED

    • Chiếu sáng khi trời tối.
  • Dây cắm breadboard

    • Kết nối UnoX với led và cảm biến.

Kết nối các linh kiện.

Bảng đấu nối UnoX với cảm biến cường độ ánh sáng

UnoXCảm biến cường độ ánh sáng
VCC3.3VDC
GNDGND
SCLSCL
SDASDA

Bảng đấu nối UnoX với LED 1

UnoXLED 1
A0Chân + (chân dài)
GNDChân - (chân ngắn)

Bảng đấu nối UnoX với LED 2

UnoXLED 2
A0Chân + (chân dài)
GNDChân - (chân ngắn)

Lưu ý: Kết nối led với UnoX nên sử dụng điện trở 330 ohm để led hoạt động được bền lâu hơn.

ý tưởng xây dựng chương trình

  • Sử dụng cảm biến ánh sáng TSL2561 để đo cường độ ánh sáng của môi trường.
  • Từ giá trị ánh sáng đo được, kết hợp với cường độ sáng mà mắt thường nhìn thấy để cài đặt ngưỡng sáng, tối.
  • Dựa vào ngưỡng sáng, tối đã cài đặt để điều khiển 2 LED.

Source code

  • Thư viện Wire.h dùng cho chức năng giao tiếp I2C với cảm biến ánh sáng.
  • Thư viện giao tiếp với cảm biến ánh sáng.

  • Sử dụng chân A0,A1 là 2 chân xuât tín hiệu điều khiển led.
  • Chân SCL là chân xung clock.
  • Chân SDA là chân nhận dữ liệu từ cảm biến.
  • Khi cường độ ánh sáng nhỏ hơn hoặc bằng 9 thì led sẽ sáng, ngược lại led sẽ tắt.
/* Gọi các thư viện cần sử dụng */
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_TSL2561_U.h>

#define pinled1 9    // Chân 9 điều khiển LED1
#define pinled2 10   // Chân 10 điều khiển LED2

Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345);

/* Cấu hình các thông số cho cảm biến */
void configureSensor(void)
{
  tsl.enableAutoRange(true); // Tự động thay đổi độ nhạy

  /* Cấu hình tốc độ thu thập dữ liệu của cảm biến */
  tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS);

  /* Hiển thị dữ liệu lên serial */
  Serial.println("------------------------------------");
  Serial.print  ("Gain:         "); Serial.println("Auto");
  Serial.print  ("Timing:       "); Serial.println("13 ms");
  Serial.println("------------------------------------");
}

void setup(void)
{
  Serial.begin(9600); // Khởi tạo giao tiếp serial
  Serial.println("Light Sensor Test");
  Serial.println("");
  pinMode(pinled1, OUTPUT);
  pinMode(pinled2, OUTPUT);

  /* Khởi tạo cảm biến */
  if(!tsl.begin()) {
    /* Thông báo lỗi nểu khởi tạo cảm biến bị lỗi */
    Serial.print("Failed, check your wiring or I2C ADDR!");
    while(1);
  }
  /* Cấu hình các thông số của cảm biến */
  configureSensor();
  Serial.println("");
}

void loop(void)
{
  sensors_event_t event;  // Biến nhận sự kiện khi có sự kiện mới từ cả biến
  tsl.getEvent(&event);

  /* Hiển thị cường độ ánh sáng */
  if (event.light) {
    Serial.print(event.light);
    Serial.println(" lux");
  } else {
    /* Nếu event.light = 0 lux bộ cảm biến có thể là bão hòa
       và không có dữ liệu đáng tin cậy nào có thể được tạo ra! */
    Serial.println("Sensor overload");
  }
  delay(100);
  /* Nếu cường độ ánh sáng event.light < hoặc = 9 thì LED sẽ sáng */
  if (event.light <= 9) {
    digitalWrite(pinled1, HIGH);
    digitalWrite(pinled2, HIGH);
  } else {
    /* Khác trường hợp trên led sẽ tắt */
    digitalWrite(pinled1, LOW);
    digitalWrite(pinled2, LOW);
  }
}

Lưu ý: Chúng ta thiết lập mức cường độ ánh sáng để sáng LED tùy theo môi trường, không nhất định là 9.

Kết quả

  • Thông số cường độ ánh sáng được hiển thị qua màn hình monitor của Arduino IDE.
  • Nếu cường độ ánh sáng > 9lux tương ứng với trời sáng thì 2 LED sẽ tắt, ngược lại, giá trị <= 9lux thì 2 LED sẽ sáng

Ứng dụng mở rộng

  • Thiết kế mô hình chiếu sáng tự động.