Ole Geek

Formation Arduino capteur température débutant : le guide simple

Un DHT11 à 2,40 € qui affiche « 0.00 °C » pendant vingt minutes : voici le parcours réel d'une formation Arduino capteur de température débutant, avec les pièges qui coûtent une après-midi et les chiffres qui comptent.

Formation Arduino capteur température débutant : le guide simple

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) :

CapteurPlagePrécisionMesurePrix indicatifPour qui
DHT110 à 50 °C±2 °CTemp + humidité1 à 3 €Premier montage, démonstration
DHT22-40 à 80 °C±0,5 °CTemp + humidité4 à 8 €Projet sérieux, intérieur/extérieur tempéré
LM350 à 100 °C±0,5 °CTempérature seule2 à 4 €Mesure analogique, apprentissage du calcul
DS18B20-55 à 125 °C±0,5 °CTempérature seule3 à 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 premier montage qui fonctionne vraiment (DHT11 et DHT22)

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 (DHT11 ou DHT22) et la broche.
  • Dans setup(), appeler dht.begin() puis Serial.begin(9600).
  • Dans loop(), faire dht.readTemperature() et dht.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 renvoie NaN, 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.

Les erreurs qui font perdre une après-midi (et comment les éviter)

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 :

  1. Vérifier physiquement la résistance pull-up (10 kΩ).
  2. Vérifier que le délai entre deux lectures est bien supérieur à 2 secondes.
  3. Afficher la valeur brute avant toute conversion, pour détecter le problème de parsing.
  4. Comparer avec un thermomètre de référence posé à côté, pendant 10 minutes.
  5. 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.

Aurélie Marchand

Aurélie Marchand

Aurélie Marchand est une développeuse et architecte reconnue pour son expertise en JavaScript et TypeScript, ainsi qu'en conception de systèmes microservices. Elle accompagne les équipes dans la mise en place de pipelines CI/CD et de pratiques DevOps efficaces. Passionnée par la transmission, elle vulgarise avec rigueur des sujets techniques complexes.

Voir tous les articles →

Articles similaires