산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

ATtiny85로 퀄컴 퀵 차지 2.0/3.0 리버스 엔지니어링 - 실전 가이드

부품 및 소모품

부품수량비고
마이크로칩 ATtiny851메인 MCU
LM1117 3.3V 레귤레이터 (SparkFun)1ATtiny85 전원용
USB A 타입 수 커넥터 (SparkFun)1QC 충전기/파워뱅크 연결용
10kΩ 저항2전압 분배기용
2.21kΩ 저항1전압 분배기용
아두이노 프로토 실드1회로 기판용
푸시버튼 스위치 12mm1전압 단계 전환용
QC 지원 파워뱅크 또는 충전기1입력 소스 (QC 2.0/3.0 필수)
점퍼 와이어 (0.1인치)8배선용
핀 헤더 36핀 1열1연결용
0.05Ω 저항 (샘트용)10전류 측정용 (선택)
아두이노 우노1ATtiny85 ISP 프로그래머용
수/암 점퍼 와이어7프로그래밍용
LED1출력 전압 표시용 (5V=약함, 9V=중간, 12V=밝음)
22.1kΩ 저항1LED 전류 제한용

필수 도구

소프트웨어 및 앱

프로젝트 개요

소개

많은 USB 기기가 퀄컴 퀵 차지(QC) 기술을 이용해 5V 이외의 전압(9V, 12V, 20V)으로 고속 충전합니다. 이 프로젝트는 QC 프로토콜을 역분석하여 ATtiny85로 제어함으로써, 일반 파워뱅크를 9V/12V 가변 전원처럼 사용할 수 있게 합니다. 최대 18W(12V 1.5A)까지 끌어낼 수 있어 LED 스트립, 모터, 릴레이 구동 등에 활용 가능합니다.

ATtiny85로 퀄컴 퀵 차지 2.0/3.0 리버스 엔지니어링 - 실전 가이드
5V 출력 (기본)
ATtiny85로 퀄컴 퀵 차지 2.0/3.0 리버스 엔지니어링 - 실전 가이드
9V 출력
ATtiny85로 퀄컴 퀵 차지 2.0/3.0 리버스 엔지니어링 - 실전 가이드
12V 출력 (10Ω 5W 부하)

장치 개발

하드웨어 구성

활성 부품은 LM1117 3.3V 레귤레이터와 ATtiny85뿐이며, 나머지는 저항, 스위치, 커넥터, 점퍼, 프로토보드 등 수동 부품입니다. 부품을 깔끔하게 배치 후 납땜하고, 0Ω 점퍼로 내부 연결을 구성합니다.

ATtiny85로 퀄컴 퀵 차지 2.0/3.0 리버스 엔지니어링 - 실전 가이드

ISP 프로그래밍 핀(MOSI, MISO, SCK)이 동작 시 GPIO로도 사용되므로, 프로그래밍 시 회로와 격리할 수 있는 점퍼를 배치했습니다.

ATtiny85로 퀄컴 퀵 차지 2.0/3.0 리버스 엔지니어링 - 실전 가이드

ATtiny85 ISP 프로그래밍

  1. 아두이노 IDE에 ATtiny 보드 지원 설치 (David A. Mellis 패키지)
  2. 아두이노 우노에 ArduinoISP 스케치 업로드 (파일 → 예제 → ArduinoISP)
  3. ATtiny85를 브레드보드에 장착하고 아래 회로로 연결
  4. 툴 → 보드 → ATtiny85 선택, 툴 → 프로그래머 → Arduino as ISP 선택
  5. 툴 → 부트로더 굽기 실행
  6. 스케치 업로드 (프로그래머 사용)
ATtiny85로 퀄컴 퀵 차지 2.0/3.0 리버스 엔지니어링 - 실전 가이드
ISP 프로그래밍용 브레드보드 회로

또는 기판에 장착된 상태에서 모든 점퍼를 제거하면 프로그래밍 가능합니다.

장치 동작 원리

USB QC 프로토콜 기초

USB에는 4선(VBUS, D+, D-, GND)이 있습니다. 일반 충전기는 VBUS가 5V 고정이지만, QC 충전기는 내부 부스트 컨버터로 전압을 가변합니다. QC 2.0/3.0은 D+/D- 라인에 특정 전압 패턴을 인가하여 출력 전압을 요청합니다.

CHY100 데이터시트 기준 D+/D- 전압 조합과 출력 전압 관계:

D+ 전압D- 전압VBUS 출력비고
0.6VGND (0V)5V기본/해제
3.3V0.6V9V
0.6V0.6V12V
3.3V3.3V20V주의: LM1117 한계 15V 초과로 레귤레이터/MCU 손상 위험

전압 생성 회로

ATtiny85의 4개 출력 핀(PB1, PB2, PB3, PB4)을 두 개의 전압 분배기(10kΩ/2.2kΩ)에 연결하여 D+/D-에 필요한 전압을 생성합니다.

ATtiny85로 퀄컴 퀵 차지 2.0/3.0 리버스 엔지니어링 - 실전 가이드

사용자 인터페이스

동작 시퀀스

  1. QC 파워뱅크 연결 → 기본 5V 출력
  2. 모든 점퍼 연결 → ATtiny85 구동
  3. 초기 핸드셰이크: D+ 0.6V 인가 후 3초 대기 (QC 프로토콜 진입)
  4. 버튼 누를 때마다 5V → 9V → 12V → 5V 순환

활용 예시

다른 QC 버전 지원

QC 2.0 Class B, QC 3.0, QC 4.0은 QC 2.0 Class A와 하위 호환되므로 본 장치로도 5V/9V/12V 출력은 가능합니다. 20V 출력이 필요하면 20V 이상 견디는 레귤레이터(LM317 3.3V 설정 등)와 코드 수정이 필요합니다.

⚠️ 중요 경고 사항 (필독)

※ 위 사항 미숙지 시 화재 위험 또는 기기 손상 가능. 이해하지 못한 경우 제작 자제 권장.

참고: MCU 없이 점퍼 와이어 4개로 D+/D- 전압을 VCC(3.3V)/GND(0V)에 직결하여 수동 전환도 가능. 단순 전환엔 MCU가 오버스펙일 수 있음.

참고 자료

코드 (ATtiny85 펌웨어)

///========================= Algorithm ========================///
/* First, Connect the D+ pin to a voltage 0.325 to 2 volts and keep the D- floating, then wait at least 2 seconds. Two actions happen during this 2 seconds: The D+ and D- voltage equal a voltage between 0.325 to 2 volts for 1.25 seconds. (because the D+ and D- pins connect together inside the CHY100 at first) Then the D+ keeps at a voltage between 0.325 to 2 volts and the D- voltage decrease to zero. (because the D+ and D- pins disconnect and a resistor inside the CHY100 discharges the D-)*** CHY100 is a QC 2.0 Protocol interface chip inside Power bank/charger ........ other QC 2.0 chips are probably similar Make D+ above 3.0 V first and then connect the D- to a voltage between 0.325 to 2 volts. The VBUS jumps to 9V. While keeping the D- connection with a voltage between 0.325 to 2 volts,make D+ a voltage between 0.325 to 2 volts. The VBUS jumps to 12V. (because the D+ and D- voltage are between 2V and 0.325V) Disconnect the D+ from a voltage between 0.325 to 2 volts . VBUS jumps to 5V, Because the QC2.0 exits Voltage changing mode and VBUS goes to the default value 5V. start from beginning when needing to enter QC2.0 again) */
// ============ IMPORTANT NOTE ================
// *** Sequence of making pins HIGH and LOW is important
// *** If D+ falls below 0.325V during transition because of wrong GPIO Switching Sequence
// *** QC 2.0 will exit High Voltage Mode and VBUS will go back to 5 Volts
// ==============================================
#define PUSH_SWITCH 0
#define Dp_2k2 4
#define Dp_10k 3
#define Dn_2k2 2
#define Dn_10k 1
int Press_Detect = 0;
void setup() {
  pinMode(PUSH_SWITCH, INPUT_PULLUP);
  // Now Initiating QC Handshake by making D+ 0.6 v keeping D- at Gnd
  Init_QC();
}
void loop() {
  //// 5V ////
  while (digitalRead(PUSH_SWITCH) == 1) { }
  delay(250);
  //// 9v ////
  Set_9V();
  while (digitalRead(PUSH_SWITCH) == 1) { }
  delay(250);
  //// 12v ////
  Set_12V();
  while (digitalRead(PUSH_SWITCH) == 1) { }
  delay(250);
  // Set_5V();
}
///********************** Functions **********************///
void Init_QC() {
  //pinMode(Dn_2k2, INPUT);
  //pinMode(Dn_10k, INPUT);
  pinMode(Dp_2k2, OUTPUT);
  pinMode(Dp_10k, OUTPUT);
  digitalWrite(Dp_2k2, LOW);
  digitalWrite(Dp_10k, HIGH);
  delay(3000);
  // now QC protocol is active
}
void Set_9V() {
  pinMode(Dp_2k2, OUTPUT);
  pinMode(Dp_10k, OUTPUT);
  digitalWrite(Dp_10k, HIGH);
  digitalWrite(Dp_2k2, HIGH);
  pinMode(Dn_2k2, OUTPUT);
  pinMode(Dn_10k, OUTPUT);
  digitalWrite(Dn_2k2, LOW);
  digitalWrite(Dn_10k, HIGH);
}
void Set_12V() {
  pinMode(Dp_2k2, OUTPUT);
  pinMode(Dp_10k, OUTPUT);
  pinMode(Dn_2k2, OUTPUT);
  pinMode(Dn_10k, OUTPUT);
  digitalWrite(Dn_2k2, LOW);
  digitalWrite(Dn_10k, HIGH);
  digitalWrite(Dp_10k, HIGH);
  digitalWrite(Dp_2k2, LOW);
}
void Set_5V() {
  pinMode(Dp_2k2, OUTPUT);
  pinMode(Dp_10k, OUTPUT);
  digitalWrite(Dp_10k, HIGH);
  digitalWrite(Dp_2k2, LOW);
  pinMode(Dn_2k2, OUTPUT);
  pinMode(Dn_10k, OUTPUT);
  digitalWrite(Dn_2k2, LOW);
  digitalWrite(Dn_10k, LOW);
}
void Set_20V() {
  // change Voltage Regulator !!!
  // do at your own risk
}

회로도

Circuits.io 회로도

ATtiny85로 퀄컴 퀵 차지 2.0/3.0 리버스 엔지니어링 - 실전 가이드

제조공정

  1. Qualcomm, 자율 UAV 혁신 이끄는 5G·AI 드론 플랫폼 출시
  2. Stratasys Insight로 FDM 부품 밀봉하기: 실전 가이드
  3. Markforged Mark Two, MIT 2016 하드웨어 해커톤에서 혁신 가속화
  4. NeoPixel 링과 Arduino로 만드는 인터랙티브 자이로스코프 LED 디스플레이
  5. DIY 구름 의상: LED 스트립, 아두이노 나노 & 스파크펀 부품으로 만들기
  6. 아두이노로 간단한 장애물 센서 만들기 - IR LED & 포토다이오드 튜토리얼
  7. 3D 프린팅으로 만드는 컴팩트한 MIDI 드럼 키트
  8. 아두이노 Due에서 음성 인식 및 합성 마스터하기
  9. 아두이노와 CI-V로 아이컴 무전기용 외부 S-미터 만들기
  10. 컴팩트한 RDA5807 미니 스테레오 라디오 – 아두이노 나노 프로젝트