STM32水位监测报警系统Proteus仿真与实现
如果你正在学习STM32单片机开发或者需要完成一个水位监测相关的课程设计、毕业设计那么这篇文章可能会帮你节省大量调试时间。很多初学者在搭建水位监测系统时往往陷入硬件连接复杂、传感器读数不稳定、报警逻辑混乱的困境。实际上通过Proteus仿真我们可以在投入实际硬件前完整验证整个系统的可行性。基于STM32的水位监测报警系统核心价值在于将传统的水位监控方案数字化、智能化。与简单的机械浮球开关相比它能够实现精确的水位测量、多级报警阈值设定、实时显示以及自动控制水泵启停。这不仅适用于水箱、水塔等民用场景也为工业液位监控提供了一种低成本、高可靠性的解决方案。本文将带你从零开始在Proteus中搭建一个完整的STM32水位监测报警系统。你会学到如何连接水位传感器、OLED显示屏、蜂鸣器报警模块和水泵继电器如何编写STM32的ADC采集程序处理传感器数据以及如何实现多级水位报警逻辑。更重要的是我们会重点分析在实际项目中容易出错的几个关键点ADC参考电压的选择、传感器线性化处理、防抖动算法设计以及仿真与实物运行的差异。1. 水位监测系统的核心设计思路1.1 为什么选择STM32Proteus的方案对于单片机学习者来说直接上手硬件调试存在几个痛点硬件成本高、调试风险大、问题定位困难。STM32单片机功能强大但引脚配置复杂一个错误的接线可能导致芯片损坏。而Proteus仿真软件恰好解决了这些问题——你可以在电脑上完成所有电路设计和程序验证确认系统稳定后再制作实物。STM32F103C8T6作为入门级ARM Cortex-M3内核单片机具有12位ADC、丰富的外设接口和充足的Flash存储空间完全能够满足水位监测系统的需求。相比传统的51单片机STM32的ADC精度更高、处理速度更快能够实现更精确的水位测量和更复杂的控制算法。1.2 系统架构与工作流程一个完整的水位监测报警系统包含以下几个核心模块传感模块水位传感器负责将水位高度转换为电信号控制核心STM32单片机处理传感器数据、执行控制逻辑显示模块OLED液晶实时显示当前水位状态和报警信息报警模块蜂鸣器提供声音报警LED提供视觉指示执行模块继电器控制水泵的启停实现自动补水或排水系统工作流程为水位传感器持续检测水位→STM32的ADC模块读取模拟电压值→程序将电压值转换为水位高度→与预设阈值比较决定报警状态→OLED更新显示→根据水位状态控制水泵和报警器。2. Proteus仿真环境搭建2.1 所需软件版本与安装要点确保你使用的是Proteus 8.9或更高版本这些版本对STM32仿真支持更加完善。同时需要安装Keil MDK-ARM开发环境用于编译STM32程序。建议的软件组合是Proteus 8.9 Keil MDK 5.30 STM32F1系列设备库。安装过程中需要注意几个关键点Proteus的License要支持模拟仿真功能Keil中要正确安装STM32F1的Device Family Pack确保Proteus和Keil能够协同工作通过编译生成的.hex文件。2.2 仿真工程创建步骤打开Proteus ISIS新建一个工程选择New Project命名为STM32_WaterLevel_Monitor在选择模板时勾选Create a schematic from the selected template在PCB布局页面暂时选择Do not create a PCB layout在固件页面选择Create Firmware ProjectFamily选择ARM Cortex-M3Controller选择STM32F103C8Toolchain选择Keil for ARM完成创建后Proteus会自动生成一个包含STM32F103C8芯片的原理图页面并创建对应的Keil工程框架。3. 核心硬件模块选型与连接3.1 水位传感器选择与接口设计在水位监测系统中传感器选型直接影响测量精度。常用的水位传感器有浮球式、电容式、超声波式和压力式等。对于仿真项目我们使用简单的电阻式水位传感器它通过电极间的电阻变化来反映水位高度。在Proteus中我们可以使用POT-HG滑动变阻器来模拟水位传感器。将变阻器的两端接在3.3V和GND之间滑动端连接到STM32的PA0引脚ADC1_IN0。当水位变化时变阻器阻值改变PA0引脚上的电压相应变化实现水位模拟。// 传感器连接定义 #define WATER_SENSOR_PIN GPIO_Pin_0 #define WATER_SENSOR_PORT GPIOA #define WATER_SENSOR_ADC ADC1 #define WATER_SENSOR_CHANNEL ADC_Channel_03.2 OLED显示模块接线配置我们选用0.96寸I2C接口的OLED显示屏这种屏幕体积小、功耗低、接口简单。在Proteus中搜索OLED-I2C即可找到对应元件。接线配置OLED SDA → STM32 PB7 (I2C1_SDA)OLED SCL → STM32 PB6 (I2C1_SCL)VCC → 3.3VGND → GNDI2C通信协议只需要两根线能够节省STM32的IO资源特别适合需要连接多个外设的系统。3.3 报警与执行模块电路设计报警模块包含有源蜂鸣器和LED指示灯执行模块使用继电器控制水泵蜂鸣器STM32 PC13 → 三极管基极 → 蜂鸣器正极LED指示灯STM32 PC14 → 220Ω电阻 → LED阳极继电器STM32 PC15 → 三极管驱动电路 → 继电器线圈在Proteus中蜂鸣器选择SOUNDER元件继电器选择RELAY元件。注意驱动继电器时需要添加三极管放大电路因为STM32的IO口驱动能力有限无法直接驱动继电器线圈。4. STM32程序架构设计4.1 主程序流程图与模块划分一个健壮的水位监测程序应该采用模块化设计主要包含以下几个模块系统初始化模块配置时钟、GPIO、ADC、I2C等外设传感器数据采集模块ADC转换、数据滤波处理水位计算模块电压-水位转换算法显示更新模块OLED界面刷新报警判断模块多级阈值比较控制执行模块继电器控制逻辑程序采用轮询方式而非中断因为水位监测对实时性要求不是极高轮询方式更简单可靠。主循环中按顺序调用各个模块函数每次循环加入适当的延时以保证稳定性。4.2 关键外设初始化代码以下是STM32关键外设的初始化代码示例// ADC初始化配置 void ADC1_Init(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1, ENABLE); // 配置PA0为模拟输入 GPIO_InitStructure.GPIO_Pin GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode GPIO_Mode_AIN; GPIO_Init(GPIOA, GPIO_InitStructure); ADC_InitStructure.ADC_Mode ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode DISABLE; ADC_InitStructure.ADC_ContinuousConvMode ENABLE; ADC_InitStructure.ADC_ExternalTrigConv ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel 1; ADC_Init(ADC1, ADC_InitStructure); ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5); ADC_Cmd(ADC1, ENABLE); // ADC校准 ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); ADC_SoftwareStartConvCmd(ADC1, ENABLE); } // I2C初始化用于OLED void I2C1_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; I2C_InitTypeDef I2C_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); // 配置PB6(SCL), PB7(SDA) GPIO_InitStructure.GPIO_Pin GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_OD; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(GPIOB, GPIO_InitStructure); I2C_InitStructure.I2C_Mode I2C_Mode_I2C; I2C_InitStructure.I2C_DutyCycle I2C_DutyCycle_2; I2C_InitStructure.I2C_OwnAddress1 0x00; I2C_InitStructure.I2C_Ack I2C_Ack_Enable; I2C_InitStructure.I2C_AcknowledgedAddress I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_ClockSpeed 400000; // 400kHz I2C_Init(I2C1, I2C_InitStructure); I2C_Cmd(I2C1, ENABLE); }5. 水位检测算法实现5.1 ADC数据采集与滤波处理STM32的12位ADC理论上可以提供0-4095的数值范围但实际采集时会受到噪声干扰。为了保证数据稳定性我们需要采用软件滤波算法。#define SAMPLE_COUNT 10 // 采样次数 uint16_t Get_ADC_Average(uint8_t times) { uint32_t temp_val 0; uint8_t t; for(t 0; t times; t) { temp_val ADC_GetConversionValue(ADC1); Delay_ms(5); // 每次采样间隔5ms } return temp_val / times; } // 中位值平均滤波法防脉冲干扰平均滤波法 uint16_t Get_ADC_FilteredValue(void) { uint16_t i, j; uint16_t temp; uint16_t value_buf[SAMPLE_COUNT]; uint32_t sum 0; // 采样SAMPLE_COUNT次 for(i 0; i SAMPLE_COUNT; i) { value_buf[i] ADC_GetConversionValue(ADC1); Delay_ms(5); } // 冒泡排序 for(j 0; j SAMPLE_COUNT - 1; j) { for(i 0; i SAMPLE_COUNT - 1 - j; i) { if(value_buf[i] value_buf[i 1]) { temp value_buf[i]; value_buf[i] value_buf[i 1]; value_buf[i 1] temp; } } } // 去掉最大最小值的平均值 for(i 1; i SAMPLE_COUNT - 1; i) { sum value_buf[i]; } return sum / (SAMPLE_COUNT - 2); }5.2 电压-水位转换算法水位传感器输出的电压值与实际水位高度之间存在一定的关系这个关系可能是线性的也可能是非线性的。我们需要通过标定来确定转换公式。// 水位标定参数需要根据实际传感器标定 #define WATER_EMPTY_ADC 820 // 空水位时的ADC值 #define WATER_FULL_ADC 3200 // 满水位时的ADC值 #define WATER_HEIGHT_CM 50 // 水箱总高度50cm // ADC值转换为水位高度厘米 uint16_t ADC_To_WaterLevel(uint16_t adc_value) { int32_t water_level; // 限制ADC值在标定范围内 if(adc_value WATER_EMPTY_ADC) { adc_value WATER_EMPTY_ADC; } if(adc_value WATER_FULL_ADC) { adc_value WATER_FULL_ADC; } // 线性转换公式水位 (ADC - 空水位ADC) * 总高度 / (满水位ADC - 空水位ADC) water_level (int32_t)(adc_value - WATER_EMPTY_ADC) * WATER_HEIGHT_CM; water_level / (WATER_FULL_ADC - WATER_EMPTY_ADC); return (uint16_t)water_level; }6. 多级报警逻辑实现6.1 报警阈值设置与状态管理合理设置报警阈值是水位监测系统的关键。我们采用四级水位状态管理typedef enum { WATER_LEVEL_CRITICAL_LOW 0, // 极低水位 10% WATER_LEVEL_LOW, // 低水位10% - 30% WATER_LEVEL_NORMAL, // 正常水位30% - 80% WATER_LEVEL_HIGH, // 高水位80% - 90% WATER_LEVEL_CRITICAL_HIGH // 极高水位 90% } WaterLevel_Status; #define THRESHOLD_CRITICAL_LOW (WATER_HEIGHT_CM * 10 / 100) // 10% #define THRESHOLD_LOW (WATER_HEIGHT_CM * 30 / 100) // 30% #define THRESHOLD_HIGH (WATER_HEIGHT_CM * 80 / 100) // 80% #define THRESHOLD_CRITICAL_HIGH (WATER_HEIGHT_CM * 90 / 100) // 90% WaterLevel_Status Get_WaterLevel_Status(uint16_t water_level_cm) { if(water_level_cm THRESHOLD_CRITICAL_LOW) { return WATER_LEVEL_CRITICAL_LOW; } else if(water_level_cm THRESHOLD_LOW) { return WATER_LEVEL_LOW; } else if(water_level_cm THRESHOLD_HIGH) { return WATER_LEVEL_NORMAL; } else if(water_level_cm THRESHOLD_CRITICAL_HIGH) { return WATER_LEVEL_HIGH; } else { return WATER_LEVEL_CRITICAL_HIGH; } }6.2 报警动作执行逻辑根据不同水位状态执行相应的报警和控制动作void Execute_Alarm_Action(WaterLevel_Status status) { static WaterLevel_Status previous_status WATER_LEVEL_NORMAL; // 状态变化时才更新显示和报警避免频繁操作 if(status ! previous_status) { previous_status status; switch(status) { case WATER_LEVEL_CRITICAL_LOW: // 极低水位启动水泵急促蜂鸣报警红色LED闪烁 PUMP_ON(); Buzzer_Beep(100, 100, 5); // 急促报警声 LED_Red_Blink(200); break; case WATER_LEVEL_LOW: // 低水位启动水泵间歇蜂鸣提示 PUMP_ON(); Buzzer_Beep(500, 1000, 3); // 间歇提示 LED_Yellow_On(); break; case WATER_LEVEL_NORMAL: // 正常水位关闭水泵和报警 PUMP_OFF(); Buzzer_Off(); LED_Green_On(); break; case WATER_LEVEL_HIGH: // 高水位关闭水泵间歇蜂鸣提示 PUMP_OFF(); Buzzer_Beep(1000, 1000, 2); LED_Yellow_On(); break; case WATER_LEVEL_CRITICAL_HIGH: // 极高水位关闭水泵急促蜂鸣报警 PUMP_OFF(); Buzzer_Beep(100, 100, 5); LED_Red_Blink(200); break; } // 更新OLED显示 Update_OLED_Display(status); } }7. OLED显示界面设计7.1 显示内容布局规划0.96寸OLED显示面积有限需要合理规划显示内容。我们采用两页显示方式第一页主页面显示当前水位高度大字体水位百分比进度条当前水位状态文字提示第二页详细信息页显示ADC原始数值电压值报警阈值信息系统运行状态通过按键切换显示页面长按进入设置模式。7.2 OLED驱动代码实现// OLED显示更新函数 void Update_OLED_Display(WaterLevel_Status status) { char display_str[20]; OLED_Clear(); // 显示标题 OLED_ShowString(0, 0, Water Level Monitor, 16); // 显示当前水位值 sprintf(display_str, Level: %2dcm, current_water_level); OLED_ShowString(0, 2, display_str, 16); // 显示水位百分比进度条 uint8_t percentage (current_water_level * 100) / WATER_HEIGHT_CM; OLED_ShowString(0, 4, Progress:, 16); Draw_Progress_Bar(70, 32, percentage); // 显示状态信息 switch(status) { case WATER_LEVEL_CRITICAL_LOW: OLED_ShowString(0, 6, Status: CRITICAL LOW, 16); break; case WATER_LEVEL_LOW: OLED_ShowString(0, 6, Status: LOW, 16); break; case WATER_LEVEL_NORMAL: OLED_ShowString(0, 6, Status: NORMAL, 16); break; case WATER_LEVEL_HIGH: OLED_ShowString(0, 6, Status: HIGH, 16); break; case WATER_LEVEL_CRITICAL_HIGH: OLED_ShowString(0, 6, Status: CRITICAL HIGH, 16); break; } OLED_Refresh(); } // 绘制进度条函数 void Draw_Progress_Bar(uint8_t x, uint8_t y, uint8_t percentage) { uint8_t bar_width 50; uint8_t fill_width (percentage * bar_width) / 100; // 绘制边框 OLED_DrawRectangle(x, y, x bar_width, y 8); // 绘制填充部分 if(fill_width 0) { OLED_Fill(x 1, y 1, x fill_width - 1, y 7, 1); } // 显示百分比数字 char percent_str[5]; sprintf(percent_str, %d%%, percentage); OLED_ShowString(x bar_width 5, y, percent_str, 12); }8. Proteus仿真调试技巧8.1 仿真参数配置要点在Proteus中仿真STM32项目时有几个关键配置需要注意处理器频率设置右键点击STM32芯片选择Edit Properties将Processor Clock Frequency设置为8MHz或72MHz与程序中的系统时钟配置保持一致。仿真速度控制在Debug菜单中选择Set Animation Options适当调整仿真速度。太快的速度可能导致显示刷新不及时太慢则影响调试效率。电压表/示波器使用在需要观察信号波形时可以从仪器栏添加电压表或示波器连接到关键测试点。8.2 常见仿真问题排查问题现象可能原因解决方案程序不运行晶振配置错误检查STM32的OSCIN/OSCOUT引脚连接或在RCC中配置为内部晶振ADC读数始终为0参考电压未设置在STM属性中设置VDDA/VSSA电压通常为3.3V/0VOLED不显示I2C地址错误检查OLED的I2C地址通常0x78或0x7A确认上拉电阻蜂鸣器不响驱动电路问题检查三极管极性添加基极电阻确认蜂鸣器类型有源/无源9. 实际硬件移植注意事项9.1 仿真与实物的差异处理Proteus仿真虽然方便但与实际硬件存在一些差异移植时需要注意电源设计仿真中电源是理想的实际需要稳定的3.3V和5V电源电路添加滤波电容。传感器接口实际水位传感器可能需要信号调理电路如电压跟随器、滤波电路等。抗干扰措施实际环境中需要添加去耦电容、信号隔离等抗干扰设计。继电器保护实际驱动继电器必须添加续流二极管防止反向电动势损坏三极管。9.2 PCB布局与布线建议制作PCB时需要考虑以下几点模拟部分传感器、ADC与数字部分单片机、继电器分开布局模拟地AGND与数字地DGND单点连接电源走线足够宽添加足够的退耦电容晶振尽量靠近单片机引脚周围包地处理继电器等大电流器件单独布线10. 系统优化与功能扩展10.1 功耗优化策略对于电池供电的应用需要考虑功耗优化// 进入低功耗模式 void Enter_LowPower_Mode(void) { // 关闭不必要的外设时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, DISABLE); // 配置ADC为单次转换模式 ADC_InitStructure.ADC_ContinuousConvMode DISABLE; ADC_Init(ADC1, ADC_InitStructure); // 进入停机模式通过外部中断唤醒 PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); }10.2 无线通信功能扩展可以添加ESP8266 WiFi模块或HC-05蓝牙模块实现远程监控WiFi模块通过AT指令连接云平台实现手机APP监控蓝牙模块与手机直接通信适合短距离监控LoRa模块实现远距离低功耗无线传输添加通信功能后系统可以记录历史数据、实现远程报警、支持多设备组网等高级功能。这个基于STM32的水位监测报警系统Proteus仿真项目涵盖了从硬件设计到软件编程的完整开发流程。通过仿真验证后你可以 confidently 制作实物或者在此基础上继续扩展更多功能。建议在实际项目中根据具体需求调整报警阈值、传感器类型和通信方式使系统更加贴合实际应用场景。

相关新闻

Windows更新失败修复全攻略:从症状到解决方案

Windows更新失败修复全攻略:从症状到解决方案

1. Windows更新失败的五大典型症状与危害预警 当Windows更新卡在某个进度百分比超过2小时,或是反复出现"无法完成更新"的红色警告时,你的系统已经处于危险边缘。我见过太多用户强行重启导致启动项损坏的案例——有位设计师因此丢失了即将交付的…

2026/10/15 18:31:47 阅读更多 →
Unity预制体光照贴图烘焙:实现动态场景高质量光影的完整方案

Unity预制体光照贴图烘焙:实现动态场景高质量光影的完整方案

1. 项目概述:为什么预制体烘焙是进阶课题? 在Unity项目开发中,尤其是涉及大量重复场景元素(如室内房间、模块化建筑、可组合的道具)时,我们常常会使用预制体(Prefab)来提高效率。然而…

2026/10/15 12:08:38 阅读更多 →
2026最新八字排盘软件怎么选?从30分钟迁移演练看是否好用

2026最新八字排盘软件怎么选?从30分钟迁移演练看是否好用

2026最新八字排盘软件怎么选?从30分钟迁移演练看是否好用 第三方观察结论:2026年7月17日围绕“什么八字排盘软件好用”做了一次交接与退出演练。评估重点不是功能按钮有多少,而是换设备、换协作者或停止订阅后,案例、依据和修改记…

2026/10/4 12:47:02 阅读更多 →

最新新闻

NLog 项目贡献指南:从 Issue 报告、多目标编译到 CI 构建的完整实战手册

NLog 项目贡献指南:从 Issue 报告、多目标编译到 CI 构建的完整实战手册

后端运维观测 【免费下载链接】NLog NLog - Flexible and Structured Logging for various .NET Platforms 项目地址: https://gitcode.com/gh_mirrors/nl/NLog 点击查看 免费下载 本文档是 NLog 开源仓库(.NET 平台灵活的结构化日志框架)中…

2026/10/15 18:31:45 阅读更多 →
2026 必应(Bing)关键词 SEO 优化排名全攻略:算法逻辑 + 落地实操 + 效果监测

2026 必应(Bing)关键词 SEO 优化排名全攻略:算法逻辑 + 落地实操 + 效果监测

国内搜索引擎市场,百度始终占据主流地位,多数企业的 SEO 布局也围绕百度展开,但往往忽略了第二大桌面搜索引擎必应(Bing)的流量价值。随着 2025 年必应搜索算法持续迭代,AI 语义识别能力大幅提升&#xff0…

2026/10/15 18:31:45 阅读更多 →
5分钟搞懂 octo-server 交互式卡片协议:一份 JSON 如何搞定消息渲染与交互

5分钟搞懂 octo-server 交互式卡片协议:一份 JSON 如何搞定消息渲染与交互

【免费下载链接】octo-server 🐙 The Go backend powering OCTO — an open workplace built for humans AI agents. REST & WebSocket APIs, Lobster (AI agent) orchestration, and WuKongIM real-time messaging control plane. 项目地址: https…

2026/10/15 18:31:45 阅读更多 →
Trae中设置 Skill

Trae中设置 Skill

前提:登录Trae什么是 Skill?定义一个 Skill 是一份清晰、严谨、可执行的指令文档,用于明确告诉模型——在什么条件下(When),按照哪些步骤(How),产出什么结果(…

2026/10/15 18:31:45 阅读更多 →
Camping World EDI 项目注意事项:订单变更、ASN、库存同步与供应商合规细节

Camping World EDI 项目注意事项:订单变更、ASN、库存同步与供应商合规细节

对接 Camping World EDI,需要把采购订单、订单变更、商品编码、仓库装箱、发货通知和发票处理连接起来。单据发送成功之后,数据是否符合订单要求、ASN 是否与实物一致、标签是否能够匹配收货流程,都会影响订单履约和回款。 此前发布的文章 …

2026/10/15 18:31:45 阅读更多 →
LED点阵显示任意汉字:从字模生成到串口协议全链路实现

LED点阵显示任意汉字:从字模生成到串口协议全链路实现

简介:本资源是一套完整的LED点阵汉字显示系统开发包,面向嵌入式初学者、单片机课程设计者及AVR实践爱好者,解决“如何让88或1616点阵动态显示任意GB2312汉字”这一典型硬件交互问题。压缩包共18个文件,含AVR下位机核心代码&#x…

2026/10/15 18:30:45 阅读更多 →

日新闻

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/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

2026/10/14 16:30:29 阅读更多 →
影刀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/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 阅读更多 →