Composants · 16 min de lecture

Branchement TP4056 : module de charge 18650, protection et ESP32

Comment brancher un TP4056 : bornes B+/B- et OUT+/OUT-, version protégée DW01, LED, courant de charge via Rprog, 5 V avec MT3608 et mesure d'accu par ESP32.

Le branchement du TP4056 est le moyen le moins cher de charger en toute sécurité par USB un accu 18650 ou LiPo à une cellule et d'alimenter avec ce même accu un projet Arduino, ESP32 ou Raspberry Pi Pico : le câble USB va à l'entrée du module, l'accu aux bornes B+ et B- et, sur les modules protégés, ton circuit aux bornes OUT+ et OUT-. Le module charge l'accu jusqu'à 4,2 V selon la méthode courant constant puis tension constante, coupe la charge tout seul quand l'accu est plein et indique son état avec deux LED. Cette carte grande comme un ongle est le cœur des projets qui fonctionnent loin d'une prise, comme les stations météo portables, les robots, les lampes rechargeables et les capteurs sans fil.

Mais ce module bon marché cache quelques pièges : les versions protégée et non protégée ne se branchent pas de la même façon, le courant de charge de 1 A réglé d'usine est trop fort pour les petits accus, alimenter le circuit pendant la charge peut empêcher la charge de se terminer, et deux cellules en série ne peuvent jamais être chargées avec ce module. Dans ce guide, tu vas découvrir pas à pas le rôle de chaque borne, la signification des LED, le réglage du courant de charge avec la résistance Rprog, l'ajout d'un module élévateur MT3608 pour les cartes qui demandent du 5 V et la mesure de la tension de l'accu avec un ESP32 pour la convertir en pourcentage.

Module de charge TP4056 protégé avec entrée USB-C pour accu 18650
Module TP4056 protégé : à gauche l'entrée USB-C et les pastilles IN+/IN-, à droite les pastilles B+/B- (accu) et OUT+/OUT- (sortie). La grosse puce au centre est le TP4056 ; les petites puces à côté sont le circuit de protection DW01A et le double MOSFET 8205A.

Qu'est-ce que le TP4056 et comment fonctionne-t-il ?

Le TP4056 est un circuit de charge linéaire conçu pour les accus lithium-ion (Li-ion) et lithium-polymère (LiPo) à une seule cellule. Un accu au lithium ne se recharge pas avec n'importe quel adaptateur ; il lui faut un profil de charge précis, et le TP4056 l'applique tout seul. Si l'accu est sous 2,9 V, il commence par le charger doucement en phase de précharge (trickle) avec environ un dixième du courant réglé, soit à peu près 130 mA avec le réglage à 1 A. Une fois les 2,9 V dépassés, il passe en phase de courant constant (CC) et fournit tout le courant réglé. Quand l'accu atteint 4,2 V, la phase de tension constante (CV) commence : la tension est maintenue à 4,2 V et le courant diminue lentement. La charge s'arrête quand le courant tombe à un dixième de la valeur réglée (100 mA avec le réglage à 1 A). Si l'accu redescend ensuite vers 4,05 V, le module relance la charge automatiquement. Si la puce chauffe trop, elle réduit d'elle-même le courant de charge ; il est donc normal que le module soit chaud pendant la charge.

CaractéristiqueValeur
Tension d'entrée4,0–8 V (5 V conseillé ; micro USB ou USB-C)
Tension de fin de charge4,2 V (±1,5 %)
Courant de charge1 A maximum ; 1 A par défaut sur les modules (Rprog = 1,2 kΩ)
PréchargeSous 2,9 V, environ 1/10 du courant réglé
Fin de chargeQuand le courant tombe à 1/10 de la valeur réglée (C/10)
RechargeAutomatique quand l'accu redescend vers 4,05 V
Sorties d'étatLED CHRG (en charge) et STDBY (plein)
Accus compatiblesUne seule cellule (1S) Li-ion ou LiPo 3,7 V ; pas de LiFePO4

TP4056 protégé (DW01) ou non protégé : la différence

Deux cartes différentes sont vendues sous le même nom. Le module non protégé ne porte que la puce TP4056 et offre quatre points de connexion : IN+/IN- et BAT+/BAT-. Il charge l'accu, mais ne surveille rien pendant la décharge. Le module protégé ajoute le circuit de protection DW01A et le double MOSFET 8205A, avec six pastilles : IN+/IN-, B+/B- et OUT+/OUT-. Le circuit de protection se place comme un interrupteur entre le pôle négatif de l'accu et le négatif de ton circuit (OUT-). En cas de décharge profonde, de surcharge, de courant trop élevé ou de court-circuit en sortie, il ouvre cet interrupteur et déconnecte l'accu du circuit.

CaractéristiqueModule non protégéModule protégé (DW01A + 8205A)
PastillesIN+, IN-, BAT+, BAT-IN+, IN-, B+, B-, OUT+, OUT-
Protection contre la surchargeSeulement la limite de 4,2 V du TP4056Coupe en plus vers 4,25–4,3 V
Protection contre la décharge profondeAucuneCoupe vers 2,4 V, réarme vers 3,0 V
Surintensité et court-circuitAucuneCoupe vers 3 A et en cas de court-circuit
Quand le choisir ?Si l'accu a déjà son propre circuit de protectionAvec des cellules nues non protégées, donc dans presque tous les projets
Facile de savoir lequel tu as : si tu vois six pastilles côté accu (B+, B-, OUT+, OUT-) et deux petites puces de plus à côté du TP4056, le module est protégé. S'il n'est marqué que BAT+ et BAT-, il ne l'est pas. L'écart de prix est minime, alors prends toujours la version protégée.

Accu 18650 : les tensions à connaître

Le nom 18650 vient de ses dimensions : 18 mm de diamètre et 65 mm de long. Sa tension nominale est de 3,6–3,7 V, mais c'est une moyenne ; un accu plein est à 4,2 V et un accu vide autour de 3,0 V. Les capacités réelles vont de 2000 à 3500 mAh ; les cellules marquées 6800 ou 9900 mAh sont des contrefaçons et ne fournissent souvent même pas 1000 mAh. Les 18650 protégés, dotés de leur propre circuit de protection, sont plus longs de quelques millimètres et n'entrent pas dans tous les supports. Tu peux calculer l'autonomie de ton projet avec un accu grâce à l'outil autonomie batterie et lire ce que signifient les unités de capacité dans mAh et Wh expliqués.

ÉtatTensionExplication
Charge complète4,20 VLe TP4056 arrête la charge ici
Nominale3,6–3,7 VLa valeur de l'étiquette, tension moyenne de fonctionnement
Considéré comme vide3,0–3,3 VArrêter le projet ici prolonge la durée de vie de l'accu
Coupure de protection2,4–2,5 VLe DW01A coupe la sortie ; évite de descendre aussi bas
Zone dangereuseMoins de 2,0 VNe recharge pas un accu resté longtemps à ce niveau ; remplace-le
Accu Li-ion 18650
Accu Li-ion 18650 : 18 mm de diamètre, 65 mm de long et 3,7 V nominaux. On le raccorde avec un support d'accu ou des bandes de nickel soudées par points.
Ne soude jamais directement sur une cellule 18650 avec un fer à souder ; la chaleur abîme l'intérieur de l'accu et c'est dangereux. Utilise un support d'accu ou des bandes de nickel soudées par points. N'utilise pas d'accu écrasé, gonflé ou à la gaine déchirée, charge sur une surface ininflammable et jamais en dessous de 0 °C. Sur les modules du commerce, la broche TEMP est reliée à GND : la température de l'accu n'est donc pas surveillée ; touche-le de temps en temps pendant la charge pour vérifier qu'il ne chauffe pas.

Branchement du TP4056 : les bornes IN, B+/B- et OUT+/OUT-

PastilleSe branche surRemarque
Entrée USBAdaptateur 5 V ou ordinateurMicro USB ou USB-C ; le plus simple
IN+ / IN-Plus et moins d'une source 5 V externePour une alimentation soudée à la place de l'USB ; n'utilise pas les deux en même temps
B+ / B-Plus et moins de l'accu 18650Seul l'accu se branche ici
OUT+ / OUT-Plus et moins de ton circuit (la charge)Sur un module protégé, la charge va toujours ici
BAT+ / BAT- (non protégé)Accu et charge ensembleAucune protection ; la charge est en parallèle avec l'accu
  1. Soude le fil rouge du support d'accu sur B+ et le fil noir sur B-. Ne mets pas encore l'accu.
  2. Soude le fil positif de ton circuit sur OUT+ et le fil négatif (GND) sur OUT-. Si tu alimentes une carte qui demande du 5 V, un module élévateur MT3608 vient s'intercaler entre les deux.
  3. Vérifie les soudures et assure-toi au multimètre qu'il n'y a pas de court-circuit entre B+ et B-.
  4. Mets l'accu dans le support en respectant la polarité. Sur certains modules protégés, la sortie peut être coupée au départ ; brancher une fois l'USB réarme la protection et rétablit la sortie.
  5. Branche le câble USB : si la LED rouge s'allume, la charge a commencé. Quand l'accu est plein, la rouge s'éteint et la bleue ou la verte s'allume.
  6. Dès que le multimètre affiche la tension de l'accu (3,0–4,2 V) entre OUT+ et OUT-, tu peux mettre ton circuit en marche.
L'erreur la plus fréquente est de brancher le circuit sur B+ et B- d'un module protégé. Ainsi, le circuit fonctionne, mais la protection du DW01A est court-circuitée : l'accu peut se décharger sous 2 V et, en cas de court-circuit, le courant n'est pas limité. Brancher l'accu à l'envers détruit le module instantanément ; le TP4056 n'a pas de protection contre l'inversion de polarité.

Que signifient les LED du TP4056 ?

LED rouge (CHRG)LED bleue ou verte (STDBY)Signification
AlluméeÉteinteEn charge
ÉteinteAlluméeCharge terminée (4,2 V)
Clignote ou scintilleAlluméePas d'accu ou mauvais contact
ÉteinteÉteinteEntrée sous 4 V ou pas d'alimentation USB
Allumée pendant des heuresÉteinteLe circuit branché empêche la fin de charge ou l'accu est usé

Sans accu, il est normal que la LED bleue soit allumée et que la rouge clignote : le module charge et décharge sans cesse le condensateur de la borne d'accu vide. Tu peux estimer grossièrement le temps de charge avec capacité / courant × 1,2. Un accu de 2600 mAh se recharge en 3 heures environ à 1 A ; comme le courant diminue dans la dernière phase, cela prend un peu plus longtemps que la simple division.

Régler le courant de charge : la résistance Rprog

Le courant de charge est fixé par une seule résistance entre la broche PROG (broche 2) du TP4056 et GND. Sur la plupart des modules, elle est repérée R3 et porte le code 122, soit 1,2 kΩ, ce qui donne 1 A. Pour décoder ces marquages, tu peux utiliser l'outil code CMS. La formule est à peu près I (mA) = 1200 / Rprog (kΩ). Pour changer le courant, dessoude la résistance CMS et soude la valeur voulue ; si tu ne trouves pas de résistance CMS de la bonne taille, tu peux aussi souder une petite résistance traversante sur les deux pastilles.

RprogCourant de chargeAccu adapté
10 kΩ130 mAPetit LiPo de 200–300 mAh
5 kΩ250 mALiPo de 300–500 mAh
4 kΩ300 mALiPo de 500–600 mAh
3 kΩ400 mAEnviron 800 mAh
2 kΩ580 mA1000–1200 mAh
1,5 kΩ780 mA1500 mAh et plus
1,2 kΩ1000 mA18650 de 2000 mAh et plus (valeur d'usine du module)

La règle générale consiste à garder le courant de charge autour de la moitié de la capacité (0,5C) : 250 mA conviennent à un LiPo de 500 mAh et 1 A à un 18650 de 2600 mAh. Pense aussi à la chaleur : comme le TP4056 est linéaire, l'écart de tension entre l'entrée et l'accu se transforme en chaleur. En chargeant un accu de 3,6 V à 1 A sous 5 V, la puce dissipe (5 − 3,6) × 1 = 1,4 W ; c'est pourquoi le module chauffe beaucoup et peut réduire lui-même le courant. Tu peux aussi faire ce genre de calcul de puissance avec l'outil loi d'Ohm. Le port USB 2.0 d'un ordinateur ne fournit que 500 mA ; si tu charges souvent sur l'ordinateur, mieux vaut descendre le courant vers 500 mA.

Alimenter le circuit pendant la charge (load sharing)

Si tu veux que ton projet continue à tourner quand l'USB est branché, le plus simple est de laisser le circuit relié à OUT+ et OUT- ; le TP4056 charge alors l'accu et alimente le circuit en même temps. Mais la puce ne sait pas distinguer le courant qui va dans l'accu de celui qui va dans le circuit. Si ton circuit consomme en permanence plus de 100 mA, le courant total ne descend jamais sous le seuil de fin de charge, la charge ne s'arrête jamais et l'accu reste des heures à 4,2 V, ce qui réduit sa durée de vie. Si ton circuit consomme près de 1 A, l'accu ne se remplit même pas. Avec un ESP32 en sommeil profond ou de petits circuits de quelques mA, le branchement direct ne pose pas de problème en pratique ; pour les projets Wi-Fi allumés en permanence, les moteurs et les rubans LED, monte un circuit de partage de charge (load sharing).

ComposantBranchementRôle
Diode Schottky (1N5817, SS14)Anode au 5 V de l'USB (IN+), cathode à l'entrée positive du circuitAlimente directement le circuit quand l'USB est présent
MOSFET canal P (AO3401, DMG2305)Drain à l'accu (OUT+), source à l'entrée positive du circuitRelie l'accu au circuit en l'absence d'USB
Grille du MOSFETDirectement au 5 V de l'USB (IN+)Avec l'USB branché, le MOSFET reste bloqué et l'accu ne fait que charger
Résistance de 100 kΩEntre la grille du MOSFET et GNDQuand l'USB est débranché, elle tire la grille à 0 V et le MOSFET conduit
Avec ce montage, tant que l'USB est branché, ton circuit est alimenté à environ 4,7 V à travers la diode et le TP4056 ne fait que charger l'accu ; la charge s'arrête donc au bon moment. Dès que tu débranches, le MOSFET conduit très vite et le circuit continue sur l'accu presque sans interruption. Tu trouveras le fonctionnement d'un MOSFET dans utiliser un MOSFET avec Arduino et le choix de la diode dans qu'est-ce qu'une diode ?.

Besoin de 5 V ? Ajouter un module élévateur MT3608

La tension d'un 18650 varie entre 3,0 et 4,2 V ; ce n'est pas assez pour un Arduino Uno, des modules relais, des servomoteurs ou des LED WS2812B qui veulent du 5 V. La solution est un convertisseur élévateur (step-up ou boost). Le plus courant est le module MT3608 : il fournit une sortie réglable jusqu'à 28 V à partir d'une entrée de 2 à 24 V, découpe à 1,2 MHz et son interrupteur interne est limité à 4 A. En pratique, tu peux tirer sans risque environ 0,5 à 1 A sous 5 V d'un seul 18650 ; au-delà, le module chauffe et le rendement baisse. Si tu dois au contraire abaisser une tension, tu utilises le module abaisseur LM2596, qui fait exactement l'inverse.

  1. Relie les entrées VIN+ et VIN- du MT3608 aux bornes OUT+ et OUT- du TP4056.
  2. Sans rien brancher encore en sortie, place le multimètre entre VOUT+ et VOUT-.
  3. Tourne le trimmer bleu avec un petit tournevis pour régler la sortie sur 5,0–5,1 V. C'est un trimmer multitour : la tension peut ne commencer à bouger qu'après plusieurs tours, sois patient.
  4. Une fois le réglage fait, relie la broche 5V de ta carte à VOUT+ et sa broche GND à VOUT-.
  5. Mesure à nouveau la tension pendant que le circuit tourne ; si elle tombe sous 4,8 V en charge, raccourcis les fils ou réduis la consommation.
CarteComment l'alimenter avec un seul 18650Remarque
Arduino Uno / Nano5,0 V du MT3608 → broche 5VLa broche 5V contourne le régulateur ; ne dépasse jamais 5,5 V
Arduino Pro Mini 3,3 V (8 MHz)OUT+ directement sur la broche RAWSon régulateur à faible chute fonctionne avec la tension de l'accu
ESP32 DevKit5 V du MT3608 → broche VIN (5V)L'AMS1117 de la carte perd environ 1 V ; ne branche pas l'accu en direct
Raspberry Pi PicoOUT+ → diode Schottky → VSYS (broche 39)VSYS accepte 1,8–5,5 V ; pas besoin d'élévateur
Module GSM SIM800LOUT+ et OUT- en directDemande 3,4–4,4 V ; idéal pour le Li-ion
Ne branche jamais le MT3608 sur ta carte avant de l'avoir réglé : les modules sortent d'usine avec une tension inconnue, souvent bien au-dessus de 5 V, capable de griller un Arduino ou un ESP32 instantanément. De plus, les élévateurs n'ont pas de coupure de sortie ; même quand le module ne découpe pas, la tension de l'accu passe vers la sortie à travers la bobine et la diode. Pour vraiment éteindre ton projet, place un interrupteur entre l'accu et le module.

Si tu branches la carte en USB pour téléverser du code alors que la sortie de l'élévateur est encore reliée, tu mets deux sources d'alimentation en contact. Le plus sûr est de débrancher la sortie de l'élévateur pendant le téléversement. Tu trouveras en détail par quelle broche et comment alimenter un Arduino dans comment alimenter un Arduino.

Les accus en série ne se chargent pas avec un TP4056

Le TP4056 ne charge qu'une seule cellule (1S) jusqu'à 4,2 V. Un pack de deux 18650 en série (2S), courant dans les voitures robots, fait 7,4 V nominaux et 8,4 V une fois plein ; branché sur un seul TP4056, il ne se charge pas, et le module comme les cellules peuvent être endommagés. Mettre un TP4056 sur chaque cellule ne marche pas non plus : les entrées négatives des modules se rejoignent sur la même source USB et, comme le moins du module du haut est relié au plus de la cellule du bas, cette cellule se retrouve en court-circuit. Et comme sa tension de fin de charge est fixée à 4,2 V, le TP4056 ne convient pas non plus aux accus LiFePO4, dont la charge doit s'arrêter à 3,6 V.

  • Mettre en parallèle (1S2P) : avec deux cellules en parallèle, la tension reste à 3,7 V, la capacité double et tu peux les charger avec un TP4056. Vérifie qu'elles sont à la même tension avant de les relier.
  • Élever avec un boost : s'il te faut 7–12 V, élève la sortie des cellules en parallèle avec un MT3608.
  • Utiliser un circuit de charge 2S : un pack en série a besoin d'un chargeur CC/CV de 8,4 V et d'une carte BMS 2S avec équilibrage.
  • Sortir les cellules pour les charger : tu peux retirer les cellules d'un pack en série de leur support et les recharger une par une dans un chargeur 18650 séparé.

Mesurer la tension de l'accu : branchement du pont diviseur

Pour savoir à quel point l'accu est chargé, il suffit de mesurer sa tension. Mais un accu de 4,2 V ne peut pas aller directement sur une broche analogique de l'ESP32 ou de la Pico, car leurs entrées ADC supportent au maximum 3,3 V. La solution est un pont diviseur de tension fait de deux résistances égales : 100 kΩ + 100 kΩ ramènent 4,2 V à 2,1 V et ne consomment que 21 µA sur l'accu. Tu peux calculer les valeurs avec l'outil pont diviseur et lire le principe du montage dans le pont diviseur de tension. Ajouter un condensateur de 100 nF entre le point de mesure et GND stabilise nettement les lectures faites avec des résistances de forte valeur.

BranchementArduino UnoESP32Raspberry Pi Pico
Résistance du haut (100 kΩ)OUT+ → point milieuOUT+ → point milieuOUT+ → point milieu
Résistance du bas (100 kΩ)Point milieu → GNDPoint milieu → GNDPoint milieu → GND
Point milieu (mesure)A0GPIO 34 (ADC1)GP26 (ADC0)
Condensateur de 100 nFFacultatifPoint milieu → GNDPoint milieu → GND
OUT- du TP4056GNDGNDGND
Plage de l'ADC0–5 V, 10 bitsEnviron 0–3,1 V, 12 bits0–3,3 V, 12 bits
Sur l'ESP32, utilise uniquement les broches de l'ADC1 (GPIO 32–39) pour mesurer l'accu. Les broches de l'ADC2 ne sont pas lisibles quand le Wi-Fi est actif et renvoient des valeurs fausses. Les GPIO 34–39 sont des broches d'entrée uniquement et conviennent parfaitement à cet usage.

L'ADC de l'Arduino Uno utilise une référence de 5 V ; grâce au pont diviseur, un accu de 4,2 V apparaît comme 2,1 V sur A0 et la lecture sur 10 bits donne une valeur entre 0 et 1023. Quand la carte est alimentée par l'USB ou par un élévateur, la broche 5V n'est pas forcément à 5,00 V pile ; mesure-la au multimètre et inscris-la comme VREF dans le code, la précision s'en trouve nettement améliorée.

C++ (Arduino IDE)
1// Arduino Uno: 18650 pil voltajı, A0'da 100k + 100k bölücü / battery voltage, 100k + 100k divider on A0
2const float VREF = 5.0;      // 5V pinini multimetreyle ölçüp yaz / measure the 5V pin and enter it
3const float DIVIDER = 2.0;   // bölücü oranı / divider ratio
4
5void setup() {
6  Serial.begin(9600);
7}
8
9void loop() {
10  long sum = 0;
11  for (int i = 0; i < 16; i++) {      // 16 ölçümün ortalaması / average of 16 readings
12    sum += analogRead(A0);            // 0-1023
13    delay(2);
14  }
15  float v = (sum / 16.0) * VREF / 1024.0 * DIVIDER;
16  Serial.print(F("Pil / Battery: "));
17  Serial.print(v, 2);
18  Serial.println(F(" V"));
19  if (v < 3.3) Serial.println(F("Pil zayif / Battery low"));
20  delay(1000);
21}

Mesurer la tension de l'accu et afficher le pourcentage avec l'ESP32

L'ADC de l'ESP32 n'est pas parfaitement linéaire et varie d'une carte à l'autre. C'est pourquoi, au lieu d'un analogRead brut, il est plus précis d'utiliser analogReadMilliVolts, qui applique l'étalonnage d'usine de la puce et renvoie directement des millivolts. Le code ci-dessous fait la moyenne de 16 lectures, multiplie par le rapport du pont diviseur pour obtenir la tension de l'accu, la convertit en pourcentage à l'aide d'un tableau et, si l'accu passe sous 3,3 V, met l'ESP32 en sommeil profond pendant 10 minutes.

C++ (Arduino IDE)
1// TP4056 + 18650: ESP32 ile pil voltajı ve yüzdesi / battery voltage and percentage with ESP32
2const int BAT_PIN = 34;          // ADC1 pini, Wi-Fi açıkken de çalışır / ADC1 pin, works with Wi-Fi on
3const float DIVIDER = 2.0;       // 100k + 100k bölücü: pil / 2 / 100k + 100k divider: battery / 2
4const float LOW_BAT = 3.30;      // bu değerin altında uykuya geç / go to sleep below this voltage
5
6// Yaklaşık gerilim-yüzde tablosu (dinlenen pil) / approximate voltage-percent table (resting cell)
7const float volts[]   = {3.30, 3.60, 3.70, 3.80, 3.85, 3.90, 4.00, 4.10, 4.20};
8const int   percent[] = {   0,    5,   12,   40,   55,   63,   78,   89,  100};
9const int POINTS = 9;
10
11float readBattery() {
12  uint32_t sum = 0;
13  for (int i = 0; i < 16; i++) {           // 16 ölçümün ortalaması / average of 16 readings
14    sum += analogReadMilliVolts(BAT_PIN);  // kalibre edilmiş mV / calibrated millivolts
15    delay(2);
16  }
17  return (sum / 16.0) * DIVIDER / 1000.0;  // pil gerilimi (V) / battery voltage (V)
18}
19
20int toPercent(float v) {
21  if (v <= volts[0]) return 0;
22  if (v >= volts[POINTS - 1]) return 100;
23  for (int i = 1; i < POINTS; i++) {
24    if (v < volts[i]) {                    // iki nokta arasında doğrusal / linear between two points
25      float k = (v - volts[i - 1]) / (volts[i] - volts[i - 1]);
26      return (int)(percent[i - 1] + k * (percent[i] - percent[i - 1]));
27    }
28  }
29  return 100;
30}
31
32void setup() {
33  Serial.begin(115200);
34  analogReadResolution(12);                // 0-4095 aralığı / 0-4095 range
35}
36
37void loop() {
38  float v = readBattery();
39  Serial.printf("Pil / Battery: %.2f V  %%%d\n", v, toPercent(v));
40
41  if (v < LOW_BAT) {                       // yazılımla derin deşarj koruması / software deep-discharge guard
42    Serial.println("Pil zayif, uyku / Battery low, sleeping");
43    esp_sleep_enable_timer_wakeup(10ULL * 60 * 1000000);  // 10 dakika sonra tekrar bak / check again in 10 min
44    esp_deep_sleep_start();
45  }
46  delay(5000);
47}
Tension de l'accuCharge approximative
4,20 V100 %
4,10 V89 %
4,00 V78 %
3,90 V63 %
3,80 V40 %
3,70 V12 %
3,60 V5 %
3,30 V0 % (arrête le projet)

Ces valeurs valent pour un accu au repos. Quand l'ESP32 tire des pointes de courant en émettant en Wi-Fi, la tension de l'accu baisse un peu, et pendant la charge le TP4056 la fait monter artificiellement ; la mesure la plus juste se fait donc avant d'activer le Wi-Fi et chargeur débranché. Pour une longue autonomie, mesure toutes les quelques minutes et utilise entre-temps le sommeil profond de l'ESP32. Garde aussi en tête que les cartes DevKit avec puce USB-série et LED d'alimentation consomment plusieurs mA même en veille ; pour les projets qui doivent tenir des mois sur accu, mieux vaut choisir des cartes basse consommation.

Mesurer l'accu avec la Raspberry Pi Pico (MicroPython)

La Pico a de la chance : sa broche VSYS alimente un régulateur buck-boost intégré qui accepte 1,8–5,5 V ; elle fonctionne donc avec un seul 18650 sans élévateur. Relie OUT+ du TP4056 à VSYS (broche 39) à travers une diode Schottky (1N5817) et OUT- à GND (broche 38) ; la diode empêche le 5 V de la Pico de refluer vers l'accu quand l'USB est branché. Tu peux mesurer la tension de l'accu avec un pont diviseur 100k + 100k sur GP26. Sur une Pico classique, la broche GP29 mesure déjà un tiers de VSYS, mais cette valeur est plus basse de la chute de tension de la diode ; sur la Pico W, cette broche est partagée avec la puce Wi-Fi, donc un pont diviseur externe est la solution la plus sûre.

MicroPython
1from machine import ADC
2import time
3
4adc = ADC(26)                  # GP26 = ADC0, 100k + 100k bölücü / divider
5CONV = 3.3 / 65535             # read_u16 değerini volta çevirir / converts read_u16 to volts
6DIVIDER = 2                    # bölücü oranı / divider ratio
7
8while True:
9    total = 0
10    for _ in range(16):        # 16 ölçümün ortalaması / average of 16 readings
11        total += adc.read_u16()
12        time.sleep_ms(2)
13    v = total / 16 * CONV * DIVIDER
14    print("Pil / Battery: {:.2f} V".format(v))
15    if v < 3.3:
16        print("Pil zayif / Battery low")   # projeyi durdur / stop the project
17    time.sleep(2)

read_u16 renvoie une valeur de 0 à 65535 ; en la multipliant par 3,3 / 65535 tu obtiens la tension sur la broche, puis en la multipliant par le rapport du pont, 2, la tension de l'accu. Si tu débutes avec la Pico, qu'est-ce que la Raspberry Pi Pico ? t'explique pas à pas comment installer MicroPython.

Idées de projets avec le TP4056 et un 18650

  • Station météo portable : fais tourner un ESP32, un capteur de température et un écran OLED sur un seul 18650, et affiche le pourcentage de l'accu dans un coin de l'écran.
  • Capteur solaire : branche sur IN+/IN- un petit panneau solaire de 6 V dont la tension à vide reste sous 8 V, et fais tourner un ESP32 pendant des jours grâce au sommeil profond.
  • Boîtier d'alarme par SMS : le SIM800L demande 3,4–4,4 V ; il s'alimente donc directement sur un 18650 et envoie un SMS dès qu'il détecte un mouvement.
  • Veilleuse rechargeable : fabrique une lampe qui s'allume dans le noir grâce à une LDR et se recharge en USB-C.
  • Voiture robot : charge deux 18650 en parallèle avec un TP4056 et élève la tension des moteurs avec un module boost ; détails dans fabriquer une voiture robot Arduino.
  • Alerte batterie sur ton téléphone : quand l'accu passe sous 20 %, l'ESP32 t'envoie un message via un bot Telegram.

Erreurs fréquentes et solutions

ProblèmeCause probableSolution
Pas de tension entre OUT+ et OUT-La protection s'est verrouillée (décharge profonde ou première mise en place de l'accu)Branche l'USB quelques secondes ; la protection se réarme
La LED rouge reste allumée des heuresLe circuit branché consomme plus de 100 mA ou l'accu est uséMonte un circuit de partage de charge et teste l'accu seul
Les deux LED éteintesMoins de 4 V en entrée : câble défectueux ou adaptateur trop faibleEssaie un autre câble et un adaptateur d'au moins 1 A
Ne charge pas avec un câble USB-C vers USB-CIl manque les résistances CC sur certains modules bon marchéUtilise un câble USB-A vers USB-C
Le module chauffe beaucoupPerte normale d'une charge linéaire à 1 A (environ 1,4 W)Réduis le courant avec une Rprog plus grande et ventile la carte
L'ESP32 redémarre sans arrêtAccu faible ou brownout dû à la chute de l'AMS1117Fournis 5 V avec un élévateur et vérifie la tension de l'accu
La tension mesurée diffère du multimètreMauvais rapport de pont ou mauvaise tension de référenceCompare au multimètre et corrige le coefficient dans le code
Mesurer chaque point au multimètre avant la mise sous tension évite la plupart des erreurs : l'accu doit afficher 3–4,2 V, les bornes OUT la tension de l'accu et la sortie du MT3608 5,0 V. Si tu débutes avec le multimètre, comment utiliser un multimètre t'aidera ; et si ton ESP32 redémarre sans arrêt quand l'accu est faible, consulte erreur brownout de l'ESP32.

Bien branché, le TP4056 est un composant fiable et bon marché qui libère tes projets du câble : l'accu sur B+ et B-, le circuit sur OUT+ et OUT-, un courant adapté à l'accu, un élévateur pour le 5 V et la tension de l'accu surveillée par logiciel. Dans l'application BlueGrays, tu peux suivre pas à pas, avec schémas et code prêt à l'emploi, des projets adaptés au fonctionnement sur accu, comme l'économie d'énergie avec le sommeil profond de l'ESP32, un voltmètre numérique à écran LCD et un enregistreur de température.

Questions fréquentes

Quelle est la différence entre B+ et OUT+ sur un module TP4056 ?

B+ et B- servent uniquement à brancher l'accu ; OUT+ et OUT- sont la sortie qui passe par le circuit de protection, et c'est là que va ton circuit. Sur un module protégé, OUT+ est en fait le même point que B+. La différence se trouve côté négatif, car les MOSFET qui déconnectent l'accu en cas de besoin sont placés entre OUT- et B-.

Combien de temps faut-il au TP4056 pour charger un 18650 ?

Avec le courant d'usine de 1 A, un 18650 de 2500–3000 mAh se recharge en 3 à 3,5 heures environ. Comme le courant baisse dans la dernière phase, cela prend environ 20 % de plus que la capacité divisée par le courant. Si tu as réduit le courant, la durée augmente dans la même proportion.

Le TP4056 peut-il alimenter un circuit pendant la charge ?

Oui, un circuit branché sur les bornes OUT reste alimenté pendant la charge. Mais s'il consomme en permanence plus de 100 mA, la charge peut ne jamais se terminer et l'accu reste maintenu à 4,2 V. Pour les grosses consommations, mieux vaut monter un circuit de partage de charge avec une diode Schottky et un MOSFET canal P.

Peut-on charger deux accus 18650 avec un TP4056 ?

Deux cellules en parallèle (3,7 V) se chargent sans problème, c'est juste plus long. Deux cellules en série (7,4 V) ne peuvent pas être chargées par un TP4056, car le module s'arrête à 4,2 V pour une seule cellule. Les packs en série demandent un chargeur 2S de 8,4 V et une carte BMS avec équilibrage.

Que signifient les LED rouge et bleue du TP4056 ?

La LED rouge indique que l'accu est en charge, la bleue ou la verte que la charge est terminée. Sans accu, la LED bleue s'allume et la rouge clignote. Si les deux sont éteintes, le module ne reçoit pas assez de tension en entrée.

Peut-on alimenter un ESP32 directement avec un accu 18650 ?

La puce ESP32 fonctionne en 3,3 V : un accu de 4,2 V ne peut pas aller directement sur la puce. Le régulateur AMS1117 des cartes DevKit perd environ 1 V, donc dès que l'accu descend à 3,7 V la tension ne suffit plus. Le plus simple est de produire du 5 V avec un MT3608 pour la broche VIN ou d'utiliser un régulateur 3,3 V à faible chute.

Voir tous les projets
Clignotement LED avec ESP32
#103Débutant

Clignotement LED avec ESP32

Enseigne l'utilisation de base des sorties GPIO avec l'ESP32. Nous obtenons un effet de clignotement en allumant et éteignant une LED à partir de la broche numérique. Version ESP32 du projet blink classique sur Arduino UNO ; les commandes de base de blink dans l'environnement Arduino restent les mêmes, mais le brochage et les niveaux GPIO de 3,3 V de l'ESP32 diffèrent de ceux de l'Arduino UNO.

4.7(37)
99
Mesure de l'intensité lumineuse avec le module LDR ESP32
#113Débutant

Mesure de l'intensité lumineuse avec le module LDR ESP32

Suivi en temps réel sur le moniteur série de la valeur brute de l'ADC du module LDR et du pourcentage relatif de luminosité calculé à partir de références dans l'obscurité et à la lumière. Ce pourcentage n'est pas une mesure en lux. Permet de comprendre le principe de calibrage du module. Il est préférable de réaliser cet exercice avant le projet 10, car il sert à déterminer la valeur seuil.

4.6(36)
55
Mode veille profonde de l'ESP32 — Économie de batterie (OLED + compteur RAM RTC)
#135Avancé
Premium

Mode veille profonde de l'ESP32 — Économie de batterie (OLED + compteur RAM RTC)

Le mode « Deep Sleep » de l'ESP32 réduit la consommation de courant à environ 10 µA en désactivant le processeur et la plupart des périphériques, ce qui revêt une importance cruciale pour les appareils IoT fonctionnant sur batterie. Dans ce projet, nous utilisons trois sources de réveil différentes : une minuterie (timer, 15 s), une broche externe (EXT0 — bouton GPIO 33) et un capteur tactile (T0/GPIO 4). Les variables marquées avec RTC_DATA_ATTR sont conservées pendant le mode Deep Sleep — le

4.3(10)
16
Voltmètre numérique avec écran LCD
#56Intermédiaire
Premium

Voltmètre numérique avec écran LCD

Découvre quelle tension fournit une pile ou un adaptateur avec un appareil de mesure fait maison. Un diviseur de deux résistances abaisse la tension élevée à un niveau que la carte peut lire, et l'Ard

4.5(27)
36
Enregistreur de Température ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
#144Avancé
Premium

Enregistreur de Température ESP32 (DHT22 + DS1307 RTC + microSD + OLED)

Construis un enregistreur de température horodaté avec ESP32 ! Lis la température/humidité du DHT22 chaque minute, obtiens l'heure réelle du DS1307 RTC et enregistre sur carte microSD au format CSV. L'OLED affiche en direct la température (grande police), le pourcentage d'humidité, l'horodatage et le compteur. Le fichier /temp_log.csv sur la carte SD s'ouvre dans Excel, Google Sheets ou Python pandas pour analyse — parfait pour surveillance de serre, suivi de température à domicile, c

4.7(7)
12
ESP32 HTTPClient + API météo (avec écran OLED SSD1306)
#134Avancé
Premium

ESP32 HTTPClient + API météo (avec écran OLED SSD1306)

Dans ce projet, nous effectuons un appel à l'API REST de la météo (wttr.in) via Internet à l'aide de l'ESP32 et de la bibliothèque HTTPClient.h. Contrairement à la version précédente avec écran LCD I2C, nous utilisons ici un écran OLED SSD1306 (128×64) — ce qui permet d’afficher une police de grande taille, des icônes vectorielles et une présentation visuelle riche sur un seul écran. Sept icônes vectorielles différentes représentant les conditions météorologiques (ensoleillé, partiellement nua

4.3(10)
19
Système d'Alarme de Mouvement ESP32 (PIR + Buzzer + LED + Telegram)
#145Avancé
Premium

Système d'Alarme de Mouvement ESP32 (PIR + Buzzer + LED + Telegram)

Un système d'alarme de sécurité intelligent qui active le buzzer et la LED lorsque le capteur PIR détecte un mouvement, tout en envoyant une notification instantanée au propriétaire via Telegram. Il intègre un délai d'attente de 30 secondes pour limiter la fréquence des alarmes répétées ; ce mécanisme ne vérifie pas la validité des détections du capteur PIR et n'élimine pas les faux déclenchements. Idéal pour la sécurité domestique, la surveillance de garage, d'entrepôts ou de bureaux. Avec l'ES

0.0(0)
9
Voiture contrôlée par Bluetooth avec L298N
#80Avancé
Premium

Voiture contrôlée par Bluetooth avec L298N

Transforme ton téléphone en télécommande et pilote ta propre voiture robot. L'Arduino reçoit, via un module Bluetooth, les ordres d'une appli de télécommande sur ton téléphone et fait tourner les roue

5.0(38)
65