开发者分享:使用 EMQX Cloud 和 ESP32 实现智能液冷系统

小夏 科技 更新 2024-02-29

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

作为后端开发人员,我经常需要同时运行多个 JetBrains IDE(集成开发环境),因此我经常面临笔记本电脑过热的问题。 我尝试了各种冷却方法,从传统的风扇到更先进的半导体冷却系统,但它们都引入了噪音和功耗等新问题。

因此,我设计了一个智能水冷解决方案:通过引入外部水冷系统,利用微控制器 ESP32、MQTT 服务器 EMQX Cloud Serverless 和容器化部署平台 FlyIO实时监测和控制水温。 以下是该解决方案的详细说明,我们希望该解决方案能够激励其他物联网开发人员:

作者 DIY IoT 智能液体冷却系统。

技术选型

我希望该系统不仅功能强大,而且可靠高效,以确保水温监测系统的稳定运行。 以下是我选择的技术堆栈:

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 服务器配置

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

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

创建无服务器 MQTT 代理:

登录 EMQX Cloud 控制台,导航到"create deployment"页。

选择"serverless"部署类型,并根据需要配置部署。 例如,区域、支出限制等。

完成配置后,点击"create"按钮自动创建无服务器 MQTT 服务器。

添加身份验证信息:

MQTT 服务器创建成功后,配置认证信息,确保只有授权客户端才能连接到服务器。

MQTTX连接测试:

*并安装 MQTTX 客户端(MQTTX:一个功能齐全的 MQTT 客户端工具),然后使用之前配置的身份验证信息测试与 MQTT 服务器的连接,以确保一切正常。

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

硬件集成

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

Wi-Fi 连接配置:首先,ESP32 配置为通过 Wi-Fi 连接到互联网。 这是通过在 ** 中设置 Wi-Fi 的 SSID 和密码来完成的。

传感器初始化:我们通过 GPIO 32 将DS18B20水温传感器连接到 ESP25,并在 ** 中初始化传感器以设置温度读数的分辨率。

安全MQTT通信:使用 MQTT 协议,通过 EMQX Cloud Serverless 安全地传输数据。 我们配置了MQTT服务器的详细信息,并使用SSL TLS加密来保护数据传输。

温度数据读取和发送:系统每分钟读取一次水温,将读数格式化为JSON,并通过MQTT协议发布到云端。

使用 Python 和 Flask 开发后端服务

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

配置和 MQTT 集成:我们的 Flask 应用程序配置了 MQTT 设置,并使用 Flask MQTT 库直接与 MQTT 通信。 当收到来自 EMQX ESP32 Telemetry 主题的消息时,后端会通过特定的功能对数据进行处理和存储。

数据库管理:使用 SQLite 数据库存储温度数据,通过 Flask 的应用程序上下文管理数据库连接,并确保安全存储和访问数据。

Web 界面和 API:后端提供简单的 Web 界面和 API 端点。 主页链接到显示温度图的页面,而数据 API 终结点返回最近一段时间的温度数据。

系统部署

项目的部署阶段至关重要,我们通过 docker 和 fly 来做到这一点IO 的配置将 Flask 应用程序容器化,并在 Fly 上托管它io。此过程不仅可以在云中部署 Flask 应用程序,还可以确保快速、安全、高效地交付服务。 带苍蝇借助 IO 平台,应用程序可以根据需要轻松扩展,并享受稳定的运行环境。

Docker 容器化首先,让我们使用 Python 3 编写一个 Dockerfile8 作为基础映像,并将应用**复制到容器的应用工作目录。 然后,通过 pip 安装必要的依赖,例如 flask 和 flask-mqtt,并公开端口 8080。 cmd [ 在容器启动时自动执行"python", "app.py"] 运行 Flask 应用。

fly.io配置:在飞行中在 toml 文件中,我们定义了应用程序的运行方式,包括应用程序名称、主要部署区域(例如新加坡)、构建和挂载点设置。

挂载点:设置挂载点存储数据库文件,保证容器重新部署时数据的持久性。

HTTP 服务配置:将内部端口设置为 8080,强制执行 https、启动和停止策略,并设置最小运行的机器数量。

健康检查:您可以通过定期访问ping路由来检查应用的运行状态,以保证服务的稳定性。

部署应用

创造fly.io应用:通过 fly 使用 flyctl apps create 命令IO 的 CLI 工具,用于创建新应用。

部署应用:在 fly 中执行 flyctl deploy 命令在 IO 上自动构建和部署 Docker 容器映像。

验证部署:部署完成后,访问 flyIO 提供的应用程序的 URL,用于验证 Flask 应用程序是否成功运行。

项目成果:

实时温度监测系统

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

稳定的数据传输

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

功能丰富的 Web 界面

Python 和 Flask 的强大组合为我们提供了一个干净直观的 Web 界面,允许用户轻松查看实时温度数据和历史温度曲线。 这不仅改善了用户体验,而且使温度监控更加直观且易于管理。

全球分布式云部署

带苍蝇作为 IO 的全球分布式服务,我们的 Flask 应用程序在云中高效运行。 这种部署方式不仅保证了应用的高可用性和稳定性,而且大大降低了数据传输的延迟,为用户提供了近乎实时的体验。

总结与展望

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

通过集成 ESP32、DS18B20水温传感器、EMQX Cloud Serverless MQTT 服务器、Python、Flask 和 FlyIO云平台,我们成功开发出一个既实用又高效的系统。 这个系统不仅提高了我的工作效率,还为类似的问题提供了创新的解决方案。

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

相似文章

    华为云开发者日让开发者成为行业发展的决定性力量

    近日,华为云开发者日活动在北京成功举办。作为开发者生态系列的压轴之作,来自华为云 鲲鹏 昇腾的多位开发者和技术专家齐聚峰会,共同探讨AI产业的发展现状和前沿洞察。值得一提的是,峰会现场设置了开发者体验官 Koolabs工作坊 展区等专场,让开发者体验华为云 鲲鹏 昇腾 HarmonyOS等产品技术。...

    Pi Network 开发者大使计划推迟,主网可以参加 Pi2DAY 2024 吗?

    在加密货币的浪潮中,Pi Network以其独特的社交挖矿模式和宏大的愿景吸引了全球的关注。近日,Pi Network 的创始人之一 Nicholas 博士宣布继续开展开发者大使计划,并透露了主网启动的可能时间,这标志着 Pi Network 进入了一个新阶段。.主网上线倒计时 据 Nicholas...

    评论:Minecraft开发者应该参与社区吗? 接受玩家的建议?

    社区 Minecraft开发者应该参与社区吗?一位开发者自述 最近游戏开发者和玩家之间的冲突似乎越来越大,这让我想谈谈 年前我在 TF 开发过程中遇到的问题。这导致我退出游戏开发 年,甚至不得不因此服用药物 当时,Value要求我开始公开我们对这个项目的计划和愿景。因此,我建立了一个社交网络,以博客...

    re Invent 2023 TOP 5 开发者最喜欢的产品和服务公布! 快来观看吧

    亚马逊云科技 re invent 作为全球云计算领域的年度领头羊,为全球云计算爱好者和建设者带来全新的产品和技术发布重新构想云基础架构,重新构想计算,重新构想存储,重新构想企业级生成式 AI帮助云上客户快速实现数字化转型,加速企业生成式AI创新。乘着 re invent 的势头,我们在亚马逊云科技开...

    ForeNova 开发者向暴雪的“Compound”问好 恭喜中国玩家!

    近日,据 报道,经过一年多的 分手 暴雪和网易的 重聚 已经提上日程。表示,尽管暴雪中国和网易官方都没有给出明确的回应,但双方仍然选择再次牵手。值得一提的是,网易玩家论坛应用 网易神 中的魔兽世界社区最近恢复了更新,增加了包括地心之战和魔兽探索服务器在内的新内容。对此,像Forenova开发者这样的...