BME280 Arduino
Hướng dẫn này cho biết cách sử dụng mô-đun cảm biến BME280 với Arduino để đọc áp suất, nhiệt độ, độ ẩm và ước tính độ cao. Chúng tôi sẽ hướng dẫn bạn cách đấu dây cảm biến, cài đặt các thư viện cần thiết và viết một bản phác thảo đơn giản để hiển thị các kết quả đọc của cảm biến.
Loại 1: I2C communication
BME280 | Arduino |
Vin | 5V |
GND | GND |
SCL | A5 |
SDA | A4 |
Loại 2:
Kết nối 1: I2C communication
BME280 | Arduino |
SCK (SCL Pin) | A5 |
SDI (SDA pin) | A4 |
Kết nối 2: SPI communication
BME280 | Arduino |
SCK (SPI Clock) | Pin 13 |
SDO (MISO) | Pin 12 |
SDI (MOSI) | Pin 11 |
CS (Chip Select) | Pin 10 |
CÀI ĐẶT THƯ VIỆN ARDUINO.
Sketch > Include Library > Manage Libraries
Thư viện 1 : “adafruit bme280 ”
Thư viện 2 : Adafruit Unified Sensor
KẾT NỐI PHẦN CỨNG:
TEST NHƯ SAU :
File > Examples > Adafruit BME280 library > bme280 test
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI
unsigned long delayTime;
void setup() {
Serial.begin(9600);
Serial.println(F("BME280 test"));
bool status;
// default settings
// (you can also pass in a Wire library object like &Wire2)
status = bme.begin();
if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
Serial.println("-- Default Test --");
delayTime = 1000;
Serial.println();
}
void loop() {
printValues();
delay(delayTime);
}
void printValues() {
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println(" *C");
// Convert temperature to Fahrenheit
/*Serial.print("Temperature = ");
Serial.print(1.8 * bme.readTemperature() + 32);
Serial.println(" *F");*/
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();
}
GIẢI THÍCH CODE:
Libraries
SPI communication
Sea level pressure (Áp suất nước biển).
#define SEALEVELPRESSURE_HPA (1013.25)
I2C
Ví dụ này sử dụng giao thức truyền thông I2C theo mặc định. Như bạn thấy, bạn chỉ cần tạo một đối tượng Adafruit_BME280 có tên là bme.
Adafruit_BME280 bme; // I2C
Để sử dụng SPI, bạn cần nhận xét dòng trước này và bỏ ghi chú một trong các dòng sau.
//Adafruit_BME280 bme(BME_CS); // hardware SPI //Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI
setup()
Serial.begin(9600);
Và cảm biến được khởi tạo:
status = bme.begin(); if (!status) { Serial.println("Could not find a valid BME280 sensor, check wiring!"); while (1); }