ESP32 - Module Thermocouple MAX6675
La plupart des capteurs de température que nous présentons dans d'autres tutoriels - le DS18B20, le DHT22, le LM35 et autres - plafonnent aux alentours de 100-150°C. C'est largement suffisant pour une pièce, un réfrigérateur ou un potager, mais cela ne sert à rien si vous devez savoir quelle température atteint réellement un four industriel, la panne d'un fer à souder ou l'intérieur d'un four à pizza. Pour ce genre de tâches, les amateurs se tournent plutôt vers un thermocouple, associé à une petite puce de numérisation appelée MAX6675.
Dans ce tutoriel, nous allons connecter un ESP32 à une carte MAX6675 et à une sonde thermocouple de type K, puis afficher la température sur le Moniteur Série en degrés Celsius et Fahrenheit.

Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables ESP32 (ESP32 inclus) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
Qu'est-ce qu'un Thermocouple Exactement ?
Un thermocouple est simplement constitué de deux fils de métaux différents soudés ensemble à une extrémité, formant ce qu'on appelle la jonction chaude. Lorsque cette jonction chauffe (ou refroidit), une très faible tension apparaît entre les fils, et cette tension augmente et diminue avec la température. Comme il ne s'agit que de deux morceaux de fil plutôt que d'un capteur en silicium fragile, un thermocouple peut survivre - et mesurer - dans des endroits qui détruiraient instantanément un capteur ordinaire. La version de type K, fabriquée à partir de fils de Chromel et d'Alumel, est de loin la plus courante et peut supporter environ -328°F à +2300°F.
À Propos du Module MAX6675
À lui seul, le signal de l'ordre du millivolt fourni par un thermocouple est trop faible et trop bruité pour qu'un microcontrôleur puisse le lire directement. Le module MAX6675 résout ce problème : il s'agit d'une petite carte construite autour du circuit intégré MAX6675, vendue avec une sonde de type K déjà câblée.
Brochage du Module MAX6675

La puce MAX6675 de la carte échantillonne en continu le signal de la sonde, effectue en interne la compensation de soudure froide, et transmet à l'ESP32 une mesure de température sur 12 bits prête à l'emploi via un simple bus à 3 fils. Ses broches sont :
- VCC : entrée d'alimentation, de 3,0V à 5,5V.
- GND : masse.
- SCK : entrée d'horloge série, pilotée par l'ESP32.
- CS : sélection de la puce - l'ESP32 la met à l'état bas pendant la lecture d'un échantillon.
- SO : sortie de données série uniquement (il n'y a pas de broche d'entrée de données ; le module ne reçoit jamais de commandes, il ne fait qu'émettre).
Un petit bornier à vis situé sur le bord opposé de la carte permet de brancher la sonde, marqué + et - ; le fil rouge de la sonde va sur + et le fil bleu sur -.
Pour compléter les caractéristiques : la carte elle-même peut numériser des températures de 0°C jusqu'à 1024°C, offre une précision d'environ ±3°C et une résolution d'environ 0,25°C - bien que la sonde fournie, décrite ci-après, soit le véritable facteur limitant.
La Sonde de Type K Fournie
La sonde livrée avec le module est un câble fin à pointe en acier inoxydable, d'environ 18 pouces (45 cm) de long, et elle n'est prévue que pour une plage de 0°C à 80°C - suffisant pour une tasse de café ou un terrarium, mais il vous faudra une sonde prévue pour des températures plus élevées avant de la diriger vers un four à céramique. Repérez les fils rouge (positif) et bleu (négatif) à l'extrémité qui se branche sur le bornier de la carte.
Schéma de Câblage
Alimentez le module à partir de l'ESP32 : VCC sur 5V (3,3V fonctionne aussi) et GND sur GND. Les trois broches restantes - SCK, CS et SO - vont chacune sur n'importe quelle broche GPIO libre de l'ESP32, car la bibliothèque les pilote par simple bit-banging plutôt que par le périphérique SPI matériel. Enfin, insérez les fils rouge et bleu de la sonde thermocouple dans les bornes + et - du module.

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, consultez les instructions dans le tutoriel suivant : Comment alimenter l'ESP32..
Tableau de câblage entre le module MAX6675 et l'ESP32
| Module MAX6675 | ESP32 |
|---|---|
| VCC | → 5V |
| GND | → GND |
| SCK | → GPIO19 |
| CS | → GPIO18 |
| SO | → GPIO5 |
Code ESP32
Étapes Rapides
- Vous débutez avec l'ESP32 ? Commencez par Installation du logiciel ESP32..
- Câblez le module MAX6675 et la sonde thermocouple à l'ESP32 comme indiqué sur le schéma ci-dessus.
- Branchez l'ESP32 à votre ordinateur avec un câble USB.
- Ouvrez Arduino IDE.
- Dans le menu Outils, choisissez la carte ESP32 correspondante (par exemple ESP32 Dev Module) et le bon port COM.
- Ouvrez le panneau Bibliothèques depuis la barre d'icônes à gauche.
- Tapez "MAX6675" dans le champ de recherche et trouvez la bibliothèque publiée par Adafruit.
- Appuyez sur Installer.
- Search for MAX6675 library created by Adafruit and click the Install button.
- Collez le code ci-dessus dans l'IDE.
- Cliquez sur Téléverser pour flasher le sketch sur l'ESP32.
- Réchauffez la pointe du thermocouple (tenez-la, soufflez dessus, plongez-la dans de l'eau tiède) ou laissez-la refroidir.
- Ouvrez le Moniteur Série pour voir les mesures défiler.
※ Note:
Vous voyez une mesure figée ou manifestement fausse ? Vérifiez d'abord le câblage SCK/CS/SO, puis assurez-vous que les fils rouge et bleu du thermocouple sont bien fixés dans les bornes à vis du module - un fil desserré est la cause la plus fréquente d'une mesure bloquée ou incohérente.
Explication du Code
Le sketch commence par inclure l'en-tête de la bibliothèque MAX6675, qui donne au sketch ESP32 accès à la classe MAX6675.
Trois constantes indiquent à quelles broches GPIO de l'ESP32 sont câblées les broches SCK, CS et SO du module.
Un unique objet MAX6675, thermocouple, est ensuite construit avec ces trois broches - c'est lui que le reste du sketch appellera pour effectuer une mesure.
setup() doit seulement initialiser le port série afin que nous ayons un endroit où afficher les résultats, avec un court délai pour laisser le MAX6675 terminer sa mise sous tension avant la première lecture.
Dans loop(), les deux appels de bibliothèque importants sont :
- Thermocouple.readCelsius() : récupère la dernière mesure en degrés Celsius.
- Thermocouple.readFahrenheit() : récupère la même mesure convertie en Fahrenheit.
Un delay() d'une seconde termine la boucle afin que les mesures défilent à un rythme confortable au lieu d'inonder le Moniteur Série.