想量化室内空气好不好,CO2和挥发性有机物(TVOC)是最直观的两个指标。CCS811是一块支持I2C的数字空气质量传感器,能同时输出等效CO2浓度和TVOC浓度,接Arduino做空气质量监测刚刚好。这篇文章讲接线和几个初学者常踩的坑。

四根线,注意地址不是默认的0x76
CCS811模块一般引出VIN、GND、SDA、SCL、WAKE等脚。VIN接3.3V或5V,GND共地,SDA接A4、SCL接A5,这是Uno上I2C的标准位置。它的I2C地址是0x5A,很多人按通用的0x76去扫描就找不到设备,这是第一道坎。
还有一个特殊脚叫WAKE,用来唤醒芯片。正常情况下把WAKE一直拉低,芯片就保持活跃状态;如果悬空或拉高,I2C会进不了总线。很多合封板已经把WAKE接到地,但用裸片或某些转接板时一定要单独处理。
CCS811用的是“时钟延长”机制,读数据时会对SPL拉长时钟。Arduino Uno在对应版本的Wire库里做I2C通信一般OK,但某些精简的主控或过旧固件会遇到超时,这也是常见的不读值原因。

读懂读数:eCO2是等效估计,别当精确值
芯片输出的eCO2范围约400到8192ppm、TVOC约0到1187ppb。注意这个“e”代表estimated(估计)——它不是真正的CO2传感器,是靠金属氧化物电阻变化结合算法估算出来的等效浓度,适合看趋势和做相对好坏判断,不适合拿去做精确计量。
芯片有个老化/预热的过程,刚上电或长期断电后再用,前几个小时的读数会明显偏高、漂移明显,要让它先跑一段时间、让基线稳定后再当参考。这也是为什么很多人“刚买来读数爆表”——别慌,让它先呼吸几小时。
三个高频坑提前避开
坑一:WAKE没处理或地址扫错,I2C找不到设备。先扫I2C地址确认0x5A在不在,再往下查。
坑二:测量间隔太密。CCS811每次测量需要一定间隔,mm连续高频轮询会读到上一次的结果或返回忙状态。
坑三:芯片怕酒精、发胶这类高浓度气体冲击,靠近这些会瞬间报出爆表值并破坏基线。摆设备时要避开这些干扰源。
跑通后,做个客厅空气质量灯、办公室CO2提示器,或者联动新风自动开窗,都挺实用。







eCO2是估算不是真实值,适合看趋势,别拿去做精确计量
WAKE脚要拉低才进总线,用裸片时这步特别关键
地址是0x5A不是0x76,我按通用地址扫不到设备,卡了好久
刚上电读数爆表别慌,要让它先预热跑几小时基线才稳,是真的