构建一个实时系统遥测仪表板
扫描二维码
随时随地手机看文章
构建一个实时系统遥测仪表板,在一个由DFRobot FireBeetle ESP32P4提供服务的黑暗单页web UI中显示您PC的CPU、RAM和网络状态。你的电脑通过USB串口发送换行结束的JSON;ESP32对其进行解析,在新数据到达时闪烁板载LED(引脚3),并提供响应式AJAX仪表板,该仪表板每5秒更新一次,并包含原始JSON控制台。
硬件
•DFRobot FireBeetle ESP32P4板(或兼容的ESP32P4板)
•USB数据线(用于电源、编程和串行数据)
•可选:小面包板/跳线,如果你想连接外部LED或按钮(板载LED使用引脚3)
显示/ UI
•web UI版本不需要OLED -一切都在浏览器中。
PC软件
•Python 3.8 +
•Python包:pyserial, psutil(使用pip安装pyserial psutil)
Arduino IDE
•最新的Arduino IDE或vscode与PlatformIO
•ESP32板支架安装(pressif包)
•库:Arduino_JSON(通过Library Manager安装)
网络
•ESP32用于承载web服务器的本地Wi - Fi网络凭据(SSID和密码)
为您的项目制造PCB
您必须检查PCBWAY在线订购pcb便宜!
你得到10个高质量的pcb制造和运送到你的家门口便宜。你也可以在第一次订购时获得折扣。将您的Gerber文件上传到PCBWAY,以获得高质量和快速周转时间的制造。PCBWay现在可以提供完整的产品解决方案,从设计到外壳生产。看看他们的在线Gerber浏览器功能。有了奖励积分,你就可以从他们的礼品店得到免费的东西。此外,从这里查看这个有用的博客PCBWay插件KiCad。使用此插件,您可以在KiCad中完成设计后直接订购pcb。
布线和硬件设置
电源和数据
使用USB连接线将FireBeetle连接到PC上。这为遥测提供电源和串行链路。
LED
草图在引脚3上使用板载LED。不需要额外的接线,除非你想要一个外部LED -然后连接LED +电阻引脚3和GND。
笔记
•在运行Python发送器之前关闭Arduino Serial Monitor(一次只有一个应用程序可以打开COM端口)
•确保在Arduino IDE中选择FireBeetle作为目标板,并选择正确的COM端口。
Arduino草图(带有AJAX仪表板的web服务器)
它是做什么的
•使用您的SSID和密码连接到Wi - Fi。
•在USB串行(9600波特)上监听来自PC的换行结束的JSON。
•解析JSON并存储最新的值。
•在http:///.提供一个黑暗主题的HTML仪表板
•提供/data JSON端点,供页面的AJAX每5秒更新一次UI。
•当新数据到达时,在引脚3上的板载LED闪烁。
粘贴并上传这个草图(替换YOUR_SSID和YOUR_PASSWORD):
笔记
•替换“YOUR_SSID”和“YOUR_PASSWORD”。
•在Python运行时保持Serial Monitor关闭。
Python遥测发送器(PC端)
它是做什么的
•使用psutil收集真实的系统统计信息。
•格式化JSON对象并每5秒通过USB串行发送到ESP32。
•需要换行结束符\n,以便ESP32可以使用readStringUntil('\n')。
Python脚本(在PC上运行,更新PORT)
运行和验证(一步一步)
准备硬件
•通过USB连接FireBeetle到PC。
•确认单板驱动已安装,且COM口可见。
上传Arduino草图
•打开Arduino IDE,粘贴草图,将电路板设置为FireBeetle ESP32P4,更新WiFi凭据,然后上传。
•上传后,简单打开Serial Monitor查看Wi - Fi连接日志,然后关闭它。注意打印的ESP32 IP。
启动Python发送器
•将PORT更新为ESP32 COM端口(Windows: COMx, Linux: /dev/ttyUSB0),然后运行Python脚本。
•确认脚本每5秒打印“Sent:”消息。
打开仪表板
•在同一网络的浏览器中打开http:///(使用串口监视器中打印的IP地址)。
•该页面将每5秒自动获取/数据并更新UI。
•原始JSON控制台显示最新的数据包。
验证LED
•每次Python脚本发送一个新的JSON数据包时,引脚3上的板载LED应该会短暂闪烁。
后续步骤和增强
•在web界面中添加认证(基本令牌或密码)。
•通过Wi - Fi发送遥测(从Python到ESP32的HTTP POST)以消除对USB的依赖。
•添加更多指标:网络吞吐量,GPU统计(通过GPUtil),每个分区的磁盘细节。
•将日志保存在SD卡上或发送到远程服务器。
•在FireBeetle上添加手动控制按钮,以更改刷新率或切换面板。
•改善视觉效果:使用本地托管的图表库(Chart.js)来制作火花线和历史图。
结论:
你现在有了一个完整的本地遥测解决方案:你电脑里的一个Python脚本收集CPU,内存,磁盘,和网络数据流作为换行符-终止JSON / USB你DFRobot FireBeetle ESP32 - P4,解析数据,眨眼的机载领导新包,是一个黑暗的,单从页面的AJAX仪表板,更新每五秒,包括现场仪表和原始JSON console-giving你真正-时间能见度,局部控制和隐私,和一个灵活的基础添加身份验证、Wi - Fi遥测、日志、或警报。
本文编译自hackster.io





