ens160_driver

A MicroPython library to control ENS160 digital metal-oxide multi-gas sensor

1.0.0 hogeiha Updated At: 2026-05-08
Install Package
Local Install
mpremote mip install https://upypi.net/pkgs/ens160_driver/1.0.0
Remote Install
mip.install("https://upypi.net/pkgs/ens160_driver/1.0.0")
Version Selection
README

ENS160 MicroPython Driver

ENS160 数字金属氧化物多气体传感器驱动,支持 eCO2、TVOC、AQI 测量,基于 sensor_pack_2 I2C 适配器封装。

传感器简介

参数
型号 ENS160
制造商 ScioSense
通信接口 I2C
I2C 地址 0x52 / 0x53
供电电压 1.71V – 1.89V (VDD), 1.71V – 3.6V (VDDIO)
测量参数 eCO2 (400–65000 ppm), TVOC (0–65000 ppb), AQI (1–5)

文件结构

ens160_driver/
├── code/
   ├── ens160sciosense.py   # 驱动文件
   ├── main.py              # 测试示例
   └── sensor_pack_2/       # 依赖包
├── package.json
├── README.md
└── LICENSE

依赖

快速开始

from machine import Pin, SoftI2C
from sensor_pack_2.bus_service import I2cAdapter
import ens160sciosense

i2c = SoftI2C(sda=Pin(4), scl=Pin(5), freq=400_000)
adapter = I2cAdapter(i2c)
sensor = ens160sciosense.Ens160(adapter, address=0x52)

sensor.start_measurement(start=True)

import time
time.sleep_ms(sensor.get_conversion_cycle_time())

while True:
    data = next(sensor)
    if data:
        print("eCO2:", data.eco2, "ppm  TVOC:", data.tvoc, "ppb  AQI:", data.aqi)
    time.sleep_ms(1000)

API 参考

构造函数

Ens160(adapter, address=0x52, check_crc=True)
参数 类型 说明
adapter I2cAdapter I2C 适配器实例
address int I2C 地址,0x52 或 0x53
check_crc bool 是否启用 CRC 校验,默认 True

主要方法

方法 返回类型 说明
get_id() int 读取 Part Number(期望值 0x0160)
soft_reset() 软件复位
start_measurement(start=True) 启动/暂停连续测量
get_measurement_value(index) int / ens160_air_params 0=eCO2, 1=TVOC, 2=AQI, None=全部
get_data_status(raw=True) int / ens160_status 读取数据就绪状态
get_config(raw=True) int / ens160_config 读取中断配置
set_config(cfg) 写入中断配置,接受 int 或 ens160_config
set_ambient_temp(celsius) 写入温度补偿值(°C)
set_humidity(rh) 写入湿度补偿值(%,0–100)
get_firmware_version() ens160_firmware_version 读取固件版本
get_conversion_cycle_time() int 返回测量周期(ms),固定 1000
is_continuously_mode() bool 是否处于连续测量模式
__next__() ens160_air_params / None 迭代器,新数据就绪时返回测量值

数据结构

ens160_air_params(eco2, tvoc, aqi)
# eco2: eCO2 浓度 [ppm]
# tvoc: TVOC 浓度 [ppb]
# aqi:  空气质量指数 1(优秀)..5(极差)

ens160_status(stat_as, stat_error, validity_flag, new_data, new_gpr)
ens160_config(int_pol, int_cfg, int_gpr, int_dat, int_en)
ens160_firmware_version(major, minor, release)

温湿度补偿

ENS160 支持外部温湿度补偿以提高测量精度:

sensor.set_ambient_temp(25.0)   # 摄氏度
sensor.set_humidity(50)          # 相对湿度 %

AQI 等级说明

AQI 等级 eCO2 范围
1 优秀 400–600 ppm
2 良好 600–800 ppm
3 中等 800–1000 ppm
4 较差 1000–1500 ppm
5 极差 > 1500 ppm

License

MIT License. Copyright (c) 2022 Roman Shevchik, 2026 FreakStudio.

File List
Name Size Type
LICENSE 1.0KB File
README.md 3.5KB Doc
code/ens160sciosense.py 20.8KB Python
code/main.py 3.3KB Main
code/sensor_pack_2/__init__.py 57B Main
code/sensor_pack_2/base_sensor.py 4.7KB Python
code/sensor_pack_2/bitfield.py 3.4KB Python
code/sensor_pack_2/bus_service.py 5.3KB Python
code/sensor_pack_2/crc_mod.py 640B Python
package.json 833B Conf