{
  "metadata": {
    "id": "sgp41",
    "name": "Sensirion SGP41 VOC and NOx Gas Sensor",
    "type": "sensor",
    "description": "Digital dual-channel MOx indoor-air-quality sensor with separate VOC and NOx raw signals, a fixed-address I2C interface, and host-side Gas Index Algorithm support.",
    "manufacturer": "Sensirion",
    "part_number": "SGP41-D-R4",
    "datasheet_url": "https://sensirion.com/media/documents/5FE8673C/61E96F50/Sensirion_Gas_Sensors_Datasheet_SGP41.pdf",
    "tags": [
      "sgp41",
      "voc",
      "nox",
      "air-quality",
      "gas-sensor",
      "i2c",
      "mox",
      "indoor-air-quality",
      "humidity-compensation",
      "gas-index-algorithm",
      "sraw_voc",
      "sraw_nox",
      "dfn-6",
      "0x59"
    ],
    "schema_version": "1.4.0",
    "version": "1.1",
    "taxonomy": [
      "sensor.gas"
    ]
  },
  "domains": [
    {
      "domain": "electrical",
      "power_domains": [
        {
          "id": "vdd",
          "name": "VDD / VDDH",
          "nominal_voltage_V": 3.3,
          "voltage_range_V": [
            1.7,
            3.6
          ],
          "isolation_type": "non_isolated",
          "ground_reference": "common",
          "description": "Main logic and hotplate supply. Sensirion requires VDD and VDDH to be connected to the same rail."
        }
      ],
      "resources": [
        {
          "id": "pin1_vdd",
          "name": "VDD",
          "description": "Main logic supply input",
          "functions": [
            {
              "name": "VDD_IN",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "vdd",
          "connector_type": "surface_pad",
          "notes": "Decouple with the datasheet RC element and keep the supply network low impedance."
        },
        {
          "id": "pin2_vss",
          "name": "VSS",
          "description": "Ground",
          "functions": [
            {
              "name": "GND",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "vdd",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin3_sda",
          "name": "SDA",
          "description": "I2C serial data",
          "functions": [
            {
              "name": "I2C_SDA",
              "direction": "bidirectional",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "vdd",
          "connector_type": "surface_pad",
          "notes": "Requires an external pull-up to the active I2C bus voltage."
        },
        {
          "id": "pin4_die_pad",
          "name": "Pin 4 / die pad (GND pad)",
          "description": "No signal function; exposed die pad electrically tied to ground and recommended to be soldered for mechanical stability.",
          "functions": [
            {
              "name": "GND_PAD",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "vdd",
          "connector_type": "surface_pad",
          "notes": "Keep the top-side gas opening unobstructed; do not use this feature for optical alignment."
        },
        {
          "id": "pin5_vddh",
          "name": "VDDH",
          "description": "Hotplate supply input",
          "functions": [
            {
              "name": "VDDH_IN",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "vdd",
          "connector_type": "surface_pad",
          "notes": "Tie to the same rail as VDD; Sensirion recommends a local 1 uF capacitor depending on the supply network."
        },
        {
          "id": "pin6_scl",
          "name": "SCL",
          "description": "I2C serial clock",
          "functions": [
            {
              "name": "I2C_SCL",
              "direction": "bidirectional",
              "signal_class": "clock"
            }
          ],
          "power_domain_id": "vdd",
          "connector_type": "surface_pad",
          "notes": "Supports I2C standard-mode and fast-mode up to 400 kHz and requires an external pull-up."
        }
      ],
      "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"
              ]
            }
          ],
          "timing": {
            "max_i2c_freq_hz": 400000
          },
          "description": "Fixed 7-bit I2C address 0x59 with CRC-protected command parameters and returned data words."
        },
        {
          "id": "power_supply",
          "name": "Power supply",
          "protocol": {
            "type": "power_supply",
            "role": "supply"
          },
          "requires": [
            {
              "function": "VDD_IN",
              "count": 1
            },
            {
              "function": "VDDH_IN",
              "count": 1
            },
            {
              "function": "GND",
              "count": 1
            }
          ],
          "description": "Connect VDD and VDDH to the same 1.7 V to 3.6 V supply."
        }
      ],
      "supply_voltage_V": [
        1.7,
        3.6
      ],
      "metadata": {
        "i2c_address_7bit": "0x59",
        "i2c_max_frequency_hz": 400000,
        "i2c_requires_crc8": true,
        "conditioning_required_after_restart": true,
        "conditioning_duration_s": 10,
        "soft_reset_is_i2c_general_call": true,
        "host_compensation_inputs": [
          "relative_humidity",
          "temperature"
        ],
        "humidity_compensation_on_chip": true,
        "raw_output_signals": [
          "SRAW_VOC",
          "SRAW_NOX"
        ],
        "processed_output_signals": [
          "VOC Index",
          "NOx Index"
        ],
        "built_in_self_test_supported": true,
        "serial_number_read_supported": true,
        "sampling_interval_s": {
          "min": 0.5,
          "typ": 1,
          "max": 10
        },
        "power_up_time_ms": {
          "typ": 0.4,
          "max": 0.6
        },
        "soft_reset_time_ms": {
          "typ": 0.4,
          "max": 0.6
        }
      }
    },
    {
      "domain": "mechanical",
      "resources": [],
      "interfaces": [],
      "package_type": "DFN-6",
      "dimensions_mm": {
        "length": 2.44,
        "width": 2.44,
        "height": 0.85
      },
      "metadata": {
        "mounting_method": "surface_mount",
        "terminal_pitch_mm": 0.8,
        "sensor_opening_diameter_mm": 0.8,
        "sensor_opening_position": "top_side_bottom_right_offset",
        "sensor_opening_for_optical_alignment": false,
        "moisture_sensitivity_level": "MSL1"
      }
    },
    {
      "domain": "thermal",
      "resources": [],
      "interfaces": [],
      "operating_temperature_C": [
        -20,
        55
      ],
      "metadata": {
        "storage_temperature_C": [
          -40,
          70
        ],
        "recommended_storage_temperature_C": [
          5,
          30
        ],
        "recommended_operating_temperature_C": [
          -10,
          50
        ],
        "operating_humidity_percent_RH": [
          0,
          90
        ],
        "storage_humidity_percent_RH": [
          0,
          80
        ],
        "supply_current": {
          "idle_uA": {
            "typ": 34,
            "max": 105
          },
          "conditioning_mode_mA": {
            "at_1v8": {
              "typ": 6.5,
              "max": 7.2
            },
            "at_3v3": {
              "typ": 4.2,
              "max": 4.6
            }
          },
          "voc_nox_measurement_mode_mA": {
            "at_1v8": {
              "typ": 4.3,
              "max": 4.8
            },
            "at_3v3": {
              "typ": 3,
              "max": 3.4
            }
          }
        }
      }
    }
  ],
  "design_rules": [
    "Connect VDD and VDDH to the same 1.7 V to 3.6 V rail, decouple VDD with the datasheet RC element, and place the recommended local VDDH capacitor close to the package.",
    "Add external I2C pull-ups sized for the full bus capacitance; the sensor supports 100 kHz and 400 kHz operation and uses CRC-protected command/data words.",
    "After power-up, soft reset, or heater-off, run the conditioning command for 10 seconds from idle mode before relying on VOC+NOx measurements.",
    "Provide current humidity and temperature inputs with each measurement command if you want the on-chip humidity compensation to track real ambient conditions.",
    "Feed SRAW_VOC and SRAW_NOX into Sensirion's gas-index algorithm at a constant sampling interval, typically 1 s unless the algorithm configuration is changed.",
    "Solder pin 4 / die pad (GND pad) to ground for mechanical stability and keep the top-side gas opening clear of coating, labels, tape, adhesive, and enclosure obstructions."
  ],
  "usage_notes": "The SGP41 is a PCB-integration MOx sensor, not a ready-to-wire breakout. It exposes two 16-bit raw signals, SRAW_VOC and SRAW_NOX, over I2C. Sensirion's user-facing VOC Index and NOx Index are derived on the host from those raw values, with on-chip humidity compensation available only when the host sends RH/T inputs in the measurement command.",
  "application_examples": [
    "Indoor air-quality monitors.",
    "Air purifiers and smart fan-control loops.",
    "Demand-controlled ventilation and HVAC room sensors.",
    "Smart thermostats and building automation nodes."
  ],
  "compatibility_notes": "The SGP41 uses a fixed 7-bit I2C address of 0x59 with no address strap, so multiple devices on one host bus require an I2C switch or isolation strategy. Bus voltage must remain within the sensor's 1.7 V to 3.6 V supply range. Raw SRAW_VOC and SRAW_NOX signals are available directly, but stable VOC/NOx index outputs depend on Sensirion's gas-index algorithm and a constant measurement interval, typically 1 s.",
  "warnings": [
    "The SGP41 is designed for indoor air-quality trend sensing and control loops, not for life-safety or regulatory gas alarm functions.",
    "The I2C soft-reset command is a general call, so it can reset other compliant devices on the same bus in addition to the SGP41.",
    "Do not wash the assembled board or expose the sensor opening to liquid contamination, flux residue, strong cleaning agents, or ultrasonic cleaning.",
    "Avoid bright direct illumination from sunlight or artificial light during operation, and do not block the gas opening with labels, foam, or enclosure plastic.",
    "Avoid outgassing silicones, amines, solvents, and uncured adhesives near the sensor opening during assembly, storage, and end-product operation."
  ]
}