工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ATtiny85を使用したQualcomm(Quick Charge)QC 2.0 /3.0のハッキング

コンポーネントと消耗品

>
Microchip Technology ATtiny85
× 1
SparkFun LM11173.3Vレギュレーター
× 1
SparkFunUSBオスA
× 1
抵抗10kオーム
× 2
抵抗2.21kオーム
× 1
Arduinoプロトシールド
× 1
SparkFunプッシュボタンスイッチ12mm
× 1
QCパワーバンクまたは充電器
× 1
汎用ジャンパー(0.1 ")
× 8
男性-ヘッダー36位置1行-長さ(0.1 ")
× 1
抵抗0.05オーム
× 10
Arduino UNO
× 1
オス/メスのジャンパー線
× 7
LED(汎用)
× 1
抵抗22.1kオーム
× 1

必要なツールとマシン

>
はんだごて(汎用)

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

はじめに

多くのUSB電源の家庭用電化製品には、通常の5.0ボルトではなくさまざまな電圧で急速充電するためのQualcomm QC(急速充電)ソリューションが組み込まれています。これにより、より多くの電力または9/12ボルトなどのより高い電圧を必要とするプロジェクトにQC互換のパワーバンクを使用する機会が得られます。

このプロジェクトの目的は、QCプロトコルをハッキングできるデバイスを開発し、愛好家、開発者、エンジニアがパワーバンクを使用して次の電力を必要とするプロジェクトの電圧/電力を増やすことができるようにすることです。

<図> <図> <図>

上の画像は、10オーム5ワットの抵抗に電力を供給するQC 2.0互換のパワーバックから出力された5、9、12ボルトを示しています。

ハック*デバイスの開発

デバイス全体には、LM11173.3V電圧レギュレータと制御するATtiny85MCUの2つのアクティブコンポーネントがあります。他のすべての部品は、抵抗器、プッシュスイッチ、コネクタ、ジャンパ、ヘッダー、端子、プロトボードなどです。

<図>

デバイスを構築するには、最初のコンポーネントをきちんとしたレイアウトで配置し、次にはんだ付けします。いくつかの0オームの短いリンクは、さまざまな部品を相互接続するために使用されます。

オンボード回路を無効にしてプログラミングを有効にするジャンパーがあります。以来、プログラミングライン(SPI-MOSI、MISO、SCK)は、デバイスの動作中にGPIOとしても機能します。

<図> <図> <図>

ISPを使用したATtiny85のプログラミング

ATtiny85をプログラミングする前に、ICベースから取り外してブレッドボードに配置します。 ATtiny85をプログラムするには、ファイル>例> ArduinoISP から「ArduinoISP」をアップロードすることにより、ArduinoUNOボードをISPプログラマーに変換します。 スケッチ。このスケッチはArduinoIDEで利用できます。

ATtiny85のプログラミングには、次の手順が必要です。

  • Arduino IDEのATtinyサポートのインストール(David A. Mellisに感謝)
  • ISPとしてArduinoUNOを使用したATtiny85のブートローダーの書き込み
  • ISPとしてArduinoUNOを使用したコードの開発とアップロード

ATtiny85をプログラムするために次の回路が用意されています:

<図> <図>

ISP = システムプログラマー

または、ATtiny85は、周囲のすべてのジャンパーを削除することにより、デバイスを維持するようにプログラムできます。

デバイスの操作

デバイスを使用するには、最初にQC互換のパワーバンク(または充電器)に接続する必要があります。デフォルトでは、QCパワーバンクのUSBの電圧は5.0ボルトになります。

コードをアップロードした後、すべてのジャンパーを接続する必要があります。これにより、MCUはD +/-を介してQCソースと通信できます。

LM1117 3.3 Vレギュレータは電源を入れ、ATtiny85に電力を供給します。このMCUはコードの実行を開始します。 ATtiny85の4つのI / Oピンは、出力HighおよびLowとして使用される分圧抵抗に接続されています。別のI / Oピンは、入力プルアップとして初期化されるスイッチに接続されています。このスイッチは、ユーザー入力を使用してQCソースの電圧を変更します。

ここで、詳細に入る前に、出力がどのように変化するかを知ることが重要です。すべての種類の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にどの電圧出力を提供するかを説明する表があります:

<図>

QC 2.0のサポートは、D +とD-の電圧がこの表の4行目の値と同じで、少なくとも1.25秒続くと開始されます。 D +が0.0ボルト(実際には0.325ボルト未満)になると、QCサポートは停止し、出力は5.0ボルトになります。この表に従って電圧を設定することにより、VBUSの出力を変更することができます。

ここで、ATtiny85の4出力は、2つの10k抵抗と2つの2.2k抵抗で構成される2つの分圧器ネットワークに接続され、D + / D-ライン用のこれらの電圧信号を生成します。

<図>

たとえば、D +で3.3Vを生成するには、2つのATtiny85出力ピンPB3とPB4に接続されている上部と下部の両方の抵抗をコードからHighにします。

同様に、D-で0.6 Vを生成するために、他の2つのATtiny85出力ピン(PB1とPB3)に接続されている上部抵抗と下部抵抗の両方がそれぞれHighとLowになります。

このようにして、QC 2.0充電器/パワーバンクは電圧変更要求を受け取り、それに応じて変更します。プッシュスイッチは入力プルアップとして構成されており、押されていない間はMCUによってHIGHに読み取られ、コード実行はwhileループで保持され、設定電圧の変更を防ぎます。ユーザーがプッシュスイッチを押すと、ループが中断し、次の電圧が設定されます。次に、コード実行は次のwhileループに入り、現在のVBUS電圧を保持します。

薄暗い(5V)、穏やかな(9V)、明るい(12V)に光るLEDがあり、ユーザーに出力電圧を視覚的に表現します。

考えられるアプリケーション

  • 12VLEDストライプの駆動
  • 長距離用のRF送信機/受信機への電力供給
  • 12Vリレー、モーターなどの駆動
  • LM317またはLM2596を使用して、1.25〜10ボルトの電圧を取得します。
  • 9VIRリモートドライブ
  • ロボットカーパワー
  • 20Vでのラップトップ充電
  • IoTアプリケーション用のWiFI、LTE、S2Eデバイスなどの最大18ワットのシステム
  • リモートシステムのバックアップ電源
  • ほとんどのLCD、LEDモニター、プリンター、スキャナー
  • 低電力ポータブルPC

他のQCクラスのサポート

QC 2.0クラスB、QC 3.0、およびQC4.0はQC2.0クラスAと下位互換性があるため、このデバイスはすべての最新の充電器およびパワーバンクで動作する可能性があります。ただし、電圧オプションは5.0、9.0、および12.0ボルトになります。他の出力電圧が必要な場合は、CHY 100、101、103のデータシートを読み、それに応じてコードを変更してください。

警告!

  • 品質 QCパワーバンクまたは充電器 短絡保護 を使用する必要があります、外部 負荷は18ワットを超えてはなりません 。これは、によって保証できます。 電力定格ラベルの確認 ロードデバイス。
  • 20ボルトの出力は避ける必要があります 11173v3レギュレーターができるので 最大15ボルトを処理 、これはから避ける必要があります MCUコード by 同時に3.3ボルトのD +とD-ラインを許可しないでください
  • ケース 20ボルトの出力が必要です QC2.0クラスBおよびQC3.0、QC4.0でサポート )、20ボルト以上を処理できる電圧レギュレーター(3.3 V用に構成されたLM317)を使用する必要があります。そうしないと、レギュレーターとMCUの両方が破壊されます!!!!
  • 注意を払う必要があります から 出力電圧の極性、 + veは赤で示され、-veは出力端子の横にある青い細い線で示されます。
  • 緩い 接続 USB 男性-女​​性 結合 必須 be 回避 または 接触抵抗の結果として熱が発生します 電力効率が低下します。
  • ISPプログラミング中は、すべてのジャンパーを削除する必要があります MOSI、MISO、SCK、VCC、GND、RESETピンを分離する ボード上の残りの回路から プログラミングへの干渉を避けてください。
  • コードの変更 実行してはならない なし QC充電プロトコルを明確に理解しているため、この設計は主に QC 2.0(クラスA)電源を対象としています しかし できます 部分的に 使用済み for より高い QC 標準
  • ハック 可能性があります ない 仕事 いくつかのQC充電器/パワーバンク付き
  • GPIOスイッチングが必要 で行われる 適切なシーケンス から 終了を避ける 高電圧モード

注: 上記の点が理解されていない場合は、このプロジェクトを複製しないことをお勧めします by 誰か それ以外の場合 リスク of ハザードまたは 損失 of 機器 可能性があります 発生します!

<コード>マイクロコントローラーを使用せずに手動で電圧を変更することが可能です。 Vcc(3.3V)とGnd(0V)を適切な順序で抵抗に接続することにより、D + / D-テーブルの状態を模倣するために必要なジャンパー線はわずか4本です。結局のところ、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秒間に、2つのアクションが発生します。D+とD-の電圧は、1.25秒間で0.325〜2ボルトの電圧に等しくなります。 (最初はD +ピンとD-ピンがCHY100内で相互に接続されているため)次に、D +は0.325〜2ボルトの電圧を維持し、D-電圧はゼロに減少します。 (D +ピンとD-ピンが切断され、CHY100内の抵抗がD-を放電するため)*** CHY100はパワーバンク/充電器内のQC2.0プロトコルインターフェイスチップです........他のQC2.0チップはおそらく同様に、最初にD +を3.0V以上にしてから、D-を0.325〜2ボルトの電圧に接続します。 VBUSは9Vにジャンプします。 D-接続を0.325〜2ボルトの電圧に保ちながら、D +を0.325〜2ボルトの電圧にします。 VBUSは12Vにジャンプします。 (D +とD-の電圧が2Vから0.325Vの間であるため)0.325から2ボルトの間の電圧からD +を切り離します。 QC2.0が電圧変更モードを終了し、VBUSがデフォルト値の5Vになるため、VBUSは5Vにジャンプします。 QC2.0を再度入力する必要がある場合は、最初から開始します)* /// ============重要な注意事項================//// ***ピンをHIGHおよびLOWにするシーケンスが重要です// *** GPIOスイッチングシーケンスが間違っているために遷移中にD +が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.6vをGndに保持してQCハンドシェイクを開始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();} /// **********************関数********************** /// 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); //これでQCプロトコルがアクティブになります} 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(){//電圧レギュレータを変更する!!! //自己責任で行ってください} 

回路図

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

製造プロセス

  1. Qualcommは、5GおよびAI対応のドローンプラットフォームでドローンのユーティリティを強化します
  2. InsightでFDMをシールするためのクイックガイド
  3. MakeMITでのMarkforgedMarkTwoによるハードウェアハッキング
  4. NeoPixelリングでジャイロスコープを楽しむ
  5. クラウドコスチューム
  6. Arduinoを搭載したシンプルな障害物センサー
  7. 3Dプリンターを備えた最小限のMIDIドラムキット
  8. Arduinoによる音声認識と合成
  9. CI-Vポートを備えたIcom無線機の外部S-Meter
  10. RDA5807付きミニステレオラジオ
  11. IoT4Car