MAKER: DustinWatts
此前我们介绍过「 DIY 一台小方屏来显示树莓派信息 」,通过在需要监控的计算机上部署一段 Python 代码,通过 MQTT 网络协议就可以实现在另一块小屏幕上显示机器的监控数据了。
本期要介绍的项目,功能与之类似。不同的是使用蓝牙来连接计算机并传输需要监控的数据(例如 CPU 温度、风扇速度、内存使用量等这些数据),在没有网络的情况下使用更为方便。
它的原理很简单,外观小巧,只需要将 ILI9488 屏幕连接到 ESP32,上传代码后,你所监控的设备将运行主机脚本数据发送至这个显示器后,你就可以随时查看数据信息了。因为它是蓝牙连接,不需要数据线,所以你把它放在办公桌上即可查看系统数据信息,是不是很方便呢!
组件清单
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 板的文件也可以在本项目文件库中下载:
https://make.quwj.com/project/404
https://github.com/DustinWatts/ESP32_TFT_Combiner
安装 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
也可在本项目文件库中下载:
https://make.quwj.com/project/404
按照 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
也可在本项目文件库中下载:
https://make.quwj.com/project/404
从 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
也可以在本项目文件库中下载:
https://make.quwj.com/project/404
我的外壳采用 PLA 打印,层高为 0.2mm。如果正面朝下打印,顶部不需要支撑。如果你是开口朝下打印,底部则需要一些很小的支撑。当然你可以根据自己的喜好设计外壳。
关于 ESP32 TouchDown,你还可参考以下链接:
https://github.com/DustinWatts/esp32-touchdown/tree/main/Case
最后,组装完成就可以使用啦!
项目所用的代码在本项目文件库中可以下载:
https://make.quwj.com/project/404
via instructables.com/Bluetooth-System-Monitor-ESP32-TFT-Screen/