I. GIỚI THIỆU ĐỀ TÀI
1.1. TỔNG QUAN VỀ ĐỀ TÀI
Đề tài này nhằm mục đích phát triển một mạch Arduino đo cường độ sáng sử dụng cảm biến BH1750. Mục tiêu của dự án là tạo ra một thiết bị đơn giản nhưng hiệu quả để đo lường cường độ sáng trong môi trường xung quanh và hiển thị kết quả một cách trực quan.
1.2. MÔ TẢ CẢM BIẾN BH1750
Cảm biến cường độ sáng BH1750 là một cảm biến cường độ sáng kỹ thuật số được tích hợp sẵn với khả năng đo lường cường độ sáng một cách chính xác và linh hoạt. Với giao tiếp truyền thống I2C, nó dễ dàng kết nối với các vi điều khiển như Ard uino. Lý do chính cho việc sử dụng BH1750 trong dự án này bao gồm:
- Độ Chính Xác: BH1750 cung cấp kết quả đo chính xác và ổn định với độ phân giải cao.
- Giao Tiếp Dễ Dàng: Với giao tiếp I2C, BH1750 có thể dễ dàng kết nối với các vi điều khiển như Arduino.
- Tiết Kiệm Năng Lượng: Cảm biến được thiết kế để tiêu thụ ít năng lượng, phù hợp cho các ứng dụng di động và tiết kiệm năng lượng.
- Kích Thước Nhỏ Gọn: Với kích thước nhỏ, BH1750 dễ dàng tích hợp vào các dự án có yêu cầu về không gian.
Bằng cách sử dụng BH1750, dự án này mong muốn tạo ra một giải pháp đo cường độ sáng hiệu quả và linh hoạt cho nhiều ứng dụng khác nhau trong thực tế.
II. CƠ SỞ LÝ THUYẾT
2.1. ĐÁNH GIÁ VỀ CẢM BIẾN BH1750
Cảm biến cường độ sáng BH1750 là một cảm biến kỹ thuật số được sử dụng để đo lường cường độ sáng trong môi trường. Điểm đánh giá của BH1750 bao gồm:
- Độ Chính Xác: BH1750 cung cấp kết quả đo chính xác với độ phân giải cao, cho phép đo lường cường độ sáng trong mức độ rộng từ môi trường ánh sáng yếu đến môi trường ánh sáng mạnh.
- Giao Tiếp I2C: BH1750 sử dụng giao tiếp truyền thống I2C, cho phép kết nối dễ dàng với các vi điều khiển như Arduino.
- Tiết Kiệm Năng Lượng: Cảm biến được thiết kế để tiêu thụ ít năng lượng, điều này phù hợp cho các ứng dụng yêu cầu tiết kiệm năng lượng và ứng dụng di động.
- Khả Năng Điều Chỉnh: BH1750 có thể được điều chỉnh để cấu hình độ nhạy và thời gian tích hợp, tùy thuộc vào nhu cầu cụ thể của ứng dụng.
2.2. GIỚI THIỆU VỀ VI ĐIỀU KHIỂN ARDUINO
- Arduino là một nền tảng phần cứng mở được thiết kế để tạo ra các dự án điện tử nhanh chóng và dễ dàng. Với một cộng đồng lớn và sự phổ biến rộng rãi, Arduino cung cấp một loạt các bo mạch và vi điều khiển có khả năng lập trình linh hoạt.
- Vai trò của Arduino trong dự án này bao gồm:
- Thuận Tiện Trong Việc Lập Trình: Arduino cung cấp một môi trường lập trình dễ sử dụng và linh hoạt, cho phép người dùng dễ dàng viết mã để điều khiển các linh kiện điện tử.
- Giao Tiếp Linh Hoạt: Arduino có khả năng giao tiếp với các cảm biến và linh kiện khác thông qua các giao tiếp như I2C, SPI, UART, và GPIO.
- Hiệu Suất Ổn Định: Arduino có khả năng xử lý các tác vụ điều khiển và tính toán một cách ổn định, đảm bảo hiệu suất của dự án.
- Sự Linh Hoạt và Mở Rộng: Với các chân nối tiếp, Arduino cho phép dễ dàng mở rộng chức năng của dự án thông qua việc kết nối với các module và linh kiện khác nhau.
- Bằng cách kết hợp cảm biến BH1750 và vi điều khiển Arduino, dự án có thể tạo ra một hệ thống đo cường độ sáng linh hoạt và dễ dàng sử dụng trong nhiều ứng dụng khác nhau.
III. THIẾT KẾ PHẦN CỨNG
3.1. CÁC LINH KIỆN SỬ DỤNG
- Arduino Uno: Là bo mạch vi điều khiển chính trong dự án, chịu trách nhiệm đọc dữ liệu từ cảm biến cường độ sáng BH1750 và hiển thị kết quả lên màn hình LCD.
- BH1750: Cảm biến cường độ sáng kỹ thuật số sử dụng giao tiếp I2C để truyền dữ liệu cường độ sáng đến Arduino.
- Màn Hình LCD 16×2: Dùng để hiển thị giá trị cường độ sáng được đo từ cảm biến BH1750.
- Breadboard và Dây Nối: Sử dụng để kết nối các linh kiện với nhau một cách tiện lợi và không cần thiết bị hàn.
3.2. SƠ ĐỒ NGUYÊN LÝ VÀ THIẾT KẾ
3.3. PHÂN TÍCH MẠCH THIẾT KẾ
- Arduino Uno được kết nối với cảm biến BH1750 thông qua giao tiếp I2C. Cụ thể, chân SCL của BH1750 được kết nối với chân A5 (hoặc SCL) của Arduino, trong khi chân SDA của BH1750 được kết nối với chân A4 (hoặc SDA) của Arduino.
- Màn hình LCD 16×2 được kết nối với Arduino thông qua giao tiếp parallel. Đây là giao tiếp phổ biến nhất để kết nối màn hình LCD với Arduino. Trong chế độ này, mỗi chân trên LCD tương ứng với một chân của Arduino.
- Khi được kích hoạt, Arduino đọc giá trị cường độ sáng từ cảm biến BH1750 thông qua giao tiếp I2C. Sau đó, nó hiển thị giá trị này lên màn hình LCD thông qua giao tiếp parallel.
- Mạch hoạt động theo luồng sau: Arduino gửi lệnh yêu cầu đọc dữ liệu cường độ sáng đến cảm biến BH1750 thông qua giao tiếp I2C. Cảm biến BH1750 đo lường cường độ sáng trong môi trường và gửi kết quả đo được trở lại cho Arduino. Arduino nhận kết quả và hiển thị nó lên màn hình LCD thông qua giao tiếp parallel.
- Thông qua mạch thiết kế này, dự án có thể đo lường và hiển thị cường độ sáng môi trường một cách đơn giản và linh hoạt.
IV. VIẾT CHƯƠNG TRÌNH
4.1. MÔ TẢ MÃ NGUỒN VÀ CHỨC NĂNG
#include <Wire.h>
#include <BH1750.h>
#include <LiquidCrystal.h> // Thư viện LCD
BH1750 lightMeter;
// Khai báo chân kết nối từ Arduino tới màn hình LCD
const int rs = 9, en = 8, d4 = 7, d5 = 6, d6 = 5, d7 = 4;
const int ledPin = 12; // Chân kết nối LED
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // Khởi tạo màn hình LCD
void setup() {
Serial.begin(9600);
Wire.begin();
lightMeter.begin();
Serial.println(F("BH1750 Test begin"));
// Khởi tạo màn hình LCD với kích thước 16x2
lcd.begin(16, 2);
// Thiết lập chân D12 là OUTPUT
pinMode(ledPin, OUTPUT);
}
void loop() {
float lux = lightMeter.readLightLevel();
// Hiển thị dữ liệu trên Serial Monitor
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
// Hiển thị dữ liệu trên màn hình LCD
lcd.clear(); // Xóa màn hình LCD trước khi hiển thị dữ liệu mới
lcd.setCursor(0, 0); // Di chuyển con trỏ tới hàng 1, cột 1
lcd.print("Light: ");
lcd.print(lux);
lcd.print(" lx");
// Kiểm tra cường độ ánh sáng và kích hoạt LED nếu dưới 500 lux
if (lux < 500) {
digitalWrite(ledPin, HIGH); // Bật LED
} else {
digitalWrite(ledPin, LOW); // Tắt LED
}
delay(1000);
}
- Chức Năng của Mã:
- Mã code trên là một ví dụ minh họa về cách sử dụng cảm biến ánh sáng BH1750 để đo đạc cường độ ánh sáng và hiển thị kết quả trên màn hình LCD và Serial Monitor. Đồng thời, nếu cường độ ánh sáng đo được dưới 500 lux, một đèn LED được kích hoạt.
- Khai báo thư viện và biến:
- `Wire.h`: Thư viện cho giao tiếp I2C.
- `BH1750.h`: Thư viện cho cảm biến ánh sáng BH1750.
- `LiquidCrystal.h`: Thư viện cho việc sử dụng màn hình LCD.
- `BH1750 lightMeter`: Khai báo một đối tượng `lightMeter` từ lớp BH1750 để đọc dữ liệu từ cảm biến ánh sáng.
- `const int rs, en, d4, d5, d6, d7`: Khai báo chân kết nối từ Arduino tới màn hình LCD.
- `const int ledPin = 12`: Khai báo chân kết nối cho đèn LED.
- Hàm setup():
- Khởi tạo giao tiếp Serial với tốc độ 9600 baud.
- Bắt đầu giao tiếp I2C.
- Bắt đầu sử dụng cảm biến ánh sáng BH1750.
- Khởi tạo màn hình LCD với kích thước 16×2.
- Thiết lập chân `ledPin` là OUTPUT.
- Hàm loop():
- Đọc cường độ ánh sáng từ cảm biến ánh sáng BH1750 và lưu vào biến `lux`.
- Hiển thị cường độ ánh sáng trên Serial Monitor và màn hình LCD.
- Kiểm tra nếu cường độ ánh sáng dưới 500 lux, bật đèn LED (`ledPin`).
- Nếu cường độ ánh sáng không dưới 500 lux, tắt đèn LED.
- Delay 1 giây trước khi lặp lại.
4.2. CÀI ĐẶT VÀ CẤU HÌNH PHẦN MỀM
- Cài đặt IDE Arduino trên máy tính của bạn.
- Kết nối Arduino với máy tính qua cổng USB.
- Mở IDE Arduino và sao chép mã nguồn vào một sketch mới.
- Chọn loại board và cổng serial tương ứng trong IDE Arduino.
- Biên dịch và nạp mã vào board Arduino.
- Kết quả đo lường cường độ sáng sẽ được hiển thị trên màn hình LCD sau khi kết nối và khởi động board Arduino.
V. KIỂM TRA VÀ KẾT QUẢ
5.1. QUY TRÌNH KIỂM TRA
- Kết Nối Mạch: Kết nối mạch Arduino, cảm biến BH1750 và màn hình LCD theo hướng dẫn trong thiết kế mạch.
- Nạp Mã Nguồn: Nạp mã nguồn vào board Arduino sử dụng IDE Arduino.
- Kiểm Tra Màn Hình LCD: Đảm bảo màn hình LCD hiển thị tiêu đề “Light: “.
- Đo Lường: Đặt mạch ở môi trường có cường độ sáng khác nhau và ghi lại kết quả.
5.2. PHÂN TÍCH KẾT QUẢ THU ĐƯỢC
- Độ Chính Xác: Kiểm tra kết quả đo lường so với môi trường ánh sáng thực tế để đánh giá độ chính xác của mạch.
- Thời Gian Phản Ứng: Đo thời gian phản ứng của mạch khi môi trường ánh sáng thay đổi để xem liệu mạch có phản ứng nhanh chóng và linh hoạt không.
- Độ Ổn Định: Kiểm tra xem mạch có ổn định và đáng tin cậy trong quá trình hoạt động không, bằng cách kiểm tra lại kết quả đo lường sau một thời gian dài hoạt động.
5.3. ĐÁNH GIÁ HIỆU SUẤT VÀ ĐỘ CHÍNH XÁC
- Hiệu Suất: Mạch có thể đo lường cường độ sáng một cách chính xác và hiển thị kết quả một cách trực quan trên màn hình LCD.
- Độ Chính Xác: Phụ thuộc vào độ chính xác của cảm biến BH1750, nhưng chất lượng của mạch cũng có thể ảnh hưởng đến độ chính xác cuối cùng của kết quả đo lường.
KẾT QUẢ
- Dựa trên quá trình kiểm thử và phân tích, mạch Arduino đo cường độ sáng với cảm biến BH1750 cho thấy hiệu suất và độ chính xác tốt. Mạch hoạt động ổn định và phản ứng nhanh chóng với thay đổi của môi trường ánh sáng. Tuy nhiên, để đảm bảo độ chính xác tối đa, việc kiểm tra và hiệu chỉnh cài đặt của cảm biến và mạch là cần thiết.
VI. ỨNG DỤNG VÀ TIỀM NĂNG MỞ RỘNG
6.1. ỨNG DỤNG VÀ TIỀM NĂNG CỦA DỰ ÁN
- Đo Độ Sáng Trong Nhà và Ngoài Trời: Dự án có thể được sử dụng để đo lường và giám sát độ sáng trong nhà hoặc ngoài trời, giúp người dùng điều chỉnh ánh sáng môi trường một cách thuận tiện và hiệu quả.
- Tự Động Điều Chỉnh Ánh Sáng: Dự án có thể tích hợp vào hệ thống tự động điều chỉnh ánh sáng trong nhà hoặc văn phòng, giúp tiết kiệm năng lượng và tạo ra môi trường làm việc thoải mái hơn.
- Ứng Dụng Trong Quản Lý Năng Lượng: Dự án có thể được sử dụng để giám sát và đánh giá tiêu thụ năng lượng dựa trên cường độ sáng, từ đó giúp tối ưu hóa việc sử dụng năng lượng trong các hệ thống chiếu sáng và thiết bị điện khác.
6.2. PHƯƠNG PHÁP MỞ RỘNG VÀ NÂNG CẤP
- Kết Hợp Với Cảm Biến Khác: Nâng cao tính linh hoạt và chức năng của dự án bằng cách kết hợp với các cảm biến khác như cảm biến nhiệt độ và độ ẩm để tạo ra một hệ thống giám sát môi trường toàn diện hơn.
- Kết Nối Với Mạng Internet: Mở rộng dự án bằng cách kết nối với mạng Internet, cho phép người dùng theo dõi và điều khiển cường độ sáng từ xa thông qua ứng dụng di động hoặc trình duyệt web.
- Thiết Kế Giao Diện Người Dùng Tương Tác: Tạo ra một giao diện người dùng tương tác trực quan cho phép người dùng tùy chỉnh và quản lý cường độ sáng một cách dễ dàng hơn.
KẾT LUẬN
- Dự án đã cung cấp một cơ hội học hỏi và phát triển quý báu trong việc làm việc với các công nghệ nhúng và các linh kiện điện tử. Kết quả thu được không chỉ là một hệ thống đo cường độ sáng mà còn là kiến thức và kỹ năng mới được học hỏi. Việc tiếp tục phát triển và nghiên cứu các ứng dụng tiềm năng của dự án sẽ đóng vai trò quan trọng trong việc mở rộng và tối ưu hóa giá trị của nó trong tương lai.
Very Good !
Very interesting information!Perfect just
what I was searching for!Raise range