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).
Key Capabilities
The sensor measures atmospheric conditions and outputs digitized values via an I²C interface:
The CCS811 does not measure actual CO₂. Instead, it estimates it based on hydrogen gas levels. This ppm (parts per million) value accurately reflects how stuffy or occupied a room is.
| eCO2 Value (ppm) | Air Quality | Meaning & Recommended Action |
|---|---|---|
| 400 – 600 | ♦ Excellent | Clean outdoor air level. Ideal baseline. |
| 600 – 1000 | ♦ Good | Standard indoor level. Safe with no health effects. |
| 1000 – 1500 | ♦ Fair | Stale air. May cause slight drowsiness. Open a window. |
| 1500 – 2000 | ♦ Poor | Headaches and fatigue can start. Ventilation required. |
| 2000 – 5000 | X Severe | Heavy lethargy, loss of focus. Immediate fresh air is needed. |
TVOC measures airborne chemicals, gases, and toxins (e.g., from cleaning sprays, perfumes, paints, adhesives, or new furniture) in ppb (parts per billion).
| TVOC Value (ppm) | Air Quality | Potential Effects & Actions |
|---|---|---|
| 0 – 50 | ♦ Excellent | Clean, chemical-free air. |
| 50 – 220 | ♦ Good | Normal indoor environment. Low risk of irritation. |
| 220 – 660 | ♦ Moderate | Sensitive individuals may feel eye or throat irritation. |
| 660 – 2200 | ♦ Poor | Headaches, nausea, or chemical odors. Locate source and ventilate. |
| Over 2200 | X Unhealthy | Intense irritation and discomfort. Toxic for long-term exposure. |
| 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
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 | |
|---|---|---|
| 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
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:
This basic sketch initializes the sensor and prints eCO2 and TVOC levels to the Serial Monitor.
#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 }
Common Troubleshooting
I²C settings: i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=100000)
from machine import UART, Pin, I2C import machine import time # I2C konfiguráció az RP2040-ETH szabadon használható pinjein # Gyári alapértelmezett I2C cím a CCS811-nél: 0x5A (ha az ADDR pin GND-n van) CCS811_ADDR = 0x5A # Regiszter címek a CCS811 adatlap szerint REG_STATUS = 0x00 REG_MEAS_MODE = 0x01 REG_ALG_DATA = 0x02 REG_HW_ID = 0x20 REG_APP_START = 0xF4 REG_SW_RESET = 0xFF # I2C busz inicializálása i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=100000) def init_ccs811(): print("CCS811 inicializálása...") # 1. Eszköz keresése az I2C buszon devices = i2c.scan() if CCS811_ADDR not in devices: raise RuntimeError("A CCS811 szenzor nem található! Ellenőrizd a WAKE -> GND bekötést.") # 2. Hardver ID ellenőrzése (kötelezően 0x81) hw_id = i2c.readfrom_mem(CCS811_ADDR, REG_HW_ID, 1)[0] if hw_id != 0x81: raise RuntimeError(f"Hibás Hardver ID: {hex(hw_id)} (0x81 helyett)") # 3. Szoftveres indítás (Átváltás Bootloaderből Alkalmazás módba) # Üres adatot kell írni az APP_START regiszterbe i2c.writeto_mem(CCS811_ADDR, REG_APP_START, b'') time.sleep_ms(100) # 4. Mérési mód beállítása (Mód 1: Mérés másodpercenként egyszer) # A 0x10 érték beírja az 1-es módot (Drive Mode 1) és letiltja az megszakításokat i2c.writeto_mem(CCS811_ADDR, REG_MEAS_MODE, b'\x10') time.sleep_ms(100) print("Szenzor sikeresen elindítva Mód 1-ben (1 mp mintavétel).") def read_air_quality(): # Állapotregiszter ellenőrzése status = i2c.readfrom_mem(CCS811_ADDR, REG_STATUS, 1)[0] # A 3-as bit (0x08) jelzi, ha van új adat (DATA_READY) if status & 0x08: # Az ALG_DATA regiszterből 4 byte-ot olvasunk be: # Byte 0-1: eCO2 (ppm) # Byte 2-3: TVOC (ppb) data = i2c.readfrom_mem(CCS811_ADDR, REG_ALG_DATA, 4) eco2 = (data[0] << 8) | data[1] tvoc = (data[2] << 8) | data[3] return eco2, tvoc return None, None # Főprogram futtatása try: init_ccs811() print("Mérés indítása... (Az első értékek beállásához idő kell)\n") while True: eco2, tvoc = read_air_quality() if eco2 is not None: print(f"[{time.ticks_ms() // 1000}s] eCO2: {eco2} ppm | TVOC: {tvoc} ppb") else: # Ha még nem frissült az adatregiszter, várunk pass time.sleep(1) except Exception as e: print(f"Hiba történt: {e}")
Output
[2788s] eCO2: 717 ppm | TVOC: 48 ppb [2789s] eCO2: 665 ppm | TVOC: 40 ppb [2790s] eCO2: 634 ppm | TVOC: 35 ppb [2791s] eCO2: 634 ppm | TVOC: 35 ppb [2792s] eCO2: 634 ppm | TVOC: 35 ppb [2793s] eCO2: 641 ppm | TVOC: 36 ppb [2794s] eCO2: 641 ppm | TVOC: 36 ppb [2795s] eCO2: 657 ppm | TVOC: 39 ppb [2796s] eCO2: 649 ppm | TVOC: 37 ppb [2797s] eCO2: 649 ppm | TVOC: 37 ppb
This page has been accessed for: Today: 3, Until now: 326