分享

教你用单片机自制桌面CPU温度显示器(预算30)

 金刚光 2019-12-20

咕咕咕了一阵子,结果还是成功咕出来了

开始了

前不久咱双十一不是和B站的一个UP叫@会飞的阿卡林的合作出品过SMR双十一避坑扫雷指南来着嘛,从那时候开始咱就认识阿卡林了。不得不说这哥们人确实不错,相比之前咱认识的搞电子DIY的里面人品高到不知道哪去了。

咱以前干UP的时候总是遇人不淑,认识的人里面基本都是只关心自己的人气和话语权的家伙,很少有人在乎观众的死活。对于当时咱做的很多为了人民利益可以舍弃自我甚至放弃一切的事,他们并不能理解。直到现在,那些人里面还在的仍然在关心自己那点事,即使粉丝十几万仍然在互相指责互相掐架,让人看了非常失望,这么高人气可惜了。都是开源的代码,互相指责抄袭有啥意义呢?谁在乎你用什么玩意放BAD APPLE 更不在乎代码是哪来的,大伙看一乐就完了。

相比之下人阿卡林自己写的代码咱随便拿来用还写教程人家都同意了,所以人与人之间真的从心灵品格上就有区别的。那些下流坯子就算有数十万人气,可以呼风唤雨,最后也难逃卢姥爷乔碧罗那样的下场,且行且珍惜吧。

阿卡林真是个好人,从之前合作搞吃力不讨好的SMR盘科普避坑指南就知道,这是一个真正在乎群众的人。在这次视频:20元就能给你的机箱加上数显功能,AIDA64配合数码管 做好之后,也在不厌其烦孜孜不倦的帮助观众制作,甚至支持定做以成本价出货。所以咱看见了之后是真的尊重,这才是科技UP应该有的样子。

想想以前咱认识那些人,一言不合直接开始迫害,住址电话能搞到都公开,粉丝群组团打电话骂人,现在想想也就是这货未成年,要不然咱都打算帮受害人报警了。

所以对于这种好人,我们做配套的文字版教程自然要表示相应的尊重,首先应该正式地找人要授权征得同意,毕竟基于人家的视频再创作

然后标注原作者放原作链接,代码标注所有权这种基本的事自然也要做到,这是最基本的常识。

总之让我们开始吧

本方案采用的是利用AIDA64的液晶小程序功能把传感器的状态引出,因为走的是标准串口所以要占用一路USB接口,此外AIDA64在运行中也是必要条件,因此对于咱这种喜欢干净码字的时候连QQ都不挂有事用手机的强迫症患者来说并不实用(真相是图吧垃圾佬的电脑核心太少多线程会卡,有的时候挂着QQ就能卡到打字都卡出空格的水平,好在咱还知道怎么优化所以问题不大)

首先要想准备制作这个显示器,我们需要一个屏幕和配套的单片机

屏幕可以用这个数码管,带MAX7219驱动模块的八位数码管,这个没多钱一个也就5块钱左右,华强北就有卖的,满9.9包邮或者邮费三四块吧

一般包邮的东西均价会贵点,但是这次我们可以用到大量模块串联或者说级联,所以可以买不包邮的,量大更合适:

一般买这样的就行

MAX7219驱动的模块有很多,别买错了

像这个就是咱这次用不了的

至于单片机模块我们可以用这个:

我用的就是这款,多少年前就14包邮了,ARDUINO是开源计划,UNO用的是AVR单片机,成本非常低几块钱都用不上,没必要高价交智商税买什么原装意大利进口英文版(意大利进口英文版,我反正不信)。这款相比标准款多了排针,对于连线来说更自由一些

数据线一般就是USB线和杜邦线,这个华强北的那些电子店都有,数据线一般买单片机会带,看准选项不要差那一块钱图便宜买不带线的回来用不了再买线就贵了,杜邦线的话华强北一般是论排的,40PIN多少CM长多少钱,一次买一排回来绝对够你用的,买的时候注意公对公母对母公对母不要买错要根据实际情况,比如插针的数码管模块对排插的单片机就要用公对母,插针的数码管模块对数码管模块级联就要用母对母,如果你用上图的改进版开发版就可以只用母对母。如果怕买错可以一次买全,日后能用上

买货的时候注意千万不要买telesky旗舰店的东西,这家叫天士凯的东西又贵质量相比华强北其他地方又渣,模块爆炸是日常,然而人家是天猫点你连差评权都没,花钱找罪受这种事还是少干,华强北这种地方没有一分钱一分货,只有我比你便宜我就能多出货。

特别注意一点如果你用网页找东西,网页会告诉你省略了部分“不规范”商品,然而你想要的东西可能就在这里面呢。好在马云吃相不算太难看网页的这个省略还可以关闭,这点要注意

如果一定要找直插的“官方版”ARDUINO的话,这个选项关掉能帮你找到以前那些便宜好货:

看到这个运费不要方,华强北的店铺一般运费都是虚的,你可以上店里看看包邮区,很多好货是包邮可以捎带着首重一起包邮的,而且肯定比标称的运费便宜

像那个USB小烙铁用起来就比较顺手咱有一把,这次这个项目也能用得上 烙铁会带一小段焊锡但是要是经常使用最好还是备个50 100g那样,没多钱

因为这家店可以乘车包邮,所以买杜邦线之类的可以直接在这家店里以不包邮的低价购买然后享受包邮,焊锡也可以来点,毕竟不是所有人都有实验室可以白嫖的

单片机还可以用基于乐鑫ESP8266的ARDUINO D1,标准版也就18包邮那样,阿卡林建议咱上D1 MINI,不过我看了一眼发现可以但没必要

MINI是不错,很便宜,也自带一个MICROUSB插槽,甚至带5V定义,但是上手有点难哦毕竟还要焊排针,即使是咱现在也不太愿意干这个了,有焊好的标准版模块干嘛买这个,又不是以前做WIFI干扰器的时候块大怕被人看见。对没错这东西刷个固件就能干WIFI,2.4G有效。咱以前上课的时候经常用它干同学上课开黑的热点,上课就好好上课开什么5V5,然而现在大伙流量都便宜也就很少有人需要再开热点了。

而且从日后的角度来看,D1毕竟是标准ARDUINO板型,搞一些开发之类的可以直接上扩展板

像这种搞3D打印 雕刻机之类的非常流行的SENSOR SHIELD板就只是为标准的ARDUINO版型设计的,MINI板还得用软线转接无法直插就比较麻烦

搞一个项目我们不能仅仅看到眼前,还要看到日后,长远角度来讲,这几款单片机开发板最有前途的果然还是D1,带WIFI,ARDUINO标准板型,日后即使不用了也不会吃灰可以干很多别的有趣的项目(不是说干人WIFI啊,是指可以搞点物联网比如互联网正时时钟或者天气预报之类的,小米那个对着手机说话就能开灯的台灯也是基于ESP8266的)

总之数码管拿到手咱就开干

明显的,需要焊接。咱之前有过教程:失传技术研究所小讲堂 篇八十三:手工焊接更换电路板元件教程(拆焊+补焊)

这里有人问过阿卡林,我也简单说一下吧,如果实在拿不动烙铁用热熔胶肯定是不行的,但是你可以用免焊接胶

不过这个价格你确定不考虑一下勉为其难的学下焊接?

此外一般导电的东西导热也不错,这个东西应该可以说散热性能不错,没准可以抹CPU上散热

总之我们需要把模块的排针以这个形式焊好

这里焊接因为是在家里有足够大的供电所以咱用的是这个936焊台,当年咱为了庆祝国产电磁炮上舰的时候买的

当时的贺图(artworks/67711599) 防水布电磁炮上舰,据说用的方案非常直接,用电瓶堆可还行,简单暴力 不用电容不用电感不用飞轮不用磁通压缩,直接靠电瓶堆电磁炮,就是这么简单 我用完之后是这个样子,你们用了之后也是这个样子

焊台这种东西其实就是有自动控制系统的一套调温烙铁,但是不同的是它的温度控制比调温烙铁更成熟,因为自带电源所以更适合调温 这里咱简单的放在350-450摄氏度就可以

然而还是焊差了,效果感人

毕竟又很长时间不拿烙铁了

咱又试试好好焊了几个,效果好了不少

首先焊接这个活手工焊接讲究的是先低后高先简后难的这个原则,然而这个数码管模块来的时候数码管就比弯针排针更高,所以要焊接只能用另一个数码管模块垫着点才能焊好

注意直针弯针有方向,别弄错了

后来这两个明显效果好很多

焊接的过程中保持烙铁头随时清洁是非常重要的,为此可以用金属材料蹭掉烙铁头上的杂质 钢丝球之类的都可以,但是最好不要用刀可能会刮坏烙铁头的镀层,咱以前都是用刀背

这次其实咱用的是硬币,毕竟随手看到什么顺手就用什么了,总之不能用PCB电路板,会烫坏板子

焊点圆润,焊接牢固

然后咱简单介绍下ARDUINO这个东西

ARDUINO是个开源项目,确实是发源于意大利,目的是用 尽可能简单的代码解决更多的问题。一开始就是这样AVR 8位 单片机的简单产物,但是发展至今已经形成了一套庞大的 家族 最大的特点是代码封装成库,底层对于用户来说是封闭的但是并非完全不可修改。说实在的这东西在搞IOT的鄙视链中一直处于“大佬”们都不屑然而真正到了应用的时候随时都真香的存在,老师们一面 说这玩意就是电子积木学不到底层另一方面自己实验室里面成熟的解决方案都在用人家现成的库,也没见从底层开始编译的 所以对于咱来说咱应该好好应用,毕竟这年头黑猫白猫抓到耗子就是好猫,代码功底再扎实最后面对实际问题连烙铁都拿不动也是白扯淡,这样的人教出来的学生咱见多了。代码是挺好,等到设计方案的时候就一脸阿库娅了,说实在的说是需要补充物理常识都不为过。好在最后在咱的帮助还有个不错的结局,咱就不要多说人家了。

咱最常见的UNO R3的国内改进版,相比标准版多了排针少了直插单片机,取而代之的是实际应用上更多的TQFP和MLF封装

数据表:ATmega328P_Datasheet.pdf

而ARDUINO开发板除了上述板型之外还有一种大板,比如这个MEGA 2560就是用的ATMEGA2560的单片机

相比之下它支持更多的接口

相对来说扩展性能更强(这是它的这个扩展板,可以 看到明显比前文的标准版更强)

总之无论怎么转变,咱要做的都非常简单,把单片机开发板和数码管模块连接好,然后把开发板和电脑连接好就行了

这里阿卡林给了标准的方案

代码方面,我们需要知道如果编译找BUG改BUG安装库和ARDUINO环境就行了,其实咱涉及ARDUINO的时候大多数时间都是在找BUG改BUG,删除多余的空格,安装缺失的库之类的,即使没学过C语言也可以很快上手(确信)

总之根据指示我们把数码管模块正确连线就好,数码管模块工作电源电压: 4 V to 5.5 V虽然插3.3可能也工作,这里咱还是 插5V就行了,板子上都有丝印标着应该错不了

因为是UNO所以咱不用动直接照着图上半部分的接法来,端口和图上都对好就可以了,如果是基于ESP8266的板子就按下面的接线法来,而且到时候还要把代码上表示注释的//给删掉

几个程序员去吃饭 点了一份菜叫麻辣牛蛙,有人提出不吃牛蛙,于是负责点菜的在麻辣牛蛙四个字前面加了两个斜杠:

//麻辣牛蛙

没有人觉得有任何问题!结果服务员上了11份麻辣牛蛙

要是这几个程序员是写lua的就是 --麻辣牛蛙

咱是BASIC,就是'麻辣牛蛙

8266给了两条连线方式,具体用哪套看你实际用的开发板型号

正常到了这里数码管就可以亮起来了,上电之后随手摸一下单片机(这习惯不好)数码管就亮起来了,说明状态良好

这里开始我们就需要准备软件了

一开始咱的ARDUINO插上USB之后电脑正常识别,按说正常这类单片机都是CH340或者CP210X的USB转串口IC接的,需要系统有驱动才能识别,没想到咱的系统直接自带了,所以也不用咱费劲去单独装驱动了

至于AIDA64嘛貌似是免费软件,网上挺好找的,咱主要说说ARDUINO

ARDUINO官网上可以下载到的环境有很多,咱要根据咱的系统来选择

一般XP以上的直接用WINDOWS EXE或者ZIP就行,一般图省事就用EXE,要是图绿色安装就用ZIP,咱以前用WINDOWS平板干这个没管理员权限的时候就走ZIP比较得劲

至于软件商店的咱没用过,没有WIN8.1或WIN10的软件商店环境

MAC OS X咱自己手上的是10.7.5已经不支持了

不少实验室的 大佬喜欢用LINUX 这里ARDUINO也提供了支持

总之官网下好EXE之后一步步安装是你最省心的选项

驱动都安装就完事了,ZIP就需要手动挨个运行一遍,比较麻烦,很可能漏选

然后我们就需要直接运行ARDUINO了

这里我们直接用阿卡林现成的项目就行了: 代码托管:flyAkari/AIDA64with7segmentdisplay (GITHUB)

双击.INO文件ARDUINO就可以运行起来了,问你是否移动文件当然选是了

然后就看到代码了,看到代码不用方,我教你怎么整

首先按左上角那个对号先编译一下看看有什么BUG没

LedControl.h: No such file or directory

嗯缺一个LED库

还好这个库无论是GITHUB还是阿卡林自己的群 都能下到 是ZIP,解压后是这样的

但是我们其实根本不需要解压,只需要在ARDUINO菜单里面选择项目-加载库-添加ZIP库就行了

选中我们需要的库(这里是LED库)

导入成功 所以这里我们就看到了ARDUINO的便利之处了,代码都打包成库,在网上都有现成的直接上托管网站下好安装就可以了,比装软件还简单,再也不用到处找代码然后复制代码回来找格式删空格改BUG了,非常完美

其实很多时候买硬件就是买服务,国产的山寨派相比树莓派是各种便宜性价比吊打,然而发热过高,官方库全是BUG库导致用户用它其实也干不了什么,所以树莓派这么贵还是有贵的道理的,毕竟IOT里面这个生态最好。ARDUINO其实环境也不差,就是硬件性能方面差点,但是搞个3D打印、物联网智能硬件之类的还是非常容易的

这次编译完成没有错误,我们可以准备上传到单片机了

之前还记得我们安装驱动的时候说这个CH341走的是COM3来着吧,所以这次我们直接工具-端口-COM3就行了

emmmmmm,识别出的是未知开发板,不过没关系,咱知道这个是UNO

选择开发板型号

然后上传就直接上传成功了

这会儿数码管就已经在跑码了,NICE

然后我们需要做的是运行AIDA64,打开图吧工具箱里面带的这款AIDA64经过实测就可以用,相对图吧工具箱可以独立运行,工具箱本身只是个快捷方式

其实AIDA64自带监视器就可以实现基本的传感器数据实时显示,但是对于只有一个屏幕的玩家来说,这功能显然不太实用,毕竟一旦全屏游戏一个就用不了了是不是

AIDA64的头一个菜单打开之后就有设置,然后咱可以看到有自带的LCD选项,支持的方案非常多

emmmmmmmm找不到DLL可还行,一般系统缺啥就上网找啥下载好了找到对应位置解压就行了

Windows XP/WIN7/win10系统(64位系统对应64位dll文件,32位系统对应32位dll文件),将ch341dll.dll复制到C:\Windows\System32目录下。

后来阿卡林告诉咱最后人用的是POS的这个RS232方案,没用CH341的,难怪了

RS232是一种非常经典的串口接口,老式鼠标有不少是用这个的,包括电视、旧型打印机(少数)以及现在的一些单片机开发板、工控板都在大量使用这个接口

然后我们在LED项目里面新建一个然后点应用

这里AIDA64可以提供的参数有很多,从CPU核心频率到显卡各项参数以及各种传感器的参数都可以投在LCD上

开始出字了

emmmmmm,完美

CPU 133℃的大字成功的在数码管上显示出来了 先不管CPU是不是真的可以用来烤肉,至少咱成功的完成了这套方案

其实相对于在乎CPU的温度,不如给自己的CPU加个好一点的散热器,这年头二手热管塔式散热器非常便宜,散热效果还好,铜底双热管散热器对于咱这种垃圾佬的四核开六核平台也能轻松压住,而且还非常便宜咱作为垃圾佬是非常喜闻乐见的多亏了赶上这个好时候 要知道以前咱玩AMD 5000+超频的时候AMD原厂的散热器就一个铝片加个风扇,CPU不用说多,超个200M基本开机过一会儿就热重启了,更别说玩游戏了。这年头好散热器这么便宜CPU的温度还真高不起来

我怀疑这个133度是AIDA64哪出问题了,正常咱直接从AIDA64读温度应该顶多也就七八十度

总之咱再尝试了一下显示CPU核心频率,结果发现数码管的单位还是摄氏度

这就明白了,估计还是软件之间的通信有点问题,不过相信这个问题只要找找原因很快就能解决的,毕竟人阿卡林都卖了好几套了应该问题不大,估计是咱软件读取传感器或者串口送信之类的弄没弄好,有空换个版本再试试

顺带说下,如果需要多参数同时显示的话可以用MAX7219数码管串联,接线方面PCB板子其实已经给了简单解决方案直接把板子弯针的线接到下一级的直针那头就可以了( DOUT->DIN)

多参数的设置还是上AIDA64里面找第一第二第三第四页就行

另外阿卡林不建议各位用的ESP8266开发板是这款NODEMCU开发板,确实没有5V定义,一般都是用来搞物联网的时候用这个比如做智能开关智能遥控灯之类的,偶尔也有人做智能小车,这个咱以前倒是经常用可惜最后也没个正经用途

最后是阿卡林的备注,咱简化了一些:

说两个事儿: 1. 需要级联使用MAX7219数码管的同学,数码管模块背面的D1是个串联在电路中的二极管,用来整流、防插反,但会产生压降,级联后亮度一个比一个低,甚至达不到7219正常的工作电压,这时候可能会需要短接二极管来降低压降。( DOUT->DIN) 2. 多个数码管级联后功率很大,会让miniD1板子上的滤波电容严重发烫,影响电容使用寿命。建议将VCC接到3.3V引脚,并修改代码中lc.setIntensity(address,6);为lc.setIntensity(address,1);将数码管亮度调至最低,便可解决发烫问题,最低亮度已足够使用。若要进一步降低数码管亮度,可适当增加数码管模块上R1的阻值。

说实在的MINI D1这个板子除了体积小真没啥优点,咱作为个人来说建议各位上标准的ARDUINO大板也考虑到了电源的问题,毕竟大板如果电源真的不够用了还可以加一个5.5x2.1的圆口电源,滤波电容也大很多(虽然都是贴片电解不是固态或者独石电容之类的高档货 要知道咱的THINKPAD即使到了没IBM标的X200拆开看也找不到电解电容,理论保固100年)。总体而言就是这样希望各位回去玩得高兴,咱现在重新捡起来了单片机之后也在想最近要不要做个什么项目比如音乐蜡烛之类的以前玩过的项目怀念一下过去,或者搞搞之前想做没做成的自制键鼠,自动天气预报,自动气象站之类的项目挑战一下不可能。总之这种“电子积木”确实有无限可能,从这个项目各位算是真正的开始入门了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多