这几天在玩嵌入系统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 |
电烙铁用T12头自制的那种就行,价格只要170左右就能达到原版2000多的性能。
线路图
传感器通讯协议是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室,大约30的经验:
- 关窗大概每30分钟CO2上升500ppm,最大会在3000-4000ppm左右(视测试位置)
- 窗户开一点缝隙,最大可以稳定在1000左右
- 门窗都开一点,可以稳定在500左右(可见南北同时透气很重要)
每10,000ppm相当于1%含量CO2
多少CO2对人体有害?这个科学上有争议,有实验发现1200以上会降低认知,但又有键盘打字实验发现5000都不会。生命安全上的医学建议为待在1w以上环境不要超过8小时,所以可以认为一直关窗安全性肯定没问题,有条件最好保持在1000-2000。
EDIT: 之前怀疑是老房子气密性不好导致CO2最大3000-4000ppm,但装修了系统窗并且负压测试确认不漏气的房子测试结果也一样
既然窗户开一点缝隙效果就那么明显,那是不是每个房间装一个壁挂式新风系统就行了? 还可以避免全屋新风(管道新风)屋顶排管增加复杂度?如果只考虑氧气的话是可以的。
全屋新风一般每小时可全屋换气1-2次,因此可以除味除甲醛,当然甲醛现在问题不大,多是智商税,但是安装麻烦,考虑怎么排管道就能废掉脑子,机器坏了更是不敢想怎么修。
而壁挂式换气量很低,送风距离近,只能小房间内使用,而且热交换能力有限会有吹出冷风热风的问题。