经过这段时间的研究,大致完成了mbus的破解,希望大家指正。
经过两个多月的铺货,robomaser s1已经度过了供不应求的阶段,现在市场上大范围的有了S1的身影。S1这款产品从我的使用感受来说相当不错,是难得的一款可玩性和实用性非常平衡的高性价比产品。其丰富的编程教程和简单的操作方式,可以满足教育和娱乐的需求。
但是对于一些高端玩家来说,只有一个自定义程序和单一的pwm接口显然不够玩的。我们要的是更多的接口,更多的功能。起码像lego一样可以随意的改装。
为了实现自己的扩展,我打算hack一下S1。就像我之前写的底盘控制板评测中提到的。大疆这次在底盘上自己弄了个Mbus来控制四个电机。而云台,传感器等都是原来的can总线。因此首先我们来破解一下M bus。
1. 找到控制运动的接口
首先M bus是模拟can总线的连接方式,使用差分电平来传输协议,大疆是希望可以模拟can总线挂载无数的外设。这个在破解上有很大的迷惑性,让我走了不少弯路。
这个橘红色的接口就是 M bus,这次破解的重点。
2. 破解过程
首先我用示波器测量,can电平转换芯片,得到如下电平图形。
3. 读取数据
使用波形转换软件,将波形转换为二进制数字。按照大疆通常使用can 总线的思路,我把上述编码按照can总线协议来接码。但是这和标准的can协议产生了很大的冲突,数据长度对不上。初次破解失败。
这让我头疼了好长时间,后来看到国外大神的破解,说这不是can总线,我的天啊,大疆不按套路出牌啊,居然不用自己成熟的can总线,严重误导了我破解方向。按照国外大神的建议,这个总线使用的是RS485串口。我们使用串口软件接收存储。
接下来就是大量的数据对比,查看每帧数据的含义。这里的工作量非常大,要从其中找到某些规律这是折磨人啊。不过好在还有些规律可循。我终于破解出来的大部分。哈哈哈
4. 评论
从这次m bus的破解,可以看出,大疆这次电机的控制居然选了robomaster 2015时的方案,分布式的计算方式,不是现在的集中控制方式。这样做可能是为了保证实时性,因为底盘控制芯片上的两个can都用了,只能以其他接口来扩展控制电机,但是这样的方案的控制实时性又是要考虑的。也许这就是采用分布式的原因。
5.后续
在破解了M bus后,下面我们破解什么呢?打击传感器?哈哈哈