SCD40二氧化碳传感器驱动开发:I2C与CRC8排坑实战
简介面向嵌入式开发者的SCD40二氧化碳传感器驱动资源适用于智能家居、农业温室、办公楼宇等室内环境监测场景。资源基于STM32平台提供完整的传感器驱动工程集成了二氧化碳、温度、湿度三合一测量功能重点解决I2C/SPI通信、数据校准、功耗管理等实际开发难题。压缩包共229个文件以c/h源文件为核心辅以uvprojx、uvoptx工程文件、hex/bin烧录文件、sct链接脚本及lst/map调试信息整体仅5.59MB工程结构清晰便于直接编译与烧录验证。已有1213人下载学习。内容包含驱动初始化、数据读取与处理、串口传输、低功耗模式等完整实现并附有示例应用程序app工程适合中高级嵌入式工程师或相关专业学生快速集成SCD40并进行环境数据采集是开展物联网产品开发或课程设计的实用参考。1. 二氧化碳传感器SCD40驱动程序一个看着简单、上手要踩好几个坑的嵌入式模块二氧化碳传感器 SCD40 驱动是一个看着简单、上手却要踩几个坑的嵌入式模块。做室内空气质量监测或者新风联动产品时最消耗时间的往往不是上位机算法而是先把传感器数据稳定读出来。SCD40 是低功耗方案里体积最小的光声式二氧化碳传感器之一封装只有 10 毫米见方能同时输出 CO₂ 浓度、温度和湿度适合空气质量检测仪这类电池供电的小设备。但它的驱动不像 DHT11 那样一读就有上电要等约 1 秒、启动测量后要等 5 秒才出第一个数、每个 16 位数据字后面都跟着一个 CRC8 字节时序没对齐读回来的就是 0xFFFF。这套驱动把 I2C 通信、CRC8 校验、数据就绪检测和物理量换算封装成四个接口拿到就能跑。适合正在做嵌入式开发、想把 SCD40 快速接入自己工程的读者。2. 整体设计与技术选型为什么驱动要拆成「命令发送 / 数据解析 / 硬件抽象」三层2.1 为什么选 SCD40 而不是 SCD30 或 MH-Z19在确定这颗传感器之前常见候选是 SCD30、MH-Z19 和 SCD40 三个。SCD30 是上一代的大封装产品支持 I2C、UART、PWM 三种输出测量范围到 10000ppm适合需要超量程监测的工业级设备但 35×15 毫米的尺寸和毫瓦级的持续功耗放到消费级小产品里会占用大量结构空间。MH-Z19 是 UART 输出为主的 NDIR 传感器需要 5V 供电工作电流常年在 20mA 以上适合插电设备电池供电场景基本不用考虑。SCD40 走的是另一条路线光声学测量原理瞬时工作电流在 20mA 左右但配合周期测量和低功耗调度平均电流可以压到几百微安级别配合一颗几百毫安时的电池能跑很久。测量范围 400–2000ppm 覆盖室内 CO₂ 监测的主要区间精度标称 ±(50ppm 5% 读数)对于新风联动、空气质量检测这类应用绰绰有余。对比项SCD40SCD30MH-Z19测量原理光声式 NDIR传统 NDIRNDIR接口I2CI2C / UART / PWMUART / PWM供电2.4–5.5V3.3–5.5V5V典型功耗平均百微安级毫瓦级20mA 以上CO₂ 量程400–2000ppm400–10000ppm400–5000ppm封装尺寸10×10mm35×15mm33×20mm所以这个驱动项目的定位从一开始就很明确面向小体积、低功耗、纯 I2C 接入的场景代码不依赖特定 RTOS不绑定具体厂商 SDK。选型结论直接影响驱动设计——SCD40 的命令集比 SCD30 精简绝大多数交互都是「发一条命令等一个周期读回结果」这也决定了目录结构可以保持非常精简。2.2 目录结构每个文件只干一件事这套驱动的目录刻意保持精简拆开看每个文件只有一个职责scd40_driver/ ├── inc/ │ ├── scd40.h // 对外接口声明与数据类型定义 │ └── scd40_config.h // I2C 地址、命令码、超时时间等全部宏 ├── src/ │ ├── scd40.c // 命令发送、数据就绪检测、测量读取与解析 │ ├── scd40_crc.c // CRC8 校验实现独立文件便于单测 │ └── hal_i2c.c // 硬件抽象层只有写、读、总线复位三个函数 └── example/ ├── main.c // 轮询读取示例串口打印 CO2 / 温度 / 湿度 └── port/ // 一个具体 MCU 平台的移植示例scd40.c 里完全不出现某个具体 MCU 的寄存器操作它只调用 hal_i2c.c 暴露的 hal_i2c_write、hal_i2c_read、hal_i2c_reset 三个函数。hal_i2c.c 是移植时唯一需要动手改的文件换平台时把三个函数映射到目标芯片的 I2C 外设实现即可驱动主体一行不用动。对外接口只有四个scd40_init 负责初始化参数和上电等待scd40_start_measurement 发送启动周期测量命令scd40_data_ready 查询数据就绪状态scd40_read_measurement 读取并解析测量结果。四个接口覆盖了 90% 的应用场景剩下的温度偏移、自校准开关等扩展功能以独立函数提供业务层按需调用不会让主路径变得臃肿。2.3 I2C 通信层地址、时钟与总线时序SCD40 是标准 I2C 从机7 位地址固定为 0x62换算成读写地址就是写地址 0xC4、读地址 0xC5。这个地址和 SCD30 的 0x61 不一样很多移植过 SCD30 的开发者容易在这里翻车后面排坑部分会再强调一次。注意SCD40 的 I2C 地址是 0x62SCD30 是 0x61两个驱动混用前先看头文件里的地址宏别复用错了。通信速率方面官方规格支持 100kHz 和 400kHz我的建议永远是先用 100kHz 调通再根据示波器波形决定是否上 400kHz。原因很简单SCD40 的数据帧是「命令 等待 读数据」的形式总线速率过高时如果 PCB 走线稍长、上拉电阻偏大读回的字节就会偶发错误而 CRC8 只会告诉你数据不对不会告诉你错在哪一位。一个容易忽略的时序细节是执行完启动测量命令 0x21B1 之后MCU 必须释放总线等传感器内部完成约 5 秒的测量周期然后通过独立的读命令取数。SCD40 内部处理期间会进行采样和标定如果在这个窗口强行发起读写操作通信会进入不可预期状态表现就是 NACK 或者回全 0xFF。2.4 配置宏与错误码给移植留的后门scd40_config.h 里集中定义了所有可调参数这是移植时最值得先读的一个头文件#define SCD40_I2C_ADDR 0x62 /* 7 位地址不要左移 */ #define SCD40_CMD_START 0x21B1 /* 启动周期测量5 秒周期 */ #define SCD40_CMD_READ 0xEC05 /* 读取测量结果9 字节 */ #define SCD40_CMD_DATA_READY 0xE4B8 /* 查询数据就绪状态3 字节 */ #define SCD40_CMD_STOP 0x3F86 /* 停止周期测量 */ #define SCD40_CMD_SET_ASC 0x2416 /* 自动自校准开关 */ #define SCD40_CMD_SET_TEMP_OFFSET 0x241D /* 设置温度偏移 */ #define SCD40_POWERUP_DELAY_MS 1000 /* 上电到 I2C 可用的最短时间 */ #define SCD40_MEASURE_PERIOD_MS 5000 /* 一个测量周期 */错误码也在同一个文件里统一定义SCD40_OK 表示成功SCD40_ERR_I2C 表示底层总线异常SCD40_ERR_CRC 表示 CRC8 校验失败SCD40_ERR_TIMEOUT 表示等待超时。业务层拿到错误码之后应当做重试而不是把错误帧当作有效数据继续往上层传。这个分层设计看起来不起眼但实际项目里 I2C 偶发 NACK 几乎是必然事件没有错误码的话调试时只能靠示波器碰运气。3. 核心代码拆解从发送 0x21B1 到算出 ppm 值的完整链路3.1 命令发送与数据就绪检测SCD40 没有传统意义的寄存器地址操作流程可以概括成三步发命令、等处理、读结果。启动周期测量是整个链路的第一步发送命令之后传感器进入周期测量状态每 5 秒完成一次 CO₂ 采样。命令发送函数的实现很简短但有两个细节决定了它稳不稳static int scd40_send_cmd(uint16_t cmd, uint32_t timeout_ms) { uint8_t buf[2] { (uint8_t)(cmd 8), /* 命令码高字节在前 */ (uint8_t)(cmd 0xFF) }; int ret hal_i2c_write(SCD40_I2C_ADDR, buf, 2, timeout_ms); return (ret 0) ? SCD40_OK : SCD40_ERR_I2C; }第一个细节是命令码的字节序。SCD40 全部命令都是大端发送也就是高字节在前这和多数温湿度传感器的做法一致但和少数小端命令集的芯片不同抄代码时容易搞反。第二个细节是超时时间写命令本身很快但 hal_i2c_write 内部如果遇到传感器正在忙碌总线会持续等待timeout_ms 给 100ms 比较稳妥给 10ms 反而容易误报超时。数据就绪检测是读取前必须做的一步。SCD40 在周期测量模式下数据是异步更新的你无法预知第几毫秒出新值只能通过查询命令确认int scd40_data_ready(uint16_t *ready) { uint8_t buf[3]; int ret; if (scd40_send_cmd(SCD40_CMD_DATA_READY, 100) ! SCD40_OK) return SCD40_ERR_I2C; ret hal_i2c_read(SCD40_I2C_ADDR, buf, 3, 100); if (ret ! 0) return SCD40_ERR_I2C; if (scd40_crc8(buf[0], 2) ! buf[2]) return SCD40_ERR_CRC; *ready ((uint16_t)buf[0] 8) | buf[1]; return SCD40_OK; }这里读回来的 3 个字节是「状态字两个数据字节 一个 CRC8」。ready 为 0 表示这一周期还没有新数据非 0 表示可以继续调 read_measurement。注意读操作之前必须先发出查询命令I2C 时序是「先写命令字再读返回」不能直接跳过命令发起读否则传感器不知道你要读什么。实测中从启动测量到 ready 第一次变非 0 大约需要 5 秒业务轮询建议间隔 1 秒不要用 10ms 疯狂刷否则总线流量白白浪费还可能触发传感器内部的通信保护机制。3.2 CRC8多项式 0x31 并非随处可见SCD40 在每个 16 位数据字后面附加一个 CRC8 字节多项式是 0x31初始值是 0xFF无反射。这和常见的 Modbus CRC16 完全是两回事也和很多国产传感器用的 CRC8/MAXIM 算法不是一回事。把 CRC 实现放进独立文件主要考虑是可以直接在 PC 上做单元测试不用等硬件uint8_t scd40_crc8(const uint8_t *data, uint16_t len) { uint8_t crc 0xFF; /* 初始值固定 0xFF */ while (len--) { crc ^ *data; /* 每个字节先异或进当前 crc */ for (uint8_t bit 0; bit 8; bit) { if (crc 0x80) { crc (uint8_t)((crc 1) ^ 0x31); /* 多项式 0x31 */ } else { crc 1; } } } return crc; }逻辑说明CRC 初始值 0xFF每个输入字节先与当前 CRC 异或再按位左移最高位为 1 时与多项式 0x31 异或。0x31 对应的生成多项式是 x⁸ x⁵ x⁴ 1不带输入输出反射这是 SCD40 这一传感器系列通用的 CRC 约定换到别的传感器不一定适用。注意数据 0xBE、0xEF 按此算法计算结果应为 0x92。我一般会在 main 里放一个断言做开机自检确认 CRC 实现正确再往下走避免把问题留到联调阶段。很多开发者把别的项目里的 CRC 函数直接粘过来结果校验永远失败还以为是 I2C 时序问题浪费一整天。这个血泪经验值得写进流程先验证 CRC再查时序。3.3 读取并解析 CO₂ / 温度 / 湿度数据就绪后发送 0xEC05 命令读取 9 个字节。这 9 个字节排列为CO₂ 高字节、CO₂ 低字节、CO₂ CRC8、温度高字节、温度低字节、温度 CRC8、湿度高字节、湿度低字节、湿度 CRC8。解析代码的关键是每读一个字都要先做 CRC 再换算int scd40_read_measurement(float *co2_ppm, float *temp_c, float *rh_pct) { uint8_t raw[9]; uint16_t words[3]; int ret; if (scd40_send_cmd(SCD40_CMD_READ, 100) ! SCD40_OK) return SCD40_ERR_I2C; ret hal_i2c_read(SCD40_I2C_ADDR, raw, 9, 200); if (ret ! 0) return SCD40_ERR_I2C; for (int i 0; i 3; i) { /* 每个字的前两字节是数据第三字节是对应 CRC8 */ if (scd40_crc8(raw[i * 3], 2) ! raw[i * 3 2]) return SCD40_ERR_CRC; words[i] ((uint16_t)raw[i * 3] 8) | raw[i * 3 1]; } *co2_ppm words[0]; /* CO2 原值即 ppm */ *temp_c -45.0f 175.0f * words[1] / 65535.0f; /* 线性映射到 -45~130°C */ *rh_pct 100.0f * words[2] / 65535.0f; /* 线性映射到 0~100% */ return SCD40_OK; }参数说明co2_ppm 输出直接就是 ppm 值不需要乘任何系数temp_c 的换算是把 16 位原值等比例映射到 -45 到 130 摄氏度的标定区间公式为 -45 175 × raw / 65535rh_pct 同理映射到 0 到 100%。这里最容易踩的误区是套用 SHT30 的换算公式直接除以 10那样温度会偏差十几度而且偏差方向并不恒定。我习惯在串口同时打印 words[1] 原始值和换算后的摄氏度观察一段时间确认换算没有方向性问题再接入业务逻辑。湿度换算相对直观但要注意温湿度是相互补偿的设备自发热导致的温度偏差会连带影响湿度读数这也是后面要单独处理温度偏移的原因。3.4 自动校准与温度偏移出厂以外需要关心的两个参数SCD40 出厂默认开启自动自校准ASC以 24 小时为周期缓慢修正零点。但在实际产品中设备常处于密闭室内环境ASC 会把零点点位逐渐拉到错误的位置导致真实 CO₂ 升上来时读数反应迟钝。我的习惯是产品化阶段关闭 ASC改用显式的强制校准只在需要时开启。温度偏移设置函数展示了「写参数类命令」的完整写法int scd40_set_temp_offset(float offset_degc) { uint16_t raw (uint16_t)(offset_degc * 100.0f); /* 单位 0.01°C */ uint8_t buf[5]; buf[0] (uint8_t)(0x241D 8); buf[1] (uint8_t)(0x241D 0xFF); buf[2] (uint8_t)(raw 8); buf[3] (uint8_t)(raw 0xFF); buf[4] scd40_crc8(buf[2], 2); /* 数据字也要带 CRC8 */ return hal_i2c_write(SCD40_I2C_ADDR, buf, 5, 100); }和读测量值不同这类写参数命令是把「命令码 数据字 CRC8」拼成一整帧直接写出去一次 I2C 写操作完成不需要后续读操作。注意 CRC 只覆盖数据字也就是 buf[2]、buf[3] 两个字节命令码本身不参与 CRC。温度偏移的典型范围在 2 到 5 摄氏度之间具体数值取决于 PCB 布局、外壳是否密闭、主控功耗水平。设置方法是在设备稳定运行半天后对比参考温度计与传感器读数把差值写入。密闭外壳里的积热如果不补偿湿度会跟着偏高几个百分点影响整套环境数据质量。4. 避坑手册新板子上的 I2C 死锁、CRC 翻车与测量时序错位4.1 现象写命令后读回全 0xFF地址探测也不应答拿到新板子第一次上电最常见的就是发启动命令没反应读回来的字节全是 0xFF用 I2C 扫描工具也找不到 0x62 这个设备。原因有两个按出现频率排序一是 SCL 和 SDA 没有装上拉电阻或者上拉电阻取值太大。SCD40 的 I2C 引脚是开漏结构内部不自带上拉MCU 内部上拉往往几十千欧在较高速率下根本拉不动电平。二是上电后等待时间不够SCD40 从 VDD 稳定到 I2C 就绪大约需要 1000ms很多初始化代码在系统上电后立刻就去探测传感器自然拿不到应答。解决先在 SCL、SDA 各加一颗 4.7kΩ 到 10kΩ 的上拉电阻用示波器确认上电后 I2C 引脚波形干净然后在驱动初始化里强制延时 1000ms 再发第一条命令。这个延时不能省它不是玄学是传感器内部固件启动时序的硬性要求。4.2 现象CRC8 校验频繁失败偶尔能读到正常帧如果数据有时正常有时 CRC 不过大概率不是传感器的问题而是总线信号质量问题。原因I2C 时钟配到 400kHz但 PCB 走线经过排线、杜邦线或者过孔较多信号边沿变缓接收端采样出错。CRC8 只能检测错误不能纠正错误所以表现就是「数据帧偶发校验失败」。解决把 I2C 时钟降到 100kHz这是定位信号完整性问题的第一排查手段。如果降速后 CRC 全部通过说明代码没有问题问题在硬件链路再进一步可以看示波器确认 SCL 高电平是否超过阈值、有没有振铃。另一个辅助手段是在每次读操作前加一个 10ms 的短延时给总线一个空闲窗口实测对降低偶发错误很有帮助。4.3 现象启动测量后立刻读拿到的是 0 值或上一周期旧数据很多人第一次写这个驱动习惯按「读一个寄存器」的思路来写发命令延时 50ms读数据。结果读到的 CO₂ 要么是 0要么是启动前的初始值于是怀疑传感器坏了。原因SCD40 的周期测量是异步的启动命令只是让传感器进入周期测量状态第一个有效数据要在约 5 秒之后才产生。50ms 的延时对于这类传感器完全不够它不像加速度计那样有立即响应的数据寄存器。解决在业务循环里先调 scd40_data_ready等 ready 非 0 再去读测量值。轮询函数之间至少间隔 1 秒避免高频查询浪费总线带宽。如果产品对首包数据的等待时间很敏感可以在一上电就立即启动周期测量让 5 秒计时与系统初始化并行等用户界面就绪时数据也差不多出来了。4.4 现象CO₂ 读数长期不变或者变化趋势与开窗通风明显不符设备运行几天后CO₂ 数值变得「迟钝」从 1200ppm 降到 600ppm 要花很长时间甚至始终在某一个值附近徘徊。原因自动自校准ASC在工作。ASC 以 24 小时为周期把「长期平均浓度」当成参考零点点位。如果设备长期放在一个 CO₂ 偏高的密闭房间ASC 会把零点慢慢拉到 800ppm 附近真实浓度下降时读数自然反应慢。解决产品化阶段用 0x2416 命令关闭 ASC改用强制校准参考浓度必须是稳定的标准气或已知环境之后周期性人工校准。如果没有标准气条件至少要在代码里留一个校准使能开关方便现场维护人员触发。4.5 现象温度读数偏高 2 到 5 摄氏度湿度同步偏高设备装进外壳运行一段时间后传感器报告的温度明显高于环境温度湿度也跟着偏大。原因SCD40 内部的光声测量组件对温度敏感而 PCB 上主控、电源芯片的发热会传导到传感器封装内形成稳定的自加热偏置。这个偏置对光声式传感器来说是结构性的无法通过滤波消除。解决使用 0x241D 设置温度偏移。偏移量的获取方法是设备稳定运行 2 小时以上后用外部温度计实测环境温度两者差值即为偏移值。注意偏移值设置后湿度换算也会同步修正所以这个步骤应该在整机联调阶段完成而不是在裸板测试阶段。5. 二次开发把单传感器驱动改造成多设备数据平台的思路5.1 抽象统一传感器接口实际产品往往不止一路传感器把这套驱动包一层统一接口是比较稳的做法typedef struct { int (*init)(void); int (*start)(void); int (*poll)(float *co2, float *temp, float *rh); } sensor_device_t;SCD40、温湿度传感器、PM2.5 各写一个实例业务层只面向这个结构体指针。后续要换传感器型号业务代码不用跟着改这是我从这个项目里得到的最实在的收益。5.2 低功耗周期读取策略如果做电池供电设备最简单的做法是让主控定时唤醒间隔 60 秒查一次数据。注意两点唤醒后先判断是否距上次读取超过 5 秒不足则继续休眠读取完成后立刻释放 I2C 总线并进入低功耗状态不要在传感器上保持任何持续电流。SCD40 的周期测量本身会不断消耗平均电流如果产品对续航很敏感可以在空闲时发送停止测量命令 0x3F86需要采样时再启动代价是每次要重新等 5 秒出数。5.3 24 小时对比验证改动驱动后不要只看串口数据。把设备放在稳定环境里旁边放一台经过标定的参考监测仪每小时记录一次两边读数持续 24 小时。CO₂ 偏差在 ±(50ppm 5% 读数) 内才允许继续下一步温度偏差用偏移校准后应小于 1 摄氏度最后做 10 次断电重启确认每次上电后 10 秒内驱动都能正常返回首包数据。这三项都过了驱动才算真正交付。从那以后我每次拿到新板子都强制自己走一遍「100kHz 示波器看波形 → 24 小时老化对比 → 断电重启循环」这三步省掉了大量现场排查时间。驱动代码跑通只是开始跑稳才是交付。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

YouTube新手起步指南:完成胜过完美,绕开拖延陷阱顺利发布首个视频

YouTube新手起步指南:完成胜过完美,绕开拖延陷阱顺利发布首个视频

做YouTube这几年,我见过太多人卡在同一步:想拍一条完美的视频,结果几个月过去了,连一个镜头都没录。每次问起来,理由都差不多——设备还不够好、脚本还没打磨好、怕发出去被人骂、觉得同类内容已经有人做得很好自己没必…

2026/10/16 5:01:28 阅读更多 →
Agentic Harness Workflow:从能跑通的AI代码到可交付的工程

Agentic Harness Workflow:从能跑通的AI代码到可交付的工程

1. 为什么“能跑通的 AI 代码”离“能交付的工程”还差一大截很多人第一次用 AI 写代码,体验都差不多:丢一段需求进去,几秒钟吐出一整段函数,跑一下还真能过。于是很自然地产生一个错觉——AI Coding 已经能替代相当一部分开发工作…

2026/10/16 5:01:28 阅读更多 →
移动机器人路径规划实战:基于Dijkstra算法的栅格地图最优路径实现

移动机器人路径规划实战:基于Dijkstra算法的栅格地图最优路径实现

移动机器人路径规划这件事,只要做过的人都知道,最头疼的不是算法本身有多难,而是“原理懂了,代码跑不通”“代码通了,换张地图又挂了”这类问题。最近我在整理一个基于Dijkstra算法的移动机器人路径规划项目&#xff0…

2026/10/16 5:00:28 阅读更多 →

最新新闻

OpCore-Simplify 一键生成可用的 OpenCore EFI:黑苹果自动化配置五步指南

OpCore-Simplify 一键生成可用的 OpenCore EFI:黑苹果自动化配置五步指南

OpCore-Simplify 一键生成可用的 OpenCore EFI:黑苹果自动化配置五步指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 当你准备在一台旧…

2026/10/16 5:51:44 阅读更多 →
WinPythondot-32bit 3.10.5.0 发行版解析:dot 风味的精简型 Python 3.10 便携发行包

WinPythondot-32bit 3.10.5.0 发行版解析:dot 风味的精简型 Python 3.10 便携发行包

开发工具构建工具CLI包管理器 【免费下载链接】winpython A free Python-distribution for Windows platform, including prebuilt packages for Scientific Python. 项目地址: https://gitcode.com/gh_mirrors/wi/winpython 点击查看 免费下载 本文面向使用与构建…

2026/10/16 5:51:44 阅读更多 →
AI论文写作工具实测:专科毕业论文从开题到降重全攻略

AI论文写作工具实测:专科毕业论文从开题到降重全攻略

写专科毕业论文,最难熬的往往不是写作本身,而是“不知道往哪里写”。开题报告不会搭框架,正文憋不出三千字,参考文献搜半天全是目录页,查重率一出来40%——这种体验我见过太多专科生经历过。所以这次我花了差不多两周时…

2026/10/16 5:51:44 阅读更多 →
asc-devkit 通算融合算子 HCCL 服务端类型配置指南:HcclServerType 接口原理与实战

asc-devkit 通算融合算子 HCCL 服务端类型配置指南:HcclServerType 接口原理与实战

人工智能深度学习算子库CANNAscend 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址&…

2026/10/16 5:51:44 阅读更多 →
Kimi入局具身智能:技术路径、学习路线与开发者机会

Kimi入局具身智能:技术路径、学习路线与开发者机会

1. 从一条行业传闻说起:Kimi入局具身智能到底意味着什么前几天在几个技术群里同时刷到一条消息,说Kimi可能要入局具身智能领域。说实话,第一反应不是惊讶,而是"终于来了"。过去一年多,大模型赛道从百模大战打…

2026/10/16 5:51:43 阅读更多 →
OpenSceneGraph 缩放平移实战:从原理到顺滑交互实现

OpenSceneGraph 缩放平移实战:从原理到顺滑交互实现

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

2026/10/16 5:50:43 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

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

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/15 9:49:14 阅读更多 →