{
  "metadata": {
    "id": "ens161",
    "name": "ScioSense ENS161 MOX Gas Sensor",
    "type": "sensor",
    "description": "Digital metal-oxide multi-gas sensor with on-chip eCO2, eTVOC, AQI processing, humidity and temperature compensation, and selectable I2C or SPI host interfaces.",
    "manufacturer": "ScioSense",
    "part_number": "ENS161-BLGM",
    "datasheet_url": "https://www.sciosense.com/wp-content/uploads/2024/12/ENS161-Datasheet.pdf",
    "tags": [
      "ens161",
      "mox",
      "gas",
      "iaq",
      "aqi",
      "etvoc",
      "eco2",
      "i2c",
      "spi",
      "0x52",
      "0x53"
    ],
    "schema_version": "1.4.0",
    "version": "1.0",
    "taxonomy": [
      "sensor.gas"
    ]
  },
  "domains": [
    {
      "domain": "electrical",
      "power_domains": [
        {
          "id": "vdd_core",
          "name": "VDD core",
          "nominal_voltage_V": 1.8,
          "voltage_range_V": [
            1.71,
            1.98
          ],
          "isolation_type": "non_isolated",
          "ground_reference": "common",
          "description": "Main sensor supply. Must not drop below 1.71 V during operation."
        },
        {
          "id": "vddio",
          "name": "VDDIO interface",
          "nominal_voltage_V": 3.3,
          "voltage_range_V": [
            1.71,
            3.6
          ],
          "isolation_type": "non_isolated",
          "ground_reference": "common",
          "description": "Digital interface supply for I2C/SPI and host-level compatibility."
        }
      ],
      "resources": [
        {
          "id": "pin1_mosi_sda",
          "name": "MOSI / SDA",
          "description": "SPI MOSI or I2C serial data",
          "functions": [
            {
              "name": "SPI_MOSI",
              "direction": "sink",
              "signal_class": "data"
            },
            {
              "name": "I2C_SDA",
              "direction": "bidirectional",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "notes": "Open-drain in I2C mode; requires an external pull-up."
        },
        {
          "id": "pin2_sclk_scl",
          "name": "SCLK / SCL",
          "description": "SPI serial clock or I2C serial clock",
          "functions": [
            {
              "name": "SPI_SCLK",
              "direction": "sink",
              "signal_class": "clock"
            },
            {
              "name": "I2C_SCL",
              "direction": "sink",
              "signal_class": "clock"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin3_miso_addr",
          "name": "MISO / ADDR",
          "description": "SPI MISO or I2C address-select strap",
          "functions": [
            {
              "name": "SPI_MISO",
              "direction": "source",
              "signal_class": "data"
            },
            {
              "name": "I2C_ADDR",
              "direction": "config",
              "signal_class": "static_config"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "notes": "ADDR high selects I2C address 0x53; ADDR low selects 0x52."
        },
        {
          "id": "pin4_vdd",
          "name": "VDD",
          "description": "Main supply voltage",
          "functions": [
            {
              "name": "VDD_IN",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "vdd_core",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin5_vddio",
          "name": "VDDIO",
          "description": "Digital interface supply",
          "functions": [
            {
              "name": "VDDIO_IN",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin6_intn",
          "name": "INTn",
          "description": "Interrupt output to host",
          "functions": [
            {
              "name": "INT_N",
              "direction": "source",
              "signal_class": "interrupt"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin7_csn",
          "name": "CSn",
          "description": "SPI chip select and bus-mode select",
          "functions": [
            {
              "name": "SPI_CS_N",
              "direction": "sink",
              "signal_class": "chip_select"
            },
            {
              "name": "BUS_MODE_SELECT",
              "direction": "config",
              "signal_class": "static_config"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "notes": "CSn high selects I2C mode; CSn low selects SPI mode."
        },
        {
          "id": "pin8_vss",
          "name": "VSS_1",
          "description": "Ground",
          "functions": [
            {
              "name": "GND",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "vdd_core",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin9_vss",
          "name": "VSS_2",
          "description": "Ground",
          "functions": [
            {
              "name": "GND",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "vdd_core",
          "connector_type": "surface_pad"
        }
      ],
      "interfaces": [
        {
          "id": "i2c_target",
          "name": "I2C target",
          "protocol": {
            "type": "i2c",
            "role": "target"
          },
          "requires": [
            {
              "function": "I2C_SDA",
              "count": 1,
              "shareable_with": [
                "I2C_SCL"
              ]
            },
            {
              "function": "I2C_SCL",
              "count": 1,
              "shareable_with": [
                "I2C_SDA"
              ]
            },
            {
              "function": "I2C_ADDR",
              "count": 1
            },
            {
              "function": "BUS_MODE_SELECT",
              "count": 1
            }
          ],
          "timing": {
            "max_i2c_freq_hz": 1000000
          },
          "description": "CSn must be held high for I2C mode. ADDR high selects 0x53; ADDR low selects 0x52."
        },
        {
          "id": "spi_target",
          "name": "SPI target",
          "protocol": {
            "type": "spi",
            "role": "target"
          },
          "requires": [
            {
              "function": "SPI_SCLK",
              "count": 1
            },
            {
              "function": "SPI_MOSI",
              "count": 1
            },
            {
              "function": "SPI_MISO",
              "count": 1
            },
            {
              "function": "SPI_CS_N",
              "count": 1
            }
          ],
          "description": "CSn low selects SPI mode."
        },
        {
          "id": "power_supply",
          "name": "Power supply",
          "protocol": {
            "type": "power_supply",
            "role": "supply"
          },
          "requires": [
            {
              "function": "VDD_IN",
              "count": 1
            },
            {
              "function": "VDDIO_IN",
              "count": 1
            },
            {
              "function": "GND",
              "count": 2
            }
          ],
          "description": "Separate VDD and VDDIO rails with a shared ground reference."
        }
      ],
      "metadata": {
        "i2c_addresses_7bit": [
          "0x52",
          "0x53"
        ],
        "i2c_max_frequency_hz": 1000000,
        "spi_supported": true,
        "peak_current_mA": 45,
        "operating_modes": [
          "deep_sleep",
          "idle",
          "standard",
          "low_power",
          "ultra_low_power"
        ],
        "on_chip_outputs": [
          "AQI-UBA",
          "AQI-S",
          "eTVOC",
          "eCO2",
          "raw sensor resistance"
        ]
      }
    },
    {
      "domain": "mechanical",
      "resources": [],
      "interfaces": [],
      "package_type": "9-pin LGA",
      "dimensions_mm": {
        "length": 3,
        "width": 3,
        "height": 0.83
      },
      "metadata": {
        "mounting_method": "surface_mount",
        "terminal_pitch_mm": 1.05,
        "lead_count": 9
      }
    },
    {
      "domain": "thermal",
      "resources": [],
      "interfaces": [],
      "operating_temperature_C": [
        -40,
        85
      ],
      "metadata": {
        "storage_temperature_C": [
          -40,
          125
        ],
        "recommended_relative_humidity_percent": [
          5,
          95
        ],
        "non_condensing_only": true
      }
    }
  ],
  "design_rules": [
    "Provide separate VDD and VDDIO rails within spec, and size the power path for up to 45 mA peak current during active-mode transitions.",
    "Hold CSn high for I2C mode or low for SPI mode; in I2C mode strap ADDR high for 0x53 or low for 0x52 before the host starts communication.",
    "Add external I2C pull-ups referenced to VDDIO and follow the vendor's recommended I2C/SPI operation circuitry for level compatibility.",
    "Operate the gas sensor in the recommended non-condensing 5% to 95% RH environment and feed valid humidity and temperature compensation values when available.",
    "Keep the gas opening unobstructed and avoid PCB contamination, coatings, or enclosure features that trap solvents or condensed moisture around the package."
  ],
  "usage_notes": "ENS161 is a bare gas-sensor IC for direct PCB integration. Unlike the earlier ENS160 integration pattern that often relies on external libraries, the ENS161 performs AQI, eTVOC, eCO2, humidity compensation, and baseline handling on-chip, which makes it attractive for low-power hosts that still need user-facing air-quality outputs.",
  "application_examples": [
    "Indoor air-quality nodes and HVAC control.",
    "Low-power wearables or mobiles that need VOC-driven air-quality feedback.",
    "Air purifiers, cooker hoods, and appliance airflow control."
  ],
  "compatibility_notes": "The ENS161 shares the ENS16x family communication model and address options with ENS160, but the output processing stack is expanded and optimized for lower-power operation. It is not pin-compatible with a ready-made breakout; host designs must provide the core VDD rail separately from VDDIO.",
  "warnings": [
    "The ENS161 is not designed for safety-critical or life-protecting applications.",
    "Gas sensing performance can degrade outside the recommended non-condensing humidity range or when the package is contaminated by flux residue, coatings, or solvent exposure.",
    "This is a PCB-integration component, not a breakout board; both supply rails, bus pull-ups, and mode/address straps must be designed in explicitly."
  ]
}