
最近在家打游戏的时候我总感觉主机附近热哄哄的房间里空调一停那台机器的出风口就像个小暖炉。后来把之前的旧支架拆掉桌上杂物清一清情况好了点但离“舒服”还差得远。于是就有了 AnyPS5 这个项目一套我自己设计、自己打印、自己写固件的外置风道与温控装置目标很简单——让不同版本的 PS5 主机都能用一个支架装上去用一套逻辑控制风扇转速顺便把收纳、理线、状态显示这些问题一起解决掉。这篇文章就把整个项目从硬件选型到固件逻辑完整拆一遍如果你也喜欢折腾主机周边、想给游戏区域做点正经的散热改善可以参考我这套思路。1. 项目定位为什么是“AnyPS5”1.1 给所有 PS5 版本一套统一的散热方案先说名字。“AnyPS5”的 Any 不是营销话术而是我最初的设计目标拿到哪台机器都不用单独改图纸、改固件。市面上的机器常见有数字版、光驱版还有后来出的 Pro 版这三类机身的厚度、宽度、进风口位置其实都不太一样。如果做一个只能卡住某一款的支架换台机器就得重新花钱、重新打印那就谈不上“通用”。我选择的方式是支架本体上用两条可滑动的横轨加旋钮锁紧横轨的行程覆盖不同机型的宽度差。安装时先把机器放到底座上推两边的滑块贴合机身两侧拧紧手拧螺丝再调节风扇仓的前后位置让风扇的出风面刚好对准主机侧面的进风区域。实测下来切换不同机身只需要松两颗螺丝、重新滑一下位置五分钟就能完成。另一个核心逻辑是外置风道解决的是“周边环境热量堆积”而不是直接拆机改散热。很多玩家误以为外接风扇能直接给 CPU、GPU 降温实际上并不是。内置散热器才是主力外部装置能做的是降低机器周围环境温度、加速热气从机身附近排走、避免主机把热空气反复吸回去。AnyPS5 的角色是辅助者不是替代者。1.2 这个项目到底能帮你做什么这个装置集成了四块功能物理支撑、风道辅助、温度监测、转速控制。风道方面由一个 12 厘米薄型风扇和一圈导风罩组成导风罩贴着机身侧面的进风区域把凉风从机器前方引导进去把热气从后方带走。底座附带四个硅胶脚垫减少振动。风道出风方向可以左右旋转方便把热风引导向空旷区域而不是直接吹向墙面。控制方面我用了 ESP32 作主控前面板放了一块小 OLED 屏幕实时显示进风温度、出风温度和当前风扇百分比。风扇转速不是固定也不是手动的而是根据温度传感器数值自动调节机器待机时温度低风扇可以低速运转运行高负载游戏时温度上来转速平滑提升。整个过程不需要开电脑、不需要装软件完全本地运行。如果家里有智能家居系统还可以通过 WiFi 把温度数据上报到家里的监控面板游戏过程中随时瞄一眼就能知道机器状态。对于普通玩家来说它能解决“主机放柜子里闷着热”“桌子上的架子太占地方”“风扇一直全速太吵”这些具体问题。对于爱折腾的人来说它又是一个典型的 ESP32 传感器 电机控制项目学习价值不小。2. 硬件选型控制、感知、供电三步走2.1 控制器为什么选 ESP32 而不是 Arduino UNO最开始我考虑过用一块普通的 Arduino 开发板毕竟风扇调速、读温度这类逻辑8 位单片机就能跑。但后来发现有几个问题UNO 的 ADC 精度一般供电引脚也少想带一块小屏幕还要额外接一堆跳线更关键的是我需要无线连接方便远程查看温度UNO 本身不带 WiFi还得外挂模块。换到 ESP32 之后一切都顺了。它自带双核 CPU、ADC 和 PWM 输出还支持 WiFi 和蓝牙。我只需要一块 ESP32 开发板就能同时搞定传感器读取、风扇控制、OLED 显示、网络上报这些需求。经验上ESP32 的 ADC 虽然线性度不算顶级但用于 NTC 温度检测完全够用。另一个实际原因是成本一块标准 ESP32 开发板价格并不高和 UNO 加 WiFi 模块的方案比起来性价比更高。选型时有一点需要特别提醒ESP32 有多个 ADC 引脚但有些引脚在默认配置下会带 boot 或 flash 功能接了外设可能影响启动。我实际用的是 GPIO34、GPIO35 这类纯输入引脚避免踩坑。如果你照着做优先选择标称 ADC 输入且没有复用为 SPI Flash 的引脚。2.2 风扇怎么挑别只盯着大和便宜风扇是整个装置里最影响效果的部件也是最容易选错的地方。很多人以为风扇越大越好实际上在“贴在机身侧面”这种场景里风压比单纯的风量更重要。主机内部的散热鳍片密集外部风扇若能把风“压”进缝隙效果才明显。但我们的外置支架不可能直接顶到内部鳍片所以更实际的做法是保证风扇能够稳定输送冷风到进风口区域而不是对着机器死吹。我的选择是一颗 12025 规格的薄型风扇转速上限 2200 RPM支持 PWM 调速。这个尺寸兼顾了三个因素第一12 厘米的风扇外径正好覆盖大部分机型的进风区域第二25 毫米厚度不至于让整个支架显得臃肿第三这类风扇在市面非常常见日后坏了容易买到替换件。轴套类型也要注意。长期运行推荐 FDB流体动压轴承或双滚珠轴承价格稍高但比油封轴承耐用长时间游戏场景下更省心。噪音方面滚珠轴承在高转速会有轻微高频声FDB 会安静一些。我自己用的是 FDB 版本半夜游戏时整体噪音低很多。2.3 传感器和电源部分的经验之谈温度传感器选了 DS18B20防水封装那种。它用单总线协议一根数据线就能挂多个传感器而且温度读取精度在 ±0.5°C 左右完全满足外壳表面温度监测的需求。我实际接了两个探头一个放在风扇进风口测环境温度另一个用导热硅胶贴在主机的侧面出风口区域测排热温度。两根线走同一个接口程序里通过 ROM 编号区分。电源是比较容易被忽略的坑。风扇额定电压 12VESP32 需要 5V 供电。如果直接从主机的 USB 口引电不仅电压不匹配还可能跟主机的待机机制互相干扰。我的方案是外置一个 12V 电源适配器接到一个 DC 母座后分两路一路经 DC-DC 降压模块降到 5V 给 ESP32 供电另一路直接给风扇供电PWM 信号单独接到 MOS 管。这样整个装置自带供电不依赖主机拔掉 USB 也能独立运行。如果你打算用更简单的方案也可以用 12V 风扇 5V 供电降低转速但那样推力下降明显不推荐。3. 机械结构与打印适配3.1 通用支架的设计思路与打印参数机械部分完全用 3D 打印完成。我建了两个主要零件一个是底座托盘负责承载机身重量和固定两条横轨另一个是风扇仓负责容纳风扇和导风罩。底座托盘做成“U 形”轮廓中间留空让机器底部的进风不被遮挡。托盘两侧的导轨开了 T 型槽滑块可以在槽内滑动滑动范围按几种常见机身的宽度做了冗余设计留了 30% 的调节余量。打印材料我选的是 PETG不是很多人默认的 PLA。原因很简单PETG 耐热性更好放在长时间运行的主机旁边不容易变软变形也比 PLA 更耐冲击装拆几次不会脆裂。打印参数方面层高 0.2mm壁厚 4 层填充密度 35%支撑只在滑块和手拧螺丝孔附近设置。这里有个经验底座托盘这种受力件打印方向比填充密度更重要。托盘如果水平打印层与层之间的结合力是弱点遇到机身压力容易沿层开裂。我把托盘打印方向调整成侧立让主要受力方向和层线方向垂直强度提升非常明显。代价是打印时间变长但值得。滑块和旋钮我用了 M4 手拧螺丝加热熔螺母安装时先用烙铁把螺母压进预留孔位再把滑块锁到 T 型槽里。实测反复装拆几十次也不会滑牙。3.2 安装到主机上的完整流程安装整个过程不用拆开机器外壳也不动任何螺丝完全是非破坏性的。第一步先给主机底部贴好硅胶垫。第二步把底座托盘放在桌面将滑块调到最大宽度再把机器轻轻放上去。第三步逐步缩小滑块间距直到滑块内侧刚好贴住机身侧面然后拧紧手拧螺丝。注意不要用力过猛贴紧即可留一点微小间隙反而不会划伤外壳。第四步单独拿起风扇仓按主机进风口的大致位置装上滑块锁紧。第五步把温度探头贴在出风口附近用耐热胶带固定。最后接上电源和 USB屏幕亮起来等传感器读数稳定后就能正常工作。整个安装过程第一次大概二十分钟。之后换机器只需要三步松螺丝、换机身、重新定位滑块。这就是 AnyPS5 的“通用”所在。4. 固件设计与温控逻辑4.1 温度曲线宁可保守也要稳定固件我用 PlatformIO 写的开发板选择 esp32dev。逻辑主流程很简单就是周期性读取两个传感器的温度值滤波后根据温度区间查表计算目标 PWM 占空比然后输出给 MOS 管控制风扇。温控曲线我采用了分段线性方式而不是简单只做“超过某个温度就满转”。实测下来满转风扇不仅吵还会产生负压啸叫。我的曲线设计如下进风温度低于 30°C 且出风温度低于 45°C 时风扇以 25% 左右的低转速运行主要起环境通风作用出风温度在 55°C 到 70°C 时转速线性上升从 40% 升到 70%一旦出风温度超过 75°C转速拉到 90%但不会立刻冲到 100%以避免风扇轴承异响。程序里做了一阶低通滤波每次读取的传感器值不直接用而是和上次值做加权平均权重系数取 0.7时间常数大概 5 秒。这样温度的一点小波动不会让风扇转速跟着上下跳整个体验稳定很多。以下是我固件主循环的一个关键片段只保留核心逻辑void loop() { float tIn readDS18B20(ADDR_IN); float tOut readDS18B20(ADDR_OUT); tInF tInF * 0.3 tIn * 0.7; tOutF tOutF * 0.3 tOut * 0.7; int duty fanCurve(tOutF, tInF); setFanPWM(duty); updateOLED(tInF, tOutF, duty); delay(1000); } int fanCurve(float tOut, float tIn) { if (tOut 45) return 90; // 25% if (tOut 70) { return map(tOut, 45, 70, 90, 245); // 25% - 68% } if (tOut 75) return 245; // 68% return 320; // 90% }代码里的 PWM 分辨率是 10 位0~102390 就是九成左右。这里的 map 只是简单线性爬升你也可以根据自己的环境再调斜率。4.2 状态显示、离线模式和远程查看OLED 屏幕我选了 128x32 的 SSD1306显示内容分两屏自动切换一屏显示当前温度和风扇百分比另一屏显示进风口温度、出风口温度和温差。OLED 的功耗很低直接用 ESP32 的 3.3V 供电没有外加驱动电路。远程查看是额外加分项ESP32 开启 WiFi 后连接到家庭网络固件里内置一个简易 HTTP Server手机在局域网直接访问固定 IP就能看到实时温度和历史变化曲线。这个体验非常适合把主机放在客厅电视柜、人在书房的情况。我还在程序里加了看门狗和断电重启后的自动恢复逻辑启动时先读一次温度如果异常就恢复默认转速避免传感器失灵时风扇直接不转。需要提醒的是外置风扇始终只是辅助切勿把核心散热任务的期望完全寄托在它身上。如果某款主机本身散热结构有隐患再强的外吹风扇都治不了本这时候提升室内整体通风才是关键。5. 实测数据与调校记录5.1 三种机身的温度对比当前环境下的参考我自己测试时的环境温度是 26°C机器放在开放桌面上周边没有遮挡。对比了三类机身数字版、光驱版、Pro 版。因为无法直接读取内部芯片温度我记录的是外壳出风区域温度和风扇进风温度测试负载统一是同一款高画质游戏连续运行 30 分钟后读取。机型裸奔出风温度装上 AnyPS5 后出风温度风扇转速数字版56.3°C52.1°C58%光驱版58.7°C53.6°C63%Pro 版61.2°C55.4°C71%从数据看外置风扇的主要作用是加快热空气排出降低了机身附近的积热对整个房间温热感的缓解是能感觉到的。同时我也测过出风口的“手感”温度装上装置后出风口附近的热浪会被导风罩偏转人坐在旁边不再觉得热风吹脸这一点对近距离游戏体验的提升比数字上的降幅更明显。测完后我又做了一次极端环境的压力测试把主机放进一个半封闭电视柜柜门只留一条缝环境温度升到 32°C 左右。这时外置风扇的作用就很关键它能持续把柜内的热空气排出保住内部气流通道。如果没有这套装置十几分钟后主机外壳就会滚烫。需要再次强调上面的绝对值没有普遍参考意义不同批次的机器、不同室温、不同摆放方式都会影响温度但“装了外置风道后外壳温度明显下降、游戏过程稳定”这个趋势是确定的。5.2 噪音与共振处理噪音是这类外部风扇最容易被人吐槽的点。我在调校中发现噪音来源不只是风扇本身还有风扇和机身外壳之间产生的共振。尤其是当机身放在硬桌面上、风扇转速处于某个固定区间时会产生明显的嗡嗡声。解决共振的方式有几个第一在风扇和支架接触面之间加一层薄橡胶垫破坏刚性连接第二底座托盘贴硅胶脚垫隔断与桌面的接触第三给 PWM 加一点“抖动”避免风扇长时间停留在一个固定转速。所谓 PWM 抖动是指每过几秒在目标占空比附近做一个上下 3~5% 的随机扰动让风扇转速一直在微调从而打破某个共振频率点。这个技巧简单有效声音听起来也柔和很多。实际使用时转速在 40% 以下基本听不到额外的风噪转速超过 75% 后风声会比较明显但那时主机自身的风扇也已经开始工作整体的体感反而没想象中吵。总的来说这套装置的噪音控制水平属于“你可以正常打游戏不觉得烦躁”的级别。6. 常见问题与排查经验6.1 温度读数与风扇响应异常温度读取出现严重偏差是我最早遇到的大坑。DS18B20 单总线的线长如果超过 30cm信号容易受干扰导致读出来数值随机跳变或者直接显示 85°C传感器内部的错误标志。解决办法是尽量缩短探头到主控的距离如果必须走长线最好用屏蔽双绞线。另外每个传感器都需要一个 4.7kΩ 的上拉电阻千万不要漏掉。另一种异常是风扇完全不转。排查步骤比较机械先用万用表确认电源输出的 12V 是否正常再查 PWM 信号有没有从 ESP32 的引脚输出来。用示波器最好没有的话就写死一个 pwm 值用 LED 接在 MOS 管控制极看有没有亮能大概判断信号链路。最常见的低级错误是 MOS 管的栅极没有下拉电阻上电瞬间电平浮空导致风扇自己开转。6.2 结构件不结实、共振导致啸叫如果你照着打印碰到“塑料件用几次就裂了”的问题八成是打印方向或者壁厚不足。底座托盘我建议加厚到 6 层壁厚填充 40% 以上。小滑块是受力点在腰部打印时故意把滑块侧放让层纹方向垂直于受力方向强度会明显改善。共振啸叫的另一个来源是风扇螺丝拧得太紧塑料件被拉出形变风扇轴承就会产生噪音。正确做法是螺丝拧到刚好接触即可不要硬拉到底。如果螺丝孔周围已经变形可以在孔位里加一个金属垫片重新调整受力。6.3 你可能没注意到的细节最后分享几个我做的时候踩过的细节坑。第一这玩意儿不建议用透明 PETG 打印。透光材质会透出内部电路板的灯光放电视旁边反而显得突兀。深灰或者纯黑最合适。第二机器表面的温度探头要用导热硅胶和耐热胶带固定不要用普通双面胶主机发热之后胶面可能会融化导致传感器掉落读数也会严重失真。第三如果长时间不使用建议把风扇供电关了只保留传感器监测。风扇通电就一直转既有噪音也不利于轴承受命。我在固件里加了一个 30 分钟无操作自动降速的功能用了一个简易的“游戏活动检测”温度高转速高温度降下来之后延迟十分钟再降速避免刚退游戏风扇秒停又秒转。最后再说一句体感层面的干货。这类外置风道装置最明显的收益不是数字上的温度下降而是主机周围的热气能有序地排走整个游戏区域不会被热浪包裹。这种改善会让人觉得“机器变清爽了”而不是“机器变更冷了”。如果你正为桌面上那台机器夏天发愁不妨也试试做一个类似的小东西打印、接线、烧录的整个流程本身就是一件很解压的事。