单片机室内空气质量监测系统设计与实现:传感器选型、驱动与调试全解析
简介面向单片机学习者和嵌入式系统开发者的一套完整项目资料围绕室内空气质量监测系统的设计与研究展开重点解决甲烷、甲醛、PM2.5三类污染物的实时采集、处理与显示涵盖多种传感器及其检测原理。资源共61个文件压缩包大小455KB包含C语言源码与头文件、Proteus仿真工程DSN/PDSPrj、原理图文档、Keil工程配置文件、HEX文件及PDF预览类型覆盖从硬件设计到软件调试的各个阶段。已有112人浏览学习适合作为课程设计、电子竞赛或毕业设计的参考。通过源码可理解传感器数据采集与算法实现借助仿真工程可验证电路逻辑原理图则有助于对照实物搭建压缩包内目录层级清晰便于直接复现。整套方案还可在智能家居场景中继续扩展如联动空气净化设备提升居住环境的安全性。1. 单片机室内空气质量监测系统拿到一个实训压缩包先看什么做嵌入式开发的人手机里多少都存着几个设计与研究结尾的压缩包室内空气质量监测系统属于点名率最高的一类因为它的技术栈特别完整传感器采集、信号调理、ADC 读取、串口通信、数据处理逻辑、显示与报警每个环节都能落成具体的 C 语言代码。这个项目以单片机为主控芯片配合 PM2.5 传感器、温湿度传感器和甲醛传感器组成采集端讲究的是把模拟世界的空气数据变成单片机寄存器里的数值再通过阈值判断驱动本地提示。对于正在做课程设计、毕业设计或者想拿一个完整工程练手的人来说这类资源的价值在于它能直接对照实物理解传感器怎么接、数据怎么读、逻辑怎么写而不是停留在课本的框图层面。有一点先说清楚这类资源不是解压即用的成品它给的是完整的思路和可移植的代码骨架真正跑通还需要你手里有对应的硬件。2. 硬件层解析传感器选型与接口设计的三个关键点2.1 传感器选型量程、分辨率和输出接口决定了整个电路布局室内空气质量监测系统的硬件核心是传感器组选型直接决定后续电路是简单还是复杂。常见设计里PM2.5 传感器大多采用激光散射原理比如某厂家的 PMS 系列输出的是串口数字信号内部已经完成了粒子计数和浓度换算单片机只需要通过 UART 接收数据帧就行这类传感器接口简单但工作时需要 5V 供电且启动瞬间电流偏大电源设计上要预留余量。甲醛传感器通常是电化学原理输出信号是微安级别的电流需要经过 I/V 转换电路和放大器才能送到单片机 ADC 引脚这类传感器最麻烦的是预热时间长上电后需要几分钟信号才稳定。温湿度传感器则简单很多单总线或 I2C 接口的数字传感器直接读就行。选型时我一般会先把传感器的输出类型列出来数字串口类、模拟电压类、数字总线类每一类对应不同的引脚资源和电路开销。PMS 类传感器数据更新频率一般设置成被动读取也就是单片机主动发指令传感器回数据帧这种方式比主动上报模式更好控制时序。电化学甲醛传感器在低成本方案里大多数是输出 0.4V 到 2V 的模拟电压对应 0 到 2ppm 的浓度范围24 位 ADC 在这个场景下性能过剩12 位到 16 位的 ADC 配合合适的增益就能满足精度需要。温湿度传感器用 DHT22 还是 SHT30 主要看成本DHT22 的单总线协议对时序敏感SHT30 的 I2C 接口稳定得多如果代码基础一般选 I2C 接口能省掉不少调试时间。2.2 接口电路与电源分配ADC 参考电压和传感器供电要分开处理硬件设计里最常见的坑在电源和参考电压上。PMS 传感器和主控芯片如果共用一个 5V 供电传感器启动时的大电流会把电源电压拉低导致主控复位这就是典型的一上电就重启问题。我一般会采用两路供电一路给主控和温湿度传感器一路单独给 PM2.5 传感器两路之间用磁珠或功率电感隔离。ADC 参考电压方面电化学传感器的输出电压通常以地为参考但如果直接用主控的 VCC 做 ADC 基准VCC 的纹波会直接变成测量误差讲究一点的做法是用外部基准芯片提供 2.5V 或 3.3V 参考电压给 ADC 的 VREF 引脚。主控选型上用 STM32F103 系列还是 51 内核的芯片决定了代码写法的差异。STM32 的好处是 ADC 和 UART 外设丰富可以同时挂多个传感器而 51 系列资源紧张需要软件模拟时序来省引脚。如果资源包里提供的是 51 内核的代码迁移到 STM32 时要注意 GPIO 配置和中断优先级的差异反过来如果原工程是 STM32 的移植到 51 上基本不现实除非把串口解析改成软件模拟。另一个容易翻车的地方是传感器引脚的上下拉电阻单总线温湿度传感器的数据引脚必须外接上拉电阻否则通信不稳定I2C 总线的上拉电阻阻值选择不对会导致时序沿变缓尤其在总线长度超过 20cm 时信号完整性问题会放大。3. 软件层拆解驱动函数、状态机与数据帧解析3.1 外设初始化与传感器轮询把每个模块的启动时序排清楚软件部分的第一步是外设初始化这里不是把 GPIO 配好就行而是要严格按照各个传感器的手册时序来。PMS 类传感器上电后需要等待内部风扇启动和激光器稳定这个时间一般在 30 秒左右电化学甲醛传感器需要更长的预热时间可能到 3 分钟以上温湿度传感器则基本即插即用。如果一上电就去读数据读回来的往往是无效值或零值很多人误以为是传感器坏了其实只是没有给它足够的启动时间。我习惯把传感器启动流程放在一个状态机里处理主循环不阻塞按优先级轮询各个任务。状态机的几个状态包括初始化等待、读取 PM2.5、读取甲醛、读取温湿度、数据处理、报警判断和显示刷新。每个传感器数据之间的读取间隔要拉开避免串口和 ADC 通道冲突。以下是一个典型的主循环调度框架typedef enum { STATE_INIT_WAIT, STATE_READ_PM25, STATE_READ_HCHO, STATE_READ_TH, STATE_PROCESS_DATA, STATE_DISPLAY_ALARM } sys_state_t; volatile sys_state_t current_state STATE_INIT_WAIT; unsigned long pm25_start_time 0; int is_pm25_ready 0; int main(void) { hardware_init(); // 时钟、GPIO、UART、ADC初始化 sensor_power_on(); // 给所有传感器上电 while (1) { switch (current_state) { case STATE_INIT_WAIT: if (get_tick_ms() - pm25_start_time 30000) { set_led_status(STATUS_WARMING); } else { current_state STATE_READ_PM25; is_pm25_ready 1; } break; case STATE_READ_PM25: if (is_pm25_ready) { pm25_data_frame_t frame pm25_read_frame(); if (frame.header_ok) { pm25_value frame.concentration; current_state STATE_READ_HCHO; } else { pm25_error_count; current_state STATE_READ_HCHO; } } break; // 其他状态依此类推 default: current_state STATE_INIT_WAIT; break; } } }这段代码的核心逻辑是用一个枚举状态变量跟踪当前应该执行的操作主循环每次只处理一个状态不会因为某个传感器卡住而拖死整个系统。参数方面30000毫秒是 PM2.5 传感器的预热等待时间这个值要根据实际传感器手册调整。pm25_error_count用来在串口数据帧校验失败时累计错误次数我一般会在错误次数超过 10 次时判定传感器通信异常触发系统报警而不是继续显示无效数据。3.2 串口数据帧解析和 ADC 多点采样数据可信度从底层保证PM2.5 传感器的串口数据帧是固定长度以 0x42 和 0x4D 两个字节开头后面跟着数据长度字节、校验码和数据体。解析这类数据帧时第一要务是校验帧头和校验码否则一旦发生错位后面所有数据都是错的。我见过不少人解析时只看帧头不看校验码结果通信一受干扰就显示出离谱的大数值。以下是一段带校验的解析代码#define PM25_FRAME_LEN 32 int pm25_parse_frame(uint8_t *buf, int len, uint16_t *pm25_out) { if (len PM25_FRAME_LEN) { return -1; // 帧长度不足 } // 检查帧头 if (buf[0] ! 0x42 || buf[1] ! 0x4D) { return -2; // 帧头错误 } // 校验码是最后两个字节低字节在前 uint16_t calc_crc 0; for (int i 0; i PM25_FRAME_LEN - 2; i) { calc_crc buf[i]; } uint16_t got_crc buf[PM25_FRAME_LEN - 2] * 256 buf[PM25_FRAME_LEN - 1]; if (calc_crc ! got_crc) { return -3; // 校验失败 } // 标准帧中PM2.5浓度在第 13、14 个字节16 位值高字节在前 *pm25_out buf[12] * 256 buf[13]; return 0; }这个函数的三个返回值区分了三种失败原因调用方可以据此判断传感器是没数据还是数据被干扰。0x42和0x4D是传感器厂商约定好的帧头用十六进制比较比转字符串更高效。pm25_out指向的变量保存最终的浓度值单位是微克每立方米。电化学甲醛传感器读 ADC 时单次采样结果噪声很大尤其是在电源纹波没有处理干净的电路上。我一般会做连续 16 次采样去掉最大值和最小值后取平均再换算成电压最后根据传感器的灵敏度系数算浓度。换算公式一般是浓度 (电压 - 零点电压) × 灵敏度零点电压和灵敏度系数都要在代码里作为可校准参数预留不能让用户改程序来校准。代码实现如下#define ADC_SAMPLE_TIMES 16 #define HCHO_ZERO_VOLTAGE 0.4f #define HCHO_SENSITIVITY 1.0f // 单位ppm/V float hcho_read_concentration(void) { uint32_t sum 0; uint16_t min_val 0xFFFF, max_val 0; uint16_t current_val 0; for (int i 0; i ADC_SAMPLE_TIMES; i) { current_val adc_single_read(ADC_CH_HCHO); if (current_val min_val) min_val current_val; if (current_val max_val) max_val current_val; sum current_val; } sum - min_val max_val; float avg sum / (float)(ADC_SAMPLE_TIMES - 2); // 根据 ADC 位宽换算电压值 float voltage avg / 4096.0f * 3.3f; // 减去零点偏移再乘灵敏度得到浓度 float concentration (voltage - HCHO_ZERO_VOLTAGE) * HCHO_SENSITIVITY; if (concentration 0) { concentration 0; } return concentration; }代码里的4096是 12 位 ADC 的量化级数如果是 16 位 ADC 则改成655363.3f是参考电压。HCHO_ZERO_VOLTAGE和HCHO_SENSITIVITY这两个宏定义是给校准使用的实际传感器出厂时会有个体差异直接写死在程序里会导致每台设备的读数不一样。参数的作用是让调试人员可以在不改逻辑代码的情况下调整测量准确度这个设计思路在做多台设备时非常重要。4. 常见问题排查传感器读数异常、通信乱码和电源干扰4.1 现象一PM2.5 数值始终为 0 或突变到最大值现象系统运行几分钟后PM2.5 浓度数值一直显示 0或者偶尔跳到 999 这种明显不合理的大值。原因我遇到过两次第一次是传感器供电不足风扇转速不稳定导致激光器工作电流异常串口帧发出来校验错误率极高第二次是传感器数据线上的电平匹配问题3.3V 主控和 5V 传感器逻辑电平不兼容导致帧头偶尔被识别错误。解决先拿示波器看传感器供电脚波形启动瞬间压降是否超过 5%。电源问题就在传感器供电电路上加一个 100uF 的电解电容和一个 10uF 的陶瓷电容。逻辑电平问题则在串口 RX、TX 线上加电平转换电路或者换成支持 3.3V 供电的传感器版本。还有一个容易被忽略的细节传感器下方的 PCB 走线如果和继电器、功率开关类电路太近开关瞬间的电磁干扰会直接打乱串口数据导致周期性错误。4.2 现象二甲醛浓度读数跳变幅度大且无规律现象静态环境下甲醛浓度读数在 0.02ppm 到 0.15ppm 之间来回跳完全稳定不下来。原因这类电化学传感器输出阻抗很高信号线稍微长一点就会变成天线接收环境噪声另外 ADC 采样时序如果安排在和串口通信并行的时间点数字部分的噪声也会耦合进来。解决信号走线尽量短并且在传感器输出到放大器输入端之间加一阶低通 RC 滤波截止频率在 10Hz 左右软件上把 ADC 采样放到系统任务空闲时段避免和 UART 的收发中断重叠。经过这两步处理后读数波动能控制到正负 0.005ppm 以内。如果还跳就要怀疑传感器本身是否已过期这类传感器在不通电存放时寿命也有限超过一年就不建议用在定量测量场景。4.3 现象三环境温度、湿度正确但数据上报到上位机乱码现象本地屏幕显示的温度是 26.5 度通过串口发送到上位机却显示成一段乱码或错误的畸形字符。原因上位机和主控之间的波特率参数不一致常见的是主控初始化为 115200 而上位机配置成了 9600另一个原因是发送了浮点数本身很多上位机显示组件不直接支持小数字节编码必须把浮点数转成字符串再发送。解决统一两端的波特率参数发送端用sprintf把数值格式化成固定格式的字符串。下面是一段通用的数据上报代码char tx_buf[64] {0}; sprintf(tx_buf, %.2f,%.3f,%.2f\r\n, temp_value, hcho_value, pm25_value); uart_send_string(tx_buf);sprintf的格式控制符里.2f表示保留两位小数.3f表示保留三位小数这个精度分别对应温度显示和甲醛浓度显示。\r\n是行结束符上位机端如果使用串口调试助手勾选加回车换行或者在代码里主动加上都可以。如果上位机是自己写的解析程序建议用更紧凑的格式比如T:26.5 H:55.2 P:35\r\n这样的键值对解析起来比裸逗号分隔更不容易错位。4.4 现象四传感器在低温环境下读数整体偏高现象冬天把设备放在阳台半小时甲醛和 PM2.5 读数分别上升了 40% 和 25%拿回室内又慢慢恢复了。原因电化学传感器的零点电压随温度漂移激光散射传感器的风扇在低温下转速变慢导致进风量下降内部算法算出的浓度值偏移。解决这是传感器的物理特性不是代码 bug但可以用软件补偿来减缓影响。在代码里加一个温度补偿表把零点电压的偏移量做成一维查表函数每 5 度一个节点线性插值得到当前温度下的修正值。PM2.5 那边没法直接改传感器内部参数只能尽量保证设备安装在温度相对稳定的环境中。如果要求特别高的场景就得换用带自动校零功能的传感器模块成本会贵一截。5. 进阶优化低功耗设计、数据校准与远程监控扩展5.1 低功耗策略休眠唤醒与轮询间隔调整室内空气监测设备如果长期插电运行低功耗不是首要矛盾但如果要做成电池供电的移动版本功耗就是核心问题。整个系统功耗大头在 PM2.5 传感器的风机和激光器上动辄几百毫瓦。我的做法是让主控进入休眠模式定时器每隔 60 秒唤醒一次唤醒后给传感器上电等预热完成再采集一轮数据采集完成后立刻断电继续休眠。这样一个循环下来平均电流能降到原来连续运行的十分之一。需要注意的是传感器频繁上电下电会缩短风机寿命在程序里要控制最短断电时间比如单次断电时长不少于 30 秒。5.2 数据校准两点标定代替单点修正之前提到甲醛传感器的零点和灵敏度可以预留参数实际操作时建议做两点标定。准备一个干净的环境作为零点比如放一晚上带活性炭过滤的密闭箱再用一个已知浓度的标准气源作为第二点。分别记录 AD 采样值套一下直线方程的两个系数然后写进设备的 Flash 参数区。这样每台设备出厂前做一次标定现场安装时只要环境没有极端污染读数可信度会高很多。这块要注意的是标定气源本身的有效期和浓度准确性不然标定完了反而越标越偏。5.3 远程监控扩展串口转 WiFi 模块对接物联网平台本地显示和报警满足的是单点监测需求如果要做多点组网常见的扩展方式是在主控的 UART2 上挂一个串口转 WiFi 模块把 JSON 格式的数据包 POST 到物联网平台。数据包里包含设备 ID、时间戳、PM2.5、甲醛、温湿度字段。下面是数据包的组成结构typedef struct { char device_id[16]; char timestamp[32]; float pm25; float hcho; float temperature; float humidity; } report_payload_t;字段类型上device_id用固定长度字符数组而不是char *指针方便序列化时直接按结构体偏移拼接timestamp存的是 ISO8601 格式的时间字符串上位机解析时不需要再做时区换算。整个结构体转换成一个字符串后通过 AT 指令发送给 WiFi 模块。实际组网之后我习惯在网关侧做数据缓存网络抖动时本地暂存 20 条记录恢复后补传不然数据丢失率会很难看。做过的几次类似系统里每一次都倒在了看起来不起眼的地方可能是传感器排线接触不良可能是充电器纹波太大也可能是某一句printf里忘了换行符。从那以后我再拿到这类压缩包都会强制自己先花半小时把原工程的外设初始化和传感器时序对照手册捋一遍再动手改代码。资源里给的步骤和图谱是固定答案你手里的硬件才是实时变量。希望这篇文章能帮你少走几段弯路。本文还有配套的精品资源点击获取

相关新闻

SoloMD Agent安全机制全解:AutoGit分支沙箱+write-cap+可重放Trace如何防止AI写坏你的笔记

SoloMD Agent安全机制全解:AutoGit分支沙箱+write-cap+可重放Trace如何防止AI写坏你的笔记

【免费下载链接】solomd A markdown editor — and the bridge to your LLM. Local-first, MIT, ~15 MB. Bundled MCP server lets Claude Code / Codex / Cursor drive your vault directly. 14 AI providers BYOK. 项目地址: https://gitcode.com/gh_mirrors/so/s…

2026/10/15 12:22:56 阅读更多 →
基于SpringBoot的上门宠物服务系统-附源码

基于SpringBoot的上门宠物服务系统-附源码

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/10/15 12:22:56 阅读更多 →
OpenShell配置驱动任务编排:核心机制、环境搭建与踩坑实战

OpenShell配置驱动任务编排:核心机制、环境搭建与踩坑实战

1. 从"OpenShell"这个名字说起:它到底是个什么东西第一次看到"OpenShell"这个词,很多人会下意识地把它和"Shell"脚本、命令行终端联系起来。这个直觉不算错,但也不完全对。在开源社区里,OpenShell这…

2026/10/15 12:22:56 阅读更多 →

最新新闻

Hyper-Frames:无标签视频+里程计自监督预训练,实现低成本运动预测

Hyper-Frames:无标签视频+里程计自监督预训练,实现低成本运动预测

做自动驾驶、移动机器人、无人机导航的同行,应该都有一段被数据集标注反复折磨的经历。最近 Waymo Research 放出的 Hyper-Frames 框架,让我终于看到一条不太一样的路:不用一开始就堆人天去标框、标轨迹、标地图,用无标签视频加里…

2026/10/15 12:59:25 阅读更多 →
Wand图像批处理实战:ImageMagick的Python绑定与PIL替代方案

Wand图像批处理实战:ImageMagick的Python绑定与PIL替代方案

1. 为什么我要认真聊聊Wand这个模块 第一次接触Wand是在处理一批商品图的时候。运营那边丢过来三百多张图片,要求统一裁成正方形、加白色边框、压缩到指定体积以下,还要把每张图的平均色提取出来做配色统计。我当时第一反应是用PIL,但写着写着…

2026/10/15 12:59:25 阅读更多 →
轴承行业竞价内卷加剧,杭州巨宇科技GEO优化让品牌被AI看见

轴承行业竞价内卷加剧,杭州巨宇科技GEO优化让品牌被AI看见

当空压机设备厂商向豆包提问"空压机轴承生产厂家哪家靠谱",向DeepSeek询问"精密轴承供应商推荐、高速轴承哪个品牌好",向Kimi搜索"轴承型号怎么对应、P4级精度是什么水平"时,AI给出的专业回答里,你…

2026/10/15 12:59:25 阅读更多 →
CHAN、Taylor、AOA定位算法实战:从公式到融合避坑指南

CHAN、Taylor、AOA定位算法实战:从公式到融合避坑指南

简介:这份资源围绕无线通信与导航系统中的经典定位算法展开,面向从事物联网、雷达、卫星导航及无线网络定位开发的学习者与研究人员,重点讲解CHAN、Taylor与AOA三种基本方法的原理与实现思路。压缩包共37个文件,以m脚本与mat文件为…

2026/10/15 12:59:25 阅读更多 →
Logstash数据入库MySQL/PostgreSQL:logstash-output-jdbc在线与离线安装全攻略

Logstash数据入库MySQL/PostgreSQL:logstash-output-jdbc在线与离线安装全攻略

Logstash的数据要写进MySQL或者PostgreSQL,很多人在第一步就卡住了:官方自带的输出插件只有elasticsearch、file、stdout这些,偏偏没有关系型数据库。社区里用得最多的补位方案就是logstash-output-jdbc。这个插件本身不难装,但“…

2026/10/15 12:59:25 阅读更多 →
C++结构体详解:定义、使用与最佳实践

C++结构体详解:定义、使用与最佳实践

1. 结构体基础概念解析在C编程中,结构体(struct)是一种将不同类型的数据组合成一个整体的复合数据类型。它允许我们将多个相关的变量打包成一个逻辑单元,这在处理复杂数据时特别有用。比如要记录一个班级的学生信息,每个学生有学号、姓名、成…

2026/10/15 12:58:24 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →