Blog · Comparison

BME280 vs BME680 vs ENS160 vs SCD41

Comparison

All four get sold as "air quality sensors," and they measure completely different things. Here's what each one actually reads, the marketing trap in the middle, and a straight answer for every use case.

Side by side

What the BME280, BME680, ENS160 and SCD41 actually measure

SensorMeasuresi2c addressThe catch
BME280temperature, humidity, pressure0x76 / 0x77no air-quality sensing at all
BME680those three + VOC gas resistance0x76 / 0x77useful IAQ needs Bosch's BSEC library and a burn-in period
ENS160TVOC, AQI, estimated eCO20x52 / 0x53eCO2 is inferred from VOCs — it is not a CO2 measurement
SCD41true CO2 + temperature, humidity0x62priciest of the four; hungriest while measuring

The trap

eCO2 is not CO2: BME680 and ENS160 vs the SCD41

The single most important thing this comparison can tell you: only the SCD41 measures carbon dioxide. It fires a light pulse into a chamber and listens — photoacoustically — to how much of it CO2 molecules absorb. That's a physical measurement of the actual gas.

The ENS160's "eCO2" (and the SGP30's before it) is an estimate: the chip measures VOCs — which people exhale alongside CO2 — and infers what CO2 would plausibly be if humans were the only source. In a sealed office it correlates decently. Add a scented candle, cleaning spray or a glass of wine and the "CO2" reading rockets while actual CO2 hasn't moved. The BME680 sits in the same family: its heated metal-oxide plate reads total VOC load as a resistance, and Bosch's BSEC library turns that into an IAQ index plus its own CO2-equivalent guess — genuinely useful as a trend, never as a number to ventilate a classroom by.

Rule of thumb: if the decision matters — ventilation, CO2 alarms, occupancy — measure real CO2. If you just want "the air got worse, do something," a VOC sensor is cheaper and fine.

The verdicts

Which air sensor for which project

Weather station, temperature logger, anything without "air quality" in it → BME280. Cheapest, lowest power by far (~µA), best-supported driver ecosystem in existence. Don't pay for a gas sensor you won't use.

One board that does environment + a usable IAQ trend → BME680. You get everything the BME280 reads plus VOC sensing — accept that good output means linking Bosch's BSEC blob and letting the sensor burn in for a day or two.

Adding air-quality awareness to an existing build, cheaply → ENS160. Modules pair it with an AHT21 for temp/humidity, it's simple to read, and TVOC/AQI trends are exactly what "should I open a window?" needs. Ignore the eCO2 number.

Real CO2 — ventilation, alarms, classrooms, grow rooms → SCD41. It's the only one measuring the actual gas, and its single-shot mode makes battery operation practical. (Its cheaper sibling SCD40 is the same silicon family with a narrower range.)

Bus logistics are painless: ENS160 (0x52) and SCD41 (0x62) never clash with the Bosch parts, so any combination shares one bus — the only trap is BME280 + BME680 together, since both default to 0x76. Flip one to 0x77 with its address jumper, or read the conflict guide. All four appear in the address list and work over Qwiic/STEMMA QT.

Get one

Questions

Air-sensor FAQ

Can the BME680 measure CO2?

No. Its gas sensor measures the electrical resistance of a heated metal-oxide surface, which changes with total VOC exposure. Bosch's BSEC library converts that into an air-quality index and a 'CO2 equivalent' estimate, but nothing in the chip counts CO2 molecules. For real CO2 you need a photoacoustic or NDIR sensor like the SCD41.

Is eCO2 from the ENS160 or SGP30 accurate?

It's an inference, not a measurement: the chip watches VOC levels (which humans also exhale alongside CO2) and estimates what CO2 'probably' is. In a room of people it tracks reasonably; open a window, light a candle, or use hand sanitiser and the estimate swings wildly. Treat eCO2 as a trend indicator, never as a number for ventilation decisions.

Can I run a BME280 and BME680 on the same bus?

Yes, but they collide out of the box — both default to address 0x76. Move one to 0x77 via its SDO/address jumper and they coexist fine. The ENS160 (0x52/0x53) and SCD41 (0x62) don't clash with either, so all four sensors can genuinely share two wires.

Which of these uses the least power?

The BME280 by a wide margin — around 3.6 µA at one reading per second, and it sleeps between readings. The BME680's heated gas plate pulls ~12–18 mA while burning, and the SCD41 draws tens of mA during its photoacoustic measurement (its single-shot mode helps for battery projects). For coin-cell logging, BME280; for battery CO2, SCD41 in single-shot.

Do these sensors need a level shifter with a 5 V Arduino?

The bare chips are all 3.3 V-class parts. Qwiic versions are strictly 3.3 V; Adafruit STEMMA QT versions include regulation and level shifting so 5 V hosts are safe; bare modules vary. Check your specific board, and see our level-shifting guide when in doubt.