基于STM32单片机的防火报警系统设计与实现
1. 从零搭建一个靠谱的防火报警系统为什么我选了单片机这条路前阵子有个做物业设备管理的朋友找我说他们管的那片老旧库房消防主机年久失修动不动就误报换一套商用系统报价高得离谱问我能不能用单片机搞一套低成本、能落地的防火报警方案。这个需求其实挺典型的——不是要造什么高精尖的工业级设备而是要在有限预算内把“温度异常烟雾异常声光报警远程通知”这条链路跑通还得稳定、别老误报。我前后折腾了大概三周从选型、打样、写固件到现场调试踩了不少坑也总结出一套相对成熟的思路。这篇文章就把整个项目拆开讲清楚单片机防火报警系统到底怎么设计、核心传感器怎么选、阈值怎么定、报警逻辑怎么写、现场安装要注意什么。不管你是电子专业的学生想做课程设计还是搞物联网的开发者想快速搭个原型或者像我朋友这样有实际部署需求的设备管理人员都能从里面找到能直接抄作业的东西。先说清楚这个系统的定位它不是一个替代专业消防主机的方案而是在小面积、低风险、预算敏感的场景下做一个独立式火灾预警装置。核心能力就四件事——感知温度变化、感知烟雾浓度、本地声光报警、可选地把报警信息推送到手机或管理平台。把这四件事做扎实就已经能覆盖很多实际场景了。2. 整体方案怎么定主控、传感器、报警链路的一次性选型思路2.1 为什么主控我最终选了STM32而不是51或ESP32选主控这件事我一开始也纠结过。51单片机便宜、资料多ESP32自带WiFi能直接联网STM32性能和生态均衡。最后我选了STM32F103C8T6这颗经典的“最小系统板”原因有三条。第一ADC精度和通道数够用。烟雾传感器输出的模拟信号需要ADC采集温度传感器如果用模拟输出的热敏电阻或LM35也需要ADC。51的ADC要么外挂要么精度只有8位做阈值判断时抖动明显。STM32F103自带12位ADC多通道扫描采集稳定性好很多。第二中断和定时器资源充足。防火报警的核心逻辑是“周期性采样阈值判断报警输出”需要定时器做精确的时间基准还需要外部中断处理按键消抖、传感器数字信号触发等。51的定时器数量少跑起来捉襟见肘。第三功耗和成本平衡。ESP32虽然能联网但功耗偏高如果做电池供电的独立式设备续航会很难看。STM32F103在运行模式下功耗可控配合低功耗模式用一节18650电池撑几天没问题。而且这颗芯片价格便宜最小系统板十几块钱就能买到打样成本低。注意如果你确定现场有稳定供电且必须联网ESP32是更省事的选择省掉外挂WiFi模块的麻烦。但如果供电不稳定或者要做电池备份STM32更稳妥。2.2 温度检测热敏电阻、LM35还是DS18B20温度检测这块市面上常见三种方案我列个表对比一下。方案精度接口成本适用场景NTC热敏电阻一般需校准模拟ADC极低对精度要求不高的场合LM35较好线性输出模拟ADC低需要连续温度曲线的场合DS18B20高数字输出单总线中等多点测温、精度要求高我最终选了DS18B20。原因是它数字输出抗干扰能力强一根线能挂多个传感器布线简单。而且它自带温度转换不需要我做复杂的线性化计算。虽然单总线协议时序要求严格但STM32的定时器足够精确写起来不难。DS18B20的关键参数测温范围-55到125摄氏度精度正负0.5度分辨率可配置9到12位。做火灾预警我把它配置成12位分辨率转换时间750毫秒足够用。2.3 烟雾检测离子式、光电式还是MQ系列烟雾检测是防火报警的核心。离子式传感器对微小颗粒敏感但含有放射性物质现在基本淘汰。光电式传感器利用烟雾颗粒对光的散射适合检测明火产生的烟雾。MQ系列比如MQ-2是半导体气敏传感器对可燃气体和烟雾都有响应价格便宜但需要预热且输出受温湿度影响大。我选了光电式烟雾传感器模块具体型号是那种带比较器输出的通用模块。它输出两路信号一路模拟量一路数字量超过阈值拉低。模拟量用来做趋势判断数字量用来做快速触发。这里有个坑光电式传感器在灰尘大的环境里容易误报。我朋友那个库房灰尘就不少所以我在固件里加了“持续时间判断”——只有烟雾浓度连续超过阈值超过3秒才触发报警避免瞬时灰尘干扰。2.4 报警输出声光报警继电器远程通知报警输出分三层。第一层是本地声光报警用有源蜂鸣器和红色LED声音要够大至少85分贝LED要闪烁让人一眼看到。第二层是继电器输出用来联动排风扇、切断电源等外部设备。第三层是远程通知我预留了一个串口可以接WiFi模块或4G模块把报警信息推送到管理平台。继电器的选型要注意触点容量要大于负载电流我选的是5V驱动的固态继电器触点容量10A驱动排风扇绰绰有余。固态继电器没有机械触点寿命长但价格比机械继电器贵一点。3. 硬件搭建从原理图到实物焊接的完整过程3.1 最小系统板的引脚分配和外围电路STM32F103C8T6最小系统板引出所有GPIO我按功能做了分配。PA0ADC采集烟雾传感器模拟输出PA1DS18B20数据线单总线PA2烟雾传感器数字输出外部中断PA3按键输入用于消音和复位PB0蜂鸣器控制PB1红色LED控制PB5继电器控制PA9/PA10串口TX/RX接无线模块外围电路方面DS18B20的数据线需要接一个4.7k欧姆上拉电阻到3.3V。蜂鸣器我用的是有源蜂鸣器直接GPIO驱动能力不够加了一个S8050三极管做开关。继电器模块自带光耦隔离直接接GPIO就行。电源部分我用的是5V/2A的电源适配器经过AMS1117-3.3稳压给STM32和传感器供电。这里要注意蜂鸣器和继电器工作时电流较大电源要留足余量否则会导致单片机复位。我实测蜂鸣器峰值电流约30毫安继电器约20毫安加上传感器和单片机本身总电流不超过200毫安2A电源绰绰有余。3.2 焊接和接线中的几个实操细节焊接这块我说几个容易出问题的地方。第一DS18B20的引脚顺序。它有三个引脚面对平面从左到右是GND、DQ、VDD。我一开始焊反了读出来一直是85度这是DS18B20的上电默认值排查了半天才发现是接线问题。第二光电烟雾传感器的预热。这个传感器上电后需要预热20到30秒输出才稳定。我在固件里加了预热延时上电后前30秒不判断报警只做数据采集。第三继电器的续流二极管。如果是机械继电器线圈两端要反接一个二极管比如1N4007吸收反向电动势保护单片机。固态继电器不需要。第四走线要远离强电。库房里有380V动力线信号线如果和动力线捆在一起走干扰会很大。我把传感器线单独走PVC管和动力线保持至少20厘米距离。3.3 外壳和安装位置的选择外壳我选的是标准86盒大小的塑料防水盒IP54防护等级能防尘防溅水。安装位置很关键温度传感器要远离热源和通风口否则测的不是环境温度烟雾传感器要装在空气流通但不受强气流直吹的位置一般离天花板30到60厘米因为烟雾上升后会先在顶部聚集。我朋友那个库房我装了三个节点分别放在货架区、充电区和出入口。每个节点独立工作通过串口汇总到一个集中控制器再统一上传。4. 固件开发采样、判断、报警的完整逻辑实现4.1 主循环和定时器中断的配合固件的整体架构是“定时器中断驱动采样主循环处理逻辑”。我用TIM2做1毫秒基准中断在中断里做软件计数每500毫秒触发一次传感器采样每1秒做一次报警判断。为什么用定时器中断而不是delay因为delay会阻塞CPU导致按键响应迟钝、串口数据丢失。用中断做时间基准主循环可以随时响应外部事件。// 定时器中断服务函数伪代码 void TIM2_IRQHandler(void) { if (TIM_GetITStatus(TIM2, TIM_IT_Update) ! RESET) { TIM_ClearITPendingBit(TIM2, TIM_IT_Update); tick_500ms; tick_1s; if (tick_500ms 500) { tick_500ms 0; sample_sensors(); // 采样传感器 } if (tick_1s 1000) { tick_1s 0; check_alarm(); // 判断报警 } } }4.2 温度采样DS18B20的时序和温度换算DS18B20的单总线协议对时序要求很严。复位脉冲要拉低至少480微秒然后释放等待15到60微秒后检测存在脉冲。写时隙和读时隙都有严格的微秒级要求。我用STM32的定时器做微秒延时实测稳定。温度换算公式DS18B20输出的是16位带符号数低4位是小数部分。如果配置成12位分辨率精度是0.0625度。换算方法把原始值乘以0.0625就是摄氏度。float ds18b20_get_temp(void) { uint8_t temp_l, temp_h; int16_t raw; float temp; ds18b20_reset(); ds18b20_write_byte(0xCC); // 跳过ROM ds18b20_write_byte(0x44); // 启动转换 delay_ms(750); // 等待转换完成 ds18b20_reset(); ds18b20_write_byte(0xCC); ds18b20_write_byte(0xBE); // 读取暂存器 temp_l ds18b20_read_byte(); temp_h ds18b20_read_byte(); raw (temp_h 8) | temp_l; temp raw * 0.0625; return temp; }4.3 烟雾采样ADC滤波和阈值判断烟雾传感器的模拟输出我用ADC1的通道0采集采样周期设为55.5个时钟周期保证采样电容充分充电。为了滤除噪声我做了16次采样取平均。uint16_t get_smoke_adc(void) { uint32_t sum 0; for (int i 0; i 16; i) { ADC_SoftwareStartConvCmd(ADC1, ENABLE); while (!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)); sum ADC_GetConversionValue(ADC1); } return sum / 16; }阈值怎么定我在现场做了标定干净空气下ADC读数约200点燃一张纸产生烟雾后读数升到800以上。我把报警阈值设在600同时要求连续3次采样即1.5秒都超过600才触发报警。这样既能快速响应又能避免灰尘瞬时干扰。4.4 报警逻辑分级报警和消音处理报警逻辑我做了分级。温度超过60度或烟雾ADC超过600进入“预警”状态黄色LED闪烁蜂鸣器间歇响。温度超过80度或烟雾ADC超过900进入“火警”状态红色LED常亮蜂鸣器长鸣继电器吸合。消音按键的处理按下按键后蜂鸣器静音但LED继续指示报警状态直到报警条件解除。这个逻辑用状态机实现避免按键抖动导致误操作。typedef enum { STATE_NORMAL, STATE_WARNING, STATE_FIRE, STATE_SILENCE } alarm_state_t; alarm_state_t current_state STATE_NORMAL; void check_alarm(void) { float temp ds18b20_get_temp(); uint16_t smoke get_smoke_adc(); if (temp 80.0 || smoke 900) { if (current_state ! STATE_SILENCE) { current_state STATE_FIRE; } } else if (temp 60.0 || smoke 600) { if (current_state ! STATE_SILENCE current_state ! STATE_FIRE) { current_state STATE_WARNING; } } else { current_state STATE_NORMAL; } update_outputs(current_state); }5. 现场调试那些文档里不会写的坑和排查方法5.1 误报排查从电源、传感器到阈值的逐层定位误报是防火报警系统最头疼的问题。我朋友那个库房调试第一天就误报了三次。排查思路是这样的第一步查电源。用示波器看3.3V和5V电源纹波如果纹波超过100毫伏传感器输出就会抖动。我实测发现继电器吸合瞬间5V电源跌落到4.2V导致烟雾传感器输出跳变。解决办法是在继电器线圈两端加续流二极管并在电源输出端加一个1000微法电解电容。第二步查传感器。光电烟雾传感器对灰尘和湿气敏感。我用气吹清理了传感器腔体误报频率明显下降。如果环境灰尘大建议加装防尘网但要定期清理。第三步查阈值。阈值设得太低正常波动也会触发。我把烟雾阈值从500调到600温度预警阈值从50度调到60度误报基本消失。第四步查逻辑。持续时间判断很关键。我要求连续3次采样超标才报警单次超标只记录不报警。这个改动直接消灭了90%的误报。5.2 通信不稳定串口丢包和无线模块的调试经验串口通信这块我踩的坑主要是波特率和缓冲区。STM32的串口波特率我设的是9600但无线模块默认是115200导致收到的全是乱码。改成一致后正常。另外串口接收要用中断环形缓冲区不能在主循环里轮询否则会丢数据。我定义了一个256字节的环形缓冲区中断里往缓冲区写主循环里读出来解析。#define BUF_SIZE 256 uint8_t rx_buf[BUF_SIZE]; volatile uint16_t rx_head 0; volatile uint16_t rx_tail 0; void USART1_IRQHandler(void) { if (USART_GetITStatus(USART1, USART_IT_RXNE) ! RESET) { uint8_t data USART_ReceiveData(USART1); uint16_t next (rx_head 1) % BUF_SIZE; if (next ! rx_tail) { rx_buf[rx_head] data; rx_head next; } USART_ClearITPendingBit(USART1, USART_IT_RXNE); } }5.3 常见问题速查表现象可能原因排查方法解决办法上电后温度一直显示85度DS18B20接线错误或未接上拉电阻检查引脚顺序和上拉电阻重新接线加4.7k上拉烟雾传感器无输出未预热或供电不足等待30秒测供电电压加预热延时换大电流电源蜂鸣器声音小GPIO驱动能力不足测蜂鸣器两端电压加三极管驱动继电器吸合导致复位电源跌落示波器看5V电源加续流二极管和滤波电容串口收不到数据波特率不匹配或接线反了确认波特率和TX/RX交叉统一波特率交换TX/RX频繁误报阈值过低或灰尘干扰观察ADC读数波动提高阈值加持续时间判断6. 功能扩展从单机报警到联网管理的升级路径6.1 加装无线模块实现远程通知单机报警只能在现场起作用如果人不在现场报警就白报了。加一个无线模块把报警信息推送到手机实用性会大幅提升。我预留的串口就是干这个用的。无线模块选型上如果现场有WiFi覆盖用ESP8266或ESP32做透传成本低开发快。如果没有WiFi用4G模块但要注意流量费用。我朋友那个库房没有WiFi我给他配了一个4G DTU模块串口输入AT指令就能发数据到云平台。数据格式我用的是简单的JSON包含节点编号、温度值、烟雾值、报警状态和时间戳。云平台收到后做解析和展示。{ node_id: NODE_01, temp: 72.5, smoke: 850, state: FIRE, timestamp: 2025-01-15T14:30:00 }6.2 多节点组网和集中管理单个节点覆盖面积有限大空间需要多节点组网。我的方案是每个节点通过RS485总线连接到集中控制器集中控制器再通过4G上传。RS485用双绞线最长能跑1200米一个总线能挂32个节点足够用。RS485的接线要注意A接AB接B终端节点要接120欧姆匹配电阻。我一开始没接匹配电阻通信距离超过50米就丢包加上电阻后稳定跑200米没问题。集中控制器我用的是另一块STM32跑Modbus协议轮询各个节点。每个节点分配一个地址控制器依次查询温度和烟雾值发现异常就触发总报警。6.3 数据记录和趋势分析防火报警不只是“报”还要能“查”。我加了一个SD卡模块把每次采样数据记录到CSV文件里。这样事后可以分析温度变化趋势判断是缓慢升温还是突然起火。SD卡用SPI接口文件系统用FatFs。每500毫秒写一次数据一张8G卡能存好几个月。写卡的时候要注意不要频繁开关文件我是一小时创建一个新文件文件内追加写入避免频繁打开关闭导致卡损坏。// 每小时创建新文件 if (minute 0 second 0) { f_close(file); sprintf(filename, log_%02d%02d%02d.csv, hour, day, month); f_open(file, filename, FA_CREATE_ALWAYS | FA_WRITE); } // 追加数据 sprintf(line, %lu,%.1f,%d,%d\r\n, tick, temp, smoke, state); f_puts(line, file); f_sync(file);7. 成本核算和部署建议7.1 单节点物料清单和总成本我把单节点的物料成本列一下方便你做预算参考。物料型号数量单价元小计元主控板STM32F103C8T6最小系统11515温度传感器DS18B20155烟雾传感器光电式模块11212蜂鸣器有源5V122LED红/黄/绿30.51.5继电器模块固态5V188电源5V/2A适配器11010外壳86盒防水188线材、电阻等--55合计66.5加上无线模块和集中控制器三个节点的总成本大概在300元左右。相比商用消防主机动辄几千上万的报价这个方案在预算敏感的场景下优势明显。7.2 部署位置和数量怎么定部署位置和数量要根据空间大小和风险等级来定。我的经验是每50到80平方米布置一个节点重点区域充电区、易燃物存放区单独加一个。节点安装高度离天花板30到60厘米避开通风口和热源。如果空间有隔断每个隔断间至少一个节点。我朋友那个库房有四个隔断间我装了四个节点加一个集中控制器覆盖得很完整。7.3 日常维护和定期测试装完不是就完事了日常维护很重要。我建议每月做一次测试用打火机不点燃只放气靠近烟雾传感器看是否报警用热风枪低温档吹温度传感器看是否触发预警。每季度清理一次传感器腔体防止灰尘积累导致误报。电池供电的节点要定期检查电池电压。我在固件里加了低电压检测电压低于3.3V时通过串口上报提醒更换电池。8. 我在这个项目里踩过的坑和总结的经验这个项目从选型到部署前后折腾了三周踩的坑不少但收获也大。最大的体会是防火报警系统的核心不是硬件多高级而是逻辑多可靠。传感器再贵阈值定不好、滤波做不好照样误报漏报。反过来便宜的传感器配合合理的滤波和持续时间判断也能做到很稳。另一个体会是现场调试比实验室调试重要得多。实验室里环境干净、电源稳定什么都正常。到了现场灰尘、温湿度变化、电源波动、电磁干扰各种问题都冒出来。所以一定要留足现场调试时间别指望一次成功。最后说个细节报警声音要够大但也不能太吵。我一开始用的蜂鸣器声音特别尖邻居投诉了好几次。后来换了一个频率低一点的蜂鸣器声音还是85分贝但听起来不那么刺耳。这个细节虽然小但影响实际使用体验。如果你也在做类似的项目我的建议是先把单节点跑通再考虑组网和联网。单节点稳定了后面扩展就是水到渠成的事。别一上来就搞复杂架构容易把自己绕进去。

相关新闻

OpenGL实验跑通指南:依赖配置、CMake编译与shader调试实战

OpenGL实验跑通指南:依赖配置、CMake编译与shader调试实战

简介:针对西北工业大学软件学院计算机图形学课程打包的实验代码合集,覆盖VC6.0环境下的多个独立实验项目,适合课程在读学生及希望借助实例入门图形学编程的学习者。压缩包共224个文件,以C源文件(.cpp/.h)、…

2026/10/14 2:15:21 阅读更多 →
域渗透神器 Certipy:AD‑CS 证书漏洞挖掘与利用

域渗透神器 Certipy:AD‑CS 证书漏洞挖掘与利用

🔒免责声明:本文全部技术内容仅限授权渗透测试、红蓝对抗、安全学习研究使用。未经目标域环境书面授权,禁止在企业 AD 域执行证书枚举、证书申请、提权、伪造证书等攻击操作,未授权访问计算机系统属于违法行为。全部演示基于自建隔…

2026/10/14 2:15:21 阅读更多 →
软考高项备考:每日5题训练法与解题技巧

软考高项备考:每日5题训练法与解题技巧

1. 项目背景与价值解析"3.13软考高项-每日5题"这个标题看似简单,却蕴含着备考者最迫切的需求。作为参加过多次软考高项(信息系统项目管理师)的过来人,我深知最后冲刺阶段每日保持题感的重要性。这个每日5题的训练模式&a…

2026/10/14 2:14:21 阅读更多 →

最新新闻

Python爬虫实战:手机APP数据抓取与解析全流程

Python爬虫实战:手机APP数据抓取与解析全流程

简介:这份PDF资料面向具备Python基础、对网络请求与爬虫开发感兴趣的技术爱好者与研发工程师,围绕手机APP数据传输的抓取与解析展开,重点讲解如何借助Fiddler抓包定位登录与话题接口,再通过urllib2构造HTTP请求、携带Header与表单…

2026/10/14 3:04:31 阅读更多 →
C++ 对接 S3 对象存储实战:SDK 选型、分片上传与避坑指南

C++ 对接 S3 对象存储实战:SDK 选型、分片上传与避坑指南

/* 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 3:04:31 阅读更多 →
SQLite安装全指南:嵌入式数据库跨平台配置与常见坑

SQLite安装全指南:嵌入式数据库跨平台配置与常见坑

第一次折腾SQLite的时候,我找了一圈“Setup.exe”,愣是没找到。下载页面全是压缩包,网上一堆教程各写各的,有人说不用装,有人说得编译源码,看得人发懵。后来我才搞明白:SQLite的“安装”逻辑跟M…

2026/10/14 3:04:31 阅读更多 →
C++手写数据结构实战:动态数组、哈希表、AVL树与图算法

C++手写数据结构实战:动态数组、哈希表、AVL树与图算法

简介:《Implementing Useful Algorithms in C》由Dmytro Kedyk撰写,面向具备一定C基础、希望深入掌握算法设计与工程实现的开发者与计算机专业学生。全书从算法正确性证明、渐进记法与机器模型等基本原则切入,系统讲解数据类型选择、内存管理…

2026/10/14 3:04:31 阅读更多 →
本地27B模型配Function Calling:工具不触发的原因与实战

本地27B模型配Function Calling:工具不触发的原因与实战

给本地跑的27B模型配了三个专业工具之后,我做的第一件事就是拿它试聊天。你猜怎么着——工具列表明明挂在接口定义里,模型却像一个看见工具箱、却只肯用手拧瓶盖的人,简单问题全凭语言能力直接答,一个工具都不碰。我一度觉得这套配…

2026/10/14 3:04:31 阅读更多 →
容器内nvidia-smi报Unknown Error的排查与根治

容器内nvidia-smi报Unknown Error的排查与根治

凌晨两点半,工作群里弹出一条消息:某个长期跑的容器,前一秒还好好的,后一秒容器里的nvidia-smi直接报Failed to initialize NVML: Unknown Error。宿主机上执行nvidia-smi一切正常,新建一个临时容器也能正常看到卡&…

2026/10/14 3:03:31 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →