The AirQuality V3 is an air quality sensor made from scratch. I wanted a cheaper sensor than the commercially available options, but more capabilities than the open-source options like AirGradient. It also gave me a good project to continue on my journey to learn more on developing electronics and embedded software.
The sensor periodically polls the sensors (as per the datasheets) and publishes the new values to a MQTT topic. Home Assistant is then able to pick up the values automatically trough auto-discovery. OTA updates and configuration is supported trough a web interface.
This repository houses the source code, BOM, for the AirQuality V3 and the KiCad files.
Cost for all components for a single board is about $53. Most expensive components are the PMS5003 ($17), SenseAir S8 ($18), the SGP41 gas sensor ($7) and the ESP32-S3 ($4.7). The 4-layer PCB itself strongely depends on how many you order, but is around $4 per PCB, brining the total cost per Air Quality sensor to $57.
- NOx and VOC gas sensing - Sensirion SGP41 sensor
- Temperature, Humidity and Pressure sensor - Bosch BME280
- CO2 - SenseAir S8
- Ambient Light Vishay VEML7700
- PM1.0, PM2.5 and PM10.0 particle concentration Particle PMS5003
- Init the submodules:
git submodule update --init
- Run the PlatformIO Build
platformio run --environment debug
- adafruit/Adafruit BME280 Library (BME280 Temperature, Humidity and Air Pressure sensor)
- sensirion/Sensirion I2C SGP41 (SGP41 Gas sensor)
- adafruit/Adafruit VEML7700 Library (VEML7700 Ambient Light Sensor)
- fu-hsi/PMS Library (PMS5003 particle sensor)
- sensirion/Sensirion Gas Index Algorithm (VOC and NOx gas index for Air Quality Levels)
- jcomas/S8_UART (SenseAir S8)
- adafruit/Adafruit NeoPixel (To drive the single NeoPixel communicating the current Air Quality level)
- knolleary/PubSubClient (MQTT Library for communication with Home Assistant)
- bblanchon/ArduinoJson (JSON Library for the HTTP server and MQTT)
- TheLartians/Observe (Simple thread-save events)
Pollutant
(based on pollutant concentrations in µg/m3)
Good Fair Moderate Poor Very poor Extremely poor
Particles less than 2.5 µm (PM2.5) 0-10 10-20 20-25 25-50 50-75 75-800
Particles less than 10 µm (PM10) 0-20 20-40 40-50 50-100 100-150 150-1200
Good Fair Moderate Poor Very poor Extremely poor
CO2 in ppm:
0-350 350-800 800-1000 1000-1200 1200-1800 1800+
https://www.co2meter.com/blogs/news/carbon-dioxide-indoor-levels-chart
NOx and VOC Index:
Good Fair Moderate Poor Very poor Extremely poor
NOx Index: 0-20 20-100 100-200 200-300 300-400 400+
VOC Index: 0-150 150-200 200-250 250-300 300-400 400+
https://www.sensirion.com/media/documents/9F289B95/6294DFFC/Info_Note_NOx_Index.pdf
https://www.sensirion.com/media/documents/02232963/6294E043/Info_Note_VOC_Index.pdf