基于 ESP32 制造系统监控屏,支持与 PC 蓝牙连接
本帖最后由 RRoy 于 2022-9-22 15:10 编辑本期要介绍的项目,是使用蓝牙来连接计算机并传输需要监控的数据(例如 CPU 温度、风扇速度、内存使用量等这些数据),方便在没有网络的情况下使用。
它的原理很简单,外观小巧,只需要将 ILI9488 屏幕连接到 ESP32,上传代码后,你所监控的设备将运行主机脚本数据发送至这个显示器后,你就可以随时查看数据信息了。因为它是蓝牙连接,不需要数据线,所以你把它放在办公桌上即可查看系统数据信息,是不是很方便呢!
▼ 视频
https://dfrobot.loll.cc/video/Bluetooth%20System%20Monitor%20Using%20ESP32.mp4
组件清单
[*]ESP32-WROOM-32 开发板(38 排针)X 1
[*]ILI9488 TFT 屏幕(带 XPT2046 触摸控制器) X 1
[*]ESP32+TFT PCB 板 X 1(可选)
[*]烙铁 X 1
[*]焊锡 X 1
[*]铁钳 X 1
将 TFT 屏幕连接到 ESP32
将这两个部分连接在一起,通过以下三种方式:1、使用面包板;2、使用原型板;3、使用专门定制的 PCB 板将 ILI9488 与 ESP32 DevKitC 相连。
使用面包板可以用来测试连接和屏幕比较方便。但要注意在测试时,桌面要保持水平以及接口要牢固;屏幕需要在 3.3V 下运行,5V 会造成损坏!
ESP32 -> ILI9488 进行以下连接:
[*]3.3V -> VCC
[*]GND -> GND
[*]GPIO15 -> CS
[*]GPIO4 -> RESET
[*]GPIO2 – > DC/RS
[*]GPIO23 -> SDI(MOSI) and T_DIN
[*]GPIO18 -> SCK and T_CLK
[*]GPIO32 -> LED
[*]GPIO21 -> T_CS
[*]GPIO19 -> T_DO
[*]GPIO27 -> T_IRQ
注意屏幕的 SDO(MISO) 没有用到,因此在 TFT 模块上留出一个未连接的引脚。
定制的 PCB 板的文件也可以在文末下载。
安装 Arduino IDE 库下载安装 Arduino IDE ESP32 内核
1、从 Arduino IDE 软件中,进入File – Preferences
2、点击 Additional Board Managers URLs:后面的文本框,将网址修改为:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json 然后单击确定。
3、依次点击 Tools – Board: – Board Manager 并在搜索框中输入 ESP32。安装最新版本并单击关闭。
安装其他库
依次从 Sketch – Include Library – Manage Libraries 并搜索并安装以下库:Adafruit-GFX-Library 和 TFT_eSPI。
此外,如果你使用的是 ESP32 TouchDown,你还需要安装电容式触摸库:打开 https://github.com/DustinWatts/FT6236,点击“代码”并下载 “Download .ZIP”。在 Arduino IDE 中,依次从 Sketch – Include Library – Add .ZIP library,下载完成。
配置 TFT 屏幕
1、在编译和上传 Bluetooth-System-Monitor.ino 代码文件之前,先编辑 TFT_eSPI 库中包含 User_Setup.h 的文件。它可以在“Library”下的 Arduino sketchbook 文件夹中找到。
2、如果你还没有重命名 TFT_eSPI 库文件夹,则可以在 TFT_eSPI-master 中找到文件 User_Setup.h。
3、你需要取消注释适用于你的硬件配置的代码。你可以在user_setup.h Examples文件夹中下载的存储库中找到此项目所需的 user_setup.h 文件。
4、将文件 ESP32_Dev_Kit_V1_ILI9488_Resistive.h 复制到 /TFT_eSPI-master/。将已经存在的User_Setup.h 重命名为 User_Setup.old(这样可以保留原始文件以防出现问题)。
5、将 ESP32_Dev_Kit_V1_ILI9488_Resistive.h 重命名为 User_Setup.h(区分好大小写)保存并关闭文件。
如果你使用的是 ESP32 TouchDown,用同样的配置方法即可。
下载 Arduino Sketch 并上传到 ESP32
使用 ESP 代码数据上传工具。本项目使用 SPIFFS(ESP32 闪存)来存储用作背景的图像。在将代码上传到 ESP32 之前,你需要将这些上传到 ESP32。因此,你需要 ESP32 代码数据上传工具。
你可在 GitHub 下载:https://github.com/me-no-dev/arduino-esp32fs-plugin访问GitHub不方便的同学,也可在文末打包下载。
按照 GitHub 上的说明安装该工具:下载工具文件夹,链接为:https://github.com/me-no-dev/arduino-esp32fs-plugin/releases/tag/1.0如果该库不存在,在 Arduino sketchbook 库中创建该库。将工具解压到工具库中(路径为 /Arduino/tools/ESP32FS/tool/esp32fs.jar)。之后重启 Arduino IDE。
如果是 MacOS ,请在 ~/Documents/Arduino/ 中创建工具库并在那里解压文件。
上传数据目录
在将数据文件夹上传到 ESP32 之前,必须选择正确的分区方案。
在将数据目录上传到 ESP32 之前,必须选择正确的分区方案。
菜单 Tools – Board 选择 ESP32 Dev Module。在 Tools 中选择分区方案 Default 4MB with spiffs。
插入 ESP32。
单击 Tools 并选择 ESP Sketch Data Upload。
如果数据上传失败,可能是你已经打开了串行监视器。如果发生这种情况,请关闭串行监视器后再重试。
Bluetooth-System-Monitor.ino
在 Github 上,你可以找到完整的源代码:https://github.com/DustinWatts/Bluetooth-System-Monitor访问GitHub有困难的同学,也可在文末下载。
从 Bluetooth-System-Monitor GitHub 库,然后单击 Code 和 Download.ZIP解压的文件夹并将其重命名为 Bluetooth-System-Monitor。这样 Arduino IDE 的文件夹和代码的名称就会不同。
如果发生这种情况,当弹出一个窗口,询问是否应该移动代码。这样就会造成只会移动代码而不是数据文件夹,就会导致上传出错!
在 Arduino IDE 中打开 Bluetooth-System-Monitor.ino 代码。
配置代码
根据你使用的电路板(电阻式触摸、电容式触摸或无触摸),你必须取消正确的注释。例如,如果你使用 ESP32 TouchDown 取消注释:#define ENABLE_CAP_TOUCH。如果你使用带有单独 TFT 的 DevKitC,请取消注释#define ENABLE_RES_TOUCH。
在代码中,你可以设置一些警告级别。这可使图标下的文本变为红色。向下滚动,直到看到 Define warning levels, change this as you like。
你还可以设置图形 y 轴的比例。这是在 The scale of the Y-axis per graph 下完成的。如果这些太大或太小,数据将无法正确显示在图表上。你可能需要做一些尝试。
将代码上传到 ESP32
继续将 Bluetooth-System-Monitor.ino 代码上传到 ESP32。除分区方案外, tools 下的设置可以保留为默认值(见图)。
等待一段时间后,就可以安排所需监控的设备将数据发送到系统监视器上了。
蓝牙连接
在将蓝牙信息监视器连接到计算机前,必须先进行蓝牙连接并确保 ESP32 已通电。
在 Windows 上:
右键单击开始菜单,单击设置,然后单击设备。点击 Add Bluetooth or other device,选择 Bluetooth,等待它找到 ESP32 或 MyDisplay,点击连接。此后,你可以单击完成。
打开设备管理器(右键单击开始菜单)并单击端口旁边的箭头。现在应该有一个名为 Standard Serial over Bluetooth link的设备。这是下一步中使用到的 “COM” 端口。
注意:在上图的设置中,出现了两个新设备。选用了第一个,但你需要再次验证。
在 MacOS 上:
打开首选项并单击 Bluetooth。它会可以显示 ESP32 或 MyDisplay,等待搜索完成,选择 ESP32 或 MyDisplay,然后点击 “Connect”。
如果要查看实际设备名称是什么,你可以打开终端并输入:ls /dev/tty.*,它将为你列出所有串行端口。
将数据发送到监视器的 Python 脚本
作者将提供了两个 Python 脚本,它们会将数据发送到信息系统监视器。一种用于 Windows,一种用于 MacOS。两者都要求你安装最新版本的 Python。可点击下载并安装:https://www.python.org/downloads/
Windows
为了使脚本正确运行,你需要安装一些 Python 模块。这些模块是 psutil、pyserial 和 pythonnet。你可以使用 PIP 来安装这些,以管理员身份打开命令提示符,通过单击开始菜单并输入 cmd,然后右键单击命令提示符并选择Run as Administrator。
导航到文件夹 Bluetooth-System-Monitor/host_python,即是你下载 Sketch 的文件夹,在这里安装所需的 Python 模块:
pip install pyserial
pip install psutil
pip install pythonnet
正确安装模块后,在你喜欢的代码编辑器中打开 windows_host.py。可以用 VSCode 或者 SublimeText 或其它也可以。
在这里,你必须至少编辑一行代码。
connection = serial.Serial('COM16')
如图所示,这是脚本将向其发送数据的 COM 端口。确保它在引号之间并使用大写字母。你可以将驱动器号更改为另一个驱动器以报告其可用空间。但这一步是可选的。保存更改,你就完成了!
确保无论你从何处运行此脚本,所包含的 .dll 文件都位于同一文件夹中。你需要以管理员身份运行此脚本。
MacOS
MacOs 比 Windows 更容易一些。你不需要更改 COM 端口,因为所有 Mac 的名称都相同,因此无需编辑脚本。如果你想,你可以更改硬盘报告可用空间,并且编辑轮询时间。
在 Windows 上,需要一个 .dll 来读取信息,但在 MacOS 上,可以用 Python 完成。你只需要安装两个模块即可。打开终端并导航到 Python 脚本所在的文件夹。安装以下两个模块:
pip install pyserial
pip install psutil
在 MacOS 上,使用:
sudo python macos_host.py
来运行,同时需要以管理员身份运行此脚本。
3D 打印外壳
这款外壳设计为压入式。最后使用强力胶将顶部牢固地连接到底部即可。
3D 打印外壳文件链接为:https://www.thingiverse.com/thing:4661069也可以在文末打包下载。
项目中的外壳采用 PLA 打印,层高为 0.2mm。如果正面朝下打印,顶部不需要支撑。如果你是开口朝下打印,底部则需要一些很小的支撑。当然你可以根据自己的喜好设计外壳。
关于 ESP32 TouchDown,你还可参考以下链接:https://github.com/DustinWatts/esp32-touchdown/tree/main/Case
最后,组装完成就可以使用啦!
项目来源:instructables.com/Bluetooth-System-Monitor-ESP32-TFT-Screen/
页:
[1]