|
本帖最后由 小黄瓜精 于 2024-10-13 15:56 编辑
2019年买的小米1代电磁炉,圆圆的并且可以连接米家APP的那种。
显示板和电磁炉的电源板之间用I2C连接,前者是master后者是slave;
电源板负责管理IGBT/风扇/温度传感器等等;
显示板负责IOT及UI功能,下面我们只关注显示板:
显示板分为底板和叠在其上的前面板(前面板上的主要器件是一个大大的感应旋钮+11颗LED)
前面板左右各有一个感应触摸按钮,各按钮附近均有一个白色LED;
前面板中央是一个64x48像素 SSD1306@SPI接口的OLED;
前面板上驱动11颗LED的IC为AiP1616通过3pin信号线和STM32连接;
底板正面有一片STM32F071CBU6(需要拆掉前面板才可以看得见);
底板背面有一颗乐鑫ESP-WROOM-02(有的批次是小米的ESP32)。
STM32的debug口和ESP32的串口都已经引了出来。
STM32的部分管脚设置是这样的:
我把这些资料放出来,目的是为了给有兴趣的伙伴参考,非常欢迎你的反馈。
详细配置附件:
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] | 电压地址?22 | IGBT温度地址[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 | | 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 | | 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前端,最终效果是这样的:
至此为止,离设想目标越来越近了。
下一步,会比较简单些,在esphome 的yaml配置文件形成恒温烹饪模式,安全策略等等。
==========================================2024/10/13 UPDATE====================================================
两个溫度传感器标定结果:
结果为了方便还是在STM32那边写了温控代码,esphome这边的话,倒是保留了控制和参数所设定接口,作为后备API目前没有使用。
至此 ,所有目标达成,75°卤五花肉已经做了4此次啦哈哈
|
|