这几天在玩嵌入系统Arduino,发现学起来很简单,就打算组个二氧化碳检测仪。主要因为PM2.5一直关窗,想要知道下房间氧气到底够不够,到底要装什么样的新风。

组装使用材料:

材料 价格RMB(含运费)
Arduino Nano 兼容开发板 15
Logic Level Converter 5.5
DS-CO2-20 传感器 145
SSD1306 128x64 OLED 显示屏 14
3x7 双面万能版 5.14
电线 4
M2*15 螺丝柱 5
焊丝 40
苹果电源改T12焊台 170
烙铁架/高温海绵 20

苹果电源真的很带劲,焊台不说顶2000元,妥妥能顶1000左右的。 题外话,划掉

线路图

传感器通讯协议是3.3v的UART,所以要Level Converter转换下

代码

这里只贴简单的获取传感器数值的代码:

#include <SoftwareSerial.h>

#define rxPin 12
#define txPin 11
SoftwareSerial CO2_Serial(rxPin, txPin);
const byte readCO2[] = {0x42, 0x4d, 0xe3, 0x00, 0x00, 0x01, 0x72}; //Command
byte responses[12];

void setup()
{
  CO2_Serial.begin(9600);
}

unsigned int GetCo2()
{
  int valMultiplier = 1;

  while (!CO2_Serial.available())
  {
    CO2_Serial.write(readCO2, 7);
    delay(1000);
  }

  CO2_Serial.setTimeout(2000);
  CO2_Serial.readBytes(responses, 12);

  int high = responses[4];              //high byte
  int low = responses[5];               //low byte
  unsigned int val = high * 256 + low; 
  return val * valMultiplier;
}

void loop()
{
  auto co2 = GetCo2();
  draw_co2(co2);
  delay(1000);
}

显示部分我用的u8g2库。为了增加渲染速度,只能渲染部分区域,所以我开了fullbuffer,结果直接用掉了92%的内存,这么看的话,可能换个库比较好。

结论

那么回归本来的问题,一直关窗氧气到底够不够呢?以下是我这个不运动的1人,垃圾铝合金窗户的1室,大约30m2m^2的经验:

  • 关窗大概每30分钟CO2上升500ppm,最大会在3000-4000ppm左右(视测试位置)
  • 窗户开一点缝隙,最大可以稳定在1000左右
  • 门窗都开一点,可以稳定在500左右(可见南北同时透气很重要)

每10,000ppm相当于1%含量CO2

那么多少CO2对人体有害?这个科学上有争议,有实验发现1200以上会降低认知,但又有键盘打字实验发现5000都不会。生命安全上的医学建议为待在1w以上环境不要超过8小时,所以可以认为一直关窗安全性肯定没问题,有条件最好保持在1000-2000。

EDIT: 之前怀疑是老房子气密性不好导致CO2最大3000-4000ppm,最近新家装修完了,使用了气密性很好的系统窗和防盗门,负压测试时发现漏气的地方也都堵了,然后疫情封在家关窗测试了2天,结果全屋(由于新家卧室没有密封的门,所以测试的是全屋)CO2最多到2400ppm,可见1个人3000左右确实是极限了

既然窗户开一点缝隙效果就那么明显,那是不是每个房间装一个壁挂式新风系统就行了? 还可以避免全屋新风(管道新风)屋顶排管增加复杂度?简洁的答案是,只考虑氧气的话是可以的。

全屋新风一般可以每小时全屋换气1-2次,因此他是唯一有效除甲醛的手段,壁挂式是无法替代的,当然甲醛现在问题不大,用正规来源的木板,或少用木头多用塑料就是了,比如树脂门,石塑地板。

另外全屋新风可以节省壁挂和空净占用的空间,换算成面积房价的话,可以说还赚了。如果你的房子有条件安装(新风进风口可以远离排气出风口、油烟、热水器废气),不用考虑直接上全屋新风吧。

壁挂式的注意选择有热交换的,这样可以不用电加热/降温室外空气,虽然家用新风的实际热交换率都很低,但冬天还是很有效果的,至少不会吹冷风让你凉飕飕的。带电加热的也可以,就是很费电你会舍不得开。