当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]热量是我们面临的最隐秘的危险之一。它不像洪水或火灾那样突然显现,也没有突发事件来警告你异常发生。相反,热量会逐渐积累——每小时一点,持续数小时——直到原本感觉舒适的房间,变成一个不适宜停留的地方。而往往最容易受到这种变化影响的人,却最不容易察觉到它的存在。

热量是我们面临的最隐秘的危险之一。它不像洪水或火灾那样突然显现,也没有突发事件来警告你异常发生。相反,热量会逐渐积累——每小时一点,持续数小时——直到原本感觉舒适的房间,变成一个不适宜停留的地方。而往往最容易受到这种变化影响的人,却最不容易察觉到它的存在。

一位独居的年长父母、一个在婴儿房里睡觉的宝宝,或是一只宠物在炎热的午后留在家中。

普通温度计可以告诉你房间温度为35°C,但仅靠温度无法全面反映情况。湿度会使相同温度感觉明显更热,长时间暴露则可能将不适的环境转变为严重的健康风险。

我们希望打造一个能识别这种差异的设备。

这个想法催生了Heat Sentinel。这是一款房间级别的热监测与预警系统,旨在持续监控环境,并在温度开始进入危险区域时及时发出警报。

Heat Sentinel 不只是简单地问“房间有多热”,而是从更全面的角度出发:实际感受到的温度、对应的风险等级,以及房间内温度持续存在的时间。

因为短暂的温度上升与长时间处于高温状态是不同的。

Heat Sentinel 正是基于这一理念而设计。它不仅测量环境,还持续追踪环境条件随时间的变化,将简单的温度读数转化为对室内真实状况的清晰图景。

更重要的是,它无需用户不断查看温度计或打开仪表盘。当环境变得危险时,Heat Sentinel 会主动向你发出警告。这正是我们希望填补的鸿沟:了解温度与真正理解危险之间的差距。

硬件支持 — Waveshare

特别感谢 Waveshare 对 HeatSentinel 提供核心硬件支持,使本项目得以实现。我们围绕其硬件生态系统构建了该系统,主控单元采用Waveshare ESP32-S3-Zero,环境传感则使用Waveshare BME280。

工作原理

系统边缘连接了一个小型的Waveshare ESP32-S3-Zero模块,搭配一个Waveshare BME280传感器。该传感器可测量温度和湿度,并通过Wi-Fi将数据发送至Java 26后端服务器。在后端,原始数据被进一步处理,转化为更具意义的信息。

后端利用已建立的NOAA回归模型,结合温度和湿度因素计算出“热指数”,从而估算环境实际感受的高温程度。随后,结果被分类为不同的风险等级,使系统不仅能判断房间是否温暖,还能识别环境条件是否正在变得不安全。

短暂的温度上升与长时间持续高温并不相同。因此,Heat Sentinel会记录房间在一天中处于各个风险区域的时间长度,让我们能更清晰地了解环境状况及其演变趋势。

所有这些信息都汇总在一个实时的网络仪表盘中,用户可以随时监控当前温度、湿度、热指数、风险等级以及历史数据。但我们不希望Heat Sentinel依赖于有人不断盯着屏幕。

当环境条件进入危险范围时,系统会立即向负责该区域的人员发送Telegram通知。房间无需等待他人查看,系统即可主动发出警告。

整个流程出人意料地简单:BME280 → ESP32-S3 → Java 26 → 热指数 → 风险分析 → 仪表盘 → Telegram警报

我们还希望项目中的软件部分本身能成为一项独立的工程实践。

后端直接基于Java 26构建,无需使用Spring、Maven或任何外部框架。现代Java特性如密封接口、模式匹配、穷举性switch语句、记录(records)和虚拟线程,使我们能够将传感器API、Web仪表盘、实时WebSocket层和报警系统整合为一个自包含的应用程序。

其结果是一个足够小巧以理解、足够简单以部署,并且足够强大以持续监控真实环境的系统。

1:3D打印部件

我们希望外壳设计得可爱、简洁且极简,外形干净利落,与项目整体风格相契合。我们在ThinkerCAD中从零开始设计,确保外壳紧凑的同时,留有充足空间容纳所有组件。

在完成CAD模型后,我们使用Bambu Lab P2S 3D打印机,采用黑色PLA线材对外壳进行3D打印。最终成品是一个整洁、小巧的外壳,既能保护电子元件,又呈现出我们所期望的简约而精致的外观。

2:设计电池充电器

为了保持Heat Sentinel的紧凑性,我们决定自行设计电池充电器,而非使用现成的独立充电模块。

该充电器在KiCAD中从零开始设计,并集成MCP73831锂离子充电控制器。同时加入了充电状态指示灯、必要的电池连接线以及配套的辅助元件。

设计重点在于使电路结构小巧、整洁、可靠,同时便于直接集成到Heat Sentinel外壳中。最终的电路图为我们提供了专为本项目定制的专用充电解决方案。

3:订购PCB板

设计确定后,我们已将充电器PCB发送至NextPCB进行制造和组装。

特别感谢NextPCB对Heat Sentinel的支持。其PCB的制造与组装质量非常出色,整体成品效果令人印象深刻——尤其是考虑到其价格水平。

如果你正在自制硬件,现在正是尝试NextPCB的好时机。他们目前的整机PCBA服务为符合条件的1–10件组装订单提供最高200美元的折扣,使你能够以显著更低的成本完成原型机的组装。

4:组装

将各个元件逐一安装到外壳内,保持线路整洁,并确保每个部件都正确放置在指定位置。

特别注意USB-C接口。将外壳上的USB-C开孔与电路板上的USB-C连接器对齐,确保外部可完全接触到连接器。

5:布线

外壳组装完成后,下一步是连接电子元件。请按照上方的接线图,将BME280连接到Waveshare ESP32-S3-Zero,并确保电源和I²C接口正确匹配。尽量将电线保持短而整齐,以便所有部件都能干净地装入外壳内。在给电路板供电前,请仔细检查3.3V、GND、SDA和SCL的连接。

完成传感器线路连接后,按照图示连接电池和充电电路。在通电前,请花点时间确认每个连接是否正确。务必仔细检查电池连接的极性——反接电池可能会损坏电子元件。

6:最终组装

外壳采用卡扣式设计,无需使用胶水或其他额外硬件。只需对准外壳的两个部分,用力按压直至牢固卡合即可。在关闭外壳前,请确保USB-C接口和传感器开口已正确对齐。

7:安装 Java 26

Heat Sentinel 的后端运行在 Java 26 上,因此第一步是在将要运行服务器的计算机上安装 Java 开发工具包(JDK)。

首先打开浏览器,访问 Oracle Java 网站,下载适用于您所选操作系统的 JDK 26。

选择与您的系统匹配的安装程序:

•Windows:x64 安装程序(.exe)

•macOS:安装包(.dmg)

•Linux:选择适合您发行版的相应软件包,例如 .deb、.rpm 或压缩归档文件。

下载完成后,运行安装程序,并保留默认的安装选项,除非您有特殊原因需要更改。按照向导完成设置,直到安装完成。

对于 Linux 系统,请使用您发行版的标准包管理器安装已下载的 JDK,或按照 Oracle 提供的说明安装所选的软件包。目前仅需这些即可。安装完 Java 26 后,机器就已准备好运行 Heat Sentinel 后端。

8:验证 Java 安装

在继续配置 Heat Sentinel 后端之前,我们先确认 Java 26 是否正确安装,并且可以从命令行访问。

在您的计算机上打开一个全新的终端窗口:

•Windows:命令提示符或 PowerShell

•macOS / Linux:终端

运行以下命令:

两个命令都应返回以 26 开头的版本,确认 Java 运行时和编译器已可用。

如果看到“not recognized”、“command not found”或类似提示,请先完全关闭终端,然后重新打开一个新终端。有时系统需要一个全新的终端会话才能识别新的 Java 安装。

如果命令仍然无法识别,可能是 JDK 没有正确添加到系统的 PATH 中。请检查您操作系统的安装情况,并确保 JDK 的 bin 目录已包含在 PATH 中。

9:设置项目文件夹

文件夹结构很重要,因为 Java 使用 src/heatguardian 路径来定位源文件。请确保 src 和 heatguardian 是两个独立的嵌套文件夹,而不是同一个文件夹中包含这两个名称。

您的项目应如下所示:

在存放项目的任意位置创建一个名为 heat-index-guardian 的文件夹,在其中创建 src 文件夹,再在 src 内部创建 heatguardian 文件夹。同时,在项目根目录下创建一个单独的 firmware 文件夹。

现在将项目文件放置到各自的位置:

•将所有 10 个 .java 文件放入 src/heatguardian/ 目录中。

•将 HeatSentinel.ino 放入 firmware/ 目录中。

•将 heat_index_guardian_dashboard.html 直接放在 heat-index-guardian/ 目录内。

10:编译 Java 后端

编译的含义是将 .java 源文件转换为 Java 运行时可执行的字节码。每次修改 Java 源代码后,都需要重复此操作。打开一个新终端,并进入 heat-index-guardian 项目文件夹。

在 Windows 系统上:

在 macOS 或 Linux 系统上:

如果命令执行完毕后没有输出任何内容,这通常是一个好迹象。javac 在编译成功时通常会保持静默。

现在你应该能在项目目录中看到一个名为 out 的新文件夹。该文件夹包含我们用于运行 Heat Sentinel 后端的编译后的 Java 类文件。

如果出现错误,请不要担心。现阶段最常见的原因是源文件缺失或位置不正确。请检查项目目录下是否包含了全部十个 .java 文件。

同时,请确保你是在 heat-index-guardian 项目的根目录下运行命令。

11:运行服务器

请确认你仍处于 heat-index-guardian 目录中,并且使用了上一步中的同一终端窗口。运行以下命令:

如果一切配置正确,服务器将启动并显示一条简短的启动信息,例如:

三个地址说明服务器提供的功能:

•Dashboard — 用于监控 Heat Sentinel 的 Web 接口。

•WebSocket — 实时连接,用于向仪表板推送更新。

•Readings API — 接收来自 Waveshare ESP32-S3-Zero 的温度和湿度数据的端点。

保持服务器运行

在使用 Heat Sentinel 时,请保持此终端窗口打开。当前终端正在运行后端程序,关闭它将停止服务器。

测试完成后,请点击终端内部并按下:Ctrl+C

这将安全地停止服务器。此时后端程序仍在运行,我们可以打开 Heat Sentinel 的仪表盘,确认网页界面正常工作后再连接传感器硬件。

12:验证仪表盘

在连接硬件之前,让我们先确认 Heat Sentinel 后端和仪表盘之间的通信是否正常。

在服务器仍处于运行状态的情况下,打开任意现代浏览器并访问以下网址:

此时你应该能看到完整的 Heat Sentinel 仪表盘,包括热风险指数、温度、湿度和压力读数、趋势图表以及暴露度测量仪。

在页面顶部,你会看到一个“演示数据”指示器,这是正常现象。由于 Waveshare ESP32-S3-Zero 尚未连接,仪表盘会使用模拟数据,以便你无需任何硬件即可验证界面功能。

13.测试

我们对整个系统进行了最终的测试,以确保所有功能都能按预期正常运行。首先,我们连接了USB-C电源并检查充电电路。电池开始正常充电,充电状态指示灯表现正常,系统在整个测试过程中保持稳定。

接通电源后,我们检查了Heat Sentinel仪表盘。连接到Wi-Fi的Waveshare ESP32-S3-Zero,仪表盘从演示数据切换至实时数据,温度和湿度读数由BME280持续更新。

接着,我们验证了完整的数据传输路径:BME280 → Waveshare ESP32-S3-Zero → Wi-Fi → Java后端 → 仪表盘!所有环节均响应顺畅,实时读数与实际环境情况一致。

最后,我们测试了报警系统,模拟触发高温警报。几秒钟内,相应的Telegram通知成功发送。结果完全符合预期:充电正常、传感器数据实时、仪表盘即时更新,报警系统也立即响应。

用法

Heat Sentinel 的设计旨在静默运行于后台,无需持续关注即可监控一个房间。

将它放置在需要监控的房间内,让 Waveshare ESP32-S3-Zero 负责环境感知。BME280 持续测量环境数据,而 Java 后端则将这些数据转化为热指数,并追踪房间随时间变化的暴露情况。

仪表盘可快速查看当前状况,同时通过 Telegram 通知确保您无需长时间盯着屏幕。这使其非常适合卧室、儿童房、办公空间、宠物区域或可能长时间无人看管的房间使用。

总结

Heat Sentinel 结合了我们希望探索的两个理念:为高温环境打造真正实用的产品,以及以现代 Java 为核心构建完整的互联系统。

从边缘的 Waveshare ESP32-S3-Zero 和 BME280,到 Java 26 后端、实时仪表盘、暴露追踪和 Telegram 通知,每个组件都协同工作,形成一条统一的流程:感知 → 理解 → 响应。

对我们而言,这正是 Heat Sentinel 具有吸引力的地方。它不仅仅是一个普通的温度监测器。这是一个小小的例子,说明了精心设计的硬件和软件如何协同工作,让热量变得更容易被理解,也更难被忽视。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭