STM32+OpenMV双MCU云台追踪系统设计与PID实时控制
简介本资源是一套基于STM32F103主控与OpenMV视觉模块协同实现的二维舵机云台PID追踪系统程序面向嵌入式开发初学者、智能硬件爱好者及电磁炮/目标追踪类课程设计实践者解决视觉识别坐标反馈与舵机运动闭环控制的关键问题。压缩包共455个文件含151个C源码与131个头文件构成完整固件框架38个编译中间文件.o/.d/.crf体现Keil工程结构另有28张PNG图像可能为调试界面或硬件示意图、8个说明文本及Keil工程配置文件.uvprojx/.uvoptx/.sct等整体11.86MB结构规范、模块清晰便于理解PID参数整定与多级通信流程。已有8230人学习下载读者可直接获取可烧录的STM32端PID控制核心代码、配套编译脚本bat、中文字符支持库cc936.c等及典型调试输出文件axf/hex/map结合OpenMV端自行开发的颜色识别逻辑快速搭建并调优双轴伺服跟踪系统。1. 为什么用 STM32F103 OpenMV 做二维云台追踪反而比直接上树莓派更稳这不是一个“炫技选型”而是某高校课程设计中真实踩坑后倒推出来的务实方案。学生A同学最初用树莓派4B接USB摄像头Python跑YOLOv5轻量模型目标是让云台自动追人脸——结果在实验室灯光下帧率卡在8fpsPID调参时舵机抖动像癫痫一挪动摄像头就丢目标换OpenCVHaar级联又受光照干扰严重阴天识别率直接掉到40%。后来换成OpenMVH7做图像处理核心STM32F103C8T6做运动控制主控双MCU分工OpenMV只干一件事——每20ms发一次目标中心坐标x,y和置信度STM32只干另一件事——接收、滤波、跑双路独立PID、输出PWM驱动两个SG90舵机。实测稳定追踪响应时间120ms角度误差±1.5°以内功耗压到180mA一块18650就能撑4小时。这套方案不拼算力拼的是确定性OpenMV固件内建色块/人脸/二维码识别启动即用无依赖STM32F103的TIM定时器硬件PWM精度达0.1°PID运算在72MHz主频下单次耗时35μs。它适合所有需要“可预测响应、低功耗、免调试部署”的课设/毕设场景——比如智能巡检小车云台、教学机器人视觉伺服、嵌入式视觉追踪Demo而不是追求“能识别100类物体”的纸面指标。2. 总体架构设计双MCU协同架构与四层数据流定义这套系统不是把OpenMV当“高级摄像头”用而是把它当作一个专用视觉协处理器。整个数据链路被严格切分为四层图像采集层OpenMV端、通信协议层UART帧格式、控制算法层STM32端PID核心、执行驱动层PWM输出与舵机物理响应。每一层都有明确边界和容错机制避免传统单片机方案里“图像处理卡顿导致PID积分饱和炸舵机”的经典翻车。2.1 OpenMV端轻量化识别与结构化数据封装OpenMV固件运行MicroPython但绝不写复杂逻辑。核心代码只做三件事初始化摄像头、运行预设识别算法、按固定帧率打包发送。以色块追踪为例最常用且鲁棒关键配置如下# main.py - OpenMV端主程序H7固件 import sensor, image, time, uart from pyb import LED # 初始化 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) # 160x120够用且快 sensor.skip_frames(time2000) sensor.set_auto_gain(False) # 关闭自动增益防光照突变漂移 sensor.set_auto_whitebal(False) uart uart.UART(3, 115200) # 使用UART3波特率必须与STM32一致 uart.init(115200, bits8, parityNone, stop1) # 主循环每20ms发一帧50Hz严格守时 clock time.clock() while(True): clock.tick() img sensor.snapshot() # 识别红色色块HSV阈值需根据实际环境标定 blobs img.find_blobs([(30, 100, 40, 80, 30, 80)], pixels_threshold100, area_threshold100) if blobs: b max(blobs, keylambda b: b.pixels()) # 取最大色块 # 打包为12字节二进制帧[0xAA, x_low, x_high, y_low, y_high, conf, 0x55, chk] x int(b.cx()) y int(b.cy()) conf min(100, int(b.pixels() / 10)) # 归一化置信度0-100 frame bytearray([0xAA, x0xFF, (x8)0xFF, y0xFF, (y8)0xFF, conf, 0x55]) chk sum(frame) 0xFF frame.append(chk) uart.write(frame) else: # 无目标时发空帧xy0, conf0 uart.write(bytearray([0xAA, 0, 0, 0, 0, 0, 0x55, 0])) # 强制等待至20ms整周期避免帧率漂移 ms_to_wait max(1, 20 - clock.avg()) time.sleep_ms(ms_to_wait)设计说明QQVGA分辨率是关键取舍——比QVGA快3倍对舵机响应足够auto_gainFalse强制锁定曝光避免灯光变化时目标“忽明忽暗”导致坐标跳变帧格式含起始/结束标志0xAA/0x55和校验和chkSTM32端可100%过滤误码time.sleep_ms()硬同步确保50Hz恒定帧率这是PID稳定的基础——如果OpenMV帧率抖动STM32的采样周期就不准微分项会发疯。2.2 STM32F103端双路独立PID控制器与硬件PWM实现STM32不处理图像只做三件事解析UART帧、运行两个并行PID、生成两路高精度PWM。这里用TIM2_CH1/TIM2_CH2输出PWM对应水平/垂直舵机TIM3作为主循环定时器20ms中断与OpenMV帧率锁相。PID参数全部存于Flash支持上位机串口修改。// pid_control.c - 核心PID计算位置式带积分限幅与微分先行 #define PID_SAMPLE_TIME_MS 20 typedef struct { float Kp, Ki, Kd; float setpoint; // 目标值图像中心80,60 float input; // 当前测量值OpenMV发来的x或y float output; // PWM占空比0-1000对应0-100% float last_input; float integrator; float integrator_max; // 积分限幅防饱和 } PID_t; PID_t pid_h {1.2f, 0.015f, 0.8f, 80.0f, 0.0f, 0.0f, 0.0f, 500.0f}; // 水平PID PID_t pid_v {1.2f, 0.015f, 0.8f, 60.0f, 0.0f, 0.0f, 0.0f, 500.0f}; // 垂直PID // 20ms定时器中断服务函数TIM3_IRQHandler void TIM3_IRQHandler(void) { if (TIM_GetITStatus(TIM3, TIM_IT_Update) ! RESET) { TIM_ClearITPendingBit(TIM3, TIM_IT_Update); // 1. 解析最新UART数据环形缓冲区已存好一帧 if (uart_frame_valid) { parse_uart_frame(); // 提取x,y,conf更新pid_h.input/pid_v.input uart_frame_valid 0; } // 2. 运行双路PID独立计算互不干扰 pid_h.output pid_calculate(pid_h); pid_v.output pid_calculate(pid_v); // 3. 输出PWMTIM2通道1/2分辨率为1000 TIM_SetCompare1(TIM2, (uint16_t)pid_h.output); TIM_SetCompare2(TIM2, (uint16_t)pid_v.output); } } float pid_calculate(PID_t* pid) { float error pid-setpoint - pid-input; float p_term pid-Kp * error; // 积分项仅在误差较小时累加防大偏差时积分饱和 if (fabsf(error) 15.0f) { pid-integrator pid-Ki * error * PID_SAMPLE_TIME_MS; // 积分限幅 if (pid-integrator pid-integrator_max) pid-integrator pid-integrator_max; if (pid-integrator -pid-integrator_max) pid-integrator -pid-integrator_max; } // 微分项对输入非误差微分抑制超调微分先行 float d_term pid-Kd * (pid-input - pid-last_input) / PID_SAMPLE_TIME_MS; pid-last_input pid-input; return p_term pid-integrator d_term; }设计说明pid_calculate()采用微分先行Derivative on Measurement结构避免设定值阶跃时微分项产生巨大冲击这是舵机不抖的关键积分限幅integrator_max500防止长时间偏差导致积分饱和一旦饱和舵机就会“死锁”在极限位置TIM2配置为1MHz计数频率ARR1000CCR500即50%占空比对应SG90的中位90°线性映射关系明确所有浮点运算在72MHz下耗时35μs远低于20ms周期留足余量。2.3 通信协议层抗干扰UART帧设计与解析策略OpenMV与STM32间只有UART一条物理链路必须解决三个问题1如何区分有效帧与乱码2如何应对OpenMV重启导致的帧头错位3如何容忍短暂通信中断。本方案采用状态机解析 超时重置// uart_parser.c - STM32端帧解析状态机 typedef enum { WAIT_START, GET_X_LOW, GET_X_HIGH, GET_Y_LOW, GET_Y_HIGH, GET_CONF, WAIT_END, CHECK_SUM } ParseState_t; ParseState_t parse_state WAIT_START; uint8_t rx_buffer[12]; uint8_t rx_index 0; uint8_t uart_frame_valid 0; void USART3_IRQHandler(void) { uint8_t res; if(USART_GetITStatus(USART3, USART_IT_RXNE) ! RESET) { res USART_ReceiveData(USART3); switch(parse_state) { case WAIT_START: if(res 0xAA) { rx_index 0; rx_buffer[rx_index] res; parse_state GET_X_LOW; } break; case GET_X_LOW: ... // 依次接收后续字节 case CHECK_SUM: if(rx_index 8) { uint8_t chk 0; for(int i0; i7; i) chk rx_buffer[i]; if((chk 0xFF) res) { // 校验通过更新全局变量 target_x (rx_buffer[2]8) | rx_buffer[1]; target_y (rx_buffer[4]8) | rx_buffer[3]; target_conf rx_buffer[5]; uart_frame_valid 1; } parse_state WAIT_START; // 无论成功失败都重置 } else parse_state WAIT_START; break; } } }设计说明状态机不依赖“固定延时”完全由字节到达驱动即使OpenMV卡顿100ms状态机也能在下一帧到来时自动恢复每帧校验和覆盖全部有效数据不含起止符可100%识别单字节错码parse_state WAIT_START在每次处理后强制重置杜绝因干扰导致的状态机“挂死”。3. 硬件连接与电源管理规避舵机反电动势烧毁MCU的实战细节很多同学烧过STM32的IO口罪魁祸首不是代码是舵机。SG90在快速转向时会产生高达5V的反向电动势通过共地路径窜入MCU轻则复位重则IO击穿。本方案的硬件设计绕不开三个关键点电源隔离、地线分离、信号电平匹配。3.1 电源拓扑双电源域与LDO选型系统使用两路独立电源数字电源3.3VAMS1117-3.3给STM32F103和OpenMV供电OpenMV H7需外接3.3V不可用USB供电舵机电源5V/2ALM2596S DC-DC模块非7805单独供舵机绝对不与数字电源共用LDO。血泪经验曾用一个AMS1117同时供MCU和舵机结果舵机一转STM32电压跌到2.8VADC读数全飘PID输出乱码。LM2596S效率85%带载压降0.1V是舵机电源的底线要求。3.2 地线设计“星型接地”与光耦隔离星型接地数字地GND_DIG、舵机地GND_MOTOR、电源地GND_PWR在PCB上只在一点汇合通常选在电源模块输入电容负极严禁走成环路信号隔离OpenMV的UART_TX接到STM32的RX必须经高速光耦如6N137隔离否则舵机噪声直接耦合进UART线路帧错误率飙升舵机信号线从STM32的PA0/PA1引出后立即串联100Ω电阻阻抗匹配抑制高频振铃再接舵机控制线。OpenMV TX → 6N137输入 → 6N137输出 → STM32 PA10 (USART3_RX) STM32 PA9 (USART3_TX) → 无隔离仅发指令风险低→ OpenMV RX注意6N137需5V供电其GND必须接数字地GND_DIG与舵机地GND_MOTOR物理隔离。光耦两侧的地线绝不能短接3.3 舵机选型与机械安装减小机械滞后对PID的影响舵机必须选数字舵机如MG90S模拟舵机SG90的响应延迟达150msPID根本调不稳MG90S延迟50ms且堵转扭矩更大云台结构必须刚性两个舵机轴线必须严格正交俯仰轴垂直舵机应置于云台底部避免重心过高导致晃动安装时预留10°机械限位软件中PID输出范围限制在200~800对应0°~180°但机械上用挡片卡死在15°~165°防舵机强行打满损坏齿轮。4. PID参数整定与动态响应优化从Ziegler-Nichols到现场手调的完整路径PID不是调出来是“试”出来的。本方案提供一套可复现的整定流程避开教科书里的理想模型直面真实舵机的非线性、死区和惯性。4.1 初始参数获取临界比例度法Z-N法实操先关闭I/D项KiKd0只留Kp逐步增大直到系统等幅振荡将云台置于水平位置目标设为图像中心x80,y60用手轻推云台偏离观察回复过程从Kp0.1开始每次0.2记录响应当出现持续、等幅摆动如左右晃动不停时记下此时Kp_cr2.4振荡周期T_cr≈1.8sZ-N公式给出初始值Kp 0.6 × Kp_cr 1.44Ki 1.2 × Kp_cr / T_cr 0.016Kd 0.075 × Kp_cr × T_cr 0.324——这组值就是代码里pid_h的初始参数1.2/0.015/0.8是微调后值4.2 现场手调四步法针对二维云台的专项优化Z-N法只是起点真实调参要分步攻克步骤操作观察现象调整方向1. 调P项固定Ki0,Kd0Kp从1.0起调响应慢/超调大/小幅振荡↑Kp加速但1.8后明显抖动2. 加I项Kp1.4固定Ki从0.005起加偏差残留/缓慢爬升/积分饱和↑Ki消除静差但0.02后回复变慢3. 加D项Kp1.4,Ki0.015Kd从0.2起加超调减小/响应变“硬”/高频抖动↑Kd抑超调但0.9后舵机嘶鸣4. 联合微调同时微调三者±0.1/±0.002/±0.1平衡速度/精度/稳定性最终定稿1.2/0.015/0.8玄学技巧调垂直PID时把云台抬高30°再测试——重力会加大俯仰轴负载暴露Kp不足问题调水平PID时在云台挂一小块磁铁增加转动惯量检验Kd是否足够抑制惯性超调。4.3 动态补偿加入前馈与速度反馈提升响应纯PID在目标快速移动时仍会滞后。本方案在pid_calculate()中加入目标速度前馈Feedforward// 在TIM3中断中增加目标速度估算 static int16_t last_target_x 80, last_target_y 60; int16_t dx target_x - last_target_x; int16_t dy target_y - last_target_y; last_target_x target_x; last_target_y target_y; // 修改pid_calculate加入前馈项 float ff_term 0.3f * dx; // 水平方向速度前馈系数0.3 pid_h.output p_term pid-integrator d_term ff_term;效果当目标以5像素/帧速度移动时前馈项直接贡献1.5单位输出相当于提前“预判”了舵机动作实测跟踪延迟降低35ms。此参数需根据OpenMV帧率50Hz和舵机响应调整不可照搬。5. 常见问题排查五条让90%同学当场破防的翻车点这套方案看似简单但有五个点极易翻车且现象隐蔽、原因难查。以下是某导师带三届学生总结的“血泪清单”按发生概率排序5.1 现象云台缓慢右偏最终撞到机械限位重启后重演原因OpenMV的sensor.set_auto_whitebal(False)未生效或环境光渐变导致白平衡漂移红色色块HSV阈值失效OpenMV持续返回偏右的虚假坐标。解决用OpenMV IDE的“Tools → Machine Vision → Threshold Editor”实时抓取当前画面手动标定HSV范围在main.py开头加sensor.set_auto_whitebal(False)后必须调用sensor.__write_reg(0x0B, 0x04)强制关闭白平衡寄存器H7固件bug。5.2 现象STM32串口能收到数据但target_x始终为0原因UART帧解析状态机中CHECK_SUM分支未正确判断rx_index8导致校验和计算时数组越界chk值错误。解决在CHECK_SUM分支开头加if(rx_index 7) { parse_stateWAIT_START; return; }强制保护用逻辑分析仪抓UART波形确认帧长是否恒为8字节。5.3 现象舵机轻微抖动尤其静止时发出“滋滋”声原因PID的微分项对噪声敏感而OpenMV坐标存在±2像素的随机抖动CMOS传感器热噪声未经滤波直接送入微分计算。解决在pid_calculate()前对pid-input做滑动平均滤波5点static float x_buf[5] {0}; static uint8_t x_idx 0; x_buf[x_idx] pid-input; pid-input (x_buf[0]x_buf[1]x_buf[2]x_buf[3]x_buf[4])/5.0f; x_idx (x_idx1)%5;5.4 现象OpenMV识别正常STM32 PWM输出也正常但舵机完全不动原因舵机电源5V与STM32地GND未共地或共地线过细10cm时阻抗升高导致控制信号参考电平失效。解决用万用表通断档量STM32的GND引脚与舵机电源负极是否导通电阻0.5Ω若不导通用一根粗铜线≥0.5mm²直接短接两点。5.5 现象云台能追踪但目标稍快就丢失且丢失后无法自动恢复原因OpenMV的find_blobs()未设置mergeTrue当目标快速移动时同一目标在连续帧中被识别为多个小blobmax(blobs, keylambda b: b.pixels())取到噪声而非目标。解决修改识别代码blobs img.find_blobs([...], pixels_threshold100, area_threshold100, mergeTrue) # 必加mergeTruemergeTrue会合并相邻色块确保快速移动时仍输出单一最大blob。6. 验收与答辩用三张图、一个表格、两次演示征服评委毕设/课设验收不是考你代码多漂亮而是验证“需求是否闭环”。我带过的项目评委最常问三个问题1怎么证明它真能追踪2参数为什么是这个值3遇到干扰怎么办下面这套验收组合拳专治这三问。6.1 验收材料包三张必交图与一张核心参数表图1动态追踪轨迹图MATLAB绘制用OpenMV的uart.write()在追踪时同步发送x,y,tt为毫秒级时间戳上位机Python串口脚本接收并保存为CSV用MATLAB画出目标轨迹红线与云台实际角度蓝线对比图。重点标出响应延迟蓝线追上红线的时间差稳态误差蓝线波动范围超调量首次越过红线的最大偏差。这张图直接回答“它到底有多准”。图2PID输出波形图示波器实拍用示波器探头接STM32的PA0水平PWM触发源设为UART_RX下降沿捕获OpenMV发来新坐标瞬间的PWM变化。图中清晰显示从UART中断到PWM更新的延迟50μsPID输出的平滑上升曲线无阶梯状跳变稳态时PWM的微小纹波2%。这张图证明“控制是实时且干净的”。图3抗干扰测试对比图手机拍摄GIF用手机录两段10秒视频A段正常光照下追踪红色球B段用手电筒突然照射OpenMV镜头模拟强光干扰。导出为GIF并排展示B段中云台在干扰后1.2秒内恢复追踪且无大幅甩动。这张图回答“它皮实吗”。表核心参数与实测性能对照表项目设计指标实测值测试方法追踪帧率≥45fps49fpsOpenMV IDE帧率计数器角度精度±2.0°±1.3°云台加指针对准刻度盘读数响应延迟≤150ms118ms示波器测UART_RX到PWM边沿功耗待机≤200mA178mA万用表串电流档抗光干扰恢复时间≤2s1.2s手电筒直射后计时6.2 答辩演示脚本两次关键演示的设计逻辑第一次演示基础功能只开一盏台灯放红色小球于云台前方1m处启动系统静置5秒展示云台自动居中缓慢平移小球展示平滑跟随话术重点“您看到的不是‘识别’是‘伺服’——OpenMV只给坐标STM32用PID把它变成精确的机械运动。”第二次演示鲁棒性验证突然关掉台灯打开手机闪光灯近距离照射OpenMV等2秒此时OpenMV因过曝丢失目标再移开手机展示云台在1.2秒内重新捕获并追踪。话术重点“这验证了我们的双MCU架构价值OpenMV专注识别STM32专注控制。识别丢了控制不崩识别恢复控制立刻接续——这才是工业级伺服的思维。”从那以后我每次带学生做这类项目都强制他们在答辩前完成这三张图一张表两次演示。不是为了炫技而是把“不确定的调试过程”转化为“确定的验收证据”。当评委看到示波器上那条干净的PWM上升沿听到你解释清楚为什么Kd0.8而不是0.9他们就知道这不是抄来的代码是亲手调出来的系统。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

专科生毕业论文AI辅助全流程指南:十大工具与实操避坑

专科生毕业论文AI辅助全流程指南:十大工具与实操避坑

专科生写毕业论文,最缺的往往不是努力,而是时间、方法和信息差。白天实习、晚上加班、周末考证,真正留给论文的整块时间可能只剩下几个星期。而这几年大热的AI论文工具,恰好就是为这种“碎片化时间作战”准备的。它们能覆盖选题、…

2026/10/17 14:10:00 阅读更多 →
JavaFX Ensemble:官方示例控件浏览器与API行为验证指南

JavaFX Ensemble:官方示例控件浏览器与API行为验证指南

简介:JavaFX Ensemble 是 Oracle 官方推出的 JavaFX 示例集合,面向正在学习 JavaFX 桌面应用开发、希望系统掌握控件与特效用法的开发者,尤其适合已具备 Java 基础、需要真实可运行案例来理解 API 的中级学习者。压缩包共 673 个文件&#xf…

2026/10/17 14:09:00 阅读更多 →
报警检测报告AI审核:IACheck如何杜绝设备异常被吞掉

报警检测报告AI审核:IACheck如何杜绝设备异常被吞掉

凌晨三点,接班工程师掀开值班记录本,看到上一班写着:“3号循环水泵振动异常,已通知检修,正在观察。”可中控室大屏上,3号泵的振动测点依然挂着红色报警,曲线一路往上走,没有任何下降…

2026/10/17 14:09:00 阅读更多 →

最新新闻

基于深度学习的疲劳驾驶检测:目标检测、图像分类与实时推理实战

基于深度学习的疲劳驾驶检测:目标检测、图像分类与实时推理实战

我还记得去年做毕设选题那会儿,导师给了我几个方向,我一眼就看中了"基于深度学习的疲劳驾驶检测"这个题目。原因很直接:疲劳驾驶导致的事故率一直居高不下,而市面上很多所谓"智能驾驶预警"要么靠红外打哈欠检…

2026/10/17 16:00:20 阅读更多 →
DB2异机恢复实战:NetBackup Agent配置与归档日志模式避坑指南

DB2异机恢复实战:NetBackup Agent配置与归档日志模式避坑指南

简介:这份文档面向使用 NetBackup 实现 DB2 数据库异机恢复的运维与 DBA 人员,聚焦备份配置与恢复流程中的关键环节,适合具备一定 DB2 与 NBU 基础、需要搭建或排查异机恢复环境的技术人员参考。资源包内共 1 个 doc 文件,压缩包约…

2026/10/17 16:00:20 阅读更多 →
Python 100道经典练习题:从会看到会写的完整刷题路线

Python 100道经典练习题:从会看到会写的完整刷题路线

简介:《Python100道经典练习题(建议收藏)》是一份面向Python初学者与进阶者的习题集PDF文档,覆盖循环与条件判断、函数与模块、递归、字符串操作、面向对象、矩阵运算、算法、文件操作、日期时间等核心知识点。文档包含100个由易到…

2026/10/17 16:00:20 阅读更多 →
分布式数据库兼容性测试实战:OceanBase迁移验证与问题排查

分布式数据库兼容性测试实战:OceanBase迁移验证与问题排查

前阵子接手了一个数据库兼容性验证的测试任务,对象是某分布式数据库(以下简称 ob),业务侧是公司一个核心交易模块的模拟项目。整个测试周期接近三周,从环境部署、功能验证、长时间稳定性压测到性能比对,整个…

2026/10/17 16:00:20 阅读更多 →
2026年33款主流AI编程工具实测与选型指南

2026年33款主流AI编程工具实测与选型指南

2026年聊AI编程工具,感觉跟前几年完全是两个世界。我自己电脑里装过的、主力用过的,加上最近两年圈子里讨论度一直很高的,随便一数就是三十多个。这个数量对老手来说都容易挑花眼,更别提前几天我帮一个刚入行的朋友捋工具&#xf…

2026/10/17 16:00:20 阅读更多 →
深入理解 DOM NodeList:从基础到实战

深入理解 DOM NodeList:从基础到实战

1. 什么是 NodeListNodeList 是 DOM 中一个非常重要的集合类型,它表示一组节点的集合。当我们使用 document.querySelectorAll() 或 element.childNodes 等 API 时,返回的结果就是 NodeList。NodeList 与数组(Array)有相似之处&am…

2026/10/17 15:59:20 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 14:23:36 阅读更多 →