ESP32 sensor modules compared
The sensors people actually wire to ESP32s, organised around the questions you're really asking: does it work with ESPHome? (the ESPHome column links the exact component) · which of these near-identical part numbers do I want? (each page has a "vs" answer) · is the cheap one fake? (the clone-risk column — counterfeit DS18B20s and BMP280s sold as BME280s are rampant) · will it run on battery?
Specs and prices are community/vendor-sourced (checked July 2026), not datasheet-verified. Street prices move; clone quality moves more.
40 of 40 sensors
| Sensor | Category ▲ | Measures | Interface | ESPHome | Clone risk | Battery | Price | Buy |
|---|---|---|---|---|---|---|---|---|
| Sensirion SCD41rising | Air quality | co2, temperature, humidity | I2C | native | low | ✓ | $9–16 | Buy → |
| Sensirion SCD40 | Air quality | co2, temperature, humidity | I2C | native | low | — | $8–13 | Buy → |
| Winsen MH-Z19B/C/Edeclining | Air quality | co2 | UART | native | high | — | $10–14 | Buy → |
| SenseAir S8 | Air quality | co2 | UART | native | medium | — | $12–20 | Buy → |
| Sensirion SGP41 | Air quality | voc, nox | I2C | native | low | — | $4–8 | Buy → |
| ENS160 (+AHT21 combo)rising | Air quality | voc, co2 | I2C | native | medium | — | $3–5 | Buy → |
| Bosch BME680 / BME688 | Air quality | voc, temperature, humidity, pressure | I2C | native | medium | — | $4–9 | Buy → |
| Plantower PMS5003 / PMS7003 | Air quality | pm | UART | native | low | — | $10–16 | Buy → |
| Sensirion SHT40/SHT41/SHT45rising | Temperature & humidity | temperature, humidity | I2C | native | low | ✓ | $1–3 | Buy → |
| Sensirion SHT31 (GY-SHT31-D) | Temperature & humidity | temperature, humidity | I2C | native | low | ✓ | $1–3 | Buy → |
| AHT20 / AHT30 | Temperature & humidity | temperature, humidity | I2C | native | low | ✓ | $1–2 | Buy → |
| Bosch BME280 | Temperature & humidity | temperature, humidity, pressure | I2C | native | high | ✓ | $2–4 | Buy → |
| Bosch BMP280 | Temperature & humidity | temperature, pressure | I2C | native | low | ✓ | $1–2 | Buy → |
| DHT22 / AM2302declining | Temperature & humidity | temperature, humidity | 1-Wire | native | medium | ✓ | $2–3 | Buy → |
| DS18B20 (waterproof probe) | Temperature & humidity | temperature | 1-Wire | native | high | ✓ | $1–2 | Buy → |
| VL53L0X (ToF) | Distance & level | distance | I2C | native | low | ✓ | $1–3 | Buy → |
| VL53L1X (ToF, 4 m) | Distance & level | distance | I2C | external | medium | ✓ | $3–5 | Buy → |
| HC-SR04 (ultrasonic) | Distance & level | distance | GPIO | native | low | ✓ | $1–2 | Buy → |
| JSN-SR04T (waterproof ultrasonic)declining | Distance & level | distance | GPIO | native | low | ✓ | $4–6 | Buy → |
| Capacitive soil moisture v1.2/v2.0 | Garden & weather | soil-moisture | analog | adc-generic | high | ✓ | $1–2 | Buy → |
| AS3935 lightning detector | Garden & weather | lightning | I2C | native | high | ✓ | $5–9 | Buy → |
| BH1750 (GY-302) | Light & UV | lux | I2C | native | low | ✓ | $1–2 | Buy → |
| VEML7700rising | Light & UV | lux | I2C | native | low | ✓ | $2–3 | Buy → |
| LTR390 (UV) | Light & UV | uv, lux | I2C | native | low | ✓ | $2–4 | Buy → |
| HX711 + load cells | More staples | weight | GPIO | native | medium | ✓ | $1–4 | Buy → |
| MPU6050 (GY-521)eol | More staples | acceleration | I2C | native | high | ✓ | $1–2 | Buy → |
| DS3231 RTC | More staples | time | I2C | native | medium | ✓ | $1–2 | Buy → |
| u-blox NEO-6M (GPS)declining | More staples | location, time | UART | native | high | ✓ | $3–5 | Buy → |
| MQ-series gas (MQ-2/135…)avoid | More staples | gas | analog | adc-generic | medium | — | $1–2 | Buy → |
| INA219 | Power & energy | voltage, current, power | I2C | native | low | ✓ | $1–2 | Buy → |
| INA226rising | Power & energy | voltage, current, power | I2C | native | medium | ✓ | $2–4 | Buy → |
| PZEM-004T v3 | Power & energy | voltage, current, power, energy | UART | native | low | — | $7–11 | Buy → |
| SCT-013 CT clamp | Power & energy | current | analog | native | low | ✓ | $3–6 | Buy → |
| HLK-LD2410 (B/C) | Presence & motion | presence, motion | UART | native | medium | — | $3–6 | Buy → |
| HLK-LD2450rising | Presence & motion | presence, motion, position | UART | native | medium | — | $6–10 | Buy → |
| HLK-LD2412rising | Presence & motion | presence, motion | UART | native | low | — | $5–8 | Buy → |
| HLK-LD2420 | Presence & motion | presence, motion | UART | native | high | — | $2–3 | Buy → |
| DFRobot C4001 (SEN0609/SEN0610)rising | Presence & motion | presence, motion | UART | external | none | — | $12–15 | Buy → |
| HC-SR501 PIR | Presence & motion | motion | GPIO | adc-generic | medium | ✓ | $1–2 | Buy → |
| AM312 mini PIR | Presence & motion | motion | GPIO | adc-generic | medium | ✓ | $1–2 | Buy → |
The short version, by job
- Room presence (lights that don't turn off on you): HLK-LD2410 — add an LD2450 for zones, an AM312 PIR for instant-on.
- Temperature/humidity you can trust: SHT41; probes in wet/cold places: DS18B20 (read the fake warning).
- Real CO2: SCD41 — not an "eCO2" guesser.
- Air weirdness (VOC): SGP41, or the ENS160 combo on a budget.
- Energy: PZEM-004T v3 for circuits, INA226 for DC/solar.
- Plants: capacitive soil sensor (never resistive) — coat it or it dies.
Guides
- Which presence sensor for Home Assistant? — DIY mmWave vs assembled (Apollo, Everything Presence) vs retail (Aqara FP2), honestly.
- The Hi-Link radar decoder — LD2410 vs B/C/S vs 2412 vs 2420 vs 2450, plus the dual-radar recipe.
- CO2 sensors compared — SCD40 vs SCD41 vs MH-Z19 vs SenseAir S8, and the calibration trap nobody explains.
- DHT22 vs BME280 vs SHT41 — the temperature/humidity shootout, updated for what things actually cost in 2026.
- The fake sensor problem — counterfeit DS18B20s, BMP280s sold as BME280s, clone MH-Z19s and "CO2" sensors that only guess, with the checks to run on your own hardware.
Before you buy: the three traps
- Fakes are the norm in some categories. Essentially all AliExpress DS18B20 probes are counterfeit, "BME280" listings routinely ship humidity-less BMP280s, and black-PCB MH-Z19 clones read dangerously low. The full exposé, with detection checks — plus the clone-risk column above.
- "eCO2" is not CO2. Sensors that "estimate CO2 from VOC" (ENS160, BME680, the late SGP30) won't notice a room full of sleeping people. If the number matters, buy NDIR (SCD41, SenseAir S8).
- Calibration is part of ownership. CO2 sensors auto-calibrate assuming weekly fresh air (wrong in bedrooms — disable it), soil probes need per-unit wet/dry values, and mmWave needs gate tuning before you trust it.
Looking for the board to wire these to? See the dev boards and the display-board comparison.