新闻详情

新闻详情

首页 / 资讯中心 / 详情

Tasmota 中的 ScioSense ENS16x 驱动库:ENS160/ENS161 四通道 MOX 气体传感器 I2C 使用指南

发布时间:2026/9/13 15:42:27来源:尧图网络
Tasmota 中的 ScioSense ENS16x 驱动库:ENS160/ENS161 四通道 MOX 气体传感器 I2C 使用指南
Tasmota 中的 ScioSense ENS16x 驱动库ENS160/ENS161 四通道 MOX 气体传感器 I2C 使用指南【免费下载链接】TasmotaAlternative firmware for ESP8266 and ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at项目地址: https://gitcode.com/GitHub_Trending/ta/Tasmota导读本文以 ScioSense_ENS16x 库的 README 为骨架系统讲解 ENS160 与 ENS161 数字气体传感器的驱动原理、Arduino 库安装与示例编译方法并结合 Tasmota 固件仓库中 xsns_111_ens16x.ino 的实现说明如何在 Tasmota 中启用该传感器并通过 MQTT/Web UI 读取 TVOC、eCO2 与 AQI 数据。读完本文你将掌握 ENS16x 的寄存器模型与操作模式、库 API 的调用方式以及从库到 Tasmota 驱动层的完整落地路径。一、ENS16x 芯片与库的基本情况ENS16x 是 ScioSense 推出的数字式四通道 MOX金属氧化物半导体气体传感器通过 I2C 接口输出TVOC总挥发性有机物与eCO2等效 CO2指标。该 Arduino 库实现了对ENS160与ENS161两款芯片的驱动并附带示例程序驱动代码源自芯片厂商 ScioSense 官方提供的参考实现基于应用笔记ENS160 Software Integration见 ScioSense_ENS16x.h 头注释。芯片的电气约束需要注意README 明确给出属于硬件设计红线参数取值范围说明供电电压1.71V .. 1.98V典型 1.8V不能直接接 3.3V/5V 电源IO 电压1.71V .. 3.6V需要电平转换或使用支持 1.8V IO 的主控这意味着在常见的 3.3V 系统中接入 ENS16x 时需要为芯片供电与 SDA/SCL 信号线分别做电平适配否则可能损坏芯片或导致通信异常。二、库的目录结构与版本信息该库在 Tasmota 仓库中的位置为lib/lib_i2c/ScioSense_ENS16x/共 6 个文件文件作用src/ScioSense_ENS16x.h类声明、寄存器与常量定义、API 原型src/ScioSense_ENS16x.cpp驱动实现基于 Arduino Wire 库README.md官方使用说明本文主体library.propertiesArduino 库元数据版本 8.0.0作者 Christoph Friese维护者 ScioSensekeywords.txtArduino IDE 语法高亮关键字映射LICENSE.mdMIT 开源协议从 library.properties 可以看到该库定位为Device Control类别、architectures*跨平台其核心能力描述为执行单次测量并取回测量数据。三、库的安装Arduino IDE 方式README 给出的是标准 Arduino 库安装流程前提是已安装 Arduino IDE且库目录位于默认位置README 示例路径为C:\Users\user\Documents\Arduino\libraries获取库源码压缩包ZIP在 Arduino IDE 中执行Sketch Include Library Manage Libraries...浏览到刚下载的 ZIP 文件完成安装安装完成后README 应位于...\Arduino\libraries\ScioSense_ENS16x\README.md说明库已就位。提示在 Tasmota 项目中并不需要手动安装该库——仓库已将其内置在 lib/lib_i2c/ScioSense_ENS16x 下编译时由 PlatformIO 自动引入详见第五、六节。四、编译示例工程README 提供的示例编译步骤重新启动 Arduino IDE打开File Example Examples from Custom Libraries ENS16x ENS16xbasic_normal在Tools Board中选择正确的开发板执行Sketch Verify/Compile。示例ENS16xbasic_normal演示了初始化 → 设置工作模式 → 周期读取预测值的最小可用链路与库 API 一一对应见下节。五、库 API 与底层实现源码级讲解5.1 类与构造核心类是ScioSense_ENS16x头文件。默认构造参数为从地址ENS16x_I2CADDR_0即0x52芯片支持两个 I2C 地址由 ADDR 引脚电平决定#define ENS16x_I2CADDR_0 0x52 // ADDR low #define ENS16x_I2CADDR_1 0x53 // ADDR high库默认编译时定义了ENS16x_DISABLE_ENHANCED_FEATURES从而屏蔽自定义模式与引脚构造等高级特性减小代码体积。5.2 初始化begin()bool begin(bool debug false);调用链为_i2c_init()→reset()→checkPartID()→setMode(IDLE)→clearCommand()→getFirmware()见 ScioSense_ENS16x.cpp。关键点上电/复位后需等待ENS16x_BOOTING10mscheckPartID()读取PART_ID寄存器 0x000x0160 ENS1600x0161 ENS161并据此记录_revENS16x0 表示 ENS1601 表示 ENS161只有 I2C 通信正常且 PART_ID 匹配时才返回true可用于探测传感器是否存在。5.3 工作模式setMode()bool setMode(uint8_t mode);头文件定义了如下模式常量常量值含义ENS16x_OPMODE_DEP_SLEEP0x00深度睡眠ENS16x_OPMODE_IDLE0x01空闲ENS16x_OPMODE_STD0x02标准连续测量ENS161_OPMODE_LP0x03低功耗仅 ENS161 有效ENS16x_OPMODE_CUSTOM0xC0自定义测量序列ENS16x_OPMODE_RESET0xF0软件复位实现上cpp L197-L213做了防护若在 ENS160_revENS16x 0上请求低功耗模式会直接拒绝写入并返回失败。5.4 测量与读取bool measure(bool waitForNew true);measure()轮询DATA_STATUS0x20寄存器直到NEWDAT位置位后一次性读取 AQI、TVOC、eCO2 数据0x21/0x22/0x24仅当数据就绪时返回true。若为 ENS161固件主版本 6还会额外读取 AQI500_data_aqis见 cpp L288-L326。读取 API 一览方法返回说明getAQI()uint8_tAQI 指数ENS160getAQIS()uint16_tAQI500ENS161getTVOC()uint16_tTVOC单位 ppbgeteCO2()uint16_teCO2单位 ppmgetHP0()..getHP3()uint32_t四个热板MOX 通道原始电阻getHP0BL()..getHP3BL()uint32_t四个热板基线电阻getMISR()uint8_t传感器状态码getMajorRev()/getMinorRev()/getBuild()uint8_t固件版本号5.5 环境补偿set_envdata()set_envdata(float t, float h)将外部温湿度t 单位 °C、h 单位 %RH按 ENS210 格式编码(t273.15)*64、h*512写入TEMP_IN/RH_IN寄存器用于 MOX 测量的温湿度补偿——实际项目中常配合 ENS210 温度/湿度传感器使用。5.6 自定义模式高级特性在未禁用ENHANCED_FEATURES的编译配置下可用initCustomMode(stepNum)addCustomStep(time, measureHP0..3, tempHP0..3)定义多步测量序列如不同热板温度与采样时序通过 GPR 寄存器0x40/0x48写入并由GPR_READ_7的 ACK 位确认每步完成cpp L217-L285。六、在 Tasmota 固件中使用 ENS16x6.1 启用编译开关Tasmota 通过 my_user_config.h 中的USE_ENS16x宏启用该传感器注释标注为[I2cDriver85]I2C 地址 0x52 与 0x53ESP8266 侧约增加 1.9kB 代码 / 12B RAM// #define USE_ENS16x // [I2cDriver85] Enable ENS160 and ENS161 sensor (I2C addresses 0x52 and 0x53)ESP32 配置同样位于 tasmota_configurations_ESP32.htasmota_configurations.h 中也有对应条目。设备注册表 I2CDEVICES.md 中编号 84 的行记录了该驱动84 | USE_ENS16x | xsns_111 | ENS16x | 0x52 - 0x53 | Gas (TVOC, eCO2) and air quality sensor6.2 驱动层实现要点Tasmota 侧驱动为 tasmota/tasmota_xsns_sensor/xsns_111_ens16x.ino编号 XSNS_111它直接实例化本库对象探测ens16xDetect()依次扫描 0x52、0x53 两个地址最多挂载 2 个传感器ENS16x_MAX_COUNT 2对每个地址执行new ScioSense_ENS16x(addr)→begin()→setMode(ENS16x_OPMODE_STD)成功后登记到ENS16xData[]周期采样ens16xUpdate()每 5 秒ENS16x_EVERYNSECONDS调用一次measure()并缓存 TVOC/eCO2/AQIS连续失败超过 6 次约 30 秒会重新begin()并恢复标准模式实现故障自恢复数据输出ens16xShow()将数据写入 JSONEN16X:{AQIS:..,ECO2:..,TVOC:..}供 MQTTTele主题上报同时在 Web UI 传感器页显示 AQI / eCO2 / TVOC带 ppb/ppm 单位。由此接入 Tasmota 后无需编写任何业务代码即可通过 MQTT 或 Web 界面持续观测空气质量这正是 README 中库能力单次测量并取回数据在固件层的工程化复用。6.3 接线与注意事项结合 README 的电压约束与驱动代码ENS16x 的 SDA/SCL 接到主控对应 I2C 引脚ESP8266 通常为 GPIO4/GPIO5ESP32 可用setI2C(sda, scl)重定义引脚ADDR 引脚决定从地址低0x52高0x53务必确保 VDD 在 1.71–1.98V、IO 电平在 1.71–3.6V 范围内。七、小结ScioSense ENS16x 库为 ENS160/ENS161 提供了完整、可移植的 I2C 驱动从 PART_ID 校验、操作模式切换、预测值测量到环境补偿与自定义序列API 分层清晰在 Tasmota 中它作为 xsns_111_ens16x.ino 的底层依赖被直接调用让 TVOC/eCO2/AQI 数据以标准 Tele 消息和 Web UI 形式对外呈现。开发者在做室内空气质量监测项目时可先按 README 的 Arduino 流程用ENS16xbasic_normal示例验证硬件再通过 Tasmota 的USE_ENS16x编译开关一键接入现有物联网链路。【免费下载链接】TasmotaAlternative firmware for ESP8266 and ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at项目地址: https://gitcode.com/GitHub_Trending/ta/Tasmota创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Vishay 1200V SiC MOSFET模块技术解析与应用指南 2026/9/13 16:18:31

Vishay 1200V SiC MOSFET模块技术解析与应用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AI Agent技术解析:大模型时代的智能决策系统 2026/9/13 16:18:31

AI Agent技术解析:大模型时代的智能决策系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
SWAT模型校准与验证:从原理到实践的关键技术解析 2026/9/13 16:18:31

SWAT模型校准与验证:从原理到实践的关键技术解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
SkillOpt:Markdown技能链如何实现大模型黑盒提示词优化 2026/9/13 16:18:31

SkillOpt:Markdown技能链如何实现大模型黑盒提示词优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Vitis HLS入门:从零跑通第一个向量累加例程的完整流程与经验 2026/9/13 16:18:31

Vitis HLS入门:从零跑通第一个向量累加例程的完整流程与经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
数论基础与密码学应用:从素数到RSA算法 2026/9/13 16:15:31

数论基础与密码学应用:从素数到RSA算法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞