亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

使用 ATtiny85

攻击 Qualcomm(快速充电)QC 2.0/3.0

组件和用品

Microchip Technology ATtiny85
× 1
SparkFun LM1117 3.3V 稳压器
× 1
SparkFun USB Male A
× 1
电阻 10k ohm
× 2
电阻 2.21k ohm
× 1
Arduino Proto Shield
× 1
SparkFun 按钮开关 12mm
× 1
QC 移动电源或充电器
× 1
通用跳线 (0.1")
× 8
Male-Header 36 Position 1 Row- Long (0.1")
× 1
电阻 0.05 ohm
× 10
Arduino UNO
× 1
公/母跳线
× 7
LED(通用)
× 1
电阻 22.1k ohm
× 1

必要的工具和机器

烙铁(通用)

应用和在线服务

Arduino IDE

关于这个项目

简介

许多 USB 供电的消费电子设备内置了 Qualcomm QC(快速充电)解决方案,可在不同电压下快速充电,而不是通常的 5.0 伏。这使得有机会在需要更多功率或更高电压(如 9/12 伏)的项目中使用 QC 兼容移动电源。

该项目的目的是开发一种可以破解 QC 协议的设备,并允许爱好者、开发人员、工程师使用他们的移动电源为下一个耗电项目提供更多电压/功率。

上图显示了来自 QC 2.0 兼容后备电源的 5、9、12 伏输出,为 10 欧姆 5 瓦电阻器供电。

开发 Hack * 设备

整个设备有两个有源组件——LM1117 3.3V 稳压器和 ATtiny85 MCU 来控制。所有其他部件是电阻器、按钮开关、连接器、跳线、接头、端子、原型板等。

为了构建设备,首先将组件放置在整齐的布局中,然后焊接。一些0欧姆的短链接用于互连不同的部分。

有跳线来禁用板载电路和启用编程。因为,编程线(SPI - MOSI、MISO、SCK)在设备操作期间也充当 GPIO。

使用 ISP 编程 ATtiny85

在对 ATtiny85 进行编程之前,将其从 IC Base 中取出并放置在面包板上。为了对 ATtiny85 进行编程,通过从 File> Example> ArduinoISP 上传“ArduinoISP”,将 Arduino UNO 板转换为 ISP 编程器 草图。此草图可在 Arduino IDE 中使用。

编程 ATtiny85 需要以下步骤:

  • 为 Arduino IDE 安装 ATtiny 支持(感谢 David A. Mellis)
  • 使用 Arduino UNO 作为 ISP 为 ATtiny85 烧录引导加载程序
  • 使用 Arduino UNO 作为 ISP 开发和上传代码

以下电路准备对 ATtiny85 进行编程:

ISP = 在系统程序员

或者,可以通过移除周围的所有跳线对 ATtiny85 进行编程,使其保留在设备上。

设备操作

要使用该设备,首先需要将其连接到 QC 兼容的移动电源(或充电器)。默认情况下,QC移动电源的USB电压为5.0伏。

上传代码后必须连接所有跳线,以便MCU可以通过D+/-与QC源通信。

LM1117 3.3 V 稳压器将通电并向 ATtiny85 供电。该 MCU 将开始执行代码。 ATtiny85 的 4 个 I/O 引脚连接到分压电阻,分压电阻将用作输出高电平和低电平。另一个 I/O 引脚连接到一个开关,该开关将初始化为输入上拉。此开关接受用户输入来改变质控源的电压。

现在,在详细介绍之前,了解输出将如何变化很重要。每种 USB(USB A、B、C、1.1、2.0、3.0+)至少有 4 条线/线通用。

这些是:-

  • VBUS(默认 Vcc +5V)
  • D +
  • D -
  • 地面

在普通充电器/移动电源中,VBUS 是固定的,因为功率传输受电流限制,可能 500 mA、1 A、2 A 分别产生 2.5 瓦、5 瓦和 10 瓦。

但是在QC电源设备中,有一个内部升压转换器可以根据受电设备(PD)的要求来提升电压!!!

QC 2.0(也是 3.0)利用 USB 的 D+ 和 D- 与 PD 进行通信。 PD 在 D+ 和 D- 上发送电压信号,QC 充电器将通过改变 VBUS 电压来相应地供电。根据这个 CHY 数据表,这里是一个表格,解释了来自 PD 的 D+/D- 上的哪些信号对将使 QC 提供什么样的电压输出:

当 D+ 和 D- 上的电压与此表第 4 行的值相同并保持至少 1.25 秒时,QC 2.0 支持启动。如果 D+ 变为 0.0 伏(实际上低于 0.325 伏),QC 支持将停止,输出将为 5.0 伏。根据此表设置电压,可以改变VBUS上的输出。

在这里,ATtiny85 的 4 个输出连接到由两个 10k 和两个 2.2k 电阻组成的 2 个分压器网络,为 D+/D- 线生成这些电压信号。

例如,要在 D+ 上产生 3.3 V,连接到两个 ATtiny85 输出引脚 PB3 和 PB4 的顶部和底部电阻器都将从代码中设为高。

同样,为了在 D- 上产生 0.6 V,连接到其他两个 ATtiny85 输出引脚(PB1 和 PB3)的顶部和底部电阻将分别设置为高和低。

这样QC 2.0充电器/移动电源接收电压变化请求并相应地改变。 Push Switch 被配置为 Input PULLUP,当没有按下时,它被 MCU 读取为高电平,并且代码执行在 while 循环中保持,防止设置电压的任何变化。当用户按下按钮开关时,回路断开并设置下一个电压。然后,代码执行进入下一个while循环以保持当前的VBUS电压。

有一个 LED 可以发出暗淡 (5V)、柔和 (9V) 和亮 (12V) 的光,以直观地向用户展示输出电压。

可能的应用

  • 驱动 12V LED 灯条
  • 为更远距离的射频发射器/接收器供电
  • 驱动 12V 继电器、电机等
  • 使用 LM317 或 LM2596 获得 1.25 到 10 伏之间的任何电压
  • 9V 红外遥控驱动
  • 机器人汽车动力
  • 20V 笔记本电脑充电
  • 任何高达 18 瓦的系统,例如用于物联网应用的 WiFI、LTE、S2E 设备
  • 远程系统的备用电源
  • 大多数 LCD、LED 显示器、打印机、扫描仪
  • 低功耗便携式电脑

支持其他 QC 类

由于 QC 2.0 Class B、QC 3.0 和 QC 4.0 向后兼容 QC 2.0 Class A,因此该设备可能适用于所有最新的充电器和移动电源。但电压选项将是 5.0、9.0 和 12.0 伏。如果需要其他输出电压,请阅读CHY 100、101、103数据表并相应修改代码。

警告!

  • 质量 QC 移动电源或充电器 短路保护 必须使用,外部 负载不得超过 18 瓦 。这可以通过确保 检查额定功率标签 在加载设备上。
  • 必须避免输出 20 伏电压 自 1117 3v3 调节器可以 处理最大 15 伏电压 ,这应该从中避免 单片机代码 绝不允许 D+ 和 D- 线同时具有 3.3 伏电压 .
  • 案例 需要 20 伏输出 (由 QC 2.0 Class B 和 QC 3.0, QC 4.0 支持 ) ,必须使用可以处理 20 伏以上电压的稳压器(LM317 配置为 3.3 V)。否则稳压器和 MCU 都将被摧毁!!!!!!
  • 应该引起注意 输出电压极性, +ve 用红色表示,-ve 用输出端子旁边的蓝色细线表示。
  • 松散 连接 USB 男-女 耦合 必须 成为 避免 接触电阻会产生热量和 电源效率会下降。
  • 在 ISP 编程期间,必须移除所有跳线 隔离MOSI、MISO、SCK、VCC、GND、RESET引脚 从电路板上的其余电路到 避免干扰编程。
  • 代码修改 不能做 没有 清晰理解QC充电协议,这个设计主要是 用于 QC 2.0(A 类)电源 但是 可以 部分 使用 为了 更高 质量控制 标准
  • 破解 可能 不是 工作 带有一些 QC 充电器/移动电源
  • GPIO 切换必须 完成 正确的顺序 避免终止 高压模式

注意: 以上几点不理解建议不要复制本项目 某人, 否则 风险 开火 危险或 损失 设备 可能 发生!

可以在不使用任何微控制器的情况下手动更改电压。只需 4 根跳线即可通过按正确顺序将 Vcc (3.3V) 和 Gnd (0V) 连接到电阻器来模拟 D+/D- 表的条件。因为对于这种简单的转换来说,使用 mcu 可能是一种矫枉过正。

参考文献

  • https://www.mouser.com/ds/2/328/chiphy_family_datasheet-269468.pdf
  • https://en.wikipedia.org/wiki/Quick_Charge
  • http://www.ti.com/lit/ug/tidu917/tidu917.pdf

代码

  • ATtiny85 代码
ATtiny85 代码C/C++
QC 控制器
///==========================算法 ========================//// /* 首先,将 D+ 引脚连接到 0.325 到 2 伏的电压并保持 D- 浮动,然后等待至少 2 秒。在这 2 秒内发生两个动作:D+ 和 D- 电压等于 0.325 到 2 伏之间的电压,持续 1.25 秒。 (因为 CHY100 内部的 D+ 和 D- 引脚首先连接在一起)然后 D+ 保持在 0.325 到 2 伏之间的电压,D- 电压下降到零。 (因为D+和D-引脚断开,CHY100内部的一个电阻使D-放电)*** CHY100是移动电源/充电器内部的QC 2.0协议接口芯片.........其他QC 2.0芯片可能是类似 先使 D+ 高于 3.0 V,然后将 D- 连接到 0.325 到 2 伏之间的电压。 VBUS 跳至 9V。在保持 D- 连接的电压在 0.325 到 2 伏之间的同时,使 D+ 的电压在 0.325 到 2 伏之间。 VBUS 跳至 12V。 (因为 D+ 和 D- 电压在 2V 到 0.325V 之间)将 D+ 与 0.325 到 2 伏之间的电压断开。 VBUS 跳到 5V,因为 QC2.0 退出电压改变模式,VBUS 进入默认值 5V。需要再次进入QC2.0时从头开始)*/// ============重要提示================//// *** 使引脚变为高电平和低电平的顺序很重要// *** 如果 D+ 在转换期间由于错误的 GPIO 切换顺序而降至 0.325V 以下// *** QC 2.0 将退出高电压模式并且 VBUS 将返回到 5伏特 // ==============================================/ /#define PUSH_SWITCH 0#define Dp_2k2 4#define Dp_10k 3#define Dn_2k2 2#define Dn_10k 1int Press_Detect =0;void setup(){ pinMode(PUSH_SWITCH, INPUT_PULLUP); // 现在通过使 D+ 0.6 v 保持 D- 在 Gnd Init_QC();}void loop(){ //// 5V //// while (digitalRead(PUSH_SWITCH) ==1) { } delay(250) 来启动 QC 握手); //// 9v //// Set_9V(); while (digitalRead(PUSH_SWITCH) ==1) { } delay(250); //// 12v //// Set_12V(); while (digitalRead(PUSH_SWITCH) ==1) { } delay(250);// Set_5V();}///********************** 函数**********************////void Init_QC(){ //pinMode(Dn_2k2, INPUT); //pinMode(Dn_10k, INPUT); pinMode(Dp_2k2,输出); pinMode(Dp_10k, 输出);数字写入(Dp_2k2,低);数字写入(Dp_10k,高);延迟(3000); // 现在 QC 协议处于活动状态}void Set_9V(){ pinMode(Dp_2k2, OUTPUT); pinMode(Dp_10k, 输出);数字写入(Dp_10k,高);数字写入(Dp_2k2,高); pinMode(Dn_2k2,输出); pinMode(Dn_10k,输出);数字写入(Dn_2k2,低); digitalWrite(Dn_10k, HIGH);}void Set_12V(){ pinMode(Dp_2k2, OUTPUT); pinMode(Dp_10k, 输出); pinMode(Dn_2k2,输出); pinMode(Dn_10k,输出);数字写入(Dn_2k2,低);数字写入(Dn_10k,高);数字写入(Dp_10k,高); digitalWrite(Dp_2k2, LOW);}void Set_5V(){ pinMode(Dp_2k2, OUTPUT); pinMode(Dp_10k, 输出);数字写入(Dp_10k,高);数字写入(Dp_2k2,低); pinMode(Dn_2k2,输出); pinMode(Dn_10k,输出);数字写入(Dn_2k2,低); digitalWrite(Dn_10k, LOW);}void Set_20V(){// 更改电压调节器 !!!// 风险自负 }

示意图

https://circuits.io/circuits/5830928-qc-chargeing-hack

制造工艺

  1. 高通通过 5G 和支持人工智能的无人机平台提升无人机实用性
  2. 使用 Insight 密封 FDM 的快速指南
  3. 在 MakeMIT 使用 Markforged Mark Two 进行硬件黑客攻击
  4. NeoPixel Ring 的陀螺仪乐趣
  5. 云服装
  6. 带有 Arduino 的简单障碍物传感器
  7. 带 3D 打印机的最小 MIDI 鼓组
  8. 使用 Arduino 进行语音识别和合成
  9. 带有 CI-V 端口的 Icom 无线电上的外部 S-Meter
  10. 带有 RDA5807 的迷你立体声收音机
  11. IoT4Car
  12. 终极酒桶