{
  "metadata": {
    "id": "adafruit-ens161-breakout",
    "name": "Adafruit ENS161 MOX Gas Sensor - STEMMA QT / Qwiic",
    "type": "sensor",
    "categories": [
      "sensor"
    ],
    "description": "ScioSense ENS161 MOX multi-gas sensor on an Adafruit STEMMA QT / SparkFun Qwiic breakout. Designed for indoor air-quality monitoring outputs (eTVOC, eCO2, AQI) over I2C, with optional SPI via exposed pins. Breakout adds 3.3V regulator + level shifting for 3–5V-friendly usage.",
    "manufacturer": "Adafruit",
    "part_number": "6431",
    "datasheet_url": "https://cdn-shop.adafruit.com/product-files/6431/ENS161-Datasheet.pdf",
    "tags": [
      "ens161",
      "sciosense",
      "mox",
      "gas",
      "etvoc",
      "eco2",
      "aqi",
      "i2c",
      "spi",
      "stemmaqt",
      "qwiic",
      "0x53",
      "0x52"
    ],
    "schema_version": "1.1.0",
    "definition_revision": "0.1"
  },
  "domains": [
    {
      "domain": "electrical",
      "power_domains": [
        {
          "id": "vin_3to5",
          "name": "VIN (3–5 V) to onboard regulation",
          "nominal_voltage_V": 5,
          "voltage_range_V": [
            3,
            5
          ],
          "max_current_mA": 100,
          "isolation_type": "non_isolated",
          "ground_reference": "common",
          "description": "Breakout VIN input (3–5V friendly). Peak ENS161 internal current can reach ~45mA for <5ms depending on mode; breakout input budget set conservatively."
        }
      ],
      "resources": [
        {
          "id": "vin",
          "name": "VIN",
          "functions": [
            {
              "name": "power_input",
              "signal_class": "power"
            }
          ],
          "connector_type": "pin_header",
          "power_domain_id": "vin_3to5"
        },
        {
          "id": "gnd",
          "name": "GND",
          "functions": [
            {
              "name": "ground",
              "signal_class": "ground"
            }
          ],
          "connector_type": "pin_header",
          "power_domain_id": "vin_3to5"
        },
        {
          "id": "pin_1",
          "name": "pin_1",
          "functions": [
            {
              "name": "i2c_sda",
              "signal_class": "data"
            },
            {
              "name": "spi_mosi",
              "signal_class": "data"
            }
          ],
          "connector_type": "pin_header",
          "notes": "ENS161 SDA pin is open-drain in I2C mode."
        },
        {
          "id": "pin_2",
          "name": "pin_2",
          "functions": [
            {
              "name": "i2c_scl",
              "signal_class": "clock"
            },
            {
              "name": "spi_sck",
              "signal_class": "clock"
            }
          ],
          "connector_type": "pin_header"
        },
        {
          "id": "pin_3",
          "name": "pin_3",
          "functions": [
            {
              "name": "spi_miso",
              "signal_class": "data"
            },
            {
              "name": "addr",
              "signal_class": "data"
            }
          ],
          "connector_type": "pin_header"
        },
        {
          "id": "pin_4",
          "name": "pin_4",
          "functions": [
            {
              "name": "VDD",
              "signal_class": "power"
            }
          ],
          "connector_type": "pin_header",
          "notes": "VDD is the power supply for the ENS161."
        },
        {
          "id": "pin_5",
          "name": "pin_5",
          "functions": [
            {
              "name": "Vddio",
              "signal_class": "power"
            }
          ],
          "connector_type": "pin_header",
          "notes": "Vddio is the power supply for the ENS161."
        },
        {
          "id": "pin_6",
          "name": "pin_6",
          "functions": [
            {
              "name": "INTn",
              "signal_class": "data"
            }
          ],
          "connector_type": "pin_header",
          "notes": "INTn is the interrupt for the ENS161."
        },
        {
          "id": "pin_7",
          "name": "pin_7",
          "functions": [
            {
              "name": "CSn",
              "signal_class": "data"
            }
          ],
          "connector_type": "pin_header",
          "notes": "CSn is the chip select for the ENS161."
        },
        {
          "id": "pin_8",
          "name": "pin_8",
          "functions": [
            {
              "name": "GND",
              "signal_class": "ground"
            }
          ],
          "connector_type": "pin_header",
          "notes": "GND is the ground for the ENS161."
        }
      ],
      "interfaces": [
        {
          "id": "power_in",
          "name": "Power input",
          "protocol": {
            "type": "power",
            "role": "input"
          },
          "requires": [
            {
              "function": "power_input",
              "count": 1
            },
            {
              "function": "ground",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 2,
            "requires_matching_voltage_domain": false
          },
          "description": "Provide 3–5V to VIN (or via STEMMA QT) to power the breakout."
        },
        {
          "id": "i2c_slave",
          "name": "I2C (slave)",
          "protocol": {
            "type": "i2c",
            "role": "slave"
          },
          "requires": [
            {
              "function": "i2c_sda",
              "count": 1,
              "shareable_with": [
                "pin_2"
              ]
            },
            {
              "function": "i2c_scl",
              "count": 1,
              "shareable_with": [
                "pin_1"
              ]
            }
          ],
          "protocol_max_freq_Hz": 1000000,
          "constraints": {
            "max_connections": 8,
            "requires_matching_voltage_domain": true
          },
          "description": "ENS161 is an I2C slave. Address is 0x52 when ADDR (MISO/ADDR) is low at power-up, or 0x53 when high."
        },
        {
          "id": "spi_slave",
          "name": "SPI (slave)",
          "protocol": {
            "type": "spi",
            "role": "slave"
          },
          "requires": [
            {
              "function": "spi_mosi",
              "count": 1
            },
            {
              "function": "spi_miso",
              "count": 1
            },
            {
              "function": "spi_sck",
              "count": 1
            }
          ],
          "protocol_max_freq_Hz": 10000000,
          "constraints": {
            "max_connections": 1,
            "requires_matching_voltage_domain": true
          },
          "description": "SPI slave up to 10MHz. CSn low selects SPI mode (latched until next power-on reset)."
        },
        {
          "id": "interrupt",
          "name": "Interrupt",
          "protocol": {
            "type": "interrupt",
            "role": "input"
          },
          "requires": [
            {
              "function": "INTn",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 1,
            "requires_matching_voltage_domain": true
          },
          "description": "Interrupt is the interrupt for the ENS161."
        },
        {
          "id": "chip_select",
          "name": "Chip select",
          "protocol": {
            "type": "chip_select",
            "role": "input"
          },
          "requires": [
            {
              "function": "CSn",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 1,
            "requires_matching_voltage_domain": true
          },
          "description": "Chip select is the chip select for the ENS161."
        }
      ],
      "supply_voltage_V": [
        3,
        5
      ],
      "metadata": {
        "i2c_addresses_7bit": [
          "0x52",
          "0x53"
        ],
        "operating_temp_C": [
          -40,
          85
        ],
        "operating_humidity_percent": [
          5,
          95
        ]
      }
    },
    {
      "domain": "mechanical",
      "package_type": "PCB Module",
      "dimensions_mm": {
        "length": 25.5,
        "width": 17.7,
        "height": 4.7
      },
      "resources": [],
      "interfaces": []
    }
  ],
  "design_rules": [
    "Initial start-up: after first power-on, eCO2/eTVOC/AQI are intended to be usable after ~1 hour in Standard mode; Low Power modes may require 3–24 hours for first-time conditioning.",
    "Warm-up after idle/power-off: typical ~3 minutes in Standard mode; Low Power modes may take up to ~60 minutes.",
    "I2C address is fixed to 0x52/0x53 selected by ADDR (MISO/ADDR) state at power-up—avoid address conflicts on shared buses.",
    "If using SPI, asserting CSn low selects SPI and disables I2C until the next power-on reset."
  ],
  "warnings": [
    "ENS161 is not designed for safety-critical or life-protecting applications.",
    "Operate in non-condensing humidity; aggressive/poisonous gas exposure and off-condition environments can affect performance and lifetime."
  ],
  "artifacts": [
    {
      "id": "art_primary_datasheet",
      "name": "Primary Datasheet",
      "type": "datasheet",
      "url": "https://cdn-shop.adafruit.com/product-files/6431/ENS161-Datasheet.pdf"
    },
    {
      "id": "art_learn_guide",
      "name": "Learn Guide",
      "type": "link",
      "url": "https://learn.adafruit.com/adafruit-ens161-mox-gas-sensor/overview"
    },
    {
      "id": "art_product_page",
      "name": "Product Page",
      "type": "link",
      "url": "https://www.adafruit.com/product/6431"
    }
  ]
}