B35 – Sử dụng cảm biến BME280

Cảm biến BME280 cung cấp thông số về nhiệt độ, độ ẩm và áp suất khí quyển. Các bo mạch gắn sẵn BME280 có giá thành rẻ, dễ kết nối giúp việc tiếp cận và sử dụng cảm biến này ngày càng trở nên dễ dàng hơn.

Trái tim của bo mạch là cảm biến BME280 được sản xuất bởi Bosch. Đây là cảm biến thế hệ mới, trước nó là các cảm biến như BMP180, BMP085 hay BMP183. Một chú ý đó là cảm biến BME280 thường bị nhầm lẫn với BMP280, loại cảm biến rẻ hơn và ít tính năng hơn.

Cảm biến BMP280 và BME280

Cảm biến BME280 có độ chính xác cao, giải đo độ ẩm từ 0 –> 100% với sai số ±3%, áp suất khí quyển từ 300Pa đến 1100 hPa với sai số ±1 hPa; và nhiệt độ từ -40°C đến 85°C có sai số chỉ ±1.0°C. Cảm biến áp suất có thể được sử dụng để tính toán độ cao với độ chính xác đến từng mét.

Có thể sử dụng cảm biến với điện áp 5V hoặc 3.3V tiêu chuẩn. Rất dễ để kết nối đến Arduino. Dòng điện tiêu thụ tối đa chỉ 1mA khi thực hiện đo đạc là ưu điểm giúp nó được sử dụng nhiều trong các ứng dụng công suất thấp.

Giao tiếp với BME280 có thể được thực hiện theo chuẩn SPI hoặc I2C. Trong khi giao tiếp bằng I2C, địa chỉ mặc định của cảm biến là 0x76. Một số bo mạch cho phép thay đổi địa chỉ sang 0x77 bằng cách hàn điểm nối (jumper) hoặc bằng 1 chân được đánh dấu sẵn.

Kết nối với Arduino rất đơn giản, chân SDA và SCL được sử dụng cho giao tiếp I2C. Thường thì trên bo có đánh dấu sẵn, nếu không thì chân A4 là SDA và A5 là SCL trên bo Arduino Nano và Uno R3.

Trước khi sử dụng được BME280, chúng ta cần bổ sung thư viện. Mở chương trình Arduino, chọn Sketch > Include Library > Manage Libraries…

Hai thư viện cần bổ sung là Adafruit BME280 Library by AdafruitAdafruit Unified Sensor. Sau khi cài đặt 2 thư viện này, chúng ta có thể triển khai bài kiểm tra tính năng của cảm biến.

Chương trình ví dụ:

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme;

void setup() 
{
   Serial.begin(9600);
   if (!bme.begin(0x76)) 
   {
	Serial.println("Could not find a valid BME280 sensor, check wiring!");
	while (1);
   }
}

void loop() 
{
	Serial.print("Temperature = ");
	Serial.print(bme.readTemperature());
	Serial.println("*C");

	Serial.print("Pressure = ");
	Serial.print(bme.readPressure() / 100.0F);
	Serial.println("hPa");

	Serial.print("Approx. Altitude = ");
	Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
	Serial.println("m");

	Serial.print("Humidity = ");
	Serial.print(bme.readHumidity());
	Serial.println("%");

	Serial.println();
	delay(1000);
}

Có thể tìm kiếm bài ví dụ này trong File -> Examples-> Adafruit_BME280 ->bmp280test

Leave a Reply

Your email address will not be published. Required fields are marked *