Bosch BME280 Arduino的使用介绍-Arduino中文社区 - Powered by Discuz! Archiver

topdog 发表于 2021-12-12 23:48

Bosch BME280 Arduino的使用介绍

本帖最后由 topdog 于 2021-12-14 02:55 编辑

德国博世传感器技术公司(Bosch Sensortec)生产的BME280是一款为移动市场设计的集成环境传感器。它是一种低功耗设计,结合了高线性度和高精度传感器的压力,湿度和温度。
BME280既支持SPI接法,也支持I2C接法。BME280产品手册 。
我购买的这款模块外形如下:






接线图如下:

我购买的BME280模块I2C连接时SD0必须接GND,否则读数错误,接高电平时不能运行。I2C的地址设置为0x76才能正常操作。


I2C连接法:



SPI连接法:


库的选择:
Adafruit BME280对SPI接线友好。 SparkFun BME280更新及时,模式、滤波等功能丰富,建议使用。

I2C连接法,程序实现:
#include <Wire.h>

#include "SparkFunBME280.h"
BME280 mySensor;

void setup()
{
Serial.begin(115200);
Serial.println("Example showing alternate I2C addresses");

Wire.begin();
Wire.setClock(400000);            //调节到快速 I2C 速度!
mySensor.setI2CAddress(0x76);       //I2C地址0x76
mySensor.beginI2C();

mySensor.setFilter(1); //0 至 4 有效, 滤波器系数, 见手册 3.4.4 IIR filter
mySensor.setStandbyTime(0); //0 至 7 有效 读数之间的时间

mySensor.setTempOverSample(1); //0 至 16 有效 ,为0时禁用温度传感.见手册 4.2.2、5.4.8
mySensor.setPressureOverSample(1); //0 至 16 有效 ,为0时禁用大气压传感.见手册 5.4.7
mySensor.setHumidityOverSample(1); //0 至 16 有效 ,为0时禁用湿度传感. 见手册5.4.9

mySensor.setMode(MODE_NORMAL); //MODE_SLEEP(睡眠模式), MODE_FORCED(突发模式), MODE_NORMAL (普通模式)有效,见手册 3.3 Sensor modes
}

void loop()
{
Serial.print("Humidity: ");
Serial.print(mySensor.readFloatHumidity(), 0);

Serial.print(" Pressure: ");
Serial.print(mySensor.readFloatPressure(), 0);

Serial.print(" Alt: ");                                       //测量高度。
Serial.print(mySensor.readFloatAltitudeMeters(), 1);    //公制
//Serial.print(mySensor.readFloatAltitudeFeet(), 1);   //英制

Serial.print(" Temp: ");
//Serial.print(mySensor.readTempC(), 2);
Serial.print(mySensor.readTempF(), 2);

Serial.println();

delay(500);
}

SPI连接法,程序实现:

#include <SPI.h>

#include "SparkFunBME280.h"
BME280 mySensor;

void setup()
{
Serial.begin(115200);
Serial.println("Reading basic values from BME280");

if (mySensor.beginSPI(10) == false) //开始通过SPI进行通信。使用引脚10作为CS。
{
    Serial.println("The sensor did not respond. Please check wiring.");
    while(1);
}
}

void loop()
{
Serial.print("Humidity: ");
Serial.print(mySensor.readFloatHumidity(), 0);

Serial.print(" Pressure: ");
Serial.print(mySensor.readFloatPressure(), 0);

Serial.print(" Alt: ");   //测量高度。
Serial.print(mySensor.readFloatAltitudeMeters(), 1);
//Serial.print(mySensor.readFloatAltitudeFeet(), 1);

Serial.print(" Temp: ");
Serial.print(mySensor.readTempC(), 2);//摄氏
//Serial.print(mySensor.readTempF(), 2);    //华氏

Serial.println();

delay(500);
}





页: [1]
查看完整版本: Bosch BME280 Arduino的使用介绍