ESP32 ⨯ Sensirion SPS30+SCD41+SGP41 case

An air quality monitor combo, for ESP32-DevKit-v1 and ESP32 superminis.
9
79
1
1678
updated February 7, 2025

Description

PDF

All sensors are from Sensirion. They all use I²C bus. The two little ones can withstand 3.3V and 5V, the PM sensor need 5V. I choose to operate the little ones at 3.3V to minimize their heating.

The SCL and SDA wires can be shared amongst the devices. Each of them use a different I²C address.

Use the small plate to cover the CO2 sensor when placed outdoor, so the wind doesn't mess too much with the values. Indoor, you can store the plate along the PM sensor.

https://esphome.io/components/sensor/scd4x.html
https://esphome.io/components/sensor/sgp4x.html
https://esphome.io/components/sensor/sps30.html

i2c:
 - id: bus_i2c
   sda: 32
   scl: 33
   scan: true
sensor:
 - platform: sgp4x
   i2c_id: bus_i2c
   address: 0x59
   voc:
     name: "VOC index"
   nox:
     name: "NOx index"
   update_interval: 60s
 - id: my_scd41
   platform: scd4x
   i2c_id: bus_i2c
   address: 0x62
   altitude_compensation: !secret altitude
   co2:
     name: "CO2"
     unit_of_measurement: "ppm"
     filters:
       - clamp:
           min_value: 100
           ignore_out_of_range: true
     icon: "mdi:molecule-co2"
   temperature_offset: 4
   temperature:
     name: "temperature"
     icon: "mdi:thermometer"
   humidity:
     name: "humidity"
     icon: "mdi:water-percent"
   measurement_mode: low_power_periodic
   update_interval: 60s
 - platform: sps30
   address: 0x69
   i2c_id: bus_i2c
   pm_1_0:
     id: pmsensor_pm1_weightconcentration
     name: "PM <1µm weight concentration"
     icon: "mdi:molecule"
   pm_2_5:
     id: pmsensor_pm25_weightconcentration
     name: "PM <2.5µm weight concentration"
     icon: "mdi:molecule"
   pm_4_0:
     id: pmsensor_pm4_weightconcentration
     name: "PM <4µm weight concentration"
     icon: "mdi:molecule"
   pm_10_0:
     id: pmsensor_pm10_weightconcentration
     name: "PM <10µm weight concentration"
     icon: "mdi:molecule"
   pm_size:
     name: "typical particle size"
     id: "pm_size"
   update_interval: 60s

AliExpress links to buy the components:
(those links are affiliated, using them will cost you nothing, but will support my work)
(you can try and browse for other cheaper sellers, those are the ones i ordered from)

Sensirion sensors:
SCD41: https://l.kioa.net/printables/sensirion-scd41 (module, not chip)
SGP41: https://l.kioa.net/printables/sensirion-sgp41
SPS30: https://l.kioa.net/printables/sensirion-sps30

some wires with the connector for the SPS30, useful if you damage the ones supplied with the sensor: https://l.kioa.net/printables/sensirion-sps30-wires (5-pin variant)

2025-01-04 update: the original model was made for ESP32-DevKit-v1.
I released a new untested one for ESP32-S3 supermini. It might fit the other superminis.

ESP32-DevKit-v1: https://l.kioa.net/printables/esp32-devkit-v1
ESP32-S3 supermini: https://l.kioa.net/printables/esp32-s3-supermini
ESP32 superminis: https://l.kioa.net/printables/esp32-supermini

Model origin

The author marked this model as their own original creation.

License