锅炉温控系统优化

1.前言(废话与感慨)

很久之前(大概3年以前吧),我写过一篇文章: https://wshuo.blog.csdn.net/article/details/122660383

那时候我还没有去北京工作,而 现在我已经从北京的一家互联网大厂离职回老家了,这期间发生了很多事,不过所幸这点爱好还没有丢下。所有花了点时间重新优化了一些这个项目(也是确实用到了)。


2.之前项目不足:

之前单片机的软件是用micropython写的,硬件是开发板拼接成的,导致很不稳定。

现在回头看之前做的这个东西,就像学生时期的玩具,将几个模块拼凑一起解决问题就可以了。

虽然本次做和diy硬件大佬还有很大差距,但是对比我之前做的还是有很大进步的。


3. 项目产生原因

为了让不熟悉朋友了解一下,这里截图之前的文章:



4.结构

新版本原理很简单,俩个esp8266 硬件设备只负责上报温度(通过mqtt协议),然后所有逻辑运算处理都在 mqtt server主机完成,其是一台24小时运行的小主机,这样硬件和业务逻辑解耦方便去更新。

值得一提的是我没有单独去做一个switch 开关,之前淘了一个废品开关,我用wireshark抓包了其通信协议,让我可以远程控制其开关状态。当然要做一个联网开关也很简单(主要因为我没有塑料外壳,直接用现成的了),可以用esp-01和 继电器简单做一个联网开关。

俩个设备的热敏电阻,一个贴在锅炉上,一个贴在暖气上,这样只要温度差值达到一个值,就启动水泵,不是常规的高于一个温度再启动,更加合理。在实际使用场景热敏电阻贴的位置也会影响实际温度,因为热水往上走。

4.1 硬件

我想硬件主要有俩个功能,一个是能做温度显示,另外就是联网上报。

之前我用温度传感器实现的,这次降低成本直接用热敏电阻。

用的模块 是ESP12F , esp12 ADC采样只能获取 0-1V 超过1V会导致芯片烧毁,所以在设计电路时,需要串联个电阻分压后进行采样范围才能达到0-3V3。

显示直接用个数码管,驱动芯片使用 74HC595N,手里正好有几个插接封装的,否者我就用贴片节约些空间。

typec只负责供电,烧录直接使用烧录夹,为了节约成本我没有在pcb电路中加入uart自动下载电路(类似ch340c这类芯片),对于升级程序麻烦这类问题,后面我在软件部分解决。

原理图:

PCB图:

第一次画PCB, 俩层板轻松解决,这里数码管3d渲染和实际不太符合,可能是型号不太相同。

(这里也遇到个坑,开始时esp-12f天线部下面pcb部分也铺铜了,导致信号不好,后来修改了)

我也为其绘制了3D外壳:

实物图:

4.2 软件

主要分为俩部分:

  1. 单片机上固件

  2. 服务端业务控制逻辑

4.2.1 单片机上的固件

本次不用之前的micropython开发了,转向Arduino框+Platformio开发

我想做成一个通用的设备,所有在单片机软件可以进行配网,所以主要实现了一下功能:

1). wifi配网功能

2). 远程OTA

3). 温度显示及上报

后续我会把所有代码开源,这里就不贴了。

4.2.2 服务端

服务端是我24小时运行的linux低功耗主机,那么服务端需要安装mqtt server:

bash 复制代码
sudo apt install mosquitto
service mosquitto start #启动服务
systemctl enable mosquitto #设置开机自启动

这部分核心业务逻辑, 功能包括:

1). 发布几个可以设置的参数(温差,启动时长等等)

2). 对温差进行判断,启停switch。

3). 对数据记录保存绘制图表。

对数据保存后我可以进行统计,计算每天的水泵开启的时长,从而推算每天的耗电量,甚至大概可以看出什么时间加的煤 : )

4.2.3 手机端软件

这里我用的 IoT MQTT Panel , 可以对一些我定义的参数进行设置:


5. 其他

后续我会将所有代码以及PCB开源,方便想用的朋友复刻,我一直没敢将代码放到 github, 因为我总觉得代码写的不够好,放上太丢脸了,此外我还做了其他几个diy项目,后续分享。


相关推荐
嵌入小生0075 小时前
Standard IO -- Continuation of Core Function Interfaces (Embedded Linux)
linux·vim·嵌入式·标准io·vscode
Zach_yuan5 小时前
传输层之TCP/UDP 核心原理全解析:从协议基础到实战机制
linux·网络协议·tcp/ip·udp
独自归家的兔5 小时前
Ubuntu 系统 systemd timers 详解:替代 crontab 的定时任务进阶方案
linux·运维·ubuntu
Lsir10110_5 小时前
【Linux】深入解剖页表——分页式存储
linux·运维·服务器
玄同7655 小时前
Python Random 模块深度解析:从基础 API 到 AI / 大模型工程化实践
人工智能·笔记·python·学习·算法·语言模型·llm
爱吃生蚝的于勒5 小时前
【Linux】线程概念(一)
java·linux·运维·服务器·开发语言·数据结构·vim
AIFarmer5 小时前
在EV3上运行Python语言——环境设置
python·ev3
fengyehongWorld5 小时前
Linux yq命令
linux·运维·服务器
yunsr5 小时前
python作业3
开发语言·python
岁岁种桃花儿5 小时前
Flink从入门到上天系列第一篇:搭建第一个Flink程序
大数据·linux·flink·数据同步