本帖最后由 czj2441 于 2021-2-18 17:27 编辑
提示:本文为技术分享,不作为商业用途,建议有单片机技术基础的读者阅读
- 概况:精装修房(具体型号未知),一拖五,外机用支架固定(室内接信号线),五线红外线控器(单向)。
- 外机型号:MDVH-V120W/N1-612TR(E1),直流调速家用中央空调室外机。应该是TR+S系列,生产日期16年6月。
- 内机型号:MVDH-J22T2/N1Y-C3,家庭中央空调室内机。定频三档威灵风机。
- 内外机通信方式:PQ(E)三线。
之前也没接触过485通信,测量PQ两线电压有正负值出现,绝对值大约在1-2V左右,于是凭感觉买了485转TTL模块。模块到手后拿9600波特率分析半天没分析出来什么结果,换了停止位校验位数据位也不行。
快放弃的时候 就试了下4800波特率,果然出来比较有规律的信息了。以下为手工整理过的数据
fe aa c0 00 00 80 00 00 00 00 00 00 00 00 3f 81 55 fe
aa c0 80 00 00 00 e0 14 00 00 18 5a 58 56 ff ff ff 00 00 00 00 00 00 00 00 00 00 08 00 00 a7 55
fe aa c1 00 00 80 00 00 00 00 00 00 00 00 3e 81 55 fe
aa c1 80 00 00 00 00 ff 26 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 93 55
fe aa c0 01 00 80 00 00 00 00 00 00 00 00 3f 80 55 fe
aa c0 80 00 01 00 e0 14 81 04 1e 54 54 54 ff ff ff 00 00 00 00 00 00 00 00 00 00 08 00 00 27 55
fe aa c1 01 00 80 00 00 00 00 00 00 00 00 3e 80 55 fe
aa c1 80 00 01 00 00 ff 26 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 92 55
fe aa c0 02 00 80 00 00 00 00 00 00 00 00 3f 7f 55 fe
aa c0 80 00 02 00 e0 14 00 00 18 5a 58 5a ff ff ff 00 00 00 00 00 00 00 00 00 00 08 00 00 a1 55
fe aa c1 02 00 80 00 00 00 00 00 00 00 00 3e 7f 55 fe
aa c1 80 00 02 00 00 ff 26 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 91 55
fe aa c0 03 00 80 00 00 00 00 00 00 00 00 3f 7e 55 fe
aa c0 80 00 03 00 e0 14 00 00 18 5a 5a 5a ff ff ff 00 00 00 00 00 00 00 00 00 00 08 00 00 9e 55
fe aa c1 03 00 80 00 00 00 00 00 00 00 00 3e 7e 55 fe
aa c1 80 00 03 00 00 ff 26 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 90 55
fe aa c0 04 00 80 00 00 00 00 00 00 00 00 3f 7d 55 fe
aa c0 80 00 04 00 e0 14 00 00 18 5c 5a 5a ff ff ff 00 00 00 00 00 00 00 00 00 00 0c 00 00 97 55
fe aa c1 04 00 80 00 00 00 00 00 00 00 00 3e 7d 55 fe
aa c1 80 00 04 00 00 ff 26 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 8b 55
fe aa c0 05 00 80 00 00 00 00 00 00 00 00 3f 7c 55 fe
fe aa c0 06 00 80 00 00 00 00 00 00 00 00 3f 7b 55 fe
fe aa c0 07 00 80 00 00 00 00 00 00 00 00 3f 7a 55 fe
fe aa c0 08 00 80 00 00 00 00 00 00 00 00 3f 79 55 fe
fe aa c0 09 00 80 00 00 00 00 00 00 00 00 3f 78 55 fe
fe aa c0 0a 00 80 00 00 00 00 00 00 00 00 3f 77 55 fe
fe aa c0 0b 00 80 00 00 00 00 00 00 00 00 3f 76 55 fe
fe aa c0 0c 00 80 00 00 00 00 00 00 00 00 3f 75 55 fe
fe aa c0 0d 00 80 00 00 00 00 00 00 00 00 3f 74 55 fe
fe aa c0 0e 00 80 00 00 00 00 00 00 00 00 3f 73 55 fe
非常容易看得出来长短句一共重复了十次,是内机数5的二倍,显然这就是内外机正在通信的报文了。等到下文只有短句在发送并且速率变低,猜测到是外机在轮询内机但是内机没有相应(因为只有5个内机地址)。还可以分析出来:如果内机响应了第一个查询报文,外机会再查询该内机的其它信息。
由于我之前写代码都是自己和自己的设备通信,因此对起始码结束码不了解,最开始误以为外机帧头帧尾为0xFE,内机帧头0xAA帧尾0x55,至少也是有规律可循了。此时一台内机正在送风模式运转,可以发现第2*1(ID)+1个长报文的第9、10字节数据和2*n(ID)+1对应位置值不同,说明PQE总线上存在我想要的数据了,模式、风速之类信息很大概率在里面了。
之前还研究过美的的红外协议,我记得看的那个红外协议手册是10年的了,于是推断这个485总线也是祖传协议,找到了这个协议手册。因此这里就贴一些不在手册里的内容(我的情况 不一定适用于你)。
波特率4800bps,1位停止位,8位数据位,无校验位,LSB;P应该是B-,Q应该是A-,记不清了。
翻看手册发现协议标准起始码0xAA,结束码0x55,这就对应上了。作为技术人的你,写协议控制空调一定不是难题了吧233,这波就省了买CCM-15或者第三方智控器的钱.
通过协议可以控制空调开关、遥控器锁定、开关机锁定、模式锁定,查看室内温度、蒸发器管温、蒸发器中部管温等参数。
- 成本:ESP8266 + RS485转TTL模块 + 洞洞板,一共不到20软妹币。
- 通信:ESP8266负责MQTT协议收发和485总线收发。要注意的是不要和外机抢占通信权,多主貌似是RS485不允许的,美的貌似也没做抢占总线的检测,因此只能等外机每次轮询完毕的几百ms内偷偷(和内机通信。然后checksum也一定要做的。
- 其它:供电可以从10线转5线的面板上(检修口内)取电。我这里黄线5V,黑线GND。
HASS界面
HASS界面
实物图
供电取电5V
PQ接线
如果你足够懒,不想写代码,我用Arduino写的,你配好环境,下好Blink没问题了可以找我要,有偿。q:2200358232.
|