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.

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éristique | Valeur |
|---|---|
| Tension d'entrée | 4,0–8 V (5 V conseillé ; micro USB ou USB-C) |
| Tension de fin de charge | 4,2 V (±1,5 %) |
| Courant de charge | 1 A maximum ; 1 A par défaut sur les modules (Rprog = 1,2 kΩ) |
| Précharge | Sous 2,9 V, environ 1/10 du courant réglé |
| Fin de charge | Quand le courant tombe à 1/10 de la valeur réglée (C/10) |
| Recharge | Automatique quand l'accu redescend vers 4,05 V |
| Sorties d'état | LED CHRG (en charge) et STDBY (plein) |
| Accus compatibles | Une 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éristique | Module non protégé | Module protégé (DW01A + 8205A) |
|---|---|---|
| Pastilles | IN+, IN-, BAT+, BAT- | IN+, IN-, B+, B-, OUT+, OUT- |
| Protection contre la surcharge | Seulement la limite de 4,2 V du TP4056 | Coupe en plus vers 4,25–4,3 V |
| Protection contre la décharge profonde | Aucune | Coupe vers 2,4 V, réarme vers 3,0 V |
| Surintensité et court-circuit | Aucune | Coupe vers 3 A et en cas de court-circuit |
| Quand le choisir ? | Si l'accu a déjà son propre circuit de protection | Avec des cellules nues non protégées, donc dans presque tous les projets |
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.
| État | Tension | Explication |
|---|---|---|
| Charge complète | 4,20 V | Le TP4056 arrête la charge ici |
| Nominale | 3,6–3,7 V | La valeur de l'étiquette, tension moyenne de fonctionnement |
| Considéré comme vide | 3,0–3,3 V | Arrêter le projet ici prolonge la durée de vie de l'accu |
| Coupure de protection | 2,4–2,5 V | Le DW01A coupe la sortie ; évite de descendre aussi bas |
| Zone dangereuse | Moins de 2,0 V | Ne recharge pas un accu resté longtemps à ce niveau ; remplace-le |

Branchement du TP4056 : les bornes IN, B+/B- et OUT+/OUT-
| Pastille | Se branche sur | Remarque |
|---|---|---|
| Entrée USB | Adaptateur 5 V ou ordinateur | Micro USB ou USB-C ; le plus simple |
| IN+ / IN- | Plus et moins d'une source 5 V externe | Pour 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 18650 | Seul 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 ensemble | Aucune protection ; la charge est en parallèle avec l'accu |
- Soude le fil rouge du support d'accu sur B+ et le fil noir sur B-. Ne mets pas encore l'accu.
- 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.
- Vérifie les soudures et assure-toi au multimètre qu'il n'y a pas de court-circuit entre B+ et B-.
- 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.
- 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.
- 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.
Que signifient les LED du TP4056 ?
| LED rouge (CHRG) | LED bleue ou verte (STDBY) | Signification |
|---|---|---|
| Allumée | Éteinte | En charge |
| Éteinte | Allumée | Charge terminée (4,2 V) |
| Clignote ou scintille | Allumée | Pas d'accu ou mauvais contact |
| Éteinte | Éteinte | Entrée sous 4 V ou pas d'alimentation USB |
| Allumée pendant des heures | Éteinte | Le 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.
| Rprog | Courant de charge | Accu adapté |
|---|---|---|
| 10 kΩ | 130 mA | Petit LiPo de 200–300 mAh |
| 5 kΩ | 250 mA | LiPo de 300–500 mAh |
| 4 kΩ | 300 mA | LiPo de 500–600 mAh |
| 3 kΩ | 400 mA | Environ 800 mAh |
| 2 kΩ | 580 mA | 1000–1200 mAh |
| 1,5 kΩ | 780 mA | 1500 mAh et plus |
| 1,2 kΩ | 1000 mA | 18650 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).
| Composant | Branchement | Rôle |
|---|---|---|
| Diode Schottky (1N5817, SS14) | Anode au 5 V de l'USB (IN+), cathode à l'entrée positive du circuit | Alimente directement le circuit quand l'USB est présent |
| MOSFET canal P (AO3401, DMG2305) | Drain à l'accu (OUT+), source à l'entrée positive du circuit | Relie l'accu au circuit en l'absence d'USB |
| Grille du MOSFET | Directement 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 GND | Quand l'USB est débranché, elle tire la grille à 0 V et le MOSFET conduit |
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.
- Relie les entrées VIN+ et VIN- du MT3608 aux bornes OUT+ et OUT- du TP4056.
- Sans rien brancher encore en sortie, place le multimètre entre VOUT+ et VOUT-.
- 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.
- Une fois le réglage fait, relie la broche 5V de ta carte à VOUT+ et sa broche GND à VOUT-.
- 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.
| Carte | Comment l'alimenter avec un seul 18650 | Remarque |
|---|---|---|
| Arduino Uno / Nano | 5,0 V du MT3608 → broche 5V | La 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 RAW | Son régulateur à faible chute fonctionne avec la tension de l'accu |
| ESP32 DevKit | 5 V du MT3608 → broche VIN (5V) | L'AMS1117 de la carte perd environ 1 V ; ne branche pas l'accu en direct |
| Raspberry Pi Pico | OUT+ → diode Schottky → VSYS (broche 39) | VSYS accepte 1,8–5,5 V ; pas besoin d'élévateur |
| Module GSM SIM800L | OUT+ et OUT- en direct | Demande 3,4–4,4 V ; idéal pour le Li-ion |
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.
| Branchement | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| Résistance du haut (100 kΩ) | OUT+ → point milieu | OUT+ → point milieu | OUT+ → point milieu |
| Résistance du bas (100 kΩ) | Point milieu → GND | Point milieu → GND | Point milieu → GND |
| Point milieu (mesure) | A0 | GPIO 34 (ADC1) | GP26 (ADC0) |
| Condensateur de 100 nF | Facultatif | Point milieu → GND | Point milieu → GND |
| OUT- du TP4056 | GND | GND | GND |
| Plage de l'ADC | 0–5 V, 10 bits | Environ 0–3,1 V, 12 bits | 0–3,3 V, 12 bits |
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.
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.
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'accu | Charge approximative |
|---|---|
| 4,20 V | 100 % |
| 4,10 V | 89 % |
| 4,00 V | 78 % |
| 3,90 V | 63 % |
| 3,80 V | 40 % |
| 3,70 V | 12 % |
| 3,60 V | 5 % |
| 3,30 V | 0 % (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.
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ème | Cause probable | Solution |
|---|---|---|
| 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 heures | Le 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 éteintes | Moins de 4 V en entrée : câble défectueux ou adaptateur trop faible | Essaie un autre câble et un adaptateur d'au moins 1 A |
| Ne charge pas avec un câble USB-C vers USB-C | Il manque les résistances CC sur certains modules bon marché | Utilise un câble USB-A vers USB-C |
| Le module chauffe beaucoup | Perte 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êt | Accu faible ou brownout dû à la chute de l'AMS1117 | Fournis 5 V avec un élévateur et vérifie la tension de l'accu |
| La tension mesurée diffère du multimètre | Mauvais rapport de pont ou mauvaise tension de référence | Compare au multimètre et corrige le coefficient dans le code |
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.
Projets à réaliser après cet article
Voir tous les projets
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.

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.

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

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

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

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

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

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
Autres articles
Application BlueGrays
Réalise ce montage pas à pas sur ton téléphone
Schéma, code et liste des composants sur un seul écran. Plus de 200 projets Arduino, ESP32 et Pico à réaliser.
Scanne avec ton téléphone
Pointe l’appareil photo vers le code : la boutique d’applications de ton téléphone s’ouvre.
ou ouvre la boutique

