您当前的位置:首页> 滚动 >正文
全球球精选!一种使用ESP32和AIDA64,通过WIFI发送硬件状态实现VFD副屏的方法,

2023-06-23 19:59:00     来源 : 哔哩哔哩

众所周知,通过AIDA64软件,我们可以实现一个电脑硬件监控副屏,这种网上有很多教程,我开始也是看的网上的教程准备做一个副屏的。总结起来,有三种方法可以实现:


(资料图)

使用SensorPanel,这种就是相当于制作一个窗口,里面显示各种信息,然后拖到副屏里去,调整大小让其占满整个副屏

使用RemoteSensor,这种方法相当于建立了一个web服务器,布局设置和SensorPanel是一样的,不过是通过浏览器显示的,这种一般是需要一个不用的手机当作副屏的

使用其他的显示模块,点开LCD菜单就能看到AIDA64支持很多型号的LCD,OLED,VFD之类的屏幕,这种是需要串口或USB进行通信的

综上,如果选择前两种,需要准备一个副屏或者手机,成本有点过高了,如果使用第三种,需要连接串口线,但是我的电脑只有3个USB口,键盘一个鼠标一个,还有一个要插U盘或者手柄,不能一直拿来插屏幕,就想到有没有办法通过WIFI把数据发出去呢,自然是有的,因为RemoteSensor本来就是一个Web服务端啊,只要给它发送请求,就能拿到数据了,然后解析出来再通过屏幕显示就好了。

我这里选择了ESP32作为控制器,因为它有WIFI功能,显示屏选了GP1294AI VFD屏幕,选它是因为在淘宝搜屏幕的时候恰好看到了感觉很有科技感就买了。下面是完成后的效果,当然,本文只是提供一个通过WIFI传递硬件数据的方法,不一定要用一样的控制器和显示屏。

1,首先当然是验证WIFI发送数据是否可行了,打开AIDA64->设置->LCD->RemoteSensor,选择一个端口,这里我用的8080,因为我的80端口无法通过其他设备访问,搜了下说可能是被运营商屏蔽了。总之多试试,选一个能用的端口就行,具体怎么试后面说。然后勾选启用RemoteSensor LCD支持。

2,之后选择LCD 项目,在里面添加一些需要显示的内容,这里是我已经布置好的内容,这个就不说了,基本上上手就会用,其他教程也很多

这里要注意的就是类别,项目类别有以下几种,分别是柱状图(Sensor item),数值(Simple sensor item),文本(Static label),图片(Image),图表(Graph)和表盘(Arc Gauge),我这里只解析了文本和数值,其它的因为我暂时没用到,所以现在只支持Simple sensor item和Static lable这两类,记住这两个类型的名字,因为后面还要说。

3,上面添加完项目之后,我们将地址和端口输入浏览器访问下

关于怎么看地址,首先WIN+R键,然后输入cmd,回车,打开命令行,输入ipconfig回车就能看了

我是电脑开的热点给ESP32连接的,所以是无线局域网 本地连接2那个,ip是192.168.137.1,端口号是8080,在浏览器输入192.168.137.1:8080访问,如果是ESP32和电脑同时连接一个WIFI,那就是上面那个无线局域网 WLAN的地址了,顺便一说ESP32的WIFI频段是2.4GHz,所以单5G和双频段的WIFI都连不上的,我就是没办法只能电脑开热点了

这里最好用同一个WIFI下的其他设备访问这个地址,因为windows防火墙可能会拦截其他设备,如果访问不了,把防火墙关了试试,也可能是端口被屏蔽无法访问,需要换一个端口。

4,可以看到web浏览器正在显示刚刚配置的项目,并且数据不断刷新,按下F12,看网页HTML代码

往下翻,看到这里有很多span元素,正是我们刚刚设置的那些项目,里面有很多属性,大部分没什么用,都是格式之类的,只有id属性和元素的主体(就是>和<夹着的那段数据)我们需要提取出来。

可以看到,这里元素所显示的数据和实际有些不符,只有文本类项目的值是对的,其他如时间,CPU占用率这些数据都是预设的固定值,这里主要是提取出所有的项目,给他们分配一个结构保存起来,之后还会再发送请求刷新数据。这里贴个解析的代码:

5,之后就是获取刷新的数据了,可以看到HTML里有很多JS代码,应该就是靠这些来刷新数据的,可惜我没了解过web开发,看不懂代码,于是直接用wireshark抓包了一下。

发现在浏览器发送了一个GET /sse的请求后,开始不断收到数据

为了验证,使用curl发送一个HTTP请求试试

果然,开始不断收到刷新数据,至此,获取刷新数据也成功实现了,只要发送一个GET /sse请求,然后不断接收HTTP响应,再把数据提取出来就好了。

可以看到这里的HTTP响应体,数据都是在‘ {|} id | 内容 {|} '这样的结构中,需要和上面一样把id和内容提取出,然后对比之前保存的项目的id,替换对应的内容。贴个代码:

到这里,已经成功实现了获取AIDA64的数据。

二,硬件的连接

VFD屏幕的引脚:

GP1294AI VFD屏的资料是商家给的,驱动板资料如下:

上下各有6个接口,上面那6个接口是要用的,可以看出使用的是SPI通信,从上至下分别是VCC, SCLK, CS, SDA, RST, GND引脚

我用的是ESP32-WROOM-32 30引脚的开发板,网上查了下引脚图如下:

可以使用VSPI进行通信,VSPI有四个引脚,因为不需要读取数据,所以MISO不用,那么接线就是:

VCC -> 3V3

SCLK -> GPIO18(VSPI CLK)

CS -> GPIO5(VSPI CS0)

SDA -> GPIO23(VSPI MOSI)

RST -> GPIO21  //随便选一个能用的就行

GND -> GND

最后附一个接线图:

三,软件部分

开发环境使用的是VSCODE,装了platform IO插件,本来是用的Arduino IDE的,用了两天感觉不好用就换了,这个在网上搜一下就有很多教程,要注意的是第一次创建项目的时候要下载好久,我开了魔法但是也没效果,最后等了3个小时才好。

然后Board选择的是Espressif ESP32 Dev Module,Framework选择的是Arduino

之后就是按照上面的流程写代码就好,Arduino的库还是很好用的,主要部分就是连接WIFI,发送HTTP请求,解析数据,然后显示。

显示部分使用的是商家给的库,在U8g2库上改的,我看了下原版U8g2好像没有这个型号的显示屏。因为用的是U8g2库,所以修改成其他显示屏也很方便,只需要改一下定义时的类和引脚就好

这里使用的是硬件SPI,所以只需要自己定义CS和RST引脚,SPI的接线就和上面一样就行

然后贴一个HTTP部分的代码,主要是读数据的:

主要就是这些,其他的WIFI连接,U8g2显示之类的网上就有很多例子,我这里就主要介绍一下怎么读数据,解析数据了。本来写这篇就只是想分享一下通过WIFI发送AIDA64的监控数据到ESP32模块的方法,显示屏甚至ESP32都是可以替换的。

然后是我自己的ESP32连接GP1294AI的项目代码:

https://github.com/Electroenix/ESP32_AIDA64_GP1294AI

之后也会在这里面增加详细的说明

标签:

热门推荐

精彩放送

X 关闭

行业要闻
土巴兔公司持续盈利能力存疑 毛利率超90%比肩茅台净利率仅10%

土巴兔公司持续盈利能力存疑 毛利率超90%比肩茅台净利率仅10%

6月底前河南省实现“场所码”全覆盖 升级后的“场所码”有啥功能

6月底前河南省实现“场所码”全覆盖 升级后的“场所码”有啥功能

公安部推行新车上牌新规 便利群众快捷上牌

公安部推行新车上牌新规 便利群众快捷上牌

北京市经信局公布今年第三批北京市“专精特新”中小企业名单

北京市经信局公布今年第三批北京市“专精特新”中小企业名单

“520”迎婚姻登记高峰!深圳市民政局:高峰日扎堆登记可能影响体验感

“520”迎婚姻登记高峰!深圳市民政局:高峰日扎堆登记可能影响体验感

北京市东城区41条措施落地 2790家中小微企业享受政策支持

北京市东城区41条措施落地 2790家中小微企业享受政策支持

地球上最幸福的人!56岁非洲建筑师获普利兹克建筑奖

地球上最幸福的人!56岁非洲建筑师获普利兹克建筑奖

新疆阿克苏地区库车市发生4.1级地震 震源深度21千米

新疆阿克苏地区库车市发生4.1级地震 震源深度21千米

从东北到西北 他在“军垦第一城”规划着城建未来

从东北到西北 他在“军垦第一城”规划着城建未来

西藏米林“家庭农场”:引领种植产业 助力乡村振兴

西藏米林“家庭农场”:引领种植产业 助力乡村振兴