Dans une usine, une station de pompage ou une serre, la plupart des capteurs sérieux ne parlent ni en Wi-Fi ni en I2C. Ils envoient un simple courant électrique, entre 4 et 20 milliampères, sur deux fils. C’est le fameux signal 4-20 mA. On le trouve sur les capteurs de pression, de niveau, de débit ou de température, et il fonctionne de la même façon depuis des dizaines d’années.
Bonne nouvelle : avec une simple carte ESP32, vous pouvez lire ces capteurs, afficher la mesure et l’envoyer sur votre téléphone. Dans ce guide, on vous explique le principe avec des mots simples, le câblage pas à pas, le petit calcul à connaître et un exemple de code prêt à l’emploi. Si vous hésitez encore entre automate et microcontrôleur, lisez d’abord notre article PLC ou Arduino en milieu industriel.
Le 4-20 mA, c’est quoi exactement ?
Le principe est très simple : le capteur fait varier le courant qui circule dans la boucle selon ce qu’il mesure.
- 4 mA correspond au bas de l’échelle (par exemple 0 bar).
- 20 mA correspond au haut de l’échelle (par exemple 10 bar).
- Entre les deux, c’est proportionnel : 12 mA, pile au milieu, veut dire 5 bar.
L’échelle est écrite sur le capteur ou dans sa fiche technique : « 0-10 bar », « 0-100 °C », « 0-5 m »… Le capteur ne vous donne donc pas directement des bars ou des degrés, il vous donne un courant, et c’est à vous de faire la conversion. C’est ce qu’on va faire avec l’ESP32.
Pourquoi un courant et pas une tension ?
Dans une boucle fermée, le courant est le même partout, comme l’eau dans un tuyau sans fuite. Même si le câble fait 200 mètres et que ses fils ont un peu de résistance, les 12 mA envoyés par le capteur arrivent toujours 12 mA à l’autre bout. Une tension, elle, baisse le long du câble et se laisse plus facilement perturber par les moteurs et les variateurs voisins. Voilà pourquoi l’industrie a choisi le courant.
Pourquoi commencer à 4 mA et pas à 0 ?
C’est l’astuce la plus utile du système. Si le capteur envoyait 0 mA pour « 0 bar », vous ne pourriez pas faire la différence entre une pression nulle et un fil coupé. Avec le 4-20 mA, un courant inférieur à environ 3,5 mA signifie forcément un problème : câble coupé, capteur débranché ou en panne. Votre programme peut donc déclencher une alarme. Et ces 4 mA minimum servent aussi à alimenter l’électronique du capteur lui-même.
2 fils, 3 fils ou 4 fils ?
- 2 fils (le plus courant) : le même câble alimente le capteur et transporte le signal. C’est le montage de ce guide.
- 3 fils : un fil +24 V, un fil 0 V commun et un fil de signal.
- 4 fils : alimentation séparée (souvent 230 V ou 24 V) et deux fils de signal à part.
Regardez toujours le schéma de raccordement dans la notice du capteur avant de brancher : c’est elle qui fait foi.

Le principe pour lire un 4-20 mA avec un ESP32
Un ESP32 ne sait pas mesurer un courant directement. Son entrée analogique (ADC) mesure une tension, et pas plus de 3,3 V. La solution tient en un seul composant : une résistance placée dans la boucle. Le courant qui la traverse crée une tension à ses bornes, et c’est cette tension que l’ESP32 lit. C’est la loi d’Ohm : U = R × I. Vous pouvez refaire le calcul avec notre calculateur de loi d’Ohm.
Avec une résistance de 100 Ω, voici ce que voit l’ESP32 :
| Courant dans la boucle | Tension sur la résistance de 100 Ω | Signification (capteur 0-10 bar) |
|---|---|---|
| moins de 3,5 mA | moins de 0,35 V | Défaut : fil coupé ou capteur en panne |
| 4 mA | 0,40 V | 0 bar |
| 12 mA | 1,20 V | 5 bar |
| 20 mA | 2,00 V | 10 bar |
Attention au piège des 250 Ω
Sur les automates, on utilise souvent une résistance de 250 Ω, qui transforme 4-20 mA en 1-5 V. Sur un ESP32, c’est une mauvaise idée : à 20 mA, vous auriez 5 V sur une entrée prévue pour 3,3 V maximum, et vous risquez de l’abîmer. Avec 100 Ω, on reste entre 0,4 et 2 V, une zone où l’ADC de l’ESP32 est à l’aise. Choisissez une résistance précise à 1 % : toute erreur sur sa valeur devient une erreur sur la mesure.
Le matériel nécessaire
- Une carte ESP32, par exemple la carte ESP32-DevKitC-VE d’Espressif pour débuter. Pour un usage en armoire, l’Olimex ESP32-EVB-IND est conçue pour une plage de température industrielle, et l’ESP32-BUG-ETH-POE se branche en Ethernet et s’alimente par le câble réseau. Toutes les cartes sont dans notre rayon ESP32.
- Une alimentation 24 V continu, comme l’alimentation rail DIN 24 V Mean Well NDR-240-24 si vous équipez toute une armoire.
- Un module abaisseur de tension LM2596 pour tirer 5 V du 24 V et alimenter l’ESP32 (réglez sa sortie avec un multimètre avant de brancher la carte).
- Une résistance 100 Ω à 1 % pour la mesure (ou sa version CMS 0805 si vous faites un circuit imprimé), et une résistance de 1 kΩ pour protéger l’entrée : rayon Résistances.
- Pour la protection : une diode Zener 3,6 V entre l’entrée et le GND, un petit condensateur de 100 nF (rayon Condensateurs), et éventuellement une diode TVS SMCJ30A sur la ligne 24 V.
- Pour le raccordement : un bornier enfichable Phoenix Contact MSTB 2,5/4, des embouts isolés 0,75 mm², une borne porte-fusible rail DIN à LED et du câble blindé à paire torsadée (rayons Borniers industriels et Câbles).
- Un multimètre, indispensable pour vérifier le courant pendant les essais.
Le câblage pas à pas

- Coupez l’alimentation avant de câbler, et gardez le 24 V bien séparé de toute partie en 230 V.
- Reliez le +24 V de l’alimentation à la borne + du capteur (de préférence en passant par un fusible).
- Reliez la borne – du capteur à une extrémité de la résistance de 100 Ω. Ce point de jonction, c’est le point A.
- Reliez l’autre extrémité de la résistance au 0 V de l’alimentation. La boucle est fermée : le courant part du +24 V, traverse le capteur, puis la résistance, et revient au 0 V.
- Du point A, passez par la résistance de 1 kΩ et arrivez sur l’entrée GPIO34 de l’ESP32. Ajoutez la Zener 3,6 V et le condensateur de 100 nF entre GPIO34 et GND : ils protègent l’entrée et lissent le signal.
- Reliez le GND de l’ESP32 au 0 V de l’alimentation 24 V. Sans ce fil commun, la mesure n’a aucun sens : c’est l’oubli le plus fréquent.
Pourquoi GPIO34 ? Parce que c’est une entrée du convertisseur ADC1, qui continue de fonctionner quand le Wi-Fi est actif (les broches de l’ADC2 ne le permettent pas sur l’ESP32 classique). Les broches 32 à 39 font aussi l’affaire. Pour le câble entre le capteur et l’armoire, une section de 0,5 à 0,75 mm² suffit largement pour 20 mA ; notre convertisseur AWG / mm² vous aide si la fiche du câble est en AWG. Et pour la partie borniers, repérage et goulottes, suivez nos conseils pour câbler une armoire électrique proprement.
Le code ESP32 (Arduino IDE)
Ce programme lit la tension au point A, la convertit en milliampères, puis en valeur physique. Il fait une moyenne de 32 mesures pour éviter que l’affichage saute. Il utilise la fonction analogReadMilliVolts() du cœur ESP32 pour Arduino, qui tient compte de l’étalonnage interne de la puce. Si vous débutez avec l’ESP32, notre projet de station météo connectée avec ESP32 montre comment installer la carte dans l’Arduino IDE.
// Lecture d'un capteur 4-20 mA avec un ESP32
const int BROCHE_MESURE = 34; // GPIO34 = ADC1, compatible Wi-Fi
const float R_MESURE = 100.0; // résistance de mesure en ohms
const float ECHELLE_MIN = 0.0; // valeur à 4 mA (ex. 0 bar)
const float ECHELLE_MAX = 10.0; // valeur à 20 mA (ex. 10 bar)
void setup() {
Serial.begin(115200);
}
void loop() {
// Moyenne de 32 mesures pour lisser le bruit
long somme = 0;
for (int i = 0; i < 32; i++) {
somme += analogReadMilliVolts(BROCHE_MESURE);
delay(2);
}
float millivolts = somme / 32.0;
float milliamperes = millivolts / R_MESURE; // I = U / R (mV / ohm = mA)
if (milliamperes < 3.5) {
Serial.println("Alarme : boucle coupée ou capteur en défaut");
} else {
float valeur = ECHELLE_MIN
+ (milliamperes - 4.0) * (ECHELLE_MAX - ECHELLE_MIN) / 16.0;
Serial.printf("Courant : %.2f mA -> Mesure : %.2f bar\n",
milliamperes, valeur);
}
delay(1000);
}
Pour un autre capteur, il suffit de changer ECHELLE_MIN et ECHELLE_MAX (par exemple 0 et 100 pour un capteur de température 0-100 °C) et l’unité affichée. Le chiffre 16 dans la formule vient simplement de 20 − 4 = 16 mA, la largeur de l’échelle.
Vérifier et étalonner sa mesure
L’ADC de l’ESP32 n’est pas un instrument de laboratoire : il peut se tromper de quelques pour cent. Pour une mesure fiable, prenez cinq minutes pour vérifier :
- Placez un multimètre en mode milliampères, en série dans la boucle (entre le capteur et la résistance) et comparez sa valeur avec celle affichée par l’ESP32.
- Si l’écart est constant, corrigez-le dans le code avec un petit facteur (par exemple multiplier par 1,02).
- Testez au moins deux points : capteur au repos (proche de 4 mA) et capteur sollicité (pression ou température plus élevée).
- Pour une précision industrielle, utilisez un convertisseur analogique-numérique externe de 16 bits au lieu de l’ADC interne.
Les erreurs fréquentes à éviter
- Une résistance de 250 Ω sur l’ESP32 : jusqu’à 5 V sur l’entrée, danger pour la carte. Restez à 100 Ω.
- Oublier le GND commun entre l’ESP32 et l’alimentation 24 V : la mesure part dans tous les sens.
- Inverser le + et le – du capteur : la plupart des capteurs sont protégés, mais rien ne circule et vous lisez « boucle coupée ».
- Une alimentation trop faible : le capteur a besoin d’une tension minimale à ses bornes (souvent 10 à 12 V, voir sa fiche). Avec 24 V, il reste largement assez après la résistance de mesure.
- Faire passer le câble du capteur à côté des câbles moteur : utilisez du câble blindé et raccordez le blindage à la terre d’un seul côté, côté armoire.
- Utiliser une broche de l’ADC2 sur un projet en Wi-Fi : les lectures échouent dès que le Wi-Fi est actif.
Et pour un vrai projet industriel ?
Le montage de ce guide est parfait pour apprendre, faire un prototype ou surveiller une installation simple : niveau d’une cuve, pression d’un réseau d’eau, température d’une chambre froide. Pour une machine en production, pensez à mettre l’électronique dans un boîtier IP66, à isoler galvaniquement l’entrée si plusieurs capteurs partagent la même alimentation, et à vérifier si un automate n’est pas plus adapté. Pour choisir votre carte, vous pouvez aussi relire notre comparatif Arduino ou ESP32.
Vous préparez un projet avec plusieurs capteurs 4-20 mA, une armoire complète ou des gammes industrielles sur devis ? Contactez-nous avec votre liste : nous vous aidons à trouver les bonnes références.

