Dịch Vụ Bách khoa Sửa Chữa Chuyên nghiệp

Giao tiếp cảm biến cường độ ánh sáng BH1750 với Arduino

BH1750 là một cảm biến số cường độ ánh sáng 16 bit. Trong bài viết này, Điện Tử Việt sẽ hướng dẫn những bạn cách tiếp xúc giữa cảm biến cường độ ánh sáng BH1750 với Arduino. Cảm biến tiếp xúc với vi điều khiển và tinh chỉnh bằng chuẩn tiếp xúc I2C .
Qua nội dụng của bài viết, bạn sẽ học cách liên kết cảm biến BH1750 với Arduino, setup những thư viện thiết yếu và viết chương trình đơn thuần để hiển thị hiệu quả đo cường độ ánh sáng của cảm biến lên Serial Monitor .
Xem thêm bài viết : Giới thiệu những loại cảm biến và hoạt động giải trí của chúng

Giới thiệu cảm biến cường độ ánh sáng BH1750

BH1750 là một IC cảm biến số 16 bit dùng để đo cường độ ánh sáng môi trường xung quanh giao tiếp qua giao thức I2C. IC này là thích hợp nhất để lấy dữ liệu ánh sáng xung quanh để điều chỉnh công suất đèn nền của màn hình LCD và bàn phím của điện thoại di động. Cảm biến có thể đo cường độ ánh sáng trong phạm vi rộng với độ phân giải cao (1 lux – 65535 lux).

Module cảm biến cường độ ánh sáng BH1750 được sản xuất với hình dạng khác nhau. Cả hai module cảm biến bên dưới đều sử dụng cảm biến BH1750 .

Thông số cảm biến BH1750

Dưới đây là những thông số kỹ thuật kỹ thuật của cảm biến BH1750. Để biết thêm thông tin, hãy tìm hiểu thêm datasheet của cảm biến BH1750 .

  • Điện áp hoạt động: 2,4V – 3,6VDC
  • Chuẩn giao tiếp: I2C
  • Dải đo ánh sáng: 1 – 65535 lx
  • Đặc điểm độ nhạy phổ: Độ nhạy cực đại với bước sóng 560nm
  • Khả năng phát hiện các nguồn sáng như: đèn sợi đốt, đèn huỳnh quang, đèn LED trắng, đèn huỳnh quang,..
  • Kích thước: 2,6 x 2,8 cm

Các chế độ đo

Cảm biến tương hỗ hai chính sách đo khác nhau : chính sách đo liên tục và chính sách đo một lần. Mỗi chính sách tương hỗ ba chính sách phân giải khác nhau .

Chế độ đo Thời gian do Độ phân giải
Chế độ độ phân giải thấp 16 ms 4 lux
Chế độ độ phân giải cao 120 ms 1 lux
Chế độ độ phân giải cao 2 120 ms 0,5 lux

Ở chính sách đo liên tục, cảm biến liên tục đo những giá trị ánh sáng xung quanh. Trong chính sách đo một lần, cảm biến đo giá trị ánh sáng xung quanh một lần, sau đó chuyển sang chính sách tắt nguồn .

Ứng dụng

BH1750 là một cảm biến đo cường độ ánh sáng xung quanh nên nó hoàn toàn có thể được sử dụng trong nhiều dự án Bất Động Sản khác nhau. Ví dụ :

  • để phát hiện xem đó là ngày hay đêm;
  • để điều chỉnh hoặc bật / tắt độ sáng của đèn LED cho phù hợp với ánh sáng xung quanh;
  • để điều chỉnh màn hình LCD và độ sáng của màn hình;
  • để phát hiện xem đèn LED có sáng không;

Sơ đồ chân của BH1750

Bảng bên dưới diễn đạt chứng năng những chân của cảm biến BH1750 :

VCC Điện áp cung cấp (3,3V hay 5V)
GND Chân nối đất
SCL (Clock) Chân SCL cho giao tiếp I2C
SDA (Data) Chân SDA cho tiao tiếp I2C 
ADDR Chọn địa chỉ

Chân ADDR được sử dụng để đặt địa chỉ cảm biến I2C. Nếu điện áp trên chân này nhỏ hơn 0,7 xVCC ( chân này để thả nổi hoặc được nối với GND ), địa chỉ I2C là 0x23. Nhưng, nếu điện áp cao hơn 0,7 xVCC ( chân được liên kết với VCC ), địa chỉ là 0x5 C. Tóm tắt :

  • Chân ADDR thả nổi hoặc kết nối với GND → địa chỉ: 0x23
  • Chân ADDR kết nối với VCC → địa chỉ: 0x5C

Giao tiếp cảm biến BH1750 với Arduino

Cảm biến cường độ ánh sáng BH1750 tương hỗ tiếp xúc I2C .
Bạn hoàn toàn có thể liên kết cảm biến BH1750 với Arduino bằng những chân I2C mặc định. Bảng diễn đạt liên kết cảm biến với Arduino dưới đây là dành cho Arduino UNO, nếu bạn đang sử dụng Arduino phiên bản khác, hãy kiểm tra những chân I2C để bảo vệ việc liên kết được đúng mực :

BH1750 Arduino Uno
SCL A5
SDA A4

Đo cường độ ánh sáng dùng cảm biến BH1750 và Arduino

Bây giờ bạn đã quen thuộc hơn với cảm biến BH1750, hãy cùng làm mạch ứng dụng để hiểu rõ hơn về loại cảm biến này. Trong phần này, tất cả chúng ta sẽ thiết kế xây dựng một dự án Bất Động Sản đơn thuần đo cường độ ánh sáng xung quanh và hiển thị hiệu quả đo lên Serial Monitor trong Arduino IDE .

Linh kiện cần thiết

Để hoàn tất được phần hướng dẫn này, bạn cần sử dụng những linh phụ kiện sau đây :

  • Cảm biến cường độ ánh sáng BH1750
  • Arduino Uno
  • Breadboard (tùy chọn)
  • Dây cắm breadboard

Sơ đồ kết nối BH1750 với Arduino

Nối những chân của cảm biến BH1750 vào những chân Arduino Uno như sơ đồ mạch bên dưới .

Bạn hoàn toàn có thể xem bảng diễn đạt liên kết dưới đây :

BH1750 Arduino
VCC 5V
GND GND
SCL (Clock) A5
SDA (Data) A4
ADDR Không kết nối

Chân ADDR không được liên kết, tức là tất cả chúng ta đang chọn địa chỉ I2C 0x23. Kết nối chân này với 3,3 V sẽ chọn địa chỉ 0x5 C .

Cài đặt thư viện BH1750

Có 1 số ít thư viện được dùng để đọc cường độ ánh sáng từ cảm biến BH1750. Chúng ta sẽ sử dụng thư viện BH1750 của Christopher Laws. Thư viện này thích hợp với ESP32, ESP8266 và Arduino .

Mở phần mềm Arduino IDE và chọn menu Sketch >> Include Library > Manage Libraries. Cửa sổ Library Manager sẽ mở ra.

Bạn nhập từ khóa “BH1750” vào hộp tìm kiếm, sau đó chọn Install để cài đặt thư viện này.

Chương trình

Bạn hãy copy đoạn code bên dưới vào phần mềm IDE Arduino. Chương trình này chỉ đơn giản là đọc ánh sáng xung quanh theo lux và hiển thị các giá trị trên Serial Monitor. Đây là chương trình kiểm tra cảm biến có tên BH1750test (bạn có thể mở file bằng cách vào trong File > Examples > BH1750 > BH1750test).

/ *
Example of BH1750 library usage .

This example initialises the BH1750 object using the default high resolution
continuous mode and then makes a light level reading every second.

Xem thêm: Bảng giá

Connections

– VCC to 3V3 or 5V
– GND to GND
– SCL to SCL (A5 on Arduino Uno, Leonardo, etc or 21 on Mega and Due, on
esp8266 free selectable)
– SDA to SDA (A4 on Arduino Uno, Leonardo, etc or 20 on Mega and Due, on
esp8266 free selectable)
– ADD to (not connected) or GND

ADD pin is used to set sensor I2C address. If it has voltage greater or equal
to 0.7VCC voltage (e.g. you’ve connected it to VCC) the sensor address will be
0x5C. In other case (if ADD voltage less than 0.7 * VCC) the sensor address
will be 0x23 (by default).

* /

#include
#include

BH1750 lightMeter ;

void setup() {
Serial.begin(9600);

// Initialize the I2C bus (BH1750 library doesn’t do this automatically)
Wire.begin();
// On esp8266 you can select SCL and SDA pins using Wire.begin(D4, D3);
// For Wemos / Lolin D1 Mini Pro and the Ambient Light shield use
// Wire.begin(D2, D1);

lightMeter. begin ( ) ;

Serial.println(F(“BH1750 Test begin”));
}

void loop() {
float lux = lightMeter.readLightLevel();
Serial.print(“Light: “);
Serial.print(lux);
Serial.println(” lx”);
delay(1000);
}

Giải thích chương trình

Chúng ta khởi đầu bằng cách khai báo những thư viện thiết yếu. Thư viện Wire. h sử dụng cho giao thức truyền thông online I2C và thư viện BH1750. h để đọc cường độ ánh sáng từ cảm biến .

#include
#include

Sau đó, tất cả chúng ta tạo một đối tượng người dùng BH1750 được gọi là lightMeter .
BH1750 lightMeter ;
Trong phần setup ( ), khởi chạy Serial Monitor với vận tốc truyền là 9600 .
Serial. begin ( 9600 ) ;
Khởi tạo giao thức truyền thông online I2C. Cảm biến sẽ giao tiếp theo chuẩn I2C với những chân I2C mặc định của vi tinh chỉnh và điều khiển. Nếu bạn muốn sử dụng những chân I2C khác nhau, hãy chuyển chúng sang phương pháp begin ( ) như Wire. begin ( SDA, SCL ) này .
Wire. begin ( ) ;
Khởi tạo cảm biến bằng phương pháp begin ( ) trên đối tượng người dùng BH1750 ( lightMeter ) .
lightMeter. begin ( ) ;
Trong phần loop ( ), tất cả chúng ta tạo một biến gọi là lux, để lưu những giá trị độ sáng. Để lấy giá trị, bạn chỉ cần gọi hàm readLightLevel ( ) trên đối tượng người dùng BH1750 ( lightMeter ) .
float lux = lightMeter. readLightLevel ( ) ;
Cuối cùng, hiển thị hiệu quả đo trên Serial Monitor .

Serial.print (“Light:”);
Serial.print (lux);
Serial.println (“lx”);

Cảm biến đo và hiện thị hiệu quả sau mỗi giây .
delay ( 1000 ) ;

Bây giờ, bạn có thể nạp chương trình vào board Arduino. Đầu tiên, kết nối board Arduino với máy tính của bạn. Sau đó, chọn menu Tools >> Board và chọn loại board Arduino mà bạn đang sử dụng. Chọn Tools >> Port và chọn cổng COM mà board Arduino của bạn được kết nối. Cuối cùng, bấm vào nút Upload để nạp chương trình.

Sau khi nạp chương trình thành công xuất sắc, hãy mở Serial Monitor với vận tốc truyền là 9600 .
Kết quả đọc độ sáng sẽ được hiện thị trên Serial Monitor .

Lời kết

Qua nội dung của bài viết này, những bạn đã học được cách tiếp xúc giữa cảm biến ánh sáng xung quanh BH1750 với Arduino Uno. Cảm biến này rất dễ sử dụng. Nó sử dụng giao thức tiếp thị quảng cáo I2C, giúp việc đi dây trở nên đơn thuần và thư viện phân phối những giải pháp để thuận tiện nhận được những tác dụng đọc .
Tôi kỳ vọng bạn thấy hướng dẫn này có ích. Hãy cho tôi biết trong phần phản hồi bên dưới, bạn sẽ sử dụng cảm biến BH1750 vào trong dự án Bất Động Sản nào nhé .