典型案例
泡茶机MCU协议
泡茶机MCU协议
工作流程:
模块初次连接,将主动向mcu请求数据,并发送!上电首先发询命令得到机器当前状态参数。(有关重要参数存在单片机EEPROM里面)在WIFI模块与云端通信后把相关数据填进下放MCU的数组里面。该缓存只要WIFI没有掉电就不必清零。只填WIFI模块与当前云服务器相关数据,其它的不必做任何修改,填好之后发送整个数组即可。WIFI模块与云服务器协议变更后,跟MCU无关。
其他均为透传模式:
mcu 模块 app
模块主动向MCU请求数据、应答mcu的数据格式为:(询问命令)
0、头码 --0x55
1、时间是否有效---(0:无效 1:有效)
2、年高
3、年低
4、月
5、日
6、星期
7、时
8、分
9、秒
10、功能码 – 0表示WIFI模块还没有连接网络成功。2:网终连接正常。
11、校验码
12、结束码 --0x88
一、WIFI模块下传数据(如APP上没有下述参数设定功能,直接填0发送。)
0、头码 –0XC5
1、数据长度
2、控制命令1(控制机器状态)
0XC0:休眠(APP按键时发送)
0XC1:预热(APP按键时发送)
0XC2:冲泡
0XC3:清洗
3、控制命令2
0XF0:来自于用户APP下发命令。
0X0F:来自于工程APP下发命令。
4、控制命令3(预留)
BIT7: 1:LED显示开,0:LED显示关。(LED背光源不显示并不代表进入睡眠模式,机器可能在运行状态)
BIT6: 1:大圈灯呼吸开启。
BIT5: 1:随机
BIT4: 1: 常亮
BIT3-BIT2: 00: 十字灯调RGB,01:大圆调RGB,10:小圆调RGB,11:大小圆调节RGB.
BIT0: 0未预热 1预热完成
5、十字指针RGB状态H(不用时填0)
6、十字指针RGB状态M(不用时填0)
7、十字指针RGB状态L(不用时填0)
8、大圆RGB状态H
9、大圆RGB状态M
10、大圆RGB状态L
11、小圆RGB状态H
12、小圆RGB状态M
13、小圆RGB状态L
14、流量设定值高位H(用户APP用)
15、流量设定值低位L(用户APP用)
16、设定预热温度值。
17、设定冲泡温度值。
18、浸泡时间。
19、浸泡前水泵起动时间。
20、清洗次数设定
21、冲泡次数
22、LED灰度值
23、大小圆RGB状态 H
24、大小圆RGB状态 M
25、大小圆RGB状态 L
26、预留
27、预留
28、预留
29、校验和
30、0X5C结束。
二、 MCU回传数据(如机器有变故,比如报警直接上传给WIFI模块,不必等WIFI模块发询命令。WIFI模块收到数据后再转发云服务器)
0、头码 –0XA5
1、数据长度
2、控制命令1(控制机器状态)
0XB0:正在预热(改为预热的状态 详细状态在控制命令3的BIT0)
0XB1: 预热完成(达到预热设定温度值,从睡眠模式换醒后必须重新预热,达到温度后显示预热完成)(没有该状态了)
0XB2:休眠(关闭预热发一条)
0XB3:工作中(浸泡)
0XB4:冲泡中(此时己经放水到杯中)
0XB5: 冲泡结束。(冲泡结束后3秒后,MCU自动转入预热状态,除非此时有按键重新冲泡)
0xB6: WIFI升级(只会在休眠状态升级,并且只上传一次机器状态)
0xB7: MCU升级(只会在休眠状态升级,并且只上传一次机器状态)
0xC6: 清洗运行模式
0xC7: 机器报警中(无预热,无睡眠)
0xB8: 机器手动停止冲泡
0xB9: 机器手动停止清洗
3、控制命令2(机器故障标志。机器有可能同时存在几种状态。)
BIT7: NTC开短路
BIT6: 水箱水位过低
BIT5: 70秒锅炉小于70度
BIT4: 炉温过高。
BIT3: 累计冲泡咖啡50杯标志
BIT2: 垃圾盒报警
BIT1: 茶饮机滑动盖未关闭
BIT0:水泵工作15S无流量信号。
4、控制命令3
BIT7: 1:LED显示开,0:LED显示关。(LED背光源不显示并不代表进入睡眠模式,机器可能在运行状态)
BIT6: 1:大圈灯呼吸开启。
BIT5: 1:随机
BIT4: 1: 常亮
BIT3-BIT2: 00: 十字灯调RGB,01:大圆调RGB,10:小圆调RGB,11:大小圆调节RGB.
BIT0: 0未预热 1预热完成
5、小圆RGB状态H(不用时土填0)(保存于MCU EEPROM)
6、小圆RGB状态M(不用时土填0)(保存于MCU EEPROM)
7、小圆RGB状态L(不用时土填0)(保存于MCU EEPROM)
8、大圆RGB状态H(保存于MCU EEPROM)
9、大圆RGB状态M(保存于MCU EEPROM)
10、大圆RGB状态L(保存于MCU EEPROM)
11、十字灯RGB状态H(保存于MCU EEPROM)
12、十字灯RGB状态M(保存于MCU EEPROM)
13、十字灯RGB状态L(保存于MCU EEPROM)
14、APP设定的冲泡流量值H(保存于MCU EEPROM)
15、APP设定的冲泡流量值L(保存于MCU EEPROM)
16、设定预热温度值。 (保存于MCU EEPROM)
17、设定冲泡温度值。 (保存于MCU EEPROM)
18、浸泡时间。 (保存于MCU EEPROM)
19、浸泡前水泵起动时间。 (保存于MCU EEPROM)
改为:大小圆RGB状态H
20、锅炉当前温度值
21、当前水流量值高位
22、当前水流量值低位
23、设定的清洗次数值(保存于MCU EEPROM)
24、冲泡次数
25、LED灰度值
26、大小圆RGB状态M
27、大小圆RGB状态L
28、MCU版本号 (保存于MCU EEPROM)
29、校验和
30、0X5A结束。
3、重置wifi,按开/关键5秒不放,mcu发送3次重置指令(间隔0.8SWIFI收到命令后开始处理,3次如果都收到,只执行一次。发3次是确保WIFI收到命令):
0x41 0x54 0x23 0x44 0x65 0x66 0x61 0x75 0x6c 0x74
gBuartInx=0;
gBUartBuf[0]=0X41;//A
gBUartBuf[1]=0X54;//T
gBUartBuf[2]=0X23;//#
gBUartBuf[3]=0X44;//D
gBUartBuf[4]=0x65;//e
gBUartBuf[5]=0x66;//f
gBUartBuf[6]=0x61;//a
gBUartBuf[7]=0x75;//u
gBUartBuf[8]=0x6c;//l
gBUartBuf[9]=0x74;//t