一开始的想法是我用4块钱买到了一个iic的led124*32屏幕,想着用arduino uno来显示电脑的cpu温度,相当于一个简易外设,如果用esp32还可以不用串口与电脑连线了。
然而第一步就卡住了,window并没有提供真正的cpu温度api,鲁大师一类的都是自己写的驱动。于是我查到了这个 Open Hardware Monitor beta,一个开源的硬件信息检测工具。官网 Open Hardware Monitor - Core temp, fan speed and voltages in a free software gadget
但是我实在是不会调用那个。dll文件,看起来需要一定的c#基础 。wmi调用倒是可以,但是要打开软件才可以 ,在powershell(管理员权限)中 输入 get-wmiobject -namespace root\OpenHardwareMonitor -query 'select * from Sensor' 就可以看到很多从传感器获得的数据
我觉得这个要打开软件,有点多此一举。找啊找,,找到了著名的 微星 MSI Afterburner,感谢微星,它提供了一个服务端,用http发布硬件信息,可以用手机app来查看硬件信息,甚至可以用手机超频 官网 下载地址 Afterburner (msi.com)
需要下载MSI Afterburner与MSI Afterburner Remote Server。打开这俩软件,我们先研究下他的协议,Afterburner Remote Server是一个http服务器,地址跟端口可以设置
注意第一个密码。后边会用到
查看硬件信息与帧率的地址是 http://192.168.1.5:4000/mahm,(超频是另一个后缀) 192.168.1.5是我自己电脑的局域网地址,请酌情更改,在浏览器里测试这个网址,会让你输账号密码 ,账号是 MSIAfterburner ,密码就是 Secuity的内容 。服务器会返回一个xml,包含了非常多硬件信息
然后就是处理这个xml文件了,uno上我准备写一个客户端解析xml然后用串口发送给uno板子,esp32就可以完全独立完成http请求与解析xml并显示在12864小屏幕了
以上获取xml的协议我用到了Wireshark-抓包。