meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sensor:ccs811 [2026/03/21 22:25] – created vamsansensor:ccs811 [2026/03/21 23:08] (current) vamsan
Line 3: Line 3:
 The CJMCU-811 is a small, ultra-low-power digital gas sensor module designed to monitor indoor air quality. It is built around the CCS811 sensor from AMS, which uses a metal oxide (MOX) multi-gas sensor to detect a broad range of Volatile Organic Compounds (VOCs). The CJMCU-811 is a small, ultra-low-power digital gas sensor module designed to monitor indoor air quality. It is built around the CCS811 sensor from AMS, which uses a metal oxide (MOX) multi-gas sensor to detect a broad range of Volatile Organic Compounds (VOCs).
  
-  * This type of digital sensor is used for the measurement of changes in volatile organic compounds, in particular carbon dioxide (CO²). The module is equipped with a CJMCU-811 CCS811 CO² Air Quality Metal Oxide Gas Sensor. +  * This type of digital sensor is used to measure changes in volatile organic compounds, especially carbon dioxide (CO²). The module features a CJMCU-811 CCS811 CO² Air Quality Metal Oxide Gas Sensor. 
-  * The sensor is characterized by a relatively low power consumption and can therefore also be used in battery-powered devices. +  * The sensor is known for its low power consumption, making it suitable for use in battery-powered devices. 
-  * This device is mainly used for monitoring indoor air quality and can be read by microcontrollers via the I²C interface. +  * This device is primarily used to monitor indoor air quality and can be read by microcontrollers through the I²C interface. 
-  * Due to its complex design, the module is very sensitive and able to accurately calculate the share of eCO².+  * Because of its complex design, the module is highly sensitive and can accurately measure the share of eCO². 
 + 
 +  * **ETVOC** measurement range: 0 ~ 32768 ppb 
 +  * **ECO2** measurement range: 400 ~ 32768 ppm 
 + 
 +**Key Capabilities** 
 + 
 +The sensor measures atmospheric conditions and outputs digitized values via an I²C interface: 
 + 
 +  * **eCO² (Equivalent CO²):** Calculates carbon dioxide levels based on volatile organic compounds, usually ranging from 400 to 8,192 ppm. 
 +  * **TVOC (Total Volatile Organic Compounds):** Detects a wide array of gases, including alcohols, aldehydes, ketones, organic acids, and amines. 
 +  * **On-board Processing:** Incorporates an integrated 8-bit microcontroller that runs intelligent algorithms to turn raw sensor data into air quality readings, decreasing the processing load on your main controller. 
 + 
 +==== Technical Specifications ==== 
 + 
 +^Feature^Details| 
 +^Operating Voltage|1.8V to **3.3V** DC (Note: //Some modules include a regulator for 5V compatibility//)| 
 +^Power Consumption|~30mA average; extremely low power in idle modes (< 6µW)| 
 +^Interface|I2C (standard address is often 0x5A or 0x5B)| 
 +^Dimensions|Roughly 15mm x 21mm| 
 +^Environment|Operating temperature from -40°C to 125°C| 
 + 
 +**Usage Considerations** 
 + 
 +  * **"Equivalent" Readings:** It's important to understand that this isn't a genuine CO2 sensor. Instead, it estimates eCO2 levels from VOC concentrations, which can sometimes lead to inaccuracies compared to industrial-grade NDIR (non-dispersive infrared) sensors. 
 +  * **Burn-in & Run-in:** New sensors need a 48-hour burn-in period to achieve stability. Moreover, after turning on the device, the sensor typically requires about 20 minutes of run-in time to produce accurate readings. 
 +  * **Baseline Calibration:** The sensor automatically adjusts its //"clean air"// baseline gradually. However, for optimal performance, it should regularly be exposed to fresh outdoor air. 
 + 
 +==== Pin Descriptions ==== 
 +The CJMCU-811 (featuring the CCS811 sensor) is typically an 8-pin breakout board. For basic operation, you must connect VCC, GND, SDA, SCL, and WAKE. 
 + 
 +^Pin Name^Function^Description 
 +^VCC|Power Supply|**1.8V to 3.6V** (//Some boards include a 5V regulator//).| 
 +^GND|Ground|Common ground for power and logic.| 
 +^SCL|I²C Clock|Serial clock line for communication.| 
 +^SDA|I²C Data|Serial data line for communication.| 
 +^WAKE|Wake (Active Low)|Crucial: Must be pulled to GND to enable I²C communication.| 
 +^INT|Interrupt (Active Low)|Optional; indicates when new data is ready, or thresholds are crossed.| 
 +^RST|Reset (Active Low)|Optional; pulling this low resets the sensor.| 
 +^ADDR|I²C Address Select|Connect to GND for 0x5A (default) or VCC for 0x5B.| 
 + 
 +**Connection Tips** 
 + 
 +  * **WAKE Pin:** On many CJMCU-811 modules, the sensor will not respond to I2C commands if the WAKE pin is left floating. Connect it directly to a GND pin for continuous operation. 
 +  * **Voltage Logic:** While the sensor chip runs at 3.3V, many breakout boards, such as those from Adafruit or standard CJMCU versions, include level shifters, making them safe for use with 5V microcontrollers like the Arduino Uno. 
 +  * **I²C Speed:** If using a Raspberry Pi, you may need to lower the I²C baud rate to 10kHz because the Pi's hardware sometimes struggles with the //"clock stretching"// required by the CCS811. 
 + 
 +==== Arduino example code ==== 
 +To use the CJMCU-811 with an Arduino, the most common approach is to use the **Adafruit CCS811** Library. 
 + 
 +**Arduino Wiring** 
 + 
 +Connect your CJMCU-811 breakout to the Arduino as follows: 
 + 
 +  * **VCC → 3.3V** (or 5V if your board has a regulator) 
 +  * **GND → GND** 
 +  * **SDA → A4** (on Uno/Nano) or Pin 20 (Mega) 
 +  * **SCL → A5** (on Uno/Nano) or Pin 21 (Mega) 
 +  * **WAKE → GND** (Required to keep the sensor active) 
 + 
 +This basic sketch initializes the sensor and prints eCO2 and TVOC levels to the Serial Monitor. 
 + 
 +<code c> 
 +#include "Adafruit_CCS811.h" 
 + 
 +Adafruit_CCS811 ccs; 
 + 
 +void setup() { 
 +  Serial.begin(115200); // Set Serial Monitor to 115200 baud 
 +  Serial.println("CCS811 test"); 
 + 
 +  // Initialize the sensor 
 +  if(!ccs.begin()){ 
 +    Serial.println("Failed to start sensor! Check wiring and WAKE pin."); 
 +    while(1); 
 +  } 
 + 
 +  // Wait for the sensor to be ready 
 +  while(!ccs.available()); 
 +
 + 
 +void loop() { 
 +  if(ccs.available()){ 
 +    // readData returns false if there is no error 
 +    if(!ccs.readData()){ 
 +      Serial.print("CO2: "); 
 +      Serial.print(ccs.geteCO2()); 
 +      Serial.print("ppm, TVOC: "); 
 +      Serial.print(ccs.getTVOC()); 
 +      Serial.println("ppb"); 
 +    } else { 
 +      Serial.println("ERROR reading sensor!"); 
 +      while(1); 
 +    } 
 +  } 
 +  delay(1000); // Wait 1 second between readings 
 +
 +</code> 
 + 
 +Common Troubleshooting 
 + 
 +  * **I²C Address:** If the code fails to start, your board might use address 0x5B instead of the default 0x5A. You can try //ccs.begin(0x5B)//; in the setup. 
 +  * **Serial Monitor Speed:** Ensure the baud rate in your Serial Monitor matches //Serial.begin(115200)//;
 +  * **Accuracy:** Remember that this sensor requires a 20-minute warm-up for stable readings and a 48-hour burn-in period when first used. 
 + 
 +===== I²C topics on lamaPLC ===== 
 +{{topic>i2c}} 
 + 
 +{{tag>CJMCU-811 CCS811 Gas Sensor VOCs TVOC eCO2 CO2 Arduino Air_Quality_Metal_Oxide MOX I2C}} 
 + 
 +This page has been accessed for: Today: {{counter|today}}, Until now: {{counter|total}}