今日份
关闭门窗,开启空调新风低档位,睡一个晚上,可以看出,除了甲醛和TVOC值得关心,二氧化碳浓度也挺重要的咧。
关闭门窗,是为了隔绝噪音和光线。
新风低档位,是因为中高档噪音有点大。
实测过,连新风都不开,二氧化碳数值大概在1800+ppm,接近2000。
实测过,最有效降低二氧化碳,是开启卫身间的排气扇,就是挺吵的。
代码Go
过程中,不会有太详细的理论,毕竟小白我也不知道理解的准不准确哈,理论可以参考附近的大神文章系列。
目录结构
- arduino-air-monitor 项目目录
- arduino-air-monitor.ino 程序入口
- src
- docs 一些传感器文档
- sgp_40 TVOC 模块 sgp40 的官方算法
- m_HCHO.h 甲醛 模块逻辑
- m_TVOC.h TVOC 模块逻辑
- m_CO2.h 二氧化碳 模块逻辑
- m_Temperature_Tumidity.h 温湿度 模块逻辑
- m_UV.h UV 紫外钱 模块逻辑
- DFRobot_SGP40.h TVOC 模块 sgp40 库 改版
- DFRobot_SGP40.cpp TVOC 模块 sgp40 库 改版
- clock.h 时钟逻辑
- display.h OLED 显示器逻辑
- buttons.h 按钮逻辑
根据 Arduino IDE 官方说明和特点,根目录文件会直接显示在 IDE 的 Tabs 中:
而且,其它代码需放在 src 目录下,才可以方便通过 #include “src/xxx/xxx.h” 引入。
程序入口
以下是基本结构:
#include "display.h"
#include "clock.h"
#include "buttons.h"
#include "m_Temperature_Tumidity.h"
#include "m_UV.h"
#include "m_TVOC.h"
#include "m_CO2.h"
#include "m_HCHO.h"
// ...略
// Last process time
long lastProcessSecond = 0;
void setup() {
Serial.begin(115200);
Buttons::Btn_1.init();
Display::OLED.init();
Clock::RTC.init();
Module::TVOC.init();
Module::HCHO.init();
Module::CO2.init();
}
void process(bool display) {
// ...略
Module::HCHO.read();
// 打印信息
char nowStr[20] = "";
now.tostr(nowStr);
Serial.println(nowStr);
Serial.print("Temperature:");
Serial.print(Module::Temperature.getValue());
Serial.println(Module::Temperature.unit);
Serial.print("Humidity:");
Serial.print(Module::Humidity.getValue());
Serial.println(Module::Humidity.unit);
Serial.print("UV:");
Serial.print(Module::UV.getValue());
Serial.println(Module::UV.unit);
Serial.print("CO2:");
Serial.print(Module::CO2.getValue());
Serial