drivers.SEN66.adafruit_sen6x

Low-level CircuitPython-style driver for the Sensirion SEN6x sensor family.

This module is the vendored Adafruit CircuitPython driver for the Sensirion SEN6x environmental sensor node (SEN60, SEN63C, SEN65, SEN66, and SEN68), lightly adapted to talk to an smbus2.SMBus handle on Linux/Raspberry Pi instead of a CircuitPython busio.I2C object. It implements the Sensirion I2C command protocol directly: 16-bit command IDs, big-endian word payloads, and the per-word CRC8 (polynomial 0x31, init 0xFF) required by every Sensirion air-quality sensor.

The SEN6x base class provides commands shared across the whole family (start/stop measurement, data_ready, status register, fan cleaning, serial number, firmware version, SHT heater, …). The SEN66 subclass adds the SEN66-specific measurement, raw-value, number-concentration, temperature compensation, VOC/NOx algorithm tuning, and CO2 (ambient pressure, altitude, FRC, ASC) commands.

Example

Bring up a SEN66 on Linux I2C bus 1:

from smbus2 import SMBus
from drivers.SEN66 import adafruit_sen6x

bus = SMBus(1)                                  # doctest: +SKIP
sensor = adafruit_sen6x.SEN66(bus)              # doctest: +SKIP
sensor.start_measurement()                      # doctest: +SKIP
while not sensor.data_ready:                    # doctest: +SKIP
    pass                                        # doctest: +SKIP
readings = sensor.all_measurements()            # doctest: +SKIP

Note

The SEN6x family lives at I2C address 0x6B for the SEN63C, SEN65, SEN66, and SEN68 variants (constant SEN6X_I2C_ADDRESS) and at 0x6C for the legacy SEN60 (constant SEN60_I2C_ADDRESS). All commands are 16-bit big endian and most must be followed by a fixed execution-time delay before the host may read the response; the timing constants (_TIME_*) encode those delays directly from the datasheet.

See also

drivers.SEN66.SEN66:

Oizom-side high-level wrapper used by the rest of the firmware.

Attributes

Classes

DeviceStatus

Parsed view of the SEN6x 32-bit device status register.

SEN66

Driver for the Sensirion SEN66 multi-parameter air-quality sensor.

SEN6x

Base class for the Sensirion SEN6x environmental-sensor family.

Module Contents

drivers.SEN66.adafruit_sen6x.SEN60_I2C_ADDRESS = 108
drivers.SEN66.adafruit_sen6x.SEN6X_I2C_ADDRESS = 107
drivers.SEN66.adafruit_sen6x._AMBIENT_PRESSURE = 26400
drivers.SEN66.adafruit_sen6x._CLEAR_DEVICE_STATUS = 53776
drivers.SEN66.adafruit_sen6x._CO2_AUTO_CALIB = 26385
drivers.SEN66.adafruit_sen6x._CO2_STARTUP_TIME = 6.0
drivers.SEN66.adafruit_sen6x._DATA_READY = 514
drivers.SEN66.adafruit_sen6x._DEVICE_STATUS = 53766
drivers.SEN66.adafruit_sen6x._FAN_CLEANING = 22023
drivers.SEN66.adafruit_sen6x._FIRST_MEASUREMENT_DELAY = 1.1
drivers.SEN66.adafruit_sen6x._FORCE_CO2_RECALIBRATION = 26375
drivers.SEN66.adafruit_sen6x._NOX_STARTUP_TIME = 11.0
drivers.SEN66.adafruit_sen6x._NOX_TUNING = 24801
drivers.SEN66.adafruit_sen6x._PRODUCT_NAME = 53268
drivers.SEN66.adafruit_sen6x._READ_NUMBER_CONCENTRATION = 790
drivers.SEN66.adafruit_sen6x._RESET = 54020
drivers.SEN66.adafruit_sen6x._SEN66_READ_MEASUREMENT = 768
drivers.SEN66.adafruit_sen6x._SEN66_READ_RAW_VALUES = 1029
drivers.SEN66.adafruit_sen6x._SENSOR_ALTITUDE = 26422
drivers.SEN66.adafruit_sen6x._SENSOR_STARTUP_TIME = 1.0
drivers.SEN66.adafruit_sen6x._SERIAL_NUMBER = 53299
drivers.SEN66.adafruit_sen6x._SHT_HEATER = 26512
drivers.SEN66.adafruit_sen6x._START_MEASUREMENT = 33
drivers.SEN66.adafruit_sen6x._STATUS_CO2_1_ERROR = 12
drivers.SEN66.adafruit_sen6x._STATUS_CO2_2_ERROR = 9
drivers.SEN66.adafruit_sen6x._STATUS_FAN_ERROR = 4
drivers.SEN66.adafruit_sen6x._STATUS_GAS_ERROR = 7
drivers.SEN66.adafruit_sen6x._STATUS_HCHO_ERROR = 10
drivers.SEN66.adafruit_sen6x._STATUS_PM_ERROR = 11
drivers.SEN66.adafruit_sen6x._STATUS_RHT_ERROR = 6
drivers.SEN66.adafruit_sen6x._STATUS_SPEED_WARNING = 21
drivers.SEN66.adafruit_sen6x._STOP_MEASUREMENT = 260
drivers.SEN66.adafruit_sen6x._TEMP_ACCELERATION = 24832
drivers.SEN66.adafruit_sen6x._TEMP_OFFSET = 24754
drivers.SEN66.adafruit_sen6x._TIME_CO2_RECALIBRATION = 0.5
drivers.SEN66.adafruit_sen6x._TIME_DATA_READY = 0.02
drivers.SEN66.adafruit_sen6x._TIME_MINIMAL = 0.001
drivers.SEN66.adafruit_sen6x._TIME_READ_MEASUREMENT = 0.02
drivers.SEN66.adafruit_sen6x._TIME_RESET = 1.2
drivers.SEN66.adafruit_sen6x._TIME_SHT_HEATER = 1.3
drivers.SEN66.adafruit_sen6x._TIME_STANDARD = 0.02
drivers.SEN66.adafruit_sen6x._TIME_START_MEASUREMENT = 0.05
drivers.SEN66.adafruit_sen6x._TIME_STOP_MEASUREMENT = 1.0
drivers.SEN66.adafruit_sen6x._UNKNOWN_VALUE = 65535
drivers.SEN66.adafruit_sen6x._VERSION = 53504
drivers.SEN66.adafruit_sen6x._VOC_STATE = 24961
drivers.SEN66.adafruit_sen6x._VOC_TUNING = 24784
drivers.SEN66.adafruit_sen6x.__repo__ = 'https://github.com/adafruit/Adafruit_CircuitPython_SEN6x.git'
drivers.SEN66.adafruit_sen6x.__version__ = '0.0.0+auto.0'