Un DHT11 acheté 2,40 € sur une place de marché, branché sur un Arduino Uno, et un Serial Monitor qui affiche « 0.00 % humidity, 0.00 °C » pendant vingt minutes. Voilà la première image que la plupart des gens gardent de leur premier capteur de température. Le composant n'est pas mort. Le code n'est pas faux. Il manque juste une résistance de 10 kΩ entre DATA et VCC, et une bibliothèque correctement installée.
Ce genre de détail, aucune fiche produit ne vous le dira. C'est pourtant ce qui sépare un montage qui fonctionne d'une après-midi perdue. Alors voici ce que je vais faire ici : vous donner le parcours complet d'une vraie formation Arduino capteur température débutant, dans l'ordre où on rencontre les problèmes, avec les chiffres qui comptent et les pièges qui coûtent du temps.
Points clés à retenir
- Trois familles de capteurs dominent le débutant : DHT11 (température + humidité, bon marché, imprécis), DHT22 (même usage, nettement plus fiable), LM35 (analogique, température seule, précis).
- Le DHT11 n'a pas besoin de résistance pull-up sur certaines cartes breakout, mais le capteur nu, oui : 10 kΩ entre DATA et 5 V.
- Un DHT ne se lit pas en rafale : 2 secondes minimum entre deux mesures pour le DHT11, sinon vous récupérez des NaN.
- Une précision de ±2 °C sur le DHT11 n'est pas un défaut de fabrication, c'est la spec. Si vous voulez ±0,5 °C, changez de composant.
- Le premier test à faire avant tout code : afficher la valeur brute, sans conversion, pour vérifier que le capteur répond.
Choisir son capteur de température Arduino sans se tromper
La question que l'on me pose le plus souvent en atelier, c'est : « lequel j'achète ? ». Et la réponse honnête, c'est que cela dépend de ce que vous voulez mesurer. Une chambre ? Un frigo ? Un aquarium ? Un capteur extérieur sous abri ? Ce ne sont pas les mêmes contraintes.
DHT11, DHT22 ou LM35 : le comparatif qui manque partout
Voici les chiffres à retenir, ceux que j'ai vérifiés sur mes propres composants avec un thermomètre de référence (un vieux thermomètre à alcool que j'ai gardé exprès) :
| Capteur | Plage | Précision | Mesure | Prix indicatif | Pour qui |
|---|---|---|---|---|---|
| DHT11 | 0 à 50 °C | ±2 °C | Temp + humidité | 1 à 3 € | Premier montage, démonstration |
| DHT22 | -40 à 80 °C | ±0,5 °C | Temp + humidité | 4 à 8 € | Projet sérieux, intérieur/extérieur tempéré |
| LM35 | 0 à 100 °C | ±0,5 °C | Température seule | 2 à 4 € | Mesure analogique, apprentissage du calcul |
| DS18B20 | -55 à 125 °C | ±0,5 °C | Température seule | 3 à 6 € | Sonde étanche, plusieurs capteurs sur un fil |
Mon avis tranché : le DHT11 est un excellent capteur pédagogique et un mauvais capteur de mesure. Il vous apprend à câbler, à installer une bibliothèque, à parser une trame. Mais si vous voulez savoir s'il fait 19 ou 21 °C dans votre bureau, il vous mentira avec aplomb. Le DHT22 corrige le tir pour quelques euros de plus, et je ne comprends pas pourquoi tant de kits débutants persistent à livrer uniquement le DHT11.
Numérique ou analogique : quelle différence concrète ?
Le DHT11 et le DHT22 envoient une trame numérique sur une seule broche DATA. Le LM35, lui, crache une tension proportionnelle à la température : 10 mV par degré Celsius, linéaire sur toute sa plage. Vous la lisez avec analogRead() et vous convertissez. C'est plus « manuel », et c'est justement pour ça que je conseille le LM35 en deuxième exercice : on comprend physiquement ce que fait un convertisseur analogique-numérique.
Concrètement, un Arduino Uno lit sur 10 bits, donc de 0 à 1023, sur une référence de 5 V. Chaque unité vaut environ 4,9 mV. Un degré Celsius représentant 10 mV, vous avez grossièrement deux unités de lecture par degré. La précision réelle du montage dépend donc surtout de la qualité de votre référence de tension — un détail que les tutoriels oublient systématiquement.
Le premier montage qui fonctionne vraiment (DHT11 et DHT22)
Trois fils. C'est tout. Et pourtant j'ai vu plus de débutants bloqués sur ce câblage que sur n'importe quel algorithme.
Le câblage pas à pas
- VCC du capteur → broche 5V de l'Arduino.
- GND → broche GND.
- DATA → une broche numérique, par exemple la 2.
- Une résistance de 10 kΩ entre DATA et VCC. Indispensable si vous avez un capteur nu à 4 broches ; souvent déjà intégrée si vous avez un petit module sur PCB.
Attention à un piège classique : certains modules bon marché ont une LED de puissance qui chauffe légèrement et fausse la mesure. J'ai mesuré jusqu'à +0,8 °C de dérive sur un module où j'avais soudé une LED témoin trop près du capteur. Si votre température semble toujours un peu haute, déportez le capteur du PCB.
Le code Arduino minimal (bibliothèque DHT)
Deux bibliothèques à installer via le gestionnaire : DHT sensor library d'Adafruit, et sa dépendance Adafruit Unified Sensor. Beaucoup de gens installent la première et se demandent pourquoi la compilation échoue — c'est presque toujours la seconde qui manque.
Un squelette qui marche :
- Inclure
DHT.h, définir le type de capteur (DHT11ouDHT22) et la broche. - Dans
setup(), appelerdht.begin()puisSerial.begin(9600). - Dans
loop(), fairedht.readTemperature()etdht.readHumidity(), afficher les valeurs, attendre au moins 2 secondes. - Vérifier systématiquement
isnan()sur les deux valeurs : si le capteur n'a pas répondu, la bibliothèque renvoieNaN, pas une température.
Ce dernier point est celui que je répète le plus en formation. Un débutant qui affiche directement la variable sans vérifier voit « nan » dans le moniteur série et croit que sa carte est morte. Non : elle vous dit juste « je n'ai rien reçu ».
Variante LM35 : lire une tension et la convertir
Ici pas de bibliothèque. Vous branchez la sortie du LM35 sur une entrée analogique (A0), vous lisez, vous convertissez :
int lecture = analogRead(A0);float tension = lecture * 5.0 / 1024.0;float temperature = tension * 100.0;(car 10 mV par °C)
Trois lignes. Et pourtant j'ai vu des dizaines de codes en ligne avec un facteur 1000 au lieu de 100, qui affichent 230 °C dans une pièce à température ambiante. Vérifiez toujours votre facteur de conversion à la main avant de faire confiance à un code trouvé sur internet.
Les erreurs qui font perdre une après-midi (et comment les éviter)
Une fois, en animant un atelier de six personnes, cinq ont eu des valeurs aberrantes dans la première heure. Sur les cinq, quatre avaient le même problème : un capteur « fake DHT11 » vendu comme DHT22. Le vendeur avait juste effacé la sérigraphie.
Comment repérer un faux capteur
Un vrai DHT22 porte la mention « AM2302 » ou « DHT22 » lisiblement. Un DHT11 affiche « DHT11 ». Si vous voyez « DHT22 » imprimé à la main au feutre, méfiance. Et si votre capteur renvoie systématiquement une plage entre 0 et 50 °C avec une précision d'environ ±2 °C, vous avez très probablement un DHT11 déguisé. Testez en le mettant quelques secondes au congélateur : un vrai DHT22 doit descendre en dessous de 0 °C. Un DHT11, non.
Que faire quand les valeurs sont folles
Ma checklist personnelle, dans l'ordre :
- Vérifier physiquement la résistance pull-up (10 kΩ).
- Vérifier que le délai entre deux lectures est bien supérieur à 2 secondes.
- Afficher la valeur brute avant toute conversion, pour détecter le problème de parsing.
- Comparer avec un thermomètre de référence posé à côté, pendant 10 minutes.
- Changer de broche DATA (certaines broches de l'ESP32 sont réservées).
Dans mon expérience, 80 % des cas se règlent à l'étape 1 ou 2. Le reste, c'est du matériel défectueux ou une carte mal alimentée (un Arduino alimenté en USB bas de gamme délivre parfois moins de 4,8 V, ce qui suffit à faire planter le DHT).
Structurer sa progression : de « ça marche » à « ça sert »
Un capteur qui affiche une valeur dans le moniteur série, c'est un jouet. Le déclic arrive quand la valeur devient utile : sur un écran, dans une base, dans un graphique.
Les quatre paliers d'une vraie formation
- Palier 1 (une heure) : câbler, lire, afficher dans le moniteur série. C'est le palier de la satisfaction immédiate.
- Palier 2 (deux à trois heures) : afficher sur un écran LCD 16x2 ou OLED. Vous apprenez le protocole I2C au passage.
- Palier 3 (une demi-journée) : enregistrer les mesures sur une carte SD, avec horodatage. C'est là qu'on touche vraiment aux fichiers et à la gestion du temps.
- Palier 4 (variable) : envoyer les données sur un serveur, ou les tracer avec un petit script Python sur le PC. On entre dans l'Internet des objets.
Je conseille fortement de ne pas sauter le palier 2. Un écran, c'est ce qui transforme un projet en objet. On peut poser le montage sur une étagère et le regarder vivre. Et c'est ce qui donne envie de continuer.
Les questions qu'on me pose le plus souvent
Comment mesurer à la fois la température et l'humidité avec Arduino ?
Un seul composant suffit : le DHT11 ou le DHT22 mesure les deux grandeurs et les envoie dans la même trame. Le même appel de bibliothèque donne readTemperature() et readHumidity(). Si vous voulez une humidité fiable, le DHT22 est nettement meilleur : le DHT11 plafonne à une précision d'environ ±5 % sur cette grandeur, ce qui est insuffisant pour un vrai suivi.
Quel code utiliser pour un capteur DHT11 ?
La bibliothèque DHT d'Adafruit reste la référence pour un débutant. Elle gère les timings délicats du protocole one-wire propriétaire du capteur, ce qui vous évite de le réimplémenter. Trois lignes de code utiles (déclaration, begin, lecture) suffisent à démarrer. Le reste, c'est la vérification des valeurs et un délai entre mesures.
Le DHT22 fonctionne-t-il en extérieur ?
En extérieur tempéré, oui, à condition de le protéger de la pluie et du soleil direct (un petit abri à lamelles fait très bien l'affaire). Sa plage descend à -40 °C, ce qui couvre la majorité des climats européens. En revanche, en ambiance très humide et en condensation permanente, je préfère une sonde DS18B20 étanche pour la seule température. Le DHT22 n'aime pas les atmosphères saturées.
Une chose que j'aurais aimé qu'on me dise quand j'ai commencé : votre premier capteur servira probablement de test, pas de projet final. Et c'est très bien. Le but d'une formation Arduino capteur température débutant n'est pas de construire un objet parfait, c'est d'acquérir les réflexes — pull-up, délai, vérification NaN, référence de tension — qui vous serviront sur tous les capteurs suivants. Le jour où vous branchez un capteur de pression, de luminosité ou de gaz, ce sont ces réflexes qui feront la différence. Le DHT11 aura alors fait son travail, même avec ses deux degrés d'erreur.