基于 STM32 的智能马桶系统设计与实现【源码分享】【免费】
智能马桶主控板软硬件设计全解析(STM32F0 + HAL + FreeRTOS + Flutter App)
一、项目背景与概述
随着智能家居的发展,智能马桶已成为家庭卫浴场景中的高频智能产品。相比传统马桶,智能马桶在即热式加热、安全保护、清洗模式、健康监控等方面具备更高的技术要求。本项目基于 STM32F0 系列 MCU 设计了一款完整的智能马桶主控系统,功能覆盖电控加热、风机控制、阀体控制、蓝牙通信、健康数据上报等模块,同时提供配套 Flutter 手机 App 用于交互。
项目采用 ST HAL 库 + FreeRTOS 架构,具备良好的扩展性,方便后期加入 WiFi 联网、用户习惯模型、自定义温控策略等功能。

源码分享
免费开源
https://blog.csdn.net/weixin_52908342/article/details/155538872
二、硬件设计(PCB)
硬件架构上包含以下功能模块:
- STM32F0 主控(核心控制逻辑)
- 即热式加热模块控制
- DC 电磁阀与脉冲阀驱动电路
- 风机驱动与温度档位控制
- 蓝牙模块(可替换为 2.4G 模块)
- 电源管理(12V/5V/3.3V)
- 按键输入与安全检测
1. PCB 注意事项与优化建议
在实际调试中发现几个可进一步优化的点:
✔ 12V MOSFET 控制端建议加下拉电阻
Q1 ~ Q5 的控制端加入适当的下拉电阻,可避免上电初期 MCU 未初始化时导致 MOSFET 漏触发的问题。
✔ 蓝牙模块可替换为 2.4GHz(nRF24L01)
原蓝牙方案在协议和移动端兼容性方面稍有限制,推荐使用 2.4G,减少配对与信号干扰问题,同时能更轻量地接入数据库。
✔ 部分电阻标值需根据实际设计校准
早期设计中部分阻值未统一,调试时已根据情况校准,后续可按 wiki 文档更新 PCB。

三、软件架构设计(STM32 主控)
本系统采用 FreeRTOS 构建任务体系,将智能马桶的各模块功能拆分为独立任务,使逻辑清晰、可维护性更强。
软件架构如下:
| 模块 | 功能 |
|---|---|
| 加热控制任务 | 即热式模块启停、温度 PID 控制、安全过温保护 |
| 水路控制任务 | 脉冲阀控制、大/小冲水逻辑、停电保护策略 |
| 风机与风温任务 | 档位调节、风温控制 |
| 按键任务 | 本地物理按键事件解析、防抖处理 |
| 蓝牙通信任务 | 与 Flutter App 交互、健康数据上报 |
| 系统监控任务 | 看门狗、错误监控、定时器溢出兜底处理 |
主控基于 HAL 库开发,对应 IO 控制清晰简洁,适合快速维护与移植。
四、手机 App(Flutter)设计
项目提供一个 Flutter 编写的简单调试/控制 App,用于蓝牙配对、远程操作、健康数据查看等功能。
1. 蓝牙 ID 配置
修改 conBan.dart 中的蓝牙 ID 即可完成配对:
var _BTid = "00:15:83:00:AB:00";
如果不知道设备 ID,可直接运行调试模式,App 会自动 scan 并打印扫描到的蓝牙地址,在控制台查看后填入即可。
2. 健康数据时间戳问题
当前 APP 的时间戳可能存在误差,推测为手机本地设置或蓝牙传输的缓存延迟问题。由于后续计划加入 WiFi + 云端同步,因此暂未深入修复。
未来调整方向:
- 控制协议与数据协议分离
- 引入个人习惯记录(如温度偏好 / 风温偏好 / 座圈温度等)
- 健康数据通过 WiFi 上传,蓝牙只负责实时控制
五、已知问题与后续优化计划

1. 按键逻辑顺序错误(已修复)
原始按键事件的优先级与触发顺序不正确,导致长按/短按逻辑错乱。已在最新版中修复逻辑。
2. 按键事件与电池 hold 动作冲突
由于按键 IO 与 hold 电池供电逻辑共用部分通道,可能导致:
- 冲水动作中断电 → 冲水无法停止
- 需要再次按下按键才能恢复
临时解决方案:
除停电冲水外,不持续 hold dcs_pin。
后续计划:
将脉冲阀驱动电路独立,使用 6V 驱动即可保持稳定的冲水能力,并实现停电时仍可大/小冲。
3. 风温档位切换会导致计时器停止
原因:计时器设置了“为0后自动停止”,切换档位时触发该逻辑导致停止。
将在项目收尾后统一更新。
六、项目总结
这是一个从硬件到软件、从 MCU 到移动端完整实现的智能马桶控制系统。核心亮点包括:
- 基于 STM32F0 + FreeRTOS 的模块化架构
- 支持即热式模块的实时温控
- Flutter App 简易交互,蓝牙直连体验
- 全套可复用的 PCB + 软件方案
- 结构开放,适合继续扩展成更完整的智能家居产品
该项目仍在持续更新,更多内容可查看 wiki,也欢迎提出建议或进行二次开发。