这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » Arduino下实验使用AHT20+BMP280组合模块

共1条 1/1 1 跳转至

Arduino下实验使用AHT20+BMP280组合模块

专家
2025-08-22 13:17:01     打赏

AHT20是测量温湿度的传感器,BMP280是测量气压温度传感器因为都是用I2C总线,且地址不同,所以可以组合使用。

图片1.png

 

测试依旧使用ESP8266,在Arduino下测试,接线方式:

BMP280 & AHT20        ESP8266

---------------------------------

VDD                   3.3V

GND                   GND

SCL                   D1(GPIO5)

SDA                   D2(GPIO4)

---------------------------------

代码如下:

/**
BMP280:
工作电压:BME:1.7~3.6V;BMP:5V(实测3.3V也可以)
温度测量范围:0C°~65C°
温度测量误差:±0.5C°   MAX±1C°;分辨率0.1C°
相对湿度测量范围:0%~100%   湿度响应时间:大于1S
相对湿度测量误差:±2%;湿度迟滞:±1%;分辨率:0.8%;
气压测量范围:300~1100hPa(百帕斯卡)
气压测量误差:±1hPa;分辨率:0.18Pa
数字接口类型:IIC(从模式3.4MHz)或者SPI(3线或四线制,从模式10MHz)
 
VCC  --- 电源正
GND  --- 地
SCL  --- I2C / SPI
         3线SPI串行接口输入输出端口
         4线SPI串行接口输入端口
CSB  --- 片选。
         高电平(默认):IIC接口方式
         低电平:SPI接口方式
SDO  --- I2C地址选择位;4线SPI串行输出端口
         IIC模式下:0 - 地址0x76;1 - 地址0x77
 
测试接线:
BMP280 & AHT20        ESP8266 
---------------------------------
VDD               3.3V
GND               GND
SCL               D1(GPIO5)
SDA               D2(GPIO4)
---------------------------------
*/
 
#include <Wire.h>
#include <Adafruit_BMP280.h>
#include <AHT20.h>
AHT20 aht20;
Adafruit_BMP280 bmp; // 创建传感器对象
 
void setup() {
  Serial.begin(115200); // 初始化串口
  while (!Serial); // 等待串口就绪(仅调试需)
 
  if (!bmp.begin(0x76)) { // 初始化传感器(地址0x76或0x77)
    //Serial.println("BMP280未找到!检查接线和地址!");
    //while (1); // 停止运行
    if (!bmp.begin(0x77)) { // 初始化传感器(地址0x76或0x77)
        Serial.println("\nBMP280未找到!检查接线和地址!");
        while (1); // 停止运行
    } else {
      Serial.println("\n找到BMP280(地址0x77)");
    }
  } else {
    Serial.println("\n找到BMP280(地址0x76)");
  }
 
  if (aht20.begin() == false) {
    Serial.println("未找到AHT20.");
    while(true);
  } else {
    Serial.println("找到AHT20(地址0x38).");
  }
 
  // 配置传感器参数(可选)
  bmp.setSampling(
    Adafruit_BMP280::MODE_NORMAL,     // 工作模式(持续测量)
    Adafruit_BMP280::SAMPLING_X2,     // 温度采样精度
    Adafruit_BMP280::SAMPLING_X16,    // 气压采样精度
    Adafruit_BMP280::FILTER_X16,      // 滤波等级
    Adafruit_BMP280::STANDBY_MS_500   // 待机时间
  );
  
  Serial.println("BMP280初始化成功!");
}
 
void read_aht20(void) {
  float temperature = aht20.getTemperature();
  float humidity = aht20.getHumidity();
 
  Serial.println("-----AHT20-----: ");
  Serial.print("  温度: ");
  Serial.print(temperature, 2);
  Serial.println(" C\t");
  Serial.print("  湿度: ");
  Serial.print(humidity, 2);
  Serial.println("% RH");
}
 
void read_bmp280(void) {
 
  // 读取并打印数据
  Serial.println("-----BMP280-----: ");
  Serial.print("  温度: ");
  Serial.print(bmp.readTemperature()); // 摄氏度
  Serial.println(" °C");
  
  Serial.print("  气压: ");
  Serial.print(bmp.readPressure() / 100.0); // 转换为hPa
  Serial.println(" hPa");
  
  Serial.print("  海拔: ");
  Serial.print(bmp.readAltitude(1013.25)); // 相对海平面高度(需校准)
  Serial.println(" m");
  
}
 
void loop() {
  read_aht20();
  read_bmp280();
 
  Serial.println("");
  Serial.println("");
  delay(2000); // 2秒更新一次
}


 

测试结果:

图片2.png

 

因为都能测试温度,刚好可以做个对比。显然差别不是很大,说明这两款传感器测量温度还是挺靠谱的。

 





关键词: 大懒猫的试用笔记     AHT20+BMP280    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]