锅炉温控系统优化

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项目,后续分享。


相关推荐
weixin_462446235 小时前
Python 使用 Tkinter + openpyxl 处理 Excel 文件并显示实时进度条
python·excel·tkinter
2501_941802486 小时前
面向微服务限流、熔断与降级协同的互联网系统高可用架构与多语言工程实践分享
开发语言·python
海天一色y6 小时前
Pycharm(十八)进程相关内容
python·pycharm
haokan_Jia6 小时前
Java 并发编程-ScheduledFuture
java·前端·python
vortex56 小时前
AppArmor 受限 Shell 环境绕过技术分析:利用动态链接器路径差异实现 Profile 逃逸
linux·运维·服务器·网络安全
BlackPercy7 小时前
【特殊函数】zeta函数
python·数学建模·sympy
FOAF-lambda7 小时前
本地部署mineru-tianshu
python·mineru
春日见7 小时前
python3语法学习
linux·运维·服务器·人工智能·驱动开发
深蓝海拓7 小时前
PySide6从0开始学习的笔记(二十二) 几种封装信号传递内容的方法
笔记·python·qt·学习·pyqt
站大爷IP7 小时前
Python处理Excel多工作表:openpyxl与pandas的实战对比
python