«

制作一根不向安卓手机充电的大疆RC-N1遥控器Type-C数据线

时间:2022-5-19 22:02     作者:izilzty     分类:


在IOS设备上,我们可以在DJI FLY应用里控制遥控器是否向手机充电。而在安卓设备上,非ROOT的情况下是无法控制充电的,这是因为根据安卓开放配件(AOA)协议所规定,USB配件在连接安卓设备时必须要提供一个5伏500毫安的充电电流。

Android USB 配件专门用于和 Android 设备相连。这些配件遵循 AOA 要求,从而能够检测到支持配件模式的 Android 设备,并且必须提供 500 毫安(电压为 5 伏)的充电电流。

这也就造成了遥控器在传输数据时必须向安卓设备充电的问题。

不过在日常使用时我们会发现,在用一根质量较差的数据线,或者是电脑USB供电不足的情况下,手机依然可以和电脑连接传输数据,但手机电池却没有在充电,或充电非常缓慢。根据这个现象可以推测,虽然在协议里规定有一个标准,但是手机厂家为了提高兼容性,在设计时往往允许低于标准的情况出现。我们可以利用这个特性,在数据线的电源线上进行一些修改,达到减小充电电流或是停止充电的目的。

目前比较简单的修改方案有两种,一种是在电源线上串一个二极管,利用二极管的正向压降来降低电源电压,从而降低充电电流。另一种是在电源线上串一个电阻,利用电阻来限制充电电流。

因为我对安卓设备的硬件工作方式不太了解,而且各个厂商的充电设计也不一样,所以我打算将两种方案都试一下。说干就干,剪一根遥控器的线,开始测试:

测试线

测试结果如下,手机为红米K40S:

测试方案 数据传输结果 电池充电结果
串联1个1N4007二极管(手机USB侧电压4.2V) 数据传输正常 显示充电,软件显示充电电流180mA左右
串联2个1N4007二极管(手机USB侧电压3.9V) 无法连接
串联10欧电阻(手机USB侧电压4.7V) 数据传输正常 显示充电,软件显示充电电流200mA左右
串联100欧电阻(手机USB侧电压3.8V) 数据传输正常 不显示充电
串联180欧电阻(手机USB侧电压3V到5V之间波动) 无法连接

从上面我们可以看出,对于红米K40S,串联一个100欧的电阻是一个比较不错的选择。但是我们会发现一个问题:串联两个二极管之后测到的电压和串联一个100欧电阻测到的电压基本相同,但为什么串电阻的方案可以传输数据,而串二极管的方案不行呢?

这主要是因为两种元件的工作方式不同:二极管的压降是固定的,基本不随负载的大小而变化,也就是输出永远都是比电源低。电阻的压降是根据负载大小而变化的,也就是负载电流越高,电阻的压降就越大,空载时压降基本为0。

所以在手机看来,串了二极管的电路更像是一个输出电压有问题的USB接口,只能输出3.3V左右的电压,所以自然也无法触发数据传输。

而串电阻的电路更像是一根质量差的数据线。从下面串联100欧电阻的电压波形可以看出,在没连接手机时手机侧的USB头电压为5V,在连接手机后电压掉到大约3V,经过200ms左右电压会有一个回升,推测应该是手机主动降低了输入电流来检测电源电压,之后电压又重新降到3V左右,但数据连接不会断开。

串电阻电源波形

选好电阻测试无误后,剩下的工作就是将电阻焊到电源线上,其他线按颜色直接接好即可。
在剪线时可以只剪红色线,我这里是为了套最外面的热缩管才全部剪掉的。

处理线头:

线头

套上热缩管,焊接数据线:

焊接数据线

焊接电阻并热缩:

焊接电阻

大功告成!

DJI FLY测试:

DJI FLY测试

当然,这个100欧电阻可能仅适用于K40S,如果你的手机使用相同阻值电阻无法传输数据的话就要自己去试阻值,对你的手机来说串二极管也有可能才是最佳方案,这个就需要自己去测试了。

数据线建议买一根第三方的来剪,原装的带着备用,预防改的数据线抽风。在购买材料时建议买一个1/4W的电阻包,里面的阻值包括12-180欧,范围大一点更好,再买一些1N4007二极管。下面是本次用到的材料,供参考。

用到的材料

2022-7-4:使用改过的数据线已经飞行了15小时左右,没有问题。

参考链接:

https://forum.dji.com/forum.php?mod=redirect&goto=findpost&ptid=246978&pid=2527369
https://source.android.com/devices/accessories/protocol