开发者分享:利用 EMQX Cloud 与 ESP32 微控制器实现智能液冷散热系统

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
MSE Nacos 企业版免费试用,1600元额度,限量50份
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 通过引入外部水冷系统、利用微控制器 ESP32、MQTT 服务器 EMQX Cloud Serverless 以及容器化的部署平台 Fly.io,EMQX Cloud 的开发者陶德坤设计一个智能的 DIY 液冷散热解决方案,希望能为其他物联网开发者带来灵感

作者:陶德坤,EMQX Cloud 开发者。

作为一名后端开发人员,我经常需要同时运行多个 Jetbrains IDE (集成开发环境),所以经常面临笔记本电脑过热问题。我曾尝试过各种散热方法,从传统的风扇到更先进的半导体冷却系统,但这些方法都带来了新的问题,如噪音和耗电等。

因此,我设计了一个智能的液冷散热解决方案:通过引入外部水冷系统、利用微控制器 ESP32、MQTT 服务器 EMQX Cloud Serverless 以及容器化的部署平台 Fly.io 来实时监测和控制水温。以下是该解决方案的详述,希望能为其他物联网开发者带来灵感:

物联网智能液冷散热系统

作者 DIY 的物联网智能液冷散热系统

技术选型

我希望这套系统不仅有功能性,还具备可靠性和效率,以确保水温监控系统的稳定运行。以下是我挑选的技术栈:

  • ESP32:在多种选择中,ESP32 微控制器因其集成了 Wi-Fi 和蓝牙功能,以经济高效的特点而脱颖而出。这款芯片为物联网项目提供了强大的性能支持,同时成本可控又不牺牲功能性。
  • DS18B20 水温传感器:对于温度监控,DS18B20 是我的首选,因为它提供了精确的数字温度读数和出色的耐水性能。这款传感器与 ESP32 可协同工作,确保了水温监控系统的准确性和稳定性。
  • EMQX Cloud Serverless MQTT Broker:在众多消息中间件中,EMQX Cloud 因其高性能、可靠性以及 Serverless MQTT 服务在处理大量并发连接和消息路由方面的卓越表现而受到青睐,这些特性对于确保设备间通信的顺畅至关重要。
  • Python 和 Flask:选择 Python 是因为它的表达力强且库函数丰富,Flask 则轻量级且高度灵活,能适应快速开发和部署的需求,这对于迅速实现项目原型至关重要。
  • Fly.io:Fly.io 的全球分布式边缘托管服务能够将容器转换为微虚拟机,提供了一个独特的平台。这不仅加快了应用的部署速度,还大大减少了数据传输的延迟,为用户提供了接近实时的体验。

项目实施

项目的实施阶段是一个将创意转化为实际解决方案的过程。在这个过程中,首先要确保 EMQX Cloud Serverless 的正确配置,然后是硬件的集成,后端服务的开发,最后是系统的部署和测试。

Serverless MQTT Broker 配置

EMQX Cloud Serverless 提供免费配额,对于我们的应用场景来说,这些配额完全能够覆盖所需的成本,这也是我选择 EMQX Cloud Serverless 部署的主要原因之一。另外,它默认支持传输层安全协议(TLS),为我们的数据传输提供了强有力的加密保障,确保数据在传输过程中的机密性、完整性和身份验证,降低了数据泄露或被篡改的风险。

以下是配置 EMQX Cloud Serverless 的具体步骤:

  1. 创建 Serverless MQTT Broker:
    • 登录到 EMQX Cloud 控制台,并导航至 "Create Deployment" 页面。
    • 选择 "Serverless" 部署类型,并按需配置部署。例如区域、SpendLimit 等。
    • 完成配置后,点击 "Create" 按钮,系统会自动创建 Serverless MQTT Broker。
  2. 添加认证信息:
    • 在 MQTT Broker 创建成功后,进行认证信息的配置,确保只有授权的客户端可以连接到 Broker。
  3. 使用 MQTTX 连接测试:

通过以上步骤,我成功地配置了 EMQX Cloud Serverless MQTT Broker,为我们的项目提供了一个安全、可靠且成本效益高的消息中间件。它不仅简化了物联网基础设施的管理和扩展,还通过 TLS 支持确保了数据的安全传输,为项目打下了良好的基础。

硬件集成

在项目中,我们使用 ESP32 微控制器和 DS18B20 水温传感器来监测水温,并将数据发送到云端。通过这种集成,我们实现了一个能夠实时监测并传输水温数据的系统,高效且安全,同时为水冷系统提供了智能化的监控。

  1. Wi-Fi 连接配置: 首先,ESP32 被配置为通过 Wi-Fi 连接到互联网。这是通过在代码中设置 Wi-Fi 的 SSID 和密码来实现的。
  2. 传感器初始化:我们通过 GPIO 25 将 DS18B20 水温传感器连接到 ESP32,并在代码中初始化了传感器,设置了温度读取的分辨率。
  3. 安全的 MQTT 通信: 使用 MQTT 协议,通过 EMQX Cloud Serverless 来安全地传输数据。我们配置了 MQTT broker 的详细信息,并使用了 SSL/TLS 加密来保证数据传输的安全。
  4. 温度数据读取与发送: 系统每分钟读取一次水温,并将读数格式化为 JSON 后,通过 MQTT 协议发布到云端。

使用 Python 和 Flask 开发后端服务

在这个项目中,我们使用 Python 和 Flask 构建了后端服务,以处理来自 ESP32 的温度数据并展示在网页上。整个后端的设计旨在高效处理数据、提供实时反馈,并易于维护。通过这种方式,我们构建了一个既能实时处理来自物联网设备的数据,又能提供用户友好界面的后端服务。这不仅加强了项目的实用性,也为未来的扩展和优化提供了良好的基础。

  1. 配置和 MQTT 集成:我们的 Flask 应用配置了 MQTT 代理设置,使用 flask_mqtt 库实现与 MQTT 代理的直接通信。当接收到来自 emqx/esp32/telemetry 主题的消息时,后端会通过特定函数处理并存储数据。
  2. 数据库管理:使用 SQLite 数据库存储温度数据,通过 Flask 的应用上下文管理数据库连接,并确保数据的安全存储和访问。
  3. Web 界面和 API:后端提供了简单的 Web 界面和一个 API 端点。主页链接到一个显示温度图表的页面,而数据 API 端点返回最近一段时间的温度数据。

系统部署

项目的部署阶段至关重要,我们通过 Docker 和 Fly.io 的配置将 Flask 应用容器化并托管于 Fly.io。这一流程不仅实现了 Flask 应用的云端部署,还确保了服务的快速、安全和高效提供。借助 Fly.io 平台,应用可以根据需求轻松扩展,享有稳定的运行环境。

  1. Docker 容器化:首先,我们编写 Dockerfile,使用 Python 3.8 作为基础镜像,并将应用代码复制到容器的 /app 工作目录。然后,通过 pip 安装必要依赖,例如 Flask 和 Flask-MQTT,并暴露 8080 端口。容器启动时会自动执行 CMD ["python", "app.py"],运行 Flask 应用。
  2. Fly.io 配置:在 fly.toml 文件中,我们定义了应用的运行方式,包括应用名称、主部署区域(如新加坡),构建及挂载点设置。
    • 挂载点:设定挂载点存储数据库文件,保证数据在容器重新部署时的持久性。
    • HTTP 服务配置:配置内部端口为 8080,强制使用 HTTPS,并设定启动、停止策略和最小运行机器数量。
    • 健康检查:通过定期访问 /ping 路由,检查应用运行状态,保障服务稳定。
  3. 部署应用
    1. 创建 Fly.io 应用:使用 flyctl apps create 命令,通过 Fly.io 的 CLI 工具创建新应用。
    2. 部署应用:执行 flyctl deploy 命令,在 Fly.io 上自动构建 Docker 容器镜像并部署。
    3. 验证部署:部署完成后,访问 Fly.io 提供的应用 URL,检验 Flask 应用是否成功运行。

项目成果

实时温度监控系统

利用 ESP32 微控制器和 DS18B20 水温传感器的强大功能,我们设计并实现了一个能够实时监控和调控水冷系统温度的系统。现在,我的笔记本电脑不再因高温而过热,能够稳定运行,而我也可以在任何时候,无论是在咖啡馆的露台上还是在家中的书桌前,享受平静而舒适的工作环境。

稳定的数据传输

通过 EMQX Cloud Serverless,我们实现了从 ESP32 到云端的数据传输的安全性和可靠性。EMQX Cloud Serverless 是一款高性能的 MQTT 代理,具有低延迟特性,能够实时接收和处理温度数据。这确保了系统能够迅速做出反应,并保持高效运行。

功能丰富的 Web 界面

Python 和 Flask 的强大组合为我们提供了一个简洁而直观的 Web 界面,使用户能够轻松查看实时温度数据和历史温度曲线。这不仅提升了用户体验,也使得温度监控更为直观、更易于管理。

功能丰富的 Web 界面

全球分布式云端部署

借助 Fly.io 的全球分布式服务,我们的 Flask 应用得以在云端高效运行。这种部署方式不仅确保了应用的高可用性和稳定性,也极大地减少了数据传输的延迟,为用户提供了近乎实时的体验。

截图

总结与展望

从最初遇到的笔记本过热问题,到构建一个实时的水温监控系统,这个项目充分展示了现代物联网技术是如何帮我们解决生活中的实际问题。

通过整合 ESP32、DS18B20 水温传感器、EMQX Cloud Serverless MQTT Broker、Python、Flask 以及 Fly.io 云平台的能力,我们成功地开发出一个既实用又高效的系统。这个系统不仅提高了我的工作效率,也为类似问题提供了一个创新的解决方案。

对这个项目感兴趣或希望深入了解技术细节的读者,可以在 GitHub 上的 EMQX 的 MQTT 客户端示例中找到完整的代码和更多实现细节。这个资源库不仅是学习和实践的宝库,还可能激发你对物联网和云计算的新想法和创造力。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
存储 前端开发 Java
农产品销售|助农惠农|基于Springboot实现农产品销售管理系统
农产品销售|助农惠农|基于Springboot实现农产品销售管理系统
592 1
|
测试技术 C# 数据安全/隐私保护
Esp8266-01s、51单片机实现连接MQTT踩坑:附加烧录安信可固件+宝塔搭建MQTT服务器 全套攻略
🚀🚀 本文记录一下5.20在宿舍宅了两天搞懂的东西,由于对于单片机还是个萌新,没有可以咨询的人,无奈之下,翻遍了度娘、B站、C站,没办法学习就是所有东西都要靠自己去摸索,期间踩了很多坑,有很多问题值得我去解决,这里做一个记录,便于以后自己查阅,也希望能对现在学习的你做一个参考,避免和我一样踩坑🚀🚀 ✨✨欢迎订阅本专栏或者关注我,一起学习单片机!!✨✨ ✨✨欢迎订阅本专栏或者关注我,一起学习单片机!!✨✨ ❤️❤️❤️ 最后,希望我的这篇文章能对你的有所帮助!
1222 0
Esp8266-01s、51单片机实现连接MQTT踩坑:附加烧录安信可固件+宝塔搭建MQTT服务器 全套攻略
|
存储 监控 安全
Zabbix SNMP监控安装、配置与服务器实例(学习笔记六)
SNMP可以监控路由器、打印机、UPS、摄像头、服务器等。 1、安装、配置snmp  yum install net-snmp* -y # vim /etc/snmp/snmpd.
3144 0
|
4月前
|
人工智能 自然语言处理 搜索推荐
【2025.3.12】wordpress AI智能插件-新增自动获取搜索引擎下拉关键词,网站SEO必备,自动生成文章、配图,24小时自动发布
Linkreate WordPressAI插件是一款强大的内容生成与优化工具,支持自动化文章生成、SEO优化、长尾关键词生成及管理。具备多语言支持、搜索引擎下拉关键词获取、内容采集、定时任务自动化等功能。同时集成多种AI服务(如DeepSeek、OpenAI等),提供前端AI客服窗口和媒体生成功能,包括文章图片与视频生成。更多功能等待探索。
【2025.3.12】wordpress AI智能插件-新增自动获取搜索引擎下拉关键词,网站SEO必备,自动生成文章、配图,24小时自动发布
EMQ
|
存储 NoSQL API
EMQX Enterprise 5.4 发布:OpenTelemetry 分布式追踪、OCPP 网关、Confluent 集成支持
新版本提供 OpenTelemetry 分布式追踪与日志集成功能,新增了开放充电协议 OCPP 协议接入能力,并为数据集成添加了 Confluent 支持。此外,新版本还进行了多项改进以及 BUG 修复,进一步提升了整体性能和稳定性。
EMQ
1306 60
EMQX Enterprise 5.4 发布:OpenTelemetry 分布式追踪、OCPP 网关、Confluent 集成支持
|
7月前
|
数据采集 人工智能 移动开发
盘点人工智能在医疗诊断领域的应用
人工智能在医疗诊断领域的应用广泛,包括医学影像诊断、疾病预测与风险评估、病理诊断、药物研发、医疗机器人、远程医疗诊断和智能辅助诊断系统等。这些应用提高了诊断的准确性和效率,改善了患者的治疗效果和生活质量。然而,数据质量和安全性、AI系统的透明度等问题仍需关注和解决。
772 10
|
8月前
|
Prometheus 监控 Cloud Native
JAVA线程池监控以及动态调整线程池
【10月更文挑战第22天】在 Java 中,线程池的监控和动态调整是非常重要的,它可以帮助我们更好地管理系统资源,提高应用的性能和稳定性。
427 64
|
7月前
|
存储 SQL 分布式计算
大数据时代的引擎:大数据架构随记
大数据架构通常分为四层:数据采集层、数据存储层、数据计算层和数据应用层。数据采集层负责从各种源采集、清洗和转换数据,常用技术包括Flume、Sqoop和Logstash+Filebeat。数据存储层管理数据的持久性和组织,常用技术有Hadoop HDFS、HBase和Elasticsearch。数据计算层处理大规模数据集,支持离线和在线计算,如Spark SQL、Flink等。数据应用层将结果可视化或提供给第三方应用,常用工具为Tableau、Zeppelin和Superset。
2926 8
|
C++
C++一分钟之—名空间(namespace)的作用与使用
【6月更文挑战第22天】C++的命名空间是代码组织的关键,防止命名冲突并促进模块化。通过`namespace`定义代码块,如`MyNamespace{...}`,并使用别名(`namespace MN = MyNamespace::...`)简化引用。避免过度使用和嵌套,以及`using namespace`的滥用,而应在小范围内导入所需成员。明智选择名空间名称并有效利用`using`声明,能提升代码可读性和专业性。
386 1
|
12月前
|
人工智能 搜索推荐 大数据
云上智能投顾:重塑个人理财的新纪元
数据安全与隐私保护:随着投资者信息的不断增加如何确保数据的安全性和隐私性成为亟待解决的问题。 技术成熟度与稳定性:目前云上智能投顾技术仍处于不断发展和完善阶段其技术成熟度和稳定性仍需进一步提升。 投资者教育与信任度:部分投资者对新兴的智能投顾技术持怀疑态度如何提升投资者的信任度和接受度也是一大挑战。 五、未来展望 随着技术的不断进步和市场环境的不断变化云上智能投顾将迎来更加广阔的发展前景。未来云上智能投顾将更加注重数据安全和隐私保护加强技术研发提升技术成熟度和稳定性;同时加强与金融机构、科技企业的合作共同推动智能投顾行业的健康发展;此外还将积极探索新的应用场景和服务模式如企业投顾、公益投顾等以
269 7