设计一个监控生态系统,配备响应灵敏的LVGL人机界面和基于远程WiFi的Web仪表盘
在现代工业环境中,设备的“健康状况”往往在发生严重故障前是不可见的。尽管许多物联网解决方案试图提供预测性维护,但它们通常存在两个关键缺陷:硬件过载和数据噪声。标准的单芯片监控系统在同时处理高分辨率显示屏、Wi-Fi协议栈和精确传感器采集时,常常会崩溃或出现显著延迟,从而导致“盲区”,无法及时发现瞬时的机械故障。此外,原始加速度计数据本身因地球重力而存在偏置,若不进行复杂的手动校准,很难将真实的机械振动与传感器的静态姿态分离。最后,许多低成本显示器缺乏数据持久化功能,每次断电后服务记录和下次维护计划都会丢失。
项目简介:哨兵地球
哨兵预测性维护中心是一个监控生态系统,旨在弥合原始机械数据与可执行工业智能之间的鸿沟。与传统的单处理器监控系统不同,哨兵采用双节点架构:一块树莓派Pico作为专用的数据采集节点,而一块ESP32-S3-BOX-3则充当智能人机界面(HMI)和网络网关。
该系统可对三轴振动、温度、湿度和大气压力进行采样。项目核心采用动态高通Alpha滤波器,通过数字方式消除重力影响,从而提供纯净的“线性加速度”读数,反映实际的机械应力。除了本地监控外,Sentinel Hub 还作为WiFi网关,托管一个响应迅速的网页仪表盘,为远程操作人员提供实时、带颜色编码的状态警报。结合集成的非易失性存储(NVS),它还充当持久性的数字日志本,即使在断电情况下也能记录维护周期和服务历史。
1:硬件设置
该项目采用分布式计算架构,需要组装两个不同的节点:智能人机界面(ESP32-S3)和传感器数据采集节点(Pi Pico W)。
使用上述电路图来组装电路。
2:ESP32-S3-BOX-3 部件组装
ESP32-S3-BOX-3 作为中央枢纽,负责处理高分辨率显示屏、Wi-Fi 栈以及 HTTP 网络服务器。
将ESP32-S3-BOX-3的显示模块连接到ESP32-S3-BOX-3的BREAD模块。
3:Pi Pico部件组装
树莓派Pico W作为高速数据采集(DAQ)节点,负责对传感器阵列进行采样,并执行必要的功能以收集和处理数据。
振动传感器(MPU6050):使用专用的I2C总线1(GPIO 2 - SDA,GPIO 3 - SCL)以实现最大程度的隔离。
将 SDA 连接到 GPIO 2,SCL 连接到 GPIO 3。
环境传感器(BMP280 和 DHT11):使用 I2C 总线 0(GPIO 4 - SDA,GPIO 5 - SCL)
对于BMP280:将SDA连接到GPIO 4,SCL连接到GPIO 5。
将DHT11的数据引脚连接到GPIO 15。
将每个传感器引脚的电源连接到pico的3V3输出和GND引脚。
机械安装:MPU6050 必须牢固地安装在被监测的设备上。高通Alpha滤波器逻辑假设传感器已牢固连接至振动源,以确保信号完整性。
4:连接两个部分(ESP32 - Pico)
UART 连接:连接通信线路。
RXD1(GPIO 40):连接到 Pi Pico 的 TX(GP0)。
TXD1(GPIO 41):连接到 Pi Pico 的 RX(GP1)。
电源分配:为确保WiFi稳定并防止断电,将ESP32的3V3输出引脚连接到Pi Pico的VBUS引脚,即Pico将由ESP32供电。同时确保两块电路板之间建立共地(GND)。
HMI 安装:请确保 BOX-3 的朝向便于查看,以便显示实时健康状态和 NTP 同步时钟。
5:UI/UX设计与视觉资源
哨兵中心的视觉标识和用户界面经过精心设计,优先考虑可读性和操作人员的速度。在工业环境中,每一秒都至关重要,因此设计重点在于提供高对比度、一目了然的信息。
6:在 GIMP 中创建像素艺术素材
为了在ESP32上保持简洁、技术化的外观,同时最大限度地减少内存占用,所有标志和品牌元素均以像素艺术形式进行了定制设计。
使用 GIMP(GNU 图像处理程序)创建了特定分辨率(例如 50x50)的图标,以确保在 BOX-3 显示器上不会因抗锯齿而产生模糊效果。通过逐像素处理,我们确保 Sentinel 品牌标识和状态指示灯即使在远距离或光线较暗的工厂环境下也能保持清晰可见。这些资源被导出为常规 .png 图像,以优化用户界面。
7:使用 SquareLine Studio 进行 UI 开发
核心界面使用 SquareLine Studio 构建,这是一款功能强大的可视化工具,用于 LVGL(轻量级多功能图形库)。
该设计采用以用户为中心(UX)的方法,具有以下特点:
•直观布局:多种交互式按钮和滑块(例如实时亮度调节),使用便捷。
•描述性标签:每个数据点均配有明确的标签和单位(例如“hPa”、“°C”),以消除在高压监测过程中的歧义。
•通用图标设计:通过使用标准化的工业图标,用户界面跨越了语言障碍,使任何工作人员都能立即识别温度、振动或湿度水平。
•快速故障检测:用户界面逻辑直接与传感器数据流绑定。当设备偏离正常基准时,状态标签和Web服务器背景会立即变色。这使工作人员能在极短时间内判断设备是否异常运行,从而实现即时的安全响应。
关键设置说明
为了匹配UI设计,您必须删除文档目录下 Documents\Arduino\libraries\ 中的默认 lvgl、ui 文件夹以及 lv_conf.h。请解压本文件包 Files_To_Copy.zip 中提供的所有文件和文件夹,并将该压缩包中的所有 lvgl、ui 文件夹及 lv_conf.h 复制到 Documents\Arduino\libraries\ 目录中。
所有这些文件均可在该 GitHub 仓库中获取。
如需修改用户界面,请先从 Sentinel_Design_Files.zip 中提取所有文件,然后使用 SquareLine Studio 导入解压后的文件夹中的项目(.spj)文件。进行所需更改后,在 SquareLine Studio 中点击“创建模板”按钮,并将该模板保存至指定位置。此外,您应将原始的 lvgl、ui 文件夹以及 lv_conf.h 替换为保存位置中库文件夹内的新 lvgl、ui 文件夹和 lv_conf.h。
8:软件开发与编程
Sentinel Hub 中两个节点的软件均使用 Arduino IDE 开发,充分利用其丰富的库生态系统来管理高速数据流和复杂的图形渲染。
第一部分:编写ESP32-S3-BOX-3的代码(Sentinel_ESP32.ino)
中央HMI节点通过Sentinel_ESP32.ino代码进行编程。该系统部分负责管理LVGL图形引擎,处理WiFi连接,并提供HTTP网页仪表盘服务。
所需手动安装的库:要编译此代码,必须通过Arduino库管理器手动安装以下库:
LVGL(v8.3.11):由 kisvegabor 编写。这是核心图形库。
ESP显示屏面板:由Espressif Systems编写。该文件提供了BOX-3集成显示屏的硬件专用驱动程序。安装
配置
在主固件中更新您的WiFi凭据:
文件夹结构:您必须将名为 Sentinel_ESP 的整个文件夹复制到本地目录中。该文件夹包含 main.ino 文件,以及 ui.h、lvgl_v8_port.h 和其他重要文件。
板卡支持:请确保在您的 IDE 中已安装最新的 ESP32 板卡库。
IDE 设置:在 Arduino IDE 中,选择板卡为 ESP32S3 Box。虽然“Box 3”特定的定义可能并非所有版本都显示,但选择标准的 ESP32S3 Box 对此硬件完全适用,不会出现任何兼容性问题。
第二部分:编写Pico DAQ节点代码(Sentinel_Pico.ino)
高速传感器采集由 Sentinel_Pico.ino 蓝牙板程序处理。该代码针对数字信号处理(DSP)和串行数据流进行了优化。
核心与环境:此节点需要 Earle Philhower Pico 核心以支持 RP2040。
你可以在这里查看我关于设置此核心的详细教程:在Arduino IDE中使用Raspberry Pi Pico入门。
所需手动安装的库:以下由Adafruit Industries提供的库必须手动安装。请在提示时确保选择“安装所有依赖项”:
•DHT传感器库:用于读取DHT11的温度和湿度数据。
•Adafruit BMP280 库:用于高精度的气压读数。
•Adafruit MPU6050:用于三轴加速度计和振动监测。
•Adafruit 统一传感器:上述传感器的必需基础依赖项。
通过将这些传感器任务卸载到Pi Pico上,我们确保ESP32-S3在用户交互和网络请求方面始终保持完全响应,避免了单处理器设计中常见的系统卡顿问题。
9:远程监控与网络集成
哨兵中心通过充当WiFi网关,将功能扩展至物理设备之外。这使得用户能够从同一网络中的任意工作站远程实时监控工业资产。
10:Web服务器实现
ESP32-S3-BOX-3 内置了 HTTP 网络服务器。虽然内部显示屏更新速度极快,但网络服务器经过优化,可提供专为远程监控设计的极简仪表盘。
高频数据刷新:内部网络状态每50毫秒更新一次,以匹配Pico的振动信号流,确保所提供的数据始终为最新状态。
情境感知视觉警报:Web服务器采用动态CSS技术。根据系统健康状态,仪表板的背景颜色会自动在工业灰色(正常)、安全橙色(警告)和鲜艳红色(危险)之间切换,从而形成一个高度可见的远程报警系统。
低延迟通信:通过采用轻量级的HTML结构,服务器可最大限度地减少ESP32的处理负载,确保Web请求的响应不会影响关键的LVGL用户界面渲染或UART数据解析。
11:本地HTML仪表板
为了便于专业监控站的运行,开发了一个本地HTML文件,作为基于PC操作人员的主要界面。
iframe 集成:本地文件使用 HTML iframe 直接从 ESP32 的 IP 地址获取实时传感器数据。如有需要,可打开此文件在此处修改 ESP32 的本地 IP。该方法允许我们在单个屏幕上添加多个 Sentinel 节点,从而极大简化了监控操作。
自动同步逻辑:通过实现一个自定义的JavaScript循环,每500毫秒刷新一次数据。这确保了计算机屏幕上持续、可靠的遥测数据流,同时不会占用过多的网络带宽。
用户体验一致性:远程仪表盘镜像物理BOX-3屏幕上的关键数据,包括振动幅度、温度、大气压力和维护计划,为操作人员提供统一的使用体验。
HTML代码文件名为“Sentinel Dashboard.html”。
未来改进
展望未来,Sentinel Hub旨在成为工业物联网(IIoT)的可扩展平台。下一步主要工作是集成SD卡模块,以实现本地数据记录,从而长期保存历史遥测数据,便于审计和趋势分析。这些包含振动、温度和大气压力的海量数据集,将作为训练高级人工智能模型的基础。
通过使用 TensorFlow Lite 等机器学习框架,这些模型可以在边缘设备 ESP32-S3 或集中式监控笔记本电脑上直接运行,以检测机械磨损中那些无法通过静态阈值察觉的细微模式。
结论
哨兵预测性维护中心在低成本、高可靠性的工业监控领域迈出了重要一步。通过摆脱传统的单体软件设计,采用分布式计算架构,该项目成功解决了系统延迟和设备意外停机等常见问题。
通过结合高通带Alpha滤波技术实现无重力振动感知、非易失性存储用于持续服务日志记录,以及双节点WiFi网关,Sentinel Hub为工厂提供了全面的解决方案。它不仅仅是一个传感器,更是一个直观的人机界面,帮助工人获取所需数据,从而在故障发生前加以预防。无论是在ESP32-S3-BOX-3显示屏上还是远程网页仪表盘中查看,Sentinel都能确保设备状态始终可见、可记录且可操作。
本文编译自hackster.io





