Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Piratage de Qualcomm (Quick Charge) QC 2.0/3.0 avec ATtiny85

Composants et fournitures

Microchip Technology ATtiny85
× 1
Régulateur SparkFun LM1117 3.3V
× 1
SparkFun USB mâle A
× 1
Résistance 10k ohm
× 2
Résistance 2.21k ohm
× 1
Arduino Proto Shield
× 1
Interrupteur à bouton-poussoir SparkFun 12mm
× 1
QC Power Bank ou Chargeur
× 1
Cavalier générique (0,1")
× 8
Male-Header 36 Position 1 Row - Long (0,1")
× 1
Résistance 0,05 ohm
× 10
Arduino UNO
× 1
Câbles de raccordement mâle/femelle
× 7
LED (générique)
× 1
Résistance 22,1k ohm
× 1

Outils et machines nécessaires

Fer à souder (générique)

Applications et services en ligne

Arduino IDE

À propos de ce projet

Présentation

De nombreux appareils électroniques grand public alimentés par USB ont intégré la solution Qualcomm QC (Quick Charge) pour une charge rapide à différentes tensions plutôt que les 5,0 volts habituels. Cela permet d'utiliser des banques d'alimentation compatibles QC pour les projets nécessitant plus de puissance ou des tensions plus élevées comme 9/12 volts.

Le but de ce projet est de développer un appareil capable de pirater le protocole QC et de permettre aux amateurs, aux développeurs et aux ingénieurs d'utiliser leurs banques d'alimentation pour plus de tension/puissance pour leur prochain projet gourmand en énergie.

Les images ci-dessus montrent une sortie de 5, 9, 12 volts d'une alimentation compatible QC 2.0 alimentant une résistance de 10 ohms de 5 watts.

Développer le Hack * Device

L'ensemble de l'appareil a deux composants actifs - le régulateur de tension LM1117 3.3V et le MCU ATtiny85 à contrôler. Toutes les autres pièces sont des résistances, un interrupteur poussoir, des connecteurs, des cavaliers, des en-têtes, un terminal, une carte proto, etc.

Pour construire l'appareil, les premiers composants sont placés dans une disposition soignée, puis soudés. Certains liens courts de 0 ohms sont utilisés pour interconnecter différentes parties.

Il y a un cavalier pour désactiver le circuit intégré et activer la programmation. Depuis, la ligne de programmation (SPI - MOSI, MISO, SCK) agit également comme GPIO pendant le fonctionnement de l'appareil.

Programmation d'ATtiny85 avec le FAI

Avant de programmer l'ATtiny85, il est retiré de la base IC et placé sur une maquette. Pour programmer ATtiny85, une carte Arduino UNO est convertie en programmeur ISP en téléchargeant le " ArduinoISP" à partir de Fichier> Exemple> ArduinoISP esquisser. Ce croquis est disponible dans Arduino IDE.

La programmation d'ATtiny85 nécessite les étapes suivantes :

  • Installation du support ATtiny pour Arduino IDE (merci à David A. Mellis)
  • Burning Bootloader pour ATtiny85 en utilisant Arduino UNO comme FAI
  • Développement et téléchargement de code en utilisant Arduino UNO en tant que FAI

Le circuit suivant est préparé pour programmer l'ATtiny85 :

FAI = dans le programmeur système

Alternativement, l'ATtiny85 peut être programmé en restant sur l'appareil en enlevant tous les cavaliers qui l'entourent.

Fonctionnement de l'appareil

Pour utiliser l'appareil, il doit d'abord être connecté à une banque d'alimentation (ou chargeur) compatible QC. Par défaut, la tension de l'USB du QC Power Bank sera de 5,0 volts.

Tous les cavaliers doivent être connectés après le téléchargement du code, afin que le MCU puisse communiquer via D+/- vers la source QC.

Le régulateur LM1117 3,3 V s'allumera et alimentera ATtiny85. Ce MCU commencera à exécuter le code. 4 broches d'E/S d'ATtiny85 sont connectées aux résistances de division de tension qui seront utilisées comme sortie haute et basse. Une autre broche d'E/S est connectée à un commutateur qui s'initialisera en tant qu'entrée Pull Up. Ce commutateur prend l'entrée de l'utilisateur pour changer la tension de la source QC.

Maintenant, avant d'entrer dans les détails, il est important de savoir comment la sortie va changer. Il y a au moins 4 lignes/fils communs à chaque type d'USB (USB A, B, C, 1.1, 2.0, 3.0+).

Ce sont :-

  • VBUS (Vcc +5V par défaut)
  • D+
  • D -
  • Terre

Dans le chargeur/banque d'alimentation ordinaire, le VBUS est fixe, car la fourniture d'énergie est limitée par le courant qui peut respectivement 500 mA, 1 A, 2 A et 2,5 watts, 5 watts et 10 watts.

Mais dans les appareils de source d'alimentation QC, il existe un convertisseur élévateur interne qui peut augmenter la tension en fonction de la demande du dispositif de réception d'alimentation (PD) !!!

QC 2.0 (également 3.0) utilise D+ et D- de l'USB pour communiquer avec PD. PD envoie des signaux de tension sur D+ et D- et le chargeur QC fournira l'alimentation en conséquence en modifiant la tension VBUS. Selon cette fiche technique CHY, voici un tableau expliquant quelle paire de signaux sur D+/D- de PD fera que le QC fournira quelle tension de sortie :

La prise en charge QC 2.0 démarre lorsque la tension sur D+ et D- est identique aux valeurs de la 4ème ligne de ce tableau et reste au moins 1,25 seconde. Si D+ devient 0,0 volts (inférieur à 0,325 volts en fait), le support QC s'arrêtera et la sortie sera de 5,0 volts. En réglant les tensions selon ce tableau, la sortie sur VBUS peut être modifiée.

Ici, les 4 sorties d'ATtiny85 sont connectées à un réseau de diviseurs de tension 2 constitués de deux résistances de 10k et deux de 2,2k pour générer ces signaux de tension pour les lignes D+/D-.

Par exemple, pour générer 3,3 V sur D+, les résistances supérieure et inférieure qui sont connectées à deux broches de sortie ATtiny85 PB3 et PB4, les deux seront rendues hautes à partir du code.

De même, pour générer 0,6 V sur D-, les résistances supérieure et inférieure qui sont connectées aux deux autres broches de sortie ATtiny85 (PB1 et PB3) seront respectivement mises en haut et en bas.

De cette façon, le chargeur/banque d'alimentation QC 2.0 reçoit une demande de changement de tension et change en conséquence. Le bouton-poussoir est configuré comme entrée PULLUP, lorsqu'il n'est pas enfoncé, il est lu HAUT par le MCU et les exécutions de code se maintiennent dans la boucle while empêchant tout changement de tension définie. Lorsque l'utilisateur appuie sur le bouton-poussoir, la boucle se rompt et la tension suivante est définie. Là encore, l'exécution du code entre dans la boucle while suivante pour maintenir la tension VBUS actuelle.

Il y a une LED qui brille faiblement (5V), douce (9V) et lumineuse (12V) pour donner une représentation visuelle de la tension de sortie à l'utilisateur.

Applications possibles

  • Conduite de bandes LED 12 V
  • Alimentation des émetteurs/récepteurs RF pour une plus longue portée
  • Commande de relais 12 V, de moteurs, etc.
  • Obtenez n'importe quelle tension entre 1,25 et 10 volts à l'aide d'un LM317 ou LM2596
  • Lecteur à distance IR 9 V
  • Puissance de voiture robotique
  • Charge d'ordinateur portable avec 20 V
  • Tout système jusqu'à 18 watts comme les appareils WiFI, LTE, S2E pour les applications IoT
  • Alimentation de secours pour les systèmes distants
  • La plupart des écrans LCD, LED, imprimantes, scanners
  • PC portable basse consommation

Prise en charge d'autres classes QC

Étant donné que QC 2.0 classe B, QC 3.0 et QC 4.0 sont rétrocompatibles avec QC 2.0 classe A, cet appareil peut donc fonctionner avec tous les derniers chargeurs et banques d'alimentation. Mais les options de tension seront de 5,0, 9,0 et 12,0 volts. Si d'autres tensions de sortie sont nécessaires, veuillez lire les fiches techniques CHY 100, 101, 103 et modifier le code en conséquence.

Attention !

  • Élevé Qualité Banque d'alimentation QC ou chargeur avec Protection contre les courts-circuits doit être utilisé, externe Les charges ne doivent pas dépasser 18 watts . Cela peut être assuré par Vérification de l'étiquette de puissance nominale sur les appareils de chargement.
  • La sortie de 20 volts doit être évitée depuis 1117 le régulateur 3v3 peut Manipulation Maximum 15 Volts , cela doit être évité à partir du Code MCU par Ne jamais autoriser les lignes D+ et D- ayant 3,3 volts en même temps .
  • Dans cas Une sortie de 20 volts est requise (pris en charge par QC 2.0 Classe B et QC 3.0, QC 4.0 ) , un régulateur de tension (LM317 configuré pour 3,3 V) pouvant supporter plus de 20 Volts doit être utilisé. Sinon, le régulateur et le MCU seront détruits !!!!
  • Il faut faire attention au Polarité de la tension de sortie, +ve indiqué par ROUGE et -ve indiqué par de minuscules fils BLEUS à côté de la borne de sortie.
  • En vrac connexion à USB Homme-Femme couplage doit être Évité ou La chaleur sera générée en raison de la résistance de contact et L'efficacité énergétique va baisser.
  • Pendant la programmation du FAI, tous les cavaliers doivent être supprimés pour isoler les broches MOSI, MISO, SCK, VCC, GND, RESET du reste des circuits sur la carte vers Évitez les interférences avec la programmation.
  • Modification du code Ne doit pas être fait sans Comprendre clairement le protocole de charge QC, cette conception est principalement Destiné aux sources d'alimentation QC 2.0 (classe A) mais peut être partiellement utilisé pour Supérieur QC Normes
  • Piratage Peut Non Travail avec certains chargeurs QC/Power Banks
  • La commutation GPIO doit être être fait dans Séquence correcte à Éviter la résiliation de Mode haute tension

Remarque : Il est conseillé de ne pas reproduire ce projet si les points ci-dessus ne sont pas compris par quelqu'un, autrement Risque de Feu Danger ou Perte de Équipement pourrait se produire !

Il est possible de modifier les tensions manuellement sans utiliser de microcontrôleur. Seulement 4 fils de liaison sont nécessaires pour imiter les conditions du tableau D+/D- en connectant Vcc (3,3 V) et Gnd (0 V) aux résistances dans l'ordre approprié. Parce que l'utilisation de mcu peut être exagérée pour des transitions aussi simples après tout.

Références

  • 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

Code

  • Code ATtiny85
Code ATtiny85C/C++
Contrôleur QC///=========================Algorithme =========================/// /* Tout d'abord, connectez la broche D+ à une tension de 0,325 à 2 volts et laissez le D- flottant, puis attendez au moins 2 secondes. Deux actions se produisent pendant ces 2 secondes :Les tensions D+ et D- sont égales à une tension comprise entre 0,325 et 2 volts pendant 1,25 seconde. (car les broches D+ et D- se connectent d'abord à l'intérieur du CHY100) Ensuite, le D+ se maintient à une tension comprise entre 0,325 et 2 volts et la tension D- diminue jusqu'à zéro. (car les broches D+ et D- se déconnectent et une résistance à l'intérieur du CHY100 décharge le D-)*** CHY100 est une puce d'interface de protocole QC 2.0 à l'intérieur de la banque d'alimentation/chargeur ........ d'autres puces QC 2.0 sont probablement similaire Faites d'abord D+ au-dessus de 3,0 V, puis connectez le D- à une tension comprise entre 0,325 et 2 volts. Le VBUS passe à 9V. Tout en gardant la connexion D- avec une tension comprise entre 0,325 et 2 volts, faites de D+ une tension comprise entre 0,325 et 2 volts. Le VBUS passe à 12V. (car les tensions D+ et D- sont comprises entre 2V et 0,325V) Déconnectez le D+ d'une tension comprise entre 0,325 et 2 volts. VBUS passe à 5V, car le QC2.0 quitte le mode de changement de tension et VBUS passe à la valeur par défaut 5V. recommencer depuis le début lorsque vous devez entrer à nouveau QC2.0)*/// ============NOTE IMPORTANTE =================//// *** La séquence de fabrication des broches HIGH et LOW est importante // *** Si D+ tombe en dessous de 0,325 V pendant la transition en raison d'une mauvaise séquence de commutation GPIO // *** QC 2.0 quittera le mode haute tension et VBUS reviendra à 5 Volts // ==============================================/ /#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); // Lancement maintenant de la prise de contact QC en faisant D+ 0.6 v en gardant D- à 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();}///********************** Fonctions **********************///void Init_QC(){ //pinMode(Dn_2k2, INPUT); //pinMode(Dn_10k, INPUT); pinMode(Dp_2k2, SORTIE); pinMode(Dp_10k, SORTIE); digitalWrite(Dp_2k2, LOW); digitalWrite(Dp_10k, ÉLEVÉ); retard (3000); // maintenant le protocole QC est actif}void Set_9V(){ pinMode(Dp_2k2, OUTPUT); pinMode(Dp_10k, SORTIE); digitalWrite(Dp_10k, ÉLEVÉ); digitalWrite(Dp_2k2, HAUT); pinMode(Dn_2k2, SORTIE); pinMode(Dn_10k, SORTIE); digitalWrite(Dn_2k2, LOW); digitalWrite(Dn_10k, HIGH);}void Set_12V(){ pinMode(Dp_2k2, OUTPUT); pinMode(Dp_10k, SORTIE); pinMode(Dn_2k2, SORTIE); pinMode(Dn_10k, SORTIE); digitalWrite(Dn_2k2, LOW); digitalWrite(Dn_10k, HAUT); digitalWrite(Dp_10k, ÉLEVÉ); digitalWrite(Dp_2k2, LOW);}void Set_5V(){ pinMode(Dp_2k2, OUTPUT); pinMode(Dp_10k, SORTIE); digitalWrite(Dp_10k, ÉLEVÉ); digitalWrite(Dp_2k2, LOW); pinMode(Dn_2k2, SORTIE); pinMode(Dn_10k, SORTIE); digitalWrite(Dn_2k2, LOW); digitalWrite(Dn_10k, LOW);}void Set_20V(){// changer le régulateur de tension !!!// faire à vos risques et périls }

Schémas

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

Processus de fabrication

  1. Qualcomm améliore l'utilité des drones avec la 5G et une plate-forme de drones compatible avec l'IA
  2. Guide rapide pour sceller FDM avec Insight
  3. Piratage matériel avec Markforged Mark Two à MakeMIT
  4. Gyroscope amusant avec l'anneau NeoPixel
  5. Costume nuage
  6. Capteur d'obstacles simple avec Arduino
  7. Kit de batterie MIDI minimal avec imprimante 3D
  8. Reconnaissance et synthèse vocales avec Arduino
  9. S-mètre externe sur les radios Icom avec port CI-V