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
The author marked this model as their own original creation.