有点硬核的DIY,自动控制的机箱面板,篇2

2020-02-29 22:10:48 302点赞 728收藏 132评论

创作立场声明:大家好,本人大概是传说中的技术宅一员吧。本职为软件行业从业人员,业余爱好电子DIY,偶尔动手折腾个小玩意儿,通常偏向有实用性、便利性的东西,欢迎探讨指正。

上篇文章文末说到V2.1版还不太满意,最大的问题是,CPU的温度有时候波动很大,而且机箱盖开启和关闭状态也会造成机箱内温度变动,最终导致的结果是有时一场游戏里,机箱盖可能会开开关关好几回,尝试了修改BIOS风扇温控曲线的上升、下降速率,效果也不理想。

如果能采集到显卡温度,效果可能会好些,可惜风扇策略中温度来源可以选择CPU、主板甚至是给CPU供电的MOS管,唯独没有GPU。单片机温度采样算法调试修改了多遍,简单的程序写着写着,FLASH空间就已用掉了6KB(总大小8KB),加之STVD这古董开发工具用的人头疼,于是决定重新设计3.0版。

要不就直接从系统中获取CPU温度吧,意味着需要写一个Windows软件了,而既然都在系统中跑软件了,顺便温度记录、平均值计算都可以在电脑中完成,再不用在单片机那可怜的空间上面扣扣索索的。更进一步的,CPU温度都读到了,再加个GPU温度应该也不过分吧有点硬核的DIY,自动控制的机箱面板,篇2 ,干脆控制策略都在这软件中做好了,装置只需要接收下软件发送的控制指令,转化成舵机的控制命令就行,策略还可以写成配置的方式,修改策略就不需要每次编译代码了,想想就有点小激动有点硬核的DIY,自动控制的机箱面板,篇2

于是现在需要解决两个新问题:

1.PC端软件(通常称为‘上位机’)编写,负责获取温度等;

2.软件与自己的装置(通常称‘下位机’)通信。

资料搜集

首先得确定Windows中读取CPU温度的可行性,万一有什么没法解决的难点就麻烦了。

很快找到了一个老外做的一个温控风扇的Demo http://www.lattepanda.com/topic-f11t3004.html

用到了一个开源的软件库叫Open Hardware Monitor, 看起来可行,找到软件官网一看感觉不太妙,最后更新是2016年,能支持2019年上市的CPU么?怀着忐忑的心情下载了软件,果然CPU只识别出来使用率这一个参数,这一开始就被卡住了,放弃又点不甘心哎。

要不到GayHub,啊错了是GitHub上找找,居然真的有收获有点硬核的DIY,自动控制的机箱面板,篇2

https://github.com/LibreHardwareMonitor/LibreHardwareMonitor

看介绍,这是一个fork自Open Hardware Monitor的软件库,而且一直有人在维护,看起来有希望能支持新的CPU,马上下载一个最新编译的版本看看:

有点硬核的DIY,自动控制的机箱面板,篇2

这回支持了,温度、使用率、频率甚至功耗都可以获取到了,同样也是开源软件,可以获取到C#源代码(C#是微软开发的编程语言,Windows软件开发最常用的语言之一)。至此Windows中获取温度应该是没有问题的。

另一个问题是上/下位机如何通信,常用的方式有网络、串口、USB等。网络速度最高,但软硬件都较复杂;串口程序最简单,不过现在的PC大多已经不再提供串口(九针)了,USB转串口需要额外硬件和安装对应的驱动;综合考虑决定采用USB方式:设计成自定义HID设备,不需要驱动,也不需要额外的芯片,就是单片机需要支持USB功能,价格会高点,不过DIY也不在乎多花几块钱。方案确定了,就开始动手吧。

硬件

顺带一提,在上一版完成之后还找到了同牌子的另外一款舵机,比上一版用的那款更薄,意味着可以考虑使用完整的光驱外壳,而不是上一版那样只用了半个铁壳,控制指令基本完全相同,也省去了很多事。新款的电压能直接支持到12V, 可以直接使用电脑电源供电了。

有点硬核的DIY,自动控制的机箱面板,篇2

既然准备使用完整的光驱外壳,那么为了利用原有的固定柱、螺丝之类的,PCB就得兼容原版的形状,最简单的方法就是照抄原版PCB的外形啦,幸好之前拆出来的部件还没扔掉。

原PCB形状有点复杂原PCB形状有点复杂

测量记录各个部分尺寸 (据说真正的大佬是不屑使用数显卡尺的有点硬核的DIY,自动控制的机箱面板,篇2 )

有点硬核的DIY,自动控制的机箱面板,篇2

又来一次奇奇怪怪的原理图了,PCB面积好大,忍不住又加了些备用/测试元件(光耦,晶振,DC-DC降压部分,I2C接口),对了这次的USB口是真有用的了。供电就准备直接从电脑电源获取,所以增加了一个SATA电源插座(J1):

有点硬核的DIY,自动控制的机箱面板,篇2

这次的MCU是STM32G431KBT,这是ST近期出的一款单片机,带有USB功能,128KB的FLASH,用在这里其实性能过剩了。之所以选它是因为它还带有PD功能,想要顺便多做一块板测试。至于DC-DC部分是考虑如果需要换别的舵机,而新舵机支持的电压低于12V时就把DC-DC部分焊上,调整好电压而不用重新画板。

有点硬核的DIY,自动控制的机箱面板,篇2

上一篇评论看到有朋友对学习单片机和PCB设计有兴趣,就多说几句,没有太好的技巧,两个字:多练。现在网上视频资料很多,但不能光看,一定要自己动手。这里先打住了,不然就跑题了,评论里可以再聊吧。

还是JLC给做的板子,才5块还包邮,便宜到快不好意思了有点硬核的DIY,自动控制的机箱面板,篇2 ,想要尝试的小伙伴上吧,做错了也就5块钱。不过目前最好是先等一等,这段时间大概因为复工未完全产能还比较紧张,我们做着玩的就先别添乱了。

有点硬核的DIY,自动控制的机箱面板,篇2

跟原版对比下,没有100%照着做的,只要不影响安装固定就行。

有点硬核的DIY,自动控制的机箱面板,篇2

装到光驱中框里试下。其实有点误差,左边的矩形有一条边打磨掉了约2mm,当然不需量产,就不必重做了。

有点硬核的DIY,自动控制的机箱面板,篇2

再一次铁板烧(恒温加热台)+电烙铁之后,元件都装好了。左下比较多的空元件位是DC-DC降压部分,新舵机直接支持12V不需要降压,就不装了。未来如果换了别的电压的舵机可以装上。

有点硬核的DIY,自动控制的机箱面板,篇2

下方的排线连接到了光驱的另一块小板上,上边原本还有一个电机,已经被拆掉了。这块板上现在只有一个LED和一个按钮,都可有可无的,就懒得单独再画一块板了。

有点硬核的DIY,自动控制的机箱面板,篇2

装到中框上,试试会不会影响安装:

有点硬核的DIY,自动控制的机箱面板,篇2

背面,旁边的木块是用来辅助固定舵机的,后面会有体现:

有点硬核的DIY,自动控制的机箱面板,篇2

新舵机背后有一个螺丝孔,安装固定起来更方便了些,光驱背壳上对应位置打一个孔

有点硬核的DIY,自动控制的机箱面板,篇2

上盖中间原来有个部件用来压光碟的,影响到了拨杆转动,把它挖掉了,还剩下一个铁质环形凸起,手上没有什么工具能搞定,就留着了。黑乎乎的斑点是上一版贴的胶布撕不干净,不管了。

有点硬核的DIY,自动控制的机箱面板,篇2

上图的凸起部分妨碍了拨杆转动,也只能妥协了。重新做一条吧,折成这个形状:

有点硬核的DIY,自动控制的机箱面板,篇2

结果孔没钻好废掉了有点硬核的DIY,自动控制的机箱面板,篇2 ,最后还是用回旧的,折弯(好难看,想重做可铝条没有了)。

有点硬核的DIY,自动控制的机箱面板,篇2

装起来试试:

有点硬核的DIY,自动控制的机箱面板,篇2

这是外挂的断电关门用电容器,这里也看到木块的作用了:

有点硬核的DIY,自动控制的机箱面板,篇2

这时候还不能把外壳装起来,得先写好软件,至少先测试好电路设计、焊接以及元件都没有问题。

终于摆脱STVD这货了,STM32开发可选的IDE挺多的,MDK是其中比较常用的一个,网上还有人提供了MDK工程转Visual Studio工程的工具,虽然VS只能用来编辑,编译和调试还是需要用MDK,但能有智能提示、代码补全等,编辑起来体验也要好很多:

有点硬核的DIY,自动控制的机箱面板,篇2

USB部分的代码基本都是STM32Cube(ST公司提供的STM32系列单片机开发辅助工具)自动生成的,剩下主要需要实现的是等待USB接收到数据之后解析操作,以及返回给上位机相应的数据。总结起来基本上就两个工作:读取舵机角度和控制舵机转到指定角度。

测试完没问题就可以专心写软件了,但是通常情况下是不会这么顺利的有点硬核的DIY,自动控制的机箱面板,篇2 。本来在线调试时挺正常的,但是重启后单片机就不工作了有点硬核的DIY,自动控制的机箱面板,篇2 。。。

折腾了不少时间,直接说结论吧,这个芯片有个BOOT0引脚,要接到GND芯片重启才会从FLASH区引导,好在这个引脚旁边就是个GND引脚,直接加点锡短接上就行,不然得飞线就比较难看了。

软件

硬件测试完,困难才刚刚开始,因为我不会C#编程有点硬核的DIY,自动控制的机箱面板,篇2 。。。

虽然写过不少程序,但基本没有写过Windows下,还带界面的有点硬核的DIY,自动控制的机箱面板,篇2

那就开始学吧

利用吃饭时间边看了几集视频,了解了一些基础:控件、变量、语法、类库……

网上找一些参考代码,差不多就可以动手了,使用了两个第三方库(图中红框),边查边学边改:

有点硬核的DIY,自动控制的机箱面板,篇2

终于V1.0出炉啦有点硬核的DIY,自动控制的机箱面板,篇2,丑了点,勉强也能用哈有点硬核的DIY,自动控制的机箱面板,篇2

有点硬核的DIY,自动控制的机箱面板,篇2

继续学习、完善,期间学了图表(chart)、配置文件读写、注册表读写、管理员权限检查、单一进程限制、最小化到系统托盘……

这是V2.0的,看起来顺眼点了吧:

有点硬核的DIY,自动控制的机箱面板,篇2

温度值通过图表展示出来,才终于知道上一版为什么效果调不好了,这CPU温度变化的也太任性了,居然是锯齿形的。接着就可以装上外壳了:

有点硬核的DIY,自动控制的机箱面板,篇2

前盖也可以装回去,不过留下的口子比较大,以后找到合适的像帘子之类的材料再装饰下吧,找不到也无所谓。

有点硬核的DIY,自动控制的机箱面板,篇2

背后看看(调试口PCB上的丝印看不到,只好写到外壳上了),这接口看着有点原装的意思吧有点硬核的DIY,自动控制的机箱面板,篇2

有点硬核的DIY,自动控制的机箱面板,篇2

装机:

有点硬核的DIY,自动控制的机箱面板,篇2

工作时LED会闪的:

有点硬核的DIY,自动控制的机箱面板,篇2

内部接线:

有点硬核的DIY,自动控制的机箱面板,篇2

USB为了整洁买了个USB3.0扩展模块,以便在内部连接。其实用2.0的就可以,不过这机箱前置两个USB口外加一个读卡器,把内置2.0接口用完了,只好买个3.0的了(主板共两个3.0接口):

有点硬核的DIY,自动控制的机箱面板,篇2

插在主板上了:

有点硬核的DIY,自动控制的机箱面板,篇2

成果展示

现在的控制规则写在上位机,容量可以说没了限制,写起来就任性了,加入了CPU最低温度和平均负荷参与判断。经过两个月的实测效果很好,几乎不会发生游戏中反复开合的情况了。

大家想看的动图来啦,但这不是温度高自动开启的,而是为了录视频点的 '手动开'、'手动关'的效果:

有点硬核的DIY,自动控制的机箱面板,篇2

总结和补充

补充:文中提到的Open Hardware Monitor软件,在写此文时又去看了下,就在前几天已经再次更新了,测试了下最新版已经能支持AMD的新CPU。

这V3.0的作品大概是最后一版了,哪天可能换上个好点的散热器,它的使命也就完成了,不过大概可以继续留着没事时候点下开关玩玩,听着舵机吱吱声把门开开关关,还挺有机械感的。

其实C#软件还有些可以改进的地方,不过大都是锦上添花,工作已经很累,没太大动力去做了。。。

等等,好像有些什么不对,我在干啥来着?玩游戏->机箱热->……->写(学)C# 有点硬核的DIY,自动控制的机箱面板,篇2

有点硬核的DIY,自动控制的机箱面板,篇2


谢谢欣赏,以下是上一篇,有兴趣也欢迎去瞧瞧:

有点硬核的DIY,自动控制的机箱面板,篇1小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外100金币奖励。2020年新人计划正在进行,点击查看活动详情这个东西做好其实已经有段时间了,最近由于大家都知道的原因假期意外被延长了,空闲时间多了点,整理下折腾的过程,考虑到读者可能没有很多电子&软件专业人士,也不具有太多仿制意义,所以具体lingex| 42 评论48 收藏62查看详情
展开 收起
  • DIY
    话题:DIY 关注
132评论

  • 精彩
  • 最新
  • 突然想到一个好玩的。把机箱左右面和上面都设计成百叶窗式散热,然后CPU一开始升温,你的机箱就像“愤怒”的怪兽,或者“炸毛”的宠物狗,进入了战斗模式,哈哈,应该挺有意思的 [惊喜]

    校验提示文案

    提交
    Mod新思路

    校验提示文案

    提交
    老款外星人A51的龙脊了解一下

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 半夜看鬼片,门突然开了。绿灯还一闪一闪的! [咽气]

    校验提示文案

    提交
    想想还挺带感的哈

    校验提示文案

    提交
    收起所有回复
  • 哈哈哈哈哈哈,请问,假如电脑坏了的情况(舵机锁死),你怎么打开? [赞一个] [赞一个] [赞一个]

    校验提示文案

    提交
    面板上就一颗短螺钉固定,大不了扯下来吧

    校验提示文案

    提交
    收起所有回复
  • [赞] 如果是n卡,想获取温度的话可以调用nvidia-smi,英伟达提供Python和C++接口。也可以更具显卡功耗,显卡上跑的进程白名单进行控制。

    校验提示文案

    提交
    也是个不错的方法,可能适合更专业的用途。现在的上位机也能获取到进程列表的。

    校验提示文案

    提交
    收起所有回复
  • 放桌子上 万一脸靠近 机箱再热一下 不成了打脸专用机器

    校验提示文案

    提交
    这位仁兄脸有点熟啊 [得逞]

    校验提示文案

    提交
    收起所有回复
  • 目测应该是个嵌入式软件开发

    校验提示文案

    提交
    不是,纯软件工作

    校验提示文案

    提交
    收起所有回复
  • 编辑代码用vscode,打开速度比vs快多了,我现在一直都是用vscode编辑,然后用MDK编译 [皱眉]

    校验提示文案

    提交
    那也挺好的,我工作要用VS,更习惯些

    校验提示文案

    提交
    收起所有回复
  • 12年毕业从事stm32软硬件开发,月薪3000,生活所迫改行做安卓了!

    校验提示文案

    提交
    同单片机改行安卓,工资已经翻了三四倍了,但是还是觉得单片机有意思。。 [傻笑]

    校验提示文案

    提交
    作为爱好挺好的。 [哦耶]

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • pcb 现在还是用protel 来画么?光绘下多少钱的?

    校验提示文案

    提交
    不是protel,很小众的一个软件。以后准备换kicad,菲林不计费,做板总共只要5块钱。

    校验提示文案

    提交

    laik

    lingex

    作者
    啥软件?免费的吗?求推荐

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 热-开门-冷-关门-热-开门-冷-关门-热-开门-冷-关门--- [惊喜]

    校验提示文案

    提交
    简单测温的方案就容易这效果。现在综合了CPU使用率就很准确了,除非比较轻量级的游戏或者中间暂停了比较长时间可能会关上。

    校验提示文案

    提交
    收起所有回复
  • 你媳妇玩的好好的 突然机箱门打开了。会不会吓着她

    校验提示文案

    提交
  • 只要你开关的够快,你就获得了一个能给自己扇扇子的机箱

    校验提示文案

    提交
    弄个双开门,只要够快,没准能飞了 [惊喜]

    校验提示文案

    提交
    收起所有回复
  • 还有个金币送给你了,想起了当年玩单片机的日子

    校验提示文案

    提交
  • 半夜看点小电影,突然机箱门打开了

    校验提示文案

    提交
    然后自动弹出一卷手纸。

    校验提示文案

    提交
    车开的漂亮,还带飘移的

    校验提示文案

    提交
    收起所有回复
  • 一个小杆子伸出来开门,有点像r2d2

    校验提示文案

    提交
  • 可以把散热门改成百叶窗型的,那样开合也不会被阻,而且美观度可能也要好些

    校验提示文案

    提交
    简单一点感觉用升降式的比较简单

    校验提示文案

    提交
    我觉得做成卷帘门技术含量高点

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 最近脱坑stm32了,买了个周立功的板子试试嵌入式linux,金币送上

    校验提示文案

    提交
  • 小母牛都做飛機了! [抽烟]

    校验提示文案

    提交
  • 搞软件的怎么把硬件的活都干了,大佬啊

    校验提示文案

    提交
  • 机箱门开关?想法不错,但是就是这开机箱门方式太二了,机箱门改成百叶式,变换成开合百叶再带几组光污染加风扇送风岂不更酷

    校验提示文案

    提交
    独角兽模式启动?

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
728
扫一下,分享更方便,购买更轻松