当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]近年来,我们越来越意识到全球变暖已成为影响世界的重要问题。对个人而言,有时很难看到自己该如何帮助环境。每个人都可以采取的措施之一就是减少家庭能耗。在家庭层面,最大的能源消耗来自寒冷季节的取暖。除了降低能耗对环境的影响外,直接用户也能从中受益,因为能源账单会因此减少。

近年来,我们越来越意识到全球变暖已成为影响世界的重要问题。对个人而言,有时很难看到自己该如何帮助环境。每个人都可以采取的措施之一就是减少家庭能耗。在家庭层面,最大的能源消耗来自寒冷季节的取暖。除了降低能耗对环境的影响外,直接用户也能从中受益,因为能源账单会因此减少。

解决这一问题的设备之一就是智能暖气片温控器。市面上有许多商业解决方案,但它们大多采用专有协议,难以集成到智能家居系统中。此外,这些商业产品价格较高,入门门槛也相对较高。

长期以来,我一直寻找一种可行的DIY智能暖气片温控器解决方案,因为我们一直使用老旧的手动电子温控器,设置起来相当麻烦,而且电池耗尽后还会丢失设置。正因如此,我决定开展这个项目,开发一款智能暖气片温控器。

规格

对我来说,智能暖气片温控器中的“智能”意味着它能够连接并集成到智能家居的其他系统中。正因如此,我决定开发一个支持WiFi连接的暖气片温控器。我选择MQTT作为通信协议,因为它能更灵活地连接到不同的智能家居平台,例如Home Assistant。

在控制器方面,我决定使用CY8CPROTO-062-4343W开发套件。该套件支持WiFi连接,并已内置NTC热敏电阻,用于测量空气温度。为了更专注于固件部分,我决定拆解一个旧的“非智能”电子温控器,重新利用其硬件来完成本项目。

由于Home Assistant提供了自动发现MQTT设备的规范以及MQTT主题通信协议,我决定实现这些功能。在此情况下,暖气片温控器是一种HVAC气候设备,其规格可在此处找到。

先决条件

在本节中,我将简要介绍所使用的智能家居设置,并提供环境配置的简明说明。

如前所述,我使用 Home Assistant 作为智能家居平台。我在 Raspberry Pi 4B 上通过 Docker 安装了一个 Home Assistant 实例。除了 Home Assistant 外,Raspberry Pi 还运行了一个 Eclipse Mosquitto 的 Docker 容器,用作 MQTT 中继服务器。

以下是环境配置的基本步骤(仅适用于初学者参考):

1. 使用 Raspberry Pi Imager 将 Raspberry Pi OS(64位桌面版)安装到 SD 卡上。

2. 将 SD 卡插入 Pi,连接以太网线、HDMI 线、键盘和鼠标,然后接通电源,启动桌面系统。

3. 打开终端,更新软件:sudo apt update && sudo apt upgrade。

4. 按照官方说明,通过终端使用 apt 仓库安装 Docker。

5. 在主目录下创建持久化存储的文件夹结构,使用 mkdir 命令创建目录,并使用 touch 和 nano 命令创建相关文件。MQTT 配置文件 mosquitto.conf 和 Docker Compose 文件位于末尾。

6. 使用命令 sudo docker-compose up 启动容器。

首先通过在树莓派上打开浏览器,访问 http://127.0.0.1:8123 来完成 Home Assistant 的初始设置。

进入 Home Assistant 后,在“设置”→“设备与服务”→“添加集成”中添加 MQTT 集成。搜索“MQTT”,然后添加该集成。在“代理”一栏中填写 mqtt5(因为这是 MQTT 容器的名称),其余端口设为默认 1883,用户名和密码留空。

在终端中,检查 eth0 的 IP 地址,这个地址稍后将用于散热器温控器连接到 MQTT 代理。终端命令为:ip a

至此,所有设置应已完成。

硬件准备

本项目中,我使用了一台旧的可手动配置的电子温控器来控制电机及阀门开关。该温控器来自 eQ-3 公司,但其他品牌也可能采用相同原理进行复用,或者可以自行开发硬件(我近期正计划实现这一点)。

原则上,使用直流电机并配备齿轮驱动线性轴,使轴推动散热器阀门开合。根据轴的伸展程度,阀门会相应开启或关闭。当轴完全伸出时,阀门关闭;当轴完全收回时,阀门打开。

驱动直流电机时使用H桥电路。该电路中,4个晶体管以两两组合的方式,可将电机的正负极连接到电源和地之间,从而实现双向驱动电机。此外,还使用了电压分压器来测量电压,用于判断电机是否卡死,即电机已到达轴的某一端位置(完全收回或完全伸出)。

下图展示了H桥电路及其连接方式,并附有所用电路的示意图。从电路图可以看出,我已拆掉原始的微处理器。

四个控制晶体管的引脚分别连接至P8.0、P9.2、P9.1和P9.4。而卡死检测信号则连接至P10.5,因为该引脚支持ADC测量。(板上连接的微处理器信号具有较高的阻抗,不会影响测量结果,因此无需额外修改。)此外,必须将GND接地连接至开发板。

为了驱动电机,我在拆解后的温控器外壳中使用了AA电池。

程序说明

本项目开发的固件基于英飞凌MQTT示例项目。程序首先创建了一个新的温控器任务,用于温控器的操作,以及一个通过WiFi连接并建立与MQTT代理通信的MQTT任务。

温控器任务初始化温度测量和电机控制信号。随后,它完全收起并拉出带有电机的轴,以校准轴的行程范围。运动过程会持续计时,直到检测到电压下降,表明电机已发生堵转。

在成功建立WiFi和MQTT连接后,程序将关于温控器配置和功能的MQTT消息发布到MQTT代理的“homeassistant”主题下。Home Assistant会订阅该主题以发现新设备。接收到此消息后,Home Assistant会初始化新设备及其功能。智能散热器温控器随后订阅两个主题,监听Home Assistant发送的操作模式(“加热”、“关闭”)和目标温度的消息。当接收到这两个主题的消息时,温控器会就运行模式状态和目标温度状态作出响应。此外,温控器还会在另外两个主题上发布测得的温度以及动作状态(是否正在加热)。

构建 FW

项目代码可在 GitHub 仓库中获取。将项目克隆到您的工作区,并在 Modus Toolbox 中导入该项目。在 Modus Toolbox 的快速面板中选择“新建应用程序”,选择 CY8CPROTO-062-4343W BSP,点击“浏览应用程序”并选择已克隆的仓库文件夹。重命名项目,勾选复选框,然后点击“创建”。

在 configs/wifi_config.h 文件中配置路由器的 SSID 和密码,并在 configs/mqtt_client_config.h 文件中修改 IP 地址,使用您 MQTT 代理的 IP 地址以及用户设置。如果按照前提条件部分的说明操作,请输入上一步中的地址。同时请检查 #defineMQTT_CONFIG_TOPIC,它应包含 Home Assistant 探测新设备的主题名称,默认值为 "homeassistant"。

接下来,编译项目,并将 CY8CPROTO-062-4343W 开发板通过 USB 数据线连接到电脑的 PROG/DEBUG 端口。如果还使用了拆解后的温控器外壳,请也连接电池。然后对开发板进行刷写。

程序运行与测试

程序烧录完成后,温控器将开始连接WiFi,并校准阀杆以实现阀门的开启和关闭。如果一切正常,Home Assistant 中会显示一张新卡片,您可以在其中测试目标温度设置,并开关加热功能。此时应能看到当前测量的温度以及加热的运行状态。

调试时,可通过串口连接(例如 PuTTY)与电路板建立通信,以便查看日志信息。

未来开发

本项目主要聚焦于智能散热器温控器的固件开发,我探索了如何通过WiFi和MQTT协议将其连接到Home Assistant。接下来的工作是将温控器集成到一个外壳中。届时将开发定制化的PCB板,并搭配3D打印的专用外壳及线性轴齿轮。此外,固件还可扩展温控器的各种工作模式。

本文编译自hackster.io

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