『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 671|回复: 6

[硬件DIY] 小米的电磁炉显示板Hacking

[复制链接]

2

主题

8

帖子

176

积分

论坛技术达人

积分
176
金钱
163
HASS币
20
发表于 2024-8-31 12:54:15 | 显示全部楼层 |阅读模式
本帖最后由 小黄瓜精 于 2024-10-13 15:56 编辑

2019年买的小米1代电磁炉,圆圆的并且可以连接米家APP的那种。

显示板和电磁炉的电源板之间用I2C连接,前者是master后者是slave;
电源板负责管理IGBT/风扇/温度传感器等等;
显示板负责IOT及UI功能,下面我们只关注显示板:
freecompress-3 (小).JPG
显示板分为底板和叠在其上的前面板(前面板上的主要器件是一个大大的感应旋钮+11颗LED)
freecompress-1 (小).JPG
前面板左右各有一个感应触摸按钮,各按钮附近均有一个白色LED;
前面板中央是一个64x48像素 SSD1306@SPI接口的OLED;
前面板上驱动11颗LED的IC为AiP1616通过3pin信号线和STM32连接;
freecompress-6 (小).JPG freecompress-7 (小).JPG
底板正面有一片STM32F071CBU6(需要拆掉前面板才可以看得见);
底板背面有一颗乐鑫ESP-WROOM-02(有的批次是小米的ESP32)。
STM32的debug口和ESP32的串口都已经引了出来。
STM32的部分管脚设置是这样的:
fo71_pinout.png
我把这些资料放出来,目的是为了给有兴趣的伙伴参考,非常欢迎你的反馈。

详细配置附件:
f071cbu6.pdf (215.08 KB, 下载次数: 1)

我用STM32CUBEIDE写了测试一份代码,所有的输入输出目前都可以正常工作;
测试代码:
stm32f071_test.zip (1.77 MB, 下载次数: 0)

关于电源板与显示板之间的I2C协议目前还在破解中,目前只有一点点的头绪,还需要大量采集数据测试。
下面的数据是我用pulseview采集的,然后转成csv用excel画出曲线,我一边操作电磁炉一边记录数据,有点惊悚哈
显示板会周期性地读下面几个地址[0x20,0x21,0x22,0x23,0x24,0x25]每个地址都会有两个字节的反馈数据,把两个字节拼成一个16-bit整形数字,然后适当的scale一下画出如下曲线:
状态地址?20
21
22
23
24
25

电流地址[21]电压地址?22IGBT温度地址[23]温度传感器1[24]温度传感器2[25]
功率地址?21x22
8192
13568
100352
42240
36352
36608

1.3568
100.352
42.24
36.352
36.608

136.1575936
8192
13568
102400
42752
36352
36608

1.3568
102.4
42.752
36.352
36.608

138.93632
8192
13568
101376
42752
36352
36608

1.3568
101.376
42.752
36.352
36.608

137.5469568

  
8192
  
13568
100352
42240
36352
36608

1.3568
100.352
42.24
36.352
36.608

136.1575936
8192
13568
102400
42752
35840
36608

1.3568
102.4
42.752
35.84
36.608

138.93632
8192
13568
100864
42752
36352
37120

1.3568
100.864
42.752
36.352
37.12

136.8522752
8192
13568
102400
42752
36352
36608

1.3568
102.4
42.752
36.352
36.608

138.93632
8192
13568
100864
42752
36352
36608

1.3568
100.864
42.752
36.352
36.608

136.8522752
8192
13568
102912
42752
36352
36608

1.3568
102.912
42.752
36.352
36.608

139.6310016
8192
13568
101376
42240
36352
36608

1.3568
101.376
42.24
36.352
36.608

137.5469568
8192
13568
102912
42240
36352
36096

1.3568
102.912
42.24
36.352
36.096

139.6310016
8192
13568
101376
42240
36352
36608

1.3568
101.376
42.24
36.352
36.608

137.5469568
8192
13568
101376
42240
36352
36608

1.3568
101.376
42.24
36.352
36.608

137.5469568
8192
13568
100864
42240
36352
36096

1.3568
100.864
42.24
36.352
36.096

136.8522752
8192
13568
100864
42240
36352
36608

1.3568
100.864
42.24
36.352
36.608

136.8522752
8192
13568
102400
42240
36352
36608

1.3568
102.4
42.24
36.352
36.608

138.93632
8192
13568
102912
42240
36352
37120

1.3568
102.912
42.24
36.352
37.12

139.6310016

  
8192
  
13568
101376
42240
36352
36608

1.3568
101.376
42.24
36.352
36.608

137.5469568
8192
13568
102400
42240
36352
36608

1.3568
102.4
42.24
36.352
36.608

138.93632
8192
13568
102400
42240
35840
36608

1.3568
102.4
42.24
35.84
36.608

138.93632
8192
13568
102400
42240
36352
37120

1.3568
102.4
42.24
36.352
37.12

138.93632
8192
13568
101376
42240
36352
36096

1.3568
101.376
42.24
36.352
36.096

137.5469568
8192
13568
102400
42240
36352
36096

1.3568
102.4
42.24
36.352
36.096

138.93632
8192
13568
100864
42240
36864
36096

1.3568
100.864
42.24
36.864
36.096

136.8522752
8192
21760
100352
41728
36352
36608

2.176
100.352
41.728
36.352
36.608

218.365952
8192
25856
97792
42240
36352
36608

2.5856
97.792
42.24
36.352
36.608

252.8509952
8192
26880
98816
42240
36352
37120

2.688
98.816
42.24
36.352
37.12

265.617408
8192
26880
97792
42240
35840
36608

2.688
97.792
42.24
35.84
36.608

262.864896
8192
27392
98816
42240
35840
36096

2.7392
98.816
42.24
35.84
36.096

270.6767872
8192
13568
102400
42240
35840
36608

1.3568
102.4
42.24
35.84
36.608

138.93632


上面的地址意义只是我的猜测,还没有开始验证;除此之外,显示板向功率板发送的命令我还没有开始解析,比如:“设定火力”,“设定温度”,“设定工作时间”等等。


我把这些资料放出来,目的是为了给有兴趣的伙伴参考,非常欢迎你的反馈。


原始数据
PulseView格式:
raw_data.sr (284.75 KB, 下载次数: 0)
EXCEL表格:
excel_2.7z.001 (4 MB, 下载次数: 0)
excel_2.7z.002 (4 MB, 下载次数: 0)
excel_2.7z.003 (4 MB, 下载次数: 0)
excel_2.7z.004 (4 MB, 下载次数: 0)
excel_2.7z.005 (4 MB, 下载次数: 0)
excel_2.7z.006 (2.36 MB, 下载次数: 0)

关于我折腾的目的有两个:
1.电磁炉不停的向米家的服务器发送数据,令我很不爽,区区电磁炉,连一连HA就行了(实际不行,只得自己动手写)。
2.用面板作为一个输入设备,遥控HA设备也是一种玩法。

==========================================2024/09/13 UPDATE====================================================

IIC协议基本上搞明白了,控制寄存器为0x00,0x0d,0x0c三个,控制指令帧结构为:

    [控制寄存器地址:1Byte][值:1Byte][校验和:1Byte]  

例如,火力设定为70%: [0x0C][0x46][0x52]

Start
Address write: 2A
Write
ACK
Data write: 0C
ACK
Data write: 46
ACK
Data write: 52
ACK
Stop


其中校验和Byte=控制寄存器地址:1Byte + 值:1Byte;
其中0x0c为电磁炉的火力控制,范围为0-99,即99挡火力;
电源板的地址为0x2A。

此外,还有其他的寄存器功能未知,但是关键的火力/开关知道了,即可开始下一步折腾了;

由于esp8266通过串口和stm32连接,需要写一个串口组件,把电源板+显示板所有的重要的事件,数值
均作为传感器暴露给HA前端,最终效果是这样的:

Screenshot 2024-09-13 191028.png

至此为止,离设想目标越来越近了。
下一步,会比较简单些,在esphome 的yaml配置文件形成恒温烹饪模式,安全策略等等。


==========================================2024/10/13 UPDATE====================================================

两个溫度传感器标定结果:
temperature.png

结果为了方便还是在STM32那边写了温控代码,esphome这边的话,倒是保留了控制和参数所设定接口,作为后备API目前没有使用。
至此 ,所有目标达成,75°卤五花肉已经做了4此次啦哈哈



freecompress-4 (小).JPG
freecompress-5 (小).JPG
freecompress-8 (小).JPG
回复

使用道具 举报

39

主题

202

帖子

1621

积分

金牌会员

Rank: 6Rank: 6

积分
1621
金钱
1419
HASS币
0
发表于 2024-8-31 14:43:21 来自手机 | 显示全部楼层
米家压力锅有没有大佬破解了电源板的ii2协议,电源板烧了,自己用esphome做了一块控制板控制继电器通断。用了大半年了。就是他那个前置面板esp32控制协议。废物了
回复

使用道具 举报

2

主题

8

帖子

176

积分

论坛技术达人

积分
176
金钱
163
HASS币
20
 楼主| 发表于 2024-8-31 21:40:16 | 显示全部楼层

小米的电磁炉显示板Hacking

本帖最后由 小黄瓜精 于 2024-8-31 21:42 编辑

图片和附件都发不出来哈哈
回复

使用道具 举报

40

主题

2176

帖子

8286

积分

元老级技术达人

积分
8286
金钱
6095
HASS币
110
发表于 2024-9-2 08:46:40 | 显示全部楼层
所有的IO都是STM32负责?ESP只负责发送请求数据?
如果是这样,那通过ESP入手不是更好?不过这样只能用它原本的功能,不能自定义显示屏啥的
回复

使用道具 举报

2

主题

8

帖子

176

积分

论坛技术达人

积分
176
金钱
163
HASS币
20
 楼主| 发表于 2024-9-2 10:15:15 | 显示全部楼层
ghostist 发表于 2024-9-2 08:46
所有的IO都是STM32负责?ESP只负责发送请求数据?
如果是这样,那通过ESP入手不是更好?不过这样只能用它原 ...

是的哟。我打算把esp模块刷esphome固件,后面用yaml写电磁炉的控制逻辑,什么定时啦,低温烹饪啦等等。充分开发ESP
回复

使用道具 举报

2

主题

8

帖子

176

积分

论坛技术达人

积分
176
金钱
163
HASS币
20
 楼主| 发表于 2024-9-2 10:17:25 | 显示全部楼层
wodepiqi 发表于 2024-8-31 14:43
米家压力锅有没有大佬破解了电源板的ii2协议,电源板烧了,自己用esphome做了一块控制板控制继电器通断。用 ...

可以试着采集IIC数据,然后发到论坛上来给大家看看哟。
至于采集工具,淘宝上的二三十块钱的逻辑分析仪即可,软件可以用pulseview。
回复

使用道具 举报

39

主题

202

帖子

1621

积分

金牌会员

Rank: 6Rank: 6

积分
1621
金钱
1419
HASS币
0
发表于 2024-9-8 10:30:41 | 显示全部楼层
小黄瓜精 发表于 2024-9-2 10:17
可以试着采集IIC数据,然后发到论坛上来给大家看看哟。
至于采集工具,淘宝上的二三十块钱的逻辑分析仪即 ...

暂时不折腾了。原来的电路板上有个
单片机用来接受esp32通信然后返回给esp32那玩意都没了。没得分析了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 00:17 , Processed in 0.060738 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表