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¶
Parsed view of the SEN6x 32-bit device status register. |
|
Driver for the Sensirion SEN66 multi-parameter air-quality sensor. |
|
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'¶