ESP8266 - Module Thermocouple MAX6675
La plupart des capteurs de température que nous présentons dans d'autres tutoriels - le DHT11/DHT22, le DS18B20, le LM35 - plafonnent quelque part entre 100°C et 150°C. C'est largement suffisant pour des stations météo, des incubateurs ou un gadget de cuisine, mais c'est inutile si vous devez surveiller un four de poterie, un four à bois, un fourneau de fonderie ou l'échappement d'un petit moteur, qui fonctionnent tous à des températures bien plus élevées que ce que ces puces peuvent supporter.
Pour ce genre de tâches, il vous faut un type de capteur complètement différent : un thermocouple. Ce tutoriel explique comment câbler un module thermocouple MAX6675 à une carte ESP8266 et lire la température via son interface numérique à 3 fils.

Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
Comment Fonctionne un Thermocouple
Un thermocouple est simplement constitué de deux fils de métaux différents soudés ensemble à une extrémité. Cette jonction est appelée la soudure chaude, et lorsqu'elle chauffe, elle génère une très faible tension qui monte et descend avec la température. C'est une astuce rudimentaire, mais très efficace - puisqu'aucun composant en silicium fragile ne se trouve dans la chaleur, un thermocouple peut supporter des températures qui détruiraient instantanément un capteur électronique ordinaire.
Il existe plusieurs types de thermocouples, désignés par des lettres (J, K, E, T, etc.) selon les deux métaux soudés ensemble. Le type K est de loin le plus courant ; il est fabriqué à partir de fils de Chromel et d'Alumel et couvre une plage énorme d'environ -328°F à +2300°F.
Le problème est que la tension produite par la jonction d'un thermocouple est minuscule - seulement quelques millivolts - et la convertir en une mesure de température exploitable nécessite une puce dédiée. C'est le rôle du MAX6675.
À Propos du Module MAX6675
Le module MAX6675 que vous trouverez en vente en ligne est une petite carte breakout construite autour du circuit intégré MAX6675, fournie avec une sonde thermocouple de type K.
Brochage du Module MAX6675

En interne, le MAX6675 échantillonne la tension du thermocouple, la fait passer par un convertisseur analogique-numérique 12 bits et rend le résultat disponible via une simple interface en lecture seule à 3 fils. Il n'y a pas de ligne MOSI ici, car l'ESP8266 n'a jamais besoin d'envoyer de données à la puce - il ne fait que lire :
- VCC : broche d'alimentation, accepte de 3,0V à 5,5V.
- GND : broche de masse.
- SCK : horloge série, pilotée par l'ESP8266 pour extraire chaque mesure.
- CS : sélection de puce (chip select) - mise à l'état bas chaque fois que l'ESP8266 veut effectuer une mesure.
- SO : sortie de données série (c'est la ligne MISO du module) - renvoie la mesure 12 bits à l'ESP8266.
Sur le bord opposé de la carte se trouve un petit bornier à vis pour la sonde : le fil rouge se serre dans l'emplacement + et le fil bleu dans l'emplacement -.
La sonde elle-même est constituée d'environ 18 pouces (45 cm) de câble se terminant par une pointe métallique, et bien que la puce MAX6675 puisse numériser des mesures jusqu'à 1024°C, la sonde fournie avec le module n'est prévue que pour 0-80°C. Si votre projet doit mesurer des températures plus élevées, vous devrez associer la carte MAX6675 à une sonde de type K prévue pour des températures plus élevées, vendue séparément.
Caractéristiques rapides :
- Tension de fonctionnement : 3,0V - 5,5V
- Interface : numérique à 3 fils (SCK / CS / SO)
- Plage numérisée : 0°C à 1024°C (sonde fournie limitée à 0-80°C)
- Précision : ±3°C
- Résolution : environ 0,25°C
Schéma de Câblage
Le module MAX6675 fonctionne entre 3,3V et 5V, mais l'ESP8266 lui-même est strictement une carte 3,3V - ses GPIO ne tolèrent pas le 5V. Alimentez donc la broche VCC du module depuis la broche 3,3V de l'ESP8266, jamais depuis le 5V, et reliez GND à GND. Choisissez ensuite trois GPIO libres pour SCK, CS et SO.

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Pour plus d'informations, consultez Brochage ESP8266. et Comment alimenter l'ESP8266..
Tableau de câblage du module MAX6675 et de l'ESP8266 NodeMCU
| Module MAX6675 | ESP8266 NodeMCU |
|---|---|
| VCC | → 3.3V |
| GND | → GND |
| SCK | → D5 |
| CS | → D6 |
| SO | → D7 |
Code ESP8266
Étapes Rapides
- Si c'est la première fois que vous travaillez avec l'ESP8266, commencez par le tutoriel de Installation du logiciel ESP8266..
- Câblez le module MAX6675 à l'ESP8266 NodeMCU en suivant le tableau et le schéma ci-dessus.
- Fixez les fils + et - de la sonde thermocouple dans le bornier du module si ce n'est pas déjà fait.
- Branchez l'ESP8266 à votre ordinateur à l'aide d'un câble USB.
- Ouvrez Arduino IDE, choisissez la bonne carte ESP8266 (par ex. NodeMCU 1.0 (ESP-12E Module)) et le port COM correspondant.
- Ouvrez le panneau Bibliothèques depuis la barre latérale gauche.
- Recherchez "MAX6675" et trouvez la bibliothèque publiée par Adafruit.
- Cliquez sur Installer pour l'ajouter à votre IDE.
- Search for MAX6675 library created by Adafruit and click the Install button.
- Collez le code ci-dessus dans un nouveau sketch.
- Appuyez sur Téléverser pour flasher le sketch sur l'ESP8266.
- Tenez la pointe de la sonde contre quelque chose de chaud (une tasse de café, le bout de votre doigt, un sèche-cheveux à une distance sûre) et regardez les valeurs changer.
- Ouvrez le Moniteur Série pour observer les mesures en direct.
※ Note:
L'absence de mesure, une valeur figée ou une température complètement erronée proviennent presque toujours du câblage : vérifiez que SCK/CS/SO correspondent bien aux broches du sketch, et assurez-vous que les fils + et - de la sonde sont bien serrés dans le bornier et pas simplement posés contre celui-ci.
Explication du Code
Le sketch inclut la bibliothèque MAX6675, qui gère pour nous toute la communication bit-bang avec la puce.
Trois broches sont définies côté ESP8266 - la ligne d'horloge, la ligne de sélection de puce et la ligne de sortie de données provenant du module.
Un unique objet MAX6675 nommé thermocouple est créé, indiquant à la bibliothèque quel rôle joue chaque broche.
setup() ouvre simplement la connexion série et fait une courte pause, laissant au module le temps de se stabiliser avant de demander la première conversion.
Dans loop(), les deux fonctions de la bibliothèque readCelsius() et readFahrenheit() déclenchent chacune une nouvelle lecture de la puce et renvoient la température dans l'unité demandée.
Les deux valeurs sont ensuite affichées sur une même ligne dans le Moniteur Série, suivies d'une pause d'une seconde - ce qui correspond confortablement à la vitesse de conversion interne du MAX6675, de sorte que nous n'interrogeons jamais la puce plus vite qu'elle ne peut réellement produire de nouvelles données.