178浏览
查看: 178|回复: 0

[项目] Beetle 树莓派RP2350之便携环境质量监测仪

[复制链接]
本帖最后由 _深蓝_ 于 2025-5-23 17:10 编辑

Beetle 树莓派RP2350之便携环境质量监测仪

一、项目背景

初入陌生环境,某些人可能会有所不适,有可能是环境空气质量不合格导致的,于是使用Beetle 树莓派RP2350和空气质量传感器制作一款便携的空气质量监测仪器,如果空气质量不合格,可以提前知晓,并离开。
Beetle 树莓派RP2350之便携环境质量监测仪图1

二、 制作过程

(一)需求分析

1.该设备便于携带,显示器、传感器、电池体积要求小巧。
2.该设备需要测量环境空气质量等多个指标。
3.该设备能够实时查看环境空气质量,并且指导环境质量指数代表的含义。

(二)所需硬件

1.主控板使用Beetle 树莓派RP2350,购买链接
Beetle 树莓派RP2350

2.空气质量传感器ENS160  购买链接

3.Gravity: I2C OLED-2864 显示屏  购买链接

也可以加一个I2C hub用于扩展

使用I2C接口传感器的功能。

(三)电路连接

Beetle RP2350提供了1组I2C通讯接口:I2C0。引脚对应关系如下:

引脚号 I2C功能
4 I2C0/SDA
5 I2C0/SCL

将空气质量传感器的I2C接口和OLED显示屏的I2C接口正确接到Beetle RP2350的4和5引脚即可。

(四)硬件及代码调试

1.调试空气质量传感器

主控板连接空气好质量传感器,并且串口输出空气质量指标。

//空气质量传感器ens160使用i2c接口为0x53,如果选择0x52会错误输出

#include <DFRobot_ENS160.h>
// 创建对象
DFRobot_ENS160_I2C ens160(&Wire, 0x53);

// 主程序开始
void setup() {
  Serial.begin(9600);
  ens160.begin();
  ens160.setPWRMode(ENS160_STANDARD_MODE);
}
void loop() {
  Serial.print("co2指数:");
  Serial.println(ens160.getECO2());
  Serial.print("TVOC指数:");
  Serial.println(ens160.getTVOC());
  Serial.print("AQI指数:");
  Serial.println(ens160.getAQI());
  Serial.print("运行状态:");  
  Serial.println(ens160.getENS160Status());
  delay(2000);
}

串口输出为:
Beetle 树莓派RP2350之便携环境质量监测仪图2

串口中输出了空气质量指标,说明我们的空气质量传感器已经开始工作了。

2.调试Oled显示屏

已经按要求连接Oled显示屏后,我们使用以下调试

#include <DFRobot_SSD1306_I2C.h>
// 创建对象
DFRobot_SSD1306_I2C oled12864;

// 主程序开始
void setup() {
  oled12864.begin(0x3c);
  oled12864.fillScreen(0);
  oled12864.setCursorLine(1);
  oled12864.printLine("hello dfrobot");
}
void loop() {

}

程序执行后如下所示:

Beetle 树莓派RP2350之便携环境质量监测仪图4

3.综合后程序

将空气质量传感器返回的值显示在oled屏中。

#include <DFRobot_SSD1306_I2C.h>
//空气质量传感器ens160使用i2c接口为0x53,如果选择0x52会错误输出

#include <DFRobot_ENS160.h>
// 创建对象
DFRobot_ENS160_I2C ens160(&Wire, 0x53);

int ECO2=0;
int TVOC=0;
int AQI=0;
int statue=0;
String ECO2S="";
String AQIS="";
String TVOCS="";

// 创建对象
DFRobot_SSD1306_I2C oled12864;

// 主程序开始
void setup() {
  Serial.begin(9600);
  ens160.begin();
  ens160.setPWRMode(ENS160_STANDARD_MODE);
  oled12864.begin(0x3c);
  oled12864.fillScreen(0);

}
void loop() {

/**
   * 获取传感器运行状
   * 返回值:0-Normal operation, 
   *        1-Warm-Up phase, During first 3 minutes after power-on.
   *        2-Initial Start-Up phase, During first full hour of operation after initial power-on.Only once in the sensor’s lifetime.
   *           Note that the status will only be stored in the non-volatile memory after an initial 24h of continuous
   *           operation. If unpowered before conclusion of said period, the ENS160 will resume "Initial Start-up" mode
   *           after re-powering.
   */

  Serial.print("co2指数:");
  ECO2=ens160.getECO2();
  if(ECO2<600){ECO2S="adv:excellent";
  } else if(800>ECO2>=600){
    ECO2S="adv:good";}
    else if(1000>ECO2>=800){
     ECO2S="adv:normal";
    }else{
    ECO2S="adv:bad";
    }

  Serial.println(ECO2);
  Serial.print("TVOC指数:");
  TVOC=ens160.getTVOC();
  if(TVOC<=50){
    TVOCS="adv:good";
  }else if (50<TVOC<=750){
    TVOCS="adv:bad";
   }else{
    TVOCS="adv:worst";
   }
  Serial.println(TVOC);
  Serial.print("AQI指数:");
  switch(AQI){
    case 1:
      AQIS="adv:best";
      break;
    case 2:
      AQIS="good";
      break;
    case 3:
      AQIS="normal";
      break;
    case 4:
      AQIS="bad";
      break;
    case 5:
      AQIS="worst";
      break;      
  }
  AQI=ens160.getAQI();
  Serial.println(AQI);
  Serial.print("运行状态:");  
  statue=ens160.getENS160Status();
  Serial.println(statue);
  oled12864.fillScreen(0);
  oled12864.setCursorLine(1);
  oled12864.printLine("AirQualityMonitor");
  oled12864.setCursorLine(3);
  oled12864.setCursorLine(2);
  oled12864.printLine(String("ECO2:")+String(ECO2)+String(ECO2S));
  oled12864.setCursorLine(3);
  oled12864.printLine(String("TVOC:")+String(TVOC)+String(TVOCS));
  oled12864.setCursorLine(4);
  oled12864.printLine(String("AQI:")+String(AQI)+String(AQIS));
  delay(2000);
}

显示屏结果:
Beetle 树莓派RP2350之便携环境质量监测仪图3

第一行为标题:AirQualityMonitor
第二行为ECO2数据为400,adv为该数据的建议最好为excellent>good>normal>bad
第三行为TVOC,数据为0,adv为good>normal>bad
第四行为AQI,数据为1,adv为best>good>normal>bad>worst

空气质量参考指标
1.AQI等级参考
Beetle 树莓派RP2350之便携环境质量监测仪图5
2.eCO2/CO2浓度参考
https://img.dfrobot.com.cn/wiki/5d57611a3416442fa39bffca/afe56dc99258d5ebe24f98bf84bf7c0d.pnghttps://i-blog.csdnimg.cn/img_convert/93c90d332d954eef8df209468c6aee2e.png
3.TVOC浓度参考

Beetle 树莓派RP2350之便携环境质量监测仪图6

三、项目结果


以下是通过B站做的视频,


感谢官方给予的信任,通过本次评测,我学到了很多知识,同时,也发现了我很多编程之外的问题。通过这样的活动能够认识更真实的自己。




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail