CJMCU-811: Difference between revisions

From RevSpace
Jump to navigation Jump to search
(9 intermediate revisions by the same user not shown)
Line 12: Line 12:


It appears what they accomplished is integration of a metal-oxide gas sensor into a tiny package so it uses very little power and has a fast response.
It appears what they accomplished is integration of a metal-oxide gas sensor into a tiny package so it uses very little power and has a fast response.
For example, the well-known MQ-135 typically uses 750 mW just for heating the sensitive layer.
For example, the well-known MQ-135 typically uses 750 mW just for heating the sensitive MOX layer.


The datasheet can be found [https://ams.com/ccs811#tab/documents here].
The datasheet can be found [https://ams.com/ccs811#tab/documents here].
Line 30: Line 30:
* INT can be left unconnected
* INT can be left unconnected
* RST can be left unconnected
* RST can be left unconnected
* ADD can be left unconnected. It appears to have a 10k pull-down to GND.  
* ADD can be left unconnected. It has a 10k pull-down to GND, setting the I2C address to 0x5A.


My board was apparently configured at I2C address 0x5A.
I'm wiring it up to a Wemos D1 mini board with an ESP8266.
I'm wiring it up to a Wemos D1 mini board with an ESP8266.


Line 41: Line 40:


The newer 2.0 firmware fixes the upper range of eTVOC.
The newer 2.0 firmware fixes the upper range of eTVOC.
In the older version, the maximum measured concentration is 1156 bpm, this limit is gone with the 2.0 firmware.
In the older version, the maximum reported concentration was 1156 bpm, this limit is no longer present with the 2.0 firmware.


== Software ==
== Software ==
I found the following libraries (in order of preference, top one most likely to use):
I found the following libraries (in order of preference, top one most likely to use):
* [https://github.com/sparkfun/SparkFun_CCS811_Arduino_Library SparkFun CCS811 Arduino Library]
* https://github.com/maarten-pennings/CCS811
* https://github.com/maarten-pennings/CCS811
* [https://github.com/sparkfun/SparkFun_CCS811_Arduino_Library SparkFun CCS811 Arduino Library]
* [https://github.com/adafruit/Adafruit_CCS811 Adafruit CCS811 Library]
* [https://github.com/adafruit/Adafruit_CCS811 Adafruit CCS811 Library]


Line 57: Line 56:
A sensor like this could be used to monitor indoor air quality at Revspace.
A sensor like this could be used to monitor indoor air quality at Revspace.


The plan is to build a TVOC sensor with the following features:
* compensation of influence of temperature and humidity
* keeping track of the baseline of the sensor
* display of current TVOC concentration on an RGB LED stick
* reporting of current TVOC concentration over MQTT
=== pinout ===
See https://github.com/bertrik/tvocmeter
See https://github.com/bertrik/tvocmeter
* pin D1 goes to CCS811 SCL
* pin D1 goes to CCS811 SCL
* pin D2 goes to CCS811 SDA
* pin D2 goes to CCS811 SDA
* pin D3 goes to CCS811 WAK
* pin D3 goes to CCS811 WAK
* pin D8 goes to CCS811 GND
* pin D8 goes to CCS811 GND, we use a data pin as ground because the D1 mini has only one ground pin
* pin D4 goes to Neopixel DIN
* pin D4 goes to Neopixel DIN
* pin 5V goes to Neopixel VDC
* pin 5V goes to Neopixel VDC
* pin GND goes to Neopixel GND
* pin GND goes to Neopixel GND
=== temperature and humidity correction ===
A BME280 could be used to read ambient temperature and humidity.
The microcontroller inside the CCS811 can use this information to improve the reading.
=== Neopixel display ===
The idea is that a kind of RGB LED bargraph shows the current TVOC concentration, using a Neopixel RGB LED stick.
On a logarithmic scale of 8 pixels, LEDs light for each of the following levels: 25, 50, 100, 200, 400, 800, 1600, 3200 ppb


Unfortunately, I can't get the neopixel strip to work yet.
Unfortunately, I can't get the neopixel strip to work yet.
The idea is that it shows the TVOC concentration on a bar of 8 LEDs using a kind of logarithmic scale, one LED for each of the following levels: 25, 50, 100, 200, 400, 800, 1600, 3200 ppb
Also, I don't know what a specific TVOC concentration means, e.g. what level is considered as clean air?
 
=== baseline saving ===
The microcontroller inside the CCS811 keeps track of the properties of the particular sensor and the environment it is in.
The state of this is kept in a baseline register.
 
We could periodically read this register and save it in flash/EEPROM (say once an hour).
Upon startup, the baseline register is restored from the saved value.
 
Saving and restoring the register is described in AMS Application Note AN000370.
 
Reading and writing the baseline register is supported by the Sparkfun library.


Some reading material:
=== further reading ===
* [https://kth.diva-portal.org/smash/get/diva2:1233872/FULLTEXT01.pdf Sara HÖgdahl, "Placing VOC Sensors for Assessing Air Quality - A CFD Study of Indoor VOC Distribution", MJ243X Degree project in Sustainable Buildings, second level, 2018-06-13, Stockhom].
* [https://kth.diva-portal.org/smash/get/diva2:1233872/FULLTEXT01.pdf Sara HÖgdahl, "Placing VOC Sensors for Assessing Air Quality - A CFD Study of Indoor VOC Distribution", MJ243X Degree project in Sustainable Buildings, second level, 2018-06-13, Stockhom].
* Ultrafine particles from 3d printing: https://www.3ders.org/images2016/new-study-shows-that-3d-printing-in-confined-spaces-can-be-bad-for-your-health-3.jpg
* Ultrafine particles from 3d printing: https://www.3ders.org/images2016/new-study-shows-that-3d-printing-in-confined-spaces-can-be-bad-for-your-health-3.jpg
* Volatile organic compounds from 3d printing: https://www.3ders.org/images2016/new-study-shows-that-3d-printing-in-confined-spaces-can-be-bad-for-your-health-4.jpg
* Volatile organic compounds from 3d printing: https://www.3ders.org/images2016/new-study-shows-that-3d-printing-in-confined-spaces-can-be-bad-for-your-health-4.jpg

Revision as of 08:01, 16 January 2019

Project CJMCU-811
Cjmcu811.jpg
Playing around with a breakout board for the CSS-811 IC
Status Initializing
Contact bertrik
Last Update 2019-01-16

Introduction

I bought this board from Aliexpress, it's a breakout board for the AMS CCS-811. The CCS-811 is an ultra-low power digital gas sensor for monitoring indoor air quality.

It appears what they accomplished is integration of a metal-oxide gas sensor into a tiny package so it uses very little power and has a fast response. For example, the well-known MQ-135 typically uses 750 mW just for heating the sensitive MOX layer.

The datasheet can be found here.

It is unclear what it measures exactly. It appears to be sensitive to temperature and humidity levels too, although the chip provides a way to let it know the humidity and temperature so it can compensate for it.

Grafana page

Hardware

Pins on the breakout board:

  • VCC this is directly connected to the IC (there is no voltage regulator on board), connect this to 3.3V
  • GND to ground obviously
  • SCL signal from I2C
  • SDA signal from I2C
  • WAK this needs to be low (!) in order for the chip to be active
  • INT can be left unconnected
  • RST can be left unconnected
  • ADD can be left unconnected. It has a 10k pull-down to GND, setting the I2C address to 0x5A.

I'm wiring it up to a Wemos D1 mini board with an ESP8266.

Firmware update

There is a firmware update available for the microcontroller inside the CCS811. My board shipped with the V1.1 version. I flashed it to the V2.0 version with this firmware updater by Maarten Pennings.

The newer 2.0 firmware fixes the upper range of eTVOC. In the older version, the maximum reported concentration was 1156 bpm, this limit is no longer present with the 2.0 firmware.

Software

I found the following libraries (in order of preference, top one most likely to use):

Interesting projects using it together with a BME280:

Application to air quality monitoring at RevSpace

A sensor like this could be used to monitor indoor air quality at Revspace.

The plan is to build a TVOC sensor with the following features:

  • compensation of influence of temperature and humidity
  • keeping track of the baseline of the sensor
  • display of current TVOC concentration on an RGB LED stick
  • reporting of current TVOC concentration over MQTT

pinout

See https://github.com/bertrik/tvocmeter

  • pin D1 goes to CCS811 SCL
  • pin D2 goes to CCS811 SDA
  • pin D3 goes to CCS811 WAK
  • pin D8 goes to CCS811 GND, we use a data pin as ground because the D1 mini has only one ground pin
  • pin D4 goes to Neopixel DIN
  • pin 5V goes to Neopixel VDC
  • pin GND goes to Neopixel GND

temperature and humidity correction

A BME280 could be used to read ambient temperature and humidity. The microcontroller inside the CCS811 can use this information to improve the reading.

Neopixel display

The idea is that a kind of RGB LED bargraph shows the current TVOC concentration, using a Neopixel RGB LED stick. On a logarithmic scale of 8 pixels, LEDs light for each of the following levels: 25, 50, 100, 200, 400, 800, 1600, 3200 ppb

Unfortunately, I can't get the neopixel strip to work yet. Also, I don't know what a specific TVOC concentration means, e.g. what level is considered as clean air?

baseline saving

The microcontroller inside the CCS811 keeps track of the properties of the particular sensor and the environment it is in. The state of this is kept in a baseline register.

We could periodically read this register and save it in flash/EEPROM (say once an hour). Upon startup, the baseline register is restored from the saved value.

Saving and restoring the register is described in AMS Application Note AN000370.

Reading and writing the baseline register is supported by the Sparkfun library.

further reading