Implementation of an affordable indoor air quality monitor using various sensors connected to a microcontroller and streaming the data to a Raspberry Pi for analysis using Node-RED.
In the sensing unit a Teensy microcontroller reads the sensor data from the connected sensors and sends it over the attached Bluetooth BLE module.
The following sensors are used:
Original version with dedicated VOC MEMS sensor
Category | Name | Provides | Price |
---|---|---|---|
Core | Teensy 3.2 | Microcontroller | ~24€ |
Communication | HM-11 | Bluethooth | ~5€ |
Sensors | BME280 | Temperature, Pressure, Humidity | ~14€ |
Sensors | iAQ-core C | VOC Sensor | ~33€ |
Total | ~76€ |
Updated version with recently released BME680 sensor
Category | Name | Provides | Price |
---|---|---|---|
Core | Teensy 3.2 | Microcontroller | ~24€ |
Communication | HM-11 | Bluethooth | ~5€ |
Sensors | BME680 | Temperature, Pressure, Humidity, VOC | ~15€ |
Total | ~44€ |
Category | Name | Provides | Price |
---|---|---|---|
Sensors (optional) | MQ135 | Analog Gas Sensor | ~2€ |
Sensors (optional) | SM-PWM-01C | Dust Sensor | ~14€ |
A Fritzing sketch documenting the layout of the current hardware prototype is located in air-sense/wiring
.
This unit was installed and tested on a Raspberry Pi 3, running Debian Jessie. The purpose of this unit is to process all the data received via Bluetooth from the sensing unit and compute the current air quality index, based on the latest measurements. This unit is also configured to display the current status, as well as triggering real-time notifications in case the air quality gets worse.
Besides the Raspberry Pi an additional Bluetooth BLE module is used to receive the data from wirelessly connected sensing units.
Category | Name | Price |
---|---|---|
Core | Raspberry Pi 3 | ~40€ |
Comm | HM-11 | ~5€ |
LED (optional) | WS2812 RGB LED Ring | ~7€ |
The HM-11 BLE module is connected to the serial port of the Raspberry Pi:
The Neopixel LED ring can be additionally connected to the Raspberry Pi to indicate the current air quality directly on the processing unit.
- VCC (any)
- GND (any)
- BCM 18 (pin 12) for providing input to the LED
Raspberry Pi 3 comes with a pre-installed version of Node-RED. Additionally, the following node modules are used:
- node-red-node-sqlite
- node-red-contrib-telegrambot
- node-red-dashboard
- node-red-node-pi-neopixel (for controlling the neopixel LEDs, an additional library needs to be installed. This can be done by following the instructions on the npmjs or github page of this module)
All the required flows needed for running the application can be found inside the air-pi/node-red
folder.
These flows can be easily imported via the web-based GUI provided by Node-RED.