Skip to content

工程文章

小米米家 MCL02M 自定义固件

我买了一台很棒的 MCL02M 电磁炉,直到今天我仍然非常满意。它最出色的地方,是在低功率下依然能够连续平滑地调节功率,而不是通过间歇开关来控制。在 99 个档位中,只有 1 档采用 3 秒的间歇;从 2 档开始就是真正的平滑加热。这一点确实很棒。

源代码、文档和烧录说明已经发布在仓库中:VlasovLabTech/mcl02m-custom-firmware

运行新固件并在 OLED 屏幕上显示老虎图案的小米米家 MCL02M
运行新界面 ESP32 固件的小米米家 MCL02M。

不过它有一个问题:出厂时冷却风扇就不能正常工作。电压不超过 8 V 时,风扇会低速转动;电压再高,它就只会抖动。电磁炉因此导致 IGBT 过热——中国工程师安装了温度传感器,这一点非常好。卖家退了款,并把电磁炉留给了我。最后,我用 3D 打印机中常见的径向(离心式)“涡轮”风扇替换了它,并订购了 C1015B1 备件。

拆开并安装了径向冷却风扇的小米米家 MCL02M
拆开的电磁炉,以及替代损坏原装风扇的径向风扇。

必须说明,这个打印机风扇噪声很大,但能够完成冷却任务。它的额定电压是 12 V,而电磁炉风扇供电是 18 V,所以它只适合作为临时方案。我事先已经在 24 V 下测试过它。

另外,原机界面完全是中文。既然已经拆开电磁炉,我便顺便查看了界面板,发现它使用的是普通 ESP32。界面板与功率部分之间采用 I²C 接口,而且 PCB 上标得非常清楚。因此我作出了一个战略决定:读取现有固件,尝试从中寻找信息,监听 I²C 总线,然后编写自己的固件。幸运的是,原厂固件可以读取——这要感谢中国工程师。

这项工作不得不请 GPT 参与。它从一开始就很好地完成了反编译任务,几乎提取出了所有信息:使用了哪些引脚、有哪些接口、温度传感器的 LUT 查找表、I²C 数据如何传输、具体传输了什么,以及更多内容。这些全部来自二进制固件。

随后,我们编写了测试固件,用来进一步确认控制器件和界面:按键、LED、蜂鸣器和显示屏。我们还连接了 Kingst LA2016 逻辑分析仪,并使用了我的另一个项目 OpenBench。在这个项目中,我把各种仪器——不仅是测量仪器——接入同一个环境和 Web 界面,用于采集数据和自动化测试。GPT 自己监听总线、自己与功率板通信。大约一个小时后,我们完整恢复了协议,并把功率板控制功能做到了很好的可用水平。

连接到小米米家 MCL02M ESP32 界面板的导线
用于读取和烧录 ESP32 界面板的接线。

接下来,我们列出了我希望电磁炉采用的控制方式,并开始实现。最耗时间的是界面:要让它看起来正常、清晰易读并且使用方便。这确实花掉了将近一整个漫长的晚上。

在已经实现的功能中,我尤其喜欢温度保持模式里的完整三阶段 PI 控制器。第一阶段快速加热,最后阶段则把功率限制在 35 档以内,以避免跨越继电器切换边界:仅通过 IGBT 进行调节。继电器切换发生在 35–36 档和 55–56 档之间。这台电磁炉有两个线圈,所以会根据功率依次使用内圈、外圈以及两个线圈同时工作。我还调整了屏幕显示:在功率模式下可以看到当前温度,在温度模式下也可以看到当前功率。

其他改进更多是为了美观和便利:图片、声音、时钟、延时启动、按设定时间启动、Wi-Fi 连接、通过 Web 界面设置、网络校时等。我还实现了自定义配置文件模式:每个配置文件最多可以包含五个依次执行的阶段。例如先炖煮,再慢煮,然后提高一点火力,再继续慢煮。不过我感觉可能没有人会使用它。

小米米家 MCL02M 新固件的设置界面
新固件的设置界面。
小米米家 MCL02M OLED 屏幕上的 E02 错误信息
OLED 屏幕上的 E02 错误信息。
为新固件 OLED 屏幕准备的像素老虎图案
老虎是为 OLED 屏幕准备的图案之一。

下面是 GPT 提供的一些信息——这些工作我当然使用了 Codex:

新固件只替换界面 ESP32 上的程序。我们没有重新烧录功率板:ESP32 每 500 ms 通过 I²C 向功率板发送命令并接收遥测数据,而原厂控制器仍然负责线圈、继电器、风扇和硬件保护。为了开发,我们制作了两套独立测试固件:一套用于检查面板,另一套用于安全地研究和控制功率部分。

功率模式范围为 0 到 99,温度模式范围为 40 到 175 °C。系统提供最长五小时的定时器、暂停、未来 24 小时内的延时启动,以及五个可保存配置文件,每个配置文件包含五个阶段。界面完整支持俄语、英语和中文。我们还为 OLED 显示屏准备了不同状态的图片,并为蜂鸣器制作了多段旋律。

我们特别重视安全性。电磁炉通电后始终处于 Stop 状态;仅旋转编码器不能启动加热,必须实际按下 Start 按钮。固件监控 NTC 和 IGBT 温度、电网电压、功率板状态以及与功率板的通信。发生通信中断、过热或错误时,加热会被关闭。此外,还提供独立的无锅检测、五小时连续运行限制,以及防止程序卡死的 watchdog。

Wi-Fi 默认关闭。本地 Web 界面可以修改设置和编辑配置文件,但设计上明确禁止远程启动、停止或改变加热。所有与烹饪有关的命令只能通过电磁炉的物理控制面板执行。

在开始实验前,我们两次读取了完整的 16 MiB 闪存,并使用 SHA-256 验证副本。新程序只写入一个原有 OTA 分区,没有改动 bootloader、原厂固件、设置或功率板固件。因此,恢复电磁炉原始状态的能力得以保留。

最终我很满意:电磁炉按照我希望的方式工作,显示和语言现在很好,功能也同样令人满意。我删除了没有用的 Mi Home 连接,以及那些几乎不会有人使用的菜谱。说实话,Wi-Fi 的确方便,尤其适合时钟,不过我想最后也不会使用它。这只是一台电磁炉,又不是宇宙飞船。大家都已经疯了。)))

视频

运行新固件的小米米家 MCL02M。

Contact

讨论您的工程项目

请通过电子邮件与我们联系。