15.ENS160传感器使用秘籍:一文看懂多气体检测核心技巧

2024机器人工程专业毕设创新选题50例:从STM32到AIoT的融合实践 本文提供了2024年机器人工程专业毕业设计的50个创新选题,涵盖STM32与AIoT的融合实践。从智慧农业到工业检测,再到机器人感知与控制,这些选题结合了最新的技术趋势,如边缘计算、5G通信和新型传感器应用,旨在帮助学生打造具有实际应用价值的毕业项目。 阅读详情

ENS160是一款基于MOX技术的数字多气体传感器,集成TrueVOC®算法,可直接输出TVOC(ppb)、eCO2(ppm)和AQI(1-5级)等高级空气质量数据,大幅降低主控算力负担。其采用双电源设计(VDD 1.8V核心供电,VDDIO 1.71–3.6V通信供电),实现电平兼容,避免通信失败。硬件上需注意VDD严禁接3.3V以防烧毁。通过STM32 HAL库可轻松实现I2C通信,初始化后进入标准工作模式,读取状态寄存器判断新数据,再获取各参数值,支持低功耗深度睡眠模式切换,适用于智能环境监测系统。

一、ENS160 多气体传感器

1.1 手册

拿到手册,千万不要从第一页死磕。

1.2 主要特性

    ENS160 是一款基于金属氧化物(MOX)技术的数字多气体传感器,内部集成了 4 个独立的传感器元件。

    1.2.1 自带算法,直出高级数据

      • 它最强大的地方在于内部集成了 TrueVOC® 算法,单片机不需要跑复杂的转换库,可以直接从寄存器读取传感器数据。这极大地释放了主控芯片(如 STM32)的算力。

      • 就像大家想吃鱼或鸡肉,我们在市场买完以后不能直接用,因为鱼肉和鸡肉都需要进行处理、剁块以后才能再做。有的是摊主会在用户买完鱼以后帮我们收拾出来,这让我们做饭得到了极大的便利,节省了时间,ENS160对STM32来说就是这样一款传感器,它能对传感器数据进行算法处理,用户直接读就行。

      • 能测量的环境指标有

      TVOC(总挥发性有机物):直接输出浓度,单位是 ppb。

      eCO2(等效二氧化碳):根据人类呼吸和异味推算出的等效 CO2,单位是 ppm。

      AQI-UBA(空气质量指数):直接给出一个 1 到 5 的等级(1 是极好,5 是极差)。

      1.2.2 抗干扰能力

        具备抗湿度和抗臭氧干扰的能力。

        1.2.3 供电极度敏感

          VDD:核心主电源 (Main Supply Voltage)

          它是干什么的:VDD 负责给芯片内部最核心的模块供电,包括内部的微型加热器(Heaters)、ADC 采样电路、以及计算 TrueVOC 算法的数字逻辑大脑。

          电压要求:它的正常工作电压范围被严格限制在 1.71V 到 1.98V(典型值是 1.8V)。

          如果接错:如果随手把它接到了单片机常用的 3.3V 上,过高的电压会瞬间击穿内部脆弱的 1.8V 硅结构,直接烧毁芯片。

          VDDIO:接口通信电源 (Interface Supply Pins)

          它是干什么的:VDDIO (I/O 即 Input/Output) 只负责给芯片对外的通信引脚(比如 I2C 的 SDA/SCL、SPI 的 MOSI/MISO、以及中断引脚 INTn)提供电平参考。

          电压要求(非常宽容):它的允许电压范围是 1.71V 到 3.6V。

          为什么芯片厂商非要这么“麻烦”地设计两个电源?

          为了解决“电平兼容性”。

          随着芯片工艺越来越先进,为了降低功耗和发热,传感器内部的微观电路只能承受很低的电压(比如 1.8V 甚至 1.2V)。所以 ENS160 的 VDD 必须是 1.8V。

          但是,你的主控单片机(比如 STM32)通常是跑在 3.3V 的。如果 ENS160 只有一个 1.8V 的电源,那么它输出的 I²C 高电平最高也只有 1.8V。STM32 去读这个 1.8V 的信号时,可能根本识别不出这是高电平,导致通信完全失败。

          VDDIO 的出现完美解决了这个问题:

          把 ENS160 的 VDDIO 直接接到单片机的 3.3V 电源上。这样一来,ENS160 的内部核心依然在安全的 1.8V 下工作,但它的通信引脚(SDA、SCL)在输出高电平时,会被拉高到 VDDIO 的电压(即 3.3V)。STM32 就能完美接收数据了!

          总结:

          分开设计 VDD 和 VDDIO,相当于芯片自带了一个“电平转换器”。硬件工程师在画图时,只需要给 VDD 加一个 1.8V 的 LDO 降压芯片,然后把 VDDIO 和 STM32 的 3.3V 连在一起,软硬件就能无缝握手了。

          1.3 硬件电路设计

            1.3.1 引脚功能定义

              9 个引脚的详细功能拆解:

              • 引脚 1:MOSI/SDA (输入/输出)

                • SPI 模式下:作为 MOSI(主输出从输入),用于单片机向传感器发送数据。

                • I2C 模式下:作为 SDA(串行数据线),用于双向传输数据。

              • 引脚 2:SCLK/SCL (输入)

                • SPI 模式下:作为 SCLK,接收单片机发来的串行时钟信号。

                • I2C模式下:作为 SCL,接收 I2C总线的串行时钟信号。

              • 引脚 3:MISO/ADDR (输入/输出)

                • SPI 模式下:作为 MISO(主输入从输出),用于传感器向单片机返回数据。

                • I2C 模式下:作为 ADDR(地址选择引脚)。在上电时,如果该引脚接低电平(GND),传感器的 I2C 地址为 0x52;如果接高电平(VDDIO),地址为 0x53。

              • 引脚 4:VDD (电源)

                • 核心主电源。这是最关键的引脚,负责给内部核心逻辑和微加热器供电。电压必须严格控制在 1.71V 到 1.98V 之间(通常接 1.8V),绝对不能直接接 3.3V,否则会烧毁芯片。

              • 引脚 5:VDDIO (电源)

                • 接口/通信电源。决定了通信引脚(SDA/SCL 等)的高电平电压。它的范围较宽,可以接 1.71V 到 3.6V。通常直接与单片机的 3.3V 系统电源相连,实现电平匹配。

              • 引脚 6:INTn (输出)

                • 中断引脚。当传感器有新的空气质量数据(如 AQI、TVOC 更新)产生,或者达到某个设定的阈值时,这个引脚会向主机(如 STM32)发送中断信号。可以在寄存器中配置为高电平有效或低电平有效。

              • 引脚 7:CSn (输入)

                • 片选与通信协议选择引脚。这是决定芯片“开口说哪种语言”的开关。

                • 如果拉低(接 GND 或由主机拉低),芯片进入 SPI 模式。

                • 如果拉高(接 VDDIO),芯片进入 I2C模式。

              • 引脚 8 和 9:VSS (电源)

                • 地线 (GND)。这两个引脚在内部是连通的,画电路板时需要将它们一起连接到系统的地线上。

              1.3.2 典型应用电路

                1.3.3 拓展版实际电路设计

                  1.4 使用方式

                    1、该传感器分为三种不同的工作模式

                    模式0 深度睡眠模式 该模式下功耗极低 只能从该模式进入空闲模式

                    模式1 为 IDLE MODE空闲模式 该模式下可以识别很多指令

                    模式2 为 工作模式 该模式下传感器会不停的进行空气质量检测

                    当进入到模式2,新数据产生时会有两种通知方式:1 通过中断,传输通过6号INTn引脚传递;2 通过传感器自动写DEVICE_STATUS寄存器实现。

                    产生的新数据会被存放在DATA_XXX寄存器组中

                    1.4.1 STM32 I2C 读取示例

                    下面给出一个基于 STM32 HAL 库的 I2C 读取示例,演示如何初始化 ENS160、设置工作模式并读取 TVOC、eCO2 和 AQI 数据。代码中包含了寄存器地址、模式设置、状态判断和数据读取的完整流程。

                    /* ENS160 寄存器地址定义 */
                    #define ENS160_I2C_ADDR        0x52    /* ADDR 引脚接 GND 时的 I2C 地址 */
                    #define ENS160_REG_PART_ID     0x00    /* 产品 ID 寄存器(只读) */
                    #define ENS160_REG_OPMODE      0x10    /* 工作模式寄存器(读写) */
                    #define ENS160_REG_CONFIG      0x11    /* 配置寄存器(读写) */
                    #define ENS160_REG_STATUS      0x20    /* 状态寄存器(只读) */
                    #define ENS160_REG_DATA_TVOC   0x22    /* TVOC 数据寄存器(只读,2 字节) */
                    #define ENS160_REG_DATA_ECO2   0x24    /* eCO2 数据寄存器(只读,2 字节) */
                    #define ENS160_REG_DATA_AQI    0x21    /* AQI 数据寄存器(只读,1 字节) */
                    /* 工作模式定义 /
                    #define ENS160_OPMODE_SLEEP    0x00    / 深度睡眠模式 /
                    #define ENS160_OPMODE_IDLE     0x01    / 空闲模式 /
                    #define ENS160_OPMODE_STANDARD 0x02    / 标准工作模式 */
                    /* 状态寄存器位定义 /
                    #define ENS160_STATUS_NEW_DATA 0x02    / 第 1 位:有新数据产生 */
                    /* 全局 I2C 句柄(由 CubeMX 生成) */
                    extern I2C_HandleTypeDef hi2c1;
                    /**
                    @brief  向 ENS160 写入一个字节寄存器
                    @param  reg  寄存器地址
                    @param  data 要写入的数据
                    @retval HAL 状态
                    */
                    HAL_StatusTypeDef ENS160_WriteReg(uint8_t reg, uint8_t data)
                    {
                    return HAL_I2C_Mem_Write(&hi2c1, ENS160_I2C_ADDR << 1,
                    reg, I2C_MEMADD_SIZE_8BIT, &data, 1, 100);
                    }
                    /**
                    @brief  从 ENS160 读取多个字节寄存器
                    @param  reg   起始寄存器地址
                    @param  buf   数据缓冲区
                    @param  len   读取长度
                    @retval HAL 状态
                    */
                    HAL_StatusTypeDef ENS160_ReadRegs(uint8_t reg, uint8_t *buf, uint8_t len)
                    {
                    return HAL_I2C_Mem_Read(&hi2c1, ENS160_I2C_ADDR << 1,
                    reg, I2C_MEMADD_SIZE_8BIT, buf, len, 100);
                    }
                    /**
                    @brief  初始化 ENS160 传感器
                    @note   上电后先等待 10ms,再进入空闲模式,最后切换到标准工作模式
                    @retval 0 成功,-1 失败
                    */
                    int8_t ENS160_Init(void)
                    {
                    uint8_t part_id[2] = {0};
                    /* 1. 等待传感器上电稳定 */
                    HAL_Delay(10);
                    /* 2. 读取产品 ID,验证 I2C 通信是否正常 /
                    if (ENS160_ReadRegs(ENS160_REG_PART_ID, part_id, 2) != HAL_OK) {
                    return -1;
                    }
                    / ENS160 的产品 ID 固定为 0x0160,高字节在前 */
                    if ((part_id[0] != 0x01) || (part_id[1] != 0x60)) {
                    return -1;
                    }
                    /* 3. 先进入空闲模式(IDLE),等待内部算法稳定 */
                    if (ENS160_WriteReg(ENS160_REG_OPMODE, ENS160_OPMODE_IDLE) != HAL_OK) {
                    return -1;
                    }
                    HAL_Delay(10);
                    /* 4. 切换到标准工作模式,开始持续检测空气质量 */
                    if (ENS160_WriteReg(ENS160_REG_OPMODE, ENS160_OPMODE_STANDARD) != HAL_OK) {
                    return -1;
                    }
                    HAL_Delay(10);
                    return 0;
                    }
                    /**
                    @brief  读取 TVOC、eCO2 和 AQI 数据
                    @param  tvoc  输出 TVOC 浓度(单位 ppb)
                    @param  eco2  输出 eCO2 浓度(单位 ppm)
                    @param  aqi   输出 AQI 等级(1~5)
                    @retval 0 成功,-1 无新数据,-2 读取失败
                    */
                    int8_t ENS160_ReadData(uint16_t *tvoc, uint16_t *eco2, uint8_t *aqi)
                    {
                    uint8_t status = 0;
                    uint8_t buf[5] = {0};
                    /* 1. 读取状态寄存器,判断是否有新数据 */
                    if (ENS160_ReadRegs(ENS160_REG_STATUS, &status, 1) != HAL_OK) {
                    return -2;
                    }
                    /* 2. 检查 NEW_DATA 位,没有新数据则直接返回 */
                    if (!(status & ENS160_STATUS_NEW_DATA)) {
                    return -1;
                    }
                    /* 3. 一次性读取 AQI、TVOC、eCO2 共 5 个字节 */
                    if (ENS160_ReadRegs(ENS160_REG_DATA_AQI, buf, 5) != HAL_OK) {
                    return -2;
                    }
                    /* 4. 解析数据:AQI 占 1 字节,TVOC 和 eCO2 各占 2 字节(大端) */
                    *aqi  = buf[0];
                    *tvoc = ((uint16_t)buf[1] << 8) | buf[2];
                    *eco2 = ((uint16_t)buf[3] << 8) | buf[4];
                    return 0;
                    }
                    /* 主循环中的调用示例 */
                    void main_loop(void)
                    {
                    uint16_t tvoc = 0, eco2 = 0;
                    uint8_t aqi = 0;
                    /* 初始化传感器 */
                    if (ENS160_Init() != 0) {
                        /* 初始化失败,可在此处打印错误信息 */
                        return;
                    }
                    
                    while (1) {
                        /* 读取数据,返回 0 表示成功 */
                        if (ENS160_ReadData(&amp;tvoc, &amp;eco2, &amp;aqi) == 0) {
                            /* 在此处打印或上传数据 */
                            /* printf("TVOC: %u ppb, eCO2: %u ppm, AQI: %u\n", tvoc, eco2, aqi); */
                        }
                        HAL_Delay(1000);  /* 每秒读取一次 */
                    }
                    }

                    代码说明:

                    • 寄存器地址:ENS160 的寄存器采用 8 位地址,通过 I2C 的 Mem_Read / Mem_Write 接口访问。
                    • 模式设置:上电后先进入空闲模式(0x01),再切换到标准工作模式(0x02),确保内部算法完成初始化。
                    • 状态判断:每次读取前先检查状态寄存器(0x20)的 NEW_DATA 位,避免读到旧数据。
                    • 数据读取:AQI、TVOC、eCO2 三个数据连续存放在 0x21~0x25,可以一次读取 5 个字节。

                    总结

                    1、进入0X02模式

                    2、读DEVICE_STATUS寄存器判断是否有新数据产生

                    3、有的话就读DATA_XXX寄存器,没有新数据就等待

                    4、如果没有通信需求,可以让其进入到0x00模式,降低功耗

                    AI养老健康监测系统:技术架构与工程实践 健康监测系统通过物联网传感器与AI算法实现实时风险预警,是智慧养老的核心基础设施。其技术原理在于多模态数据融合——毫米波雷达捕捉行为特征,穿戴设备采集生命体征,环境传感器补充场景信息,最终通过边缘计算架构实现低延迟分析。在工程实践中,这类系统能显著提升应急响应效率,某案例显示夜间跌倒响应时间从23分钟缩短至4分钟。当前主流方案采用三级监测体系:基础层(雷达+红外定位)、增强层(智能手环/床垫)、环境层(温湿度/气体传感),配合Transformer等时序模型实现风险预测。典型应用场景包括养老机构、独居老人监 阅读详情

                    相关推荐

                    【信息科学与工程学】计算机科学与自动化——第六十六篇 算子篇 第一章 通用算子01 多模态数据(图形/图像/文本/语音)中推断人类内在状态、策略、动机和利益的算法算子知识库

                    编号领域算法/方法算子名称算子的数学方程式/表达复杂度 (示例)关联知识11量子场论正则量子化产生/湮灭算符对易关系: [â_p, â†_q] = δ⁽³⁾(p​ - q)应用于态空间,计算复杂度取决于截断福克空间,粒子数表象,二次量子化12统计力学蒙特卡洛模拟马尔可夫链转移算子T(s → s‘) :满足细致平衡条件 π(s)T(s→s’)=π(s‘)T(s’→s)收敛到平衡分布需 ~O(τ), τ为相关时间细致平衡,Metropolis-Hastings准则,重要性采样13电磁学边界元法单层势/双层势算子

                    weixin_49199313的博客 310

                    BME280+ENS160组合:环境监测传感器数据融合实战经验复盘

                    环境监测是物联网感知层的典型落地场景,其核心在于多传感器数据的可靠采集与融合。BME280与ENS160是一对互补性很强的组合:前者覆盖温度、湿度与气压,后者输出TVOC、eCO2与AQI,共同构成完整的室内空气质量画像。工程实践中,传感器数据融合不仅是I2C总线上的地址规划与寄存器读取,更涉及温湿度补偿、电源稳定性、基线校准与滤波降噪等细节。例如ENS160的eCO2属于估算值,需要结合BME280数据进行补偿,并警惕启动状态机和基线漂移。这些经验在室内环境监测、智能家居、办公楼空气质量评估等场景中具有直

                    weixin_29174385的博客 346

                    【信息科学与工程学】【物理/化学和工程技术】第七十五篇 电气工程 系列二 电路电气基础05 电感原理、电工材料

                    Umn​=mπ4Ud​​Jn​(mπM/2), 其中m为载波比索引,n为基波带索引,M为调制度,Jn​为贝塞尔函数。主要谐波位于fc​±2f1​, 2fc​±f1​等处。非线性环节的描述函数N(A)=AY1​​ejϕ1​, 其中Y1​, ϕ1​为输出基波分量的幅值和相位。对于简单一维模型,存在一个临界电压Ucr​,当U>Ucr​时,无稳定热平衡解,发生热击穿。对带通信号(中心频率fc​, 带宽B)进行采样时,只要采样频率fs​满足一定条件,可避免频谱混叠,且fs​可远低于2fc​。

                    weixin_49199313的博客 474

                    基于ESP32与BME280+ENS160的环境监测板实战:I2C传感器数据链路与补偿

                    环境监测是物联网与智能家居的基础环节,而如何低成本、高可靠地采集温度、湿度、气压及空气品质数据,是许多嵌入式开发者面临的现实问题。I2C总线以其接线简单、支持多设备挂载的特性,成为连接数字传感器的首选通信方式。BME280作为温湿度气压三合一传感器,提供精准的物理环境参数;ENS160则通过金属氧化物敏感层输出TVOC与CO₂当量,两者互补可构建完整的环境监测节点。然而,ENS160的读数依赖BME280温湿度进行实时补偿,上电顺序、I2C地址配置、校准公式及预热期处理都会直接影响数据可信度。本文以ESP3

                    weixin_34275734的博客 424

                    TC264摄像头循迹进阶:八邻域与逐行遍历在复杂赛道边界提取中的实战对比

                    本文对比分析了TC264摄像头循迹中八邻域法与逐行遍历法在复杂赛道边界提取中的实战表现。八邻域法在边界连续性方面表现优异,适合处理环岛等复杂元素;逐行遍历法则在计算效率和岔路口识别上更具优势。文章提供了详细的代码实现和优化策略,帮助智能车竞赛选手根据赛道特点选择最佳算法方案。

                    rainy的博客 939

                    非球面检测

                    摘要:非球面镜检测主要采用干涉法,包括零位补偿和非零位补偿两种方式。零位补偿通过透镜组完全校正像差,精度达1%波长,但设计复杂成本高;非零位补偿利用部分像差补偿降低波前斜率,适用于规则非球面。折射-衍射混合补偿镜能同时校正多种像差。实际检测中可采用物理补偿镜或动态CGH加载方案,光路设计需运用坐标断点和多重结构技术实现复杂光路建模。不同方法各具优势,需根据检测需求选择合适方案。

                    Zhaxibamao的博客 2113

                    ESP32-C3搭配BME280与ENS160构建环境监测节点的完整方案

                    在物联网与智能家居应用中,环境数据采集是系统感知层的基础能力。传感器通过I2C总线与主控通信,将温湿度、气压、TVOC、eCO2等物理量转化为可量化、可分析的数据。BME280集成温度、湿度、气压三合一测量,被广泛用于气象站与舒适度判断;ENS160则基于金属氧化物半导体原理输出空气质量指数,但其内部算法依赖外部温湿度补偿,需与BME280搭配使用才能保证数据可靠。合理选型与电路设计——如上拉电阻、去耦电容、供电匹配——直接影响长期运行的稳定性。这类方案普遍适用于室内空气质量监测、家庭气象站、智能家居联动等

                    weixin_32025789的博客 263

                    如何用 Claude Code 阅读和理解陌生代码

                    摘要: 在接手陌生代码时,Claude Code能显著提升理解效率。核心策略是结构化拆解而非逐行阅读: 从整体入手:先扫描目录结构、定位核心模块,建立项目地图; 聚焦关键路径:通过数据流追踪、异常逻辑分析,识别技术债与风险点; 规避常见错误:避免抽象提问或一次性提交全部代码,应分模块精准提问; 高阶应用:可生成逻辑分层图、标记高复杂度区域,甚至定制阅读顺序。 最终目标是通过结构优先的提问策略,将理解周期从数天压缩至数小时。

                    sg_knight的专栏 1021

                    14.深入浅出 I2C 通信协议:从电平信号到完整驱动实现

                    本文系统讲解I2C通信协议原理与实战,涵盖电平与差分信号区别、上拉电阻作用、起始/终止信号、时序与应答机制。以STM32为例,从零实现软件I2C驱动,完成微秒延时、读写函数封装,并对比硬件I2C的HAL库用法。最后结合ENS160传感器项目,演示I2C驱动在真实场景中的应用,帮助读者掌握从理论到实践的完整开发链路。

                    Dodger_code的博客 417

                    Simulink开发项1000例实战专栏--实例64:基于Simulink构建一个储能系统模型

                    通过引入储能系统,太阳能电站能够实现在白天储存多余的能量,在夜晚释放能量,平滑负荷曲线,提高电网的稳定性和可靠性。本项目的目标是基于Simulink平台,构建一个完整的储能系统模型,并通过仿真验证其在电网调峰中的应用效果。通过引入储能系统,工业园区能够实现在负荷高峰期释放能量,在负荷低谷期储存能量,平滑负荷曲线,降低用电成本,提高电网的稳定性和可靠性。通过引入储能系统,风力发电场能够实现在负荷高峰期释放能量,在负荷低谷期储存能量,平滑负荷曲线,提高电网的稳定性和可靠性。

                    xiaoheshang_123的博客 516

                    基于STM32、HAL库的SC16IS752IPW总线转UART驱动程序设计

                    / FIFO空间不足。// 设置LCR寄存器的DLAB位为1以访问DLL/DLH。// 设置LCR寄存器,先访问DLL/DLH。// 设置LCR寄存器(不包含DLAB位)

                    corlin6688的博客 817

                    从零构建AI边缘智能传感器:硬件选型、算法部署与低功耗设计实践

                    边缘计算和嵌入式AI是物联网领域的关键技术,通过在设备端本地处理数据,能够实现低延迟、高隐私和低功耗的智能感知。其核心原理在于将轻量化的神经网络模型部署到资源受限的微控制器上,结合多模态传感器进行数据融合与决策。这项技术的价值在于能够构建不依赖云端、实时响应的智能终端,广泛应用于智能安防、预测性维护和环境监测等场景。本文以【AI驱动的掌心智能传感器】项目为例,深入探讨了如何选型超低功耗MCU与毫米波雷达等传感器,并利用【TensorFlow Lite Micro】框架完成模型量化与部署,最终实现了一个具备本

                    anjichan4261的博客 432

                    Android11.0(R) MTK 平台开机logo动态替换(by logo.bin方式)

                    实现的效果 客户提供一张格式为 bmp 的开机logo,在 linux 环境下执行制作 logo.bin 脚本文件, apk 拷贝 logo.bin 文件替换系统原有的bin,然后重启 logo 自动更新。 原理分析 MTK 平台的充电图片和开机logo都是打包到 logo.bin 中的 对应的资源路径在源码 vendor\mediatek\proprietary\bootable\bootloader\lk\dev\logo 系统一般预制了很多分辨率文件夹,实际通过 BOOT_LOGO 来确定打包那一个

                    cczhengv 4589

                    智能家居环境监测系统:基于ESP32的低成本空气质量监控方案

                    随着城市化进程加快,室内空气质量问题日益受到关注。传统空气质量监测设备价格昂贵、功能单一,难以满足现代家庭对健康环境的需求。本文将介绍如何利用ESP32构建一套经济实惠的智能家居环境监测系统,实时监控室内温度、湿度、CO₂浓度等关键指标,为您的家庭健康保驾护航。 ## 室内空气质量问题的三大维度 ### 健康隐患识别 现代建筑密封性提高导致室内污染物积聚,常见问题包括: - **挥发性有机物(

                    gitblog_00509的博客 389

                    YOLOv8【第四章:注意力机制篇·第20节】一文讲透,注意力机制设计原则与选择指南 - 从原理到实践的系统化方法论!

                    🏆 本文收录于 《YOLOv8实战:从入门到深度优化》,该专栏持续复现网络上各种热门内容(全网YOLO改进最全最新的专栏,质量分97分+,全网顶流),改进内容支持(分类、检测、分割、追踪、关键点、OBB检测)。且专栏会随订阅人数上升而涨价(毕竟不断更新),当前性价比极高,有一定的参考&学习价值,部分内容会基于现有的国内外顶尖人工智能AIGC等AI大模型技术总结改进而来,嘎嘎硬核。    ✨ 特惠福利:目前活动一折秒杀价!一次订阅,永久免费,所有后续更新内容均免费阅读!

                    **My Coding Family** 899

                    机器人中的数值优化(一)—— 数学优化、凸集合与凸函数

                    本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例。

                    慕羽★的博客 2521

                    【STM32】 ADC 完全指南:从模拟信号采样量化到五大架构原理

                    本文系统介绍ADC核心概念与五大主流架构。模拟信号具时间与幅值连续性,需经采样(满足奈奎斯特准则防混叠)、量化(引入±1/2LSB误差,SNR≈6.02N+1.76dB)、编码三步转为数字信号。重点解析Flash(并行高速但受限于比较器数量)、SAR(逐次逼近,低功耗适合MCU如STM32)、双积分(高精度抗工频,用于万用表)、流水线(高速吞吐)及Σ-Δ(高分辨率,靠过采样与噪声整形)五类架构原理、优缺点与应用场景。强调分辨率≠精度,选型本质是速度、精度、功耗与面积的权衡。

                    专注后端与底层技术,分享实战干货与学习笔记,梦想进入字节跳动,步履不停,热爱不止。 519

                    IMSL CNL 7.0.0 (x86-64)Crack

                    IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

                    嵌入式:2.STM32底层基础(存储、寄存器、时钟、总线、GPIO、寄存器点灯)

                    存储系统用来存放程序、数据、设备状态,核心三大作用:存放程序代码、保存运行时数据(全局、局部、栈、堆)、数据持久化(比如W25Q64 Flash,可以搭配文件系统)。

                    2401_86731574的博客 375

                    华为的C语言编程规范.pdf

                    华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

                    RU DOS版、EFI版32bit/64bit BIOS常用工具

                    DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

                    TMS320F28335 学习笔记(二):系统时钟、PLL 与看门狗

                    本文系统介绍F28335的时钟架构与看门狗应用,涵盖外部晶振、PLL倍频生成系统时钟(SYSCLKOUT)、高速/低速外设时钟分频配置,以及看门狗的启用、关闭与喂狗机制。强调时钟配置准确性对延时、PWM、通信等外设的重要性,指出常见错误如晶振不匹配、未等待PLL锁定、随意修改PLL或喂狗周期过长等问题,并提供初始化框架与验证方法,帮助开发者正确配置时钟系统,确保程序稳定运行。

                    2403_83044722的博客 370

                    STM32F407中文手册

                    STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

                    K210+STM32+LVGL:手搓边缘AI智能安防监控网关

                    在传统的物联网或嵌入式毕设中,“智能安防”往往沦为“温湿度+蜂鸣器”的简单堆砌。由于单片机(如STM32)算力有限,无法在本地运行复杂的视觉AI模型,导致很多项目只能在云端处理图像,带来高延迟和隐私风险。本文将分享一个真正的边缘计算安防网关项目。我们采用“K210视觉协处理 + STM32F407主控 + LVGL高颜值UI”的分布式架构,完美解决了单芯片算力不足的痛点。项目不仅实现了明火与陌生人脸识别,还加入了多源传感器融合、5秒智能防抖、以及硬件与UI的双向闭环控制,是一套工业级标准的开源方案。

                    204

                    从寄存器层面重学STM32(7)——定时器理论

                    本文系统梳理了STM32定时器的架构与工作原理,以时基单元为核心,涵盖计数模式、预分频、影子寄存器及定时周期计算。重点解析输出比较(PWM生成)与输入捕获(脉冲测量)机制,阐明CCR与CNT比较逻辑及波形生成流程。深入探讨通用定时器的从模式(如编码器、触发、门控等)与主模式(TRGO同步),明确主从定时器间信号传递关系。结合寄存器配置(CR1、SMCR、CCMR、CCER等),总结定时器在中断、DMA、PWM输出、信号捕获中的应用,实现精准定时与事件控制。

                    2403_88517351的博客 333

                    【官方原创】LAT1721 使用STM32CubeIDE 调试STM32N6 XIP应用的一种方法

                    本文我们以STM32Cube_FW_N6_V1.3.0包中Template_FSBL_XIP为例,介绍一种使用STM32CubeIDE在DEV模式下直接调试应用的方法,不需要切换Boot模式。

                    2501_92678806的博客 600

                    CubeMX+STM32】SD卡U盘实现__USB+FATFS (F103 篇)

                    即回复USB主机的询问:“你这个存储设备有多大?如果不想有弹窗,可以随便指定一个空闲的引脚,这样在生成时就不会弹警告了,但是需要在生成的工程代码里,注释掉引脚检测功能。当不指定检测引脚,在最后生成工程时,会有弹窗警告,不用管它,到时点击Yes即可,将会正常生成工程,代码上不会有任何影响。不推荐 Yes,因为它将针对已使能的SDIO、USB进行必须值的配置,而已设置好的系统时钟,将会被修改成其它值。这个文件,CubeMX已生成了需要用到的接口空函数,目的是为了把USB大容量类的通信与SD卡的读写挂钩起来。

                    qq_49053936的博客 207

                    水深水位传感器(STM32)

                    本文介绍基于STM32F103C8T6的水深水位传感器实验,采用HS-S37A模块通过导电原理实现水位检测。传感器输出模拟电压,经ADC采集后在OLED显示实时数据。程序通过多次采样求平均值,提升测量稳定性。适用于花盆积水、漏水报警等场景,适合教学与物联网开发。项目代码完整,含初始化、读取与显示功能,资料可于文末获取。

                    qq_44016222的博客 142

                    STM32——GPIO篇

                    本文系统讲解STM32F103 GPIO的原理与应用,涵盖概念、电气特性、推挽/开漏输出、寄存器控制及输入模式。重点解析了GPIO与引脚的关系、钳位保护、MOS管工作原理、寄存器配置(CRL/CRH、ODR、BSRR等)、上下拉输入及施密特触发器的作用,构建从硬件到软件的完整知识体系,助力深入理解嵌入式开发中的核心外设机制。

                    wiketsy的博客 254

                    【电路笔记 STM32】RTC配置:晶振选择+闹钟Configuration+中断设置

                    【电路笔记 STM32】RTC配置:晶振选择+闹钟Configuration+中断设置

                    ResumeProject的博客 427
                    上一篇: 14.深入浅出 I2C 通信协议:从电平信号到完整驱动实现
                    下一篇: 1、Linux 入门指南:从 Ubuntu 安装到基础命令实战
                    硅基造物主
                    博客等级 码龄4年 17粉丝 42原创
                    评论
                    成就一亿技术人!
                    拼手气红包6.0元
                    还能输入1000个字符
                     
                     条评论被折叠 查看
                    添加红包

                    请填写红包祝福语或标题

                    个

                    红包个数最小为10个

                    元

                    红包金额最低5元

                    当前余额3.43元 前往充值 >
                    需支付:10.00元
                    成就一亿技术人!
                    领取后你会自动成为博主和红包主的粉丝 规则
                    hope_wisdom
                    发出的红包
                    实付元
                    使用余额支付
                    点击重新获取
                    扫码支付
                    钱包余额 0

                    抵扣说明:

                    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
                    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

                    余额充值