Nous avons fabriqué une caméra infrarouge à partir d'un capteur infrarouge 32x24 MLX90640ESF relié en I2C à un module 1 ESP32 JC3248W535C.
Nous avons utilisé :
1 capteur infrarouge MLX90640ESF I2C 24x32 (24€) (L'ergot du boitier correspond au bas de l'image)
Une petite batterie Lithium 3.7V 500mAh (ce qui devrait donner environ 2h30 d'autonomie. Voir plus loin)
Un boitier "maison" en aluminium collé époxy et peint en noir
1 ESP32 JC3248W535C muni d'un écran de 3.5" d'une résolution de (480x320), dans un boitier plastique, avec une carte TF microSD de 512 Mo. Le tout à 14€ (promo Aliexpress).
Il est évidemment à peu près indispensable de se procurer les connecteurs correspondants : au minimum le JST au pas 1.25, 4 broches pour les capteurs.
Ecran tactile capacitif ESP32-S3 3,5 pouces IPS TFT 8M PSRAM 16M FLASH 320X480 ESP32 Module WiFi BT pour le développement Arduino ESP LVGL. Le module consomme 130mA.
Carte TF, Gestion batterie Lithium, 12 Entrées/sorties. Sortie HP.
Arduino, Carte, ESP32 Arduino, ESP32S3 Dev Module.
Connecteurs :
Batterie : JST 1.25 2p
Power : JST 1.25 4p
HP : JST 1.25 2p
8P IO : JST 1.25 8p
?? : JST 1.25 4p
Et un connecteur pour carte TF, livré avec une carte 512Mo (inutilisée ici)
La batterie est reliée par ses 2 fils et le connecteur adéquat au connecteur batterie du module.
Dans cette réalisation, la question est de savoir si on utilise le BMS (Battery Management System) intégré ou si on construit le nôtre... Nous avons choisi d'utiliser le BMS intégré : (Attention : la caméra consomme environ 210 mA en marche et 1 mA en veille). La consommation de veille oblige à rajouter un interrupteur (ici, à levier) physique entre le fil positif de la batterie et le connecteur B+ sinon, on vide la batterie en un moins d'un mois. Il faudra évidemment mettre cet interrupteur en marche pour recharger la batterie en connectant la prise USB C du module)
On met le module sous tension avec l'interrupteur à levier et en appuyant brièvement sur un bouton poussoir à côté de connecteur magnétique et relié à la GPIO 33. Le module qui était en mode "Deep Sleep" se réveille, allume l'écran, détecte le capteur I2C et commence les acquisitions (1 par s), affiche l'image infrarouge, la température mini et maxi.
Connecter le module avec un cordon USB-C sous le module permet de :
Recharger la batterie
Faire fonctionner si pas de batterie ou batterie épuisée
Se connecter au module pour téléverser un nouveau programme (IDE Arduino depuis un PC)
Le module étant destiné à fonctionner essentiellement sur batterie, nous économisons le courant au maximum :
On désactive la Wifi (inutilisée) par logiciel
Entre 2 acquisitions (une acquisition par s), on peut passer le processeur en mode "Light Sleep" ce qui économise encore 80%
Au bout d'une heure d'utilisation, le module envoie un message pour un appui bref sur le bouton, sinon extinction automatique
Le câblage (en utilisant le BMS intégré) est simpliste :
Le connecteur 4 broches du capteur infrarouge relié à l'ESP32
Le connecteur 2 broches de la batterie (en série avec l'interrupteur à levier) relié à l'ESP32
Attention au code (au 18/09/2025) : pour utiliser ce module, il faut une bibliothèque graphique Arduino_GFX_Library. Il faut impérativement utiliser la version 1.6.0 et non pas la dernière : 1.6.1 qui fait "clignoter" l'afficheur.
Nous avons lissé les 768 pixels (32x24) par 3x3=9 pour chaque pixel.
Nota : on pourrait améliorer le code en rajoutant 2 icônes tactiles : une pour figer l'image et l'autre pour la redémarrer...
Une photo du module avec le capteur monté provisoirement : (homo sapiens)
De haut en bas :
Numéro de version et la date
Le type de capteur
OK indique que le capteur est présent et correctement détecté
Un palette de fausses couleurs qui s'adapte automatiquement à la température mini, (moyenne) et maxi (affichées)
L'image en fausse couleur
le ou les + indique les zones les plus chaudes
Le module infrarouge est relié par 4 fils
GND
Vcc
SDA (I2C)
SCL (I2C)
Une image d'un fer à souder et du soleil :
En désactivant la Wifi, le module consomme environ 0.21A, ce qui nous fait une autonomie d'environ 2h30 (Le capteur infrarouge à lui seul consomme environ 20mA). Nous rappelons que le module consomme 1mA en veille ce qui veut dire qu'il faut prévoir un interrupteur général (Et c'est plus pratique pour éteindre le module) et qu'il faut fermer cet interrupteur pour charger la batterie...
Il manque l'affichage de la tension batterie.
Le problème : sur ce module, le BMS est réalisé par un circuit 8 broches IP5306 qui fournit directement du 5V à partir de la batterie. Pour mesurer la tension batterie il faut donc ajouter un atténuateur avec 2 résistances suffisamment élevées pour ne pas ajouter à la décharge. Ex : 2x22k. Reliée à borne 6 (Batterie) puis à une GPIO (5) du module utilisée en ADC puis à la masse. (Et un bout de code) le câblage est un peu délicat. L'idéal est de découpler aussi l'entrée GPIO (5 )avec 220nF.
En plus il faut refaire la manip si on change le module...
Nota : il ne parait pas facile de détecter la charge sans rajouter (encore) du hardware...
Photo de la manipulation (pour se connecter à GPIO5, nous avons simplement utilisé un connecteur).
Une résistance de 22k 1/4W est soudée sur la borne 6 du BMS et à une autre R22k reliée à la masse et découplée par C220nF. le fil rouge est relié au connecteur sur GPIO5.
Remarque : Nous avons l'habitude de déposer de la résine époxy sur le pied des connecteurs et surtout de l'embase USB-C des modules pour éviter de les arracher en déconnectant. La résine (marron) est visible sur la photo.
Nota : il est possible de téléverser et d'utiliser ce module ESP32 sans utiliser l'USB-C. Mais c'est moins pratique et il faut connecter le petit module USB Rx Tx ci-dessous au connecteur 4 broches (Celui à côté de l'USB-C) :
Photo de la caméra avec affichage de la tension batterie et jauge batterie : (la tension de batterie et la jauge sont mises à jour toutes les 10s environ).
L'ESP32 est installé dans un coffret en aluminium (un morceau de volet de maison !) collé époxy, peint en noir à l'aérographe (Mais on pourrait imprimer le coffret en 3D). Le coffret est juste assez grand pour accueillir l'ESP32, la batterie et le capteur. Ça rentre au chausse-pied ! L'épaisseur du coffret est défini par le diamètre de la batterie, sa largeur par celle de l'ESP32 et sa longueur par celle de l'ESP32 plus la batterie.
Le coffret est relativement "costaud".
Le coffret complet vue avant et arrière :
Vue avant de haut en bas :
A droite, l'interrupteur en série avec la batterie (le levier a été raccourci)
Le bandeau du coffret derrière lequel se trouve :
Le capteur infrarouge
La batterie Lithium 500mAh
le corps de l'interrupteur
L'écran de l'ESP32
Vue arrière de haut en bas :
L'interrupteur
Un pied caoutchouc adhésif
Le capteur infrarouge (l'ergot, à l'intérieur, doit être dirigé vers le bas)
Un autre pied adhésif
Les 2 vis M2 de fixation de l'ESP32 (il y a 4 entretoises de 5mm entre l'ESP32 et le fond du coffret pour passer les fils et compenser le diamètre de la batterie)
Le bouton de mise en marche (le petit point brillant, en bas à droite) (En fait, il est constitué d'une entretoise filetée Mâle+Femelle M3 en laiton dont nous avons réduit le diamètre et la hauteur et qui dépasse juste du coffret : 0.5mm)
2 autres pieds adhésifs
La découpe pour l'accès au connecteur USB-C (charge et téléversement)
2 autres vis M2 de fixation de l'ESP32
Et voilà ! C'est terminé : une caméra infrarouge maison pour moins de 50€ avec un peu plus de 2h d'autonomie...
Exemple d'utilisation : nous voulons dépanner une carte alimentation secteur à découpage. Sur ce genre de carte, il n'est évidemment pas recommandé de promener ses doigts sur les composants pour détecter des sources de chaleur ! (même après avoir déconnecté le secteur). Les 2 pinces crocodiles injectent le 230V.
A gauche : la photographie de la carte à tester
Au milieu : image infrarouge de la carte entière, sous tension, cadrée à peu prés comme la photographie. Il apparait deux points chauds à 69.8°C ! (la carte à tester vient juste d'être branchée)
A droite, nous avons rapproché la caméra infrarouge pour mieux voir : les deux points chauds apparaissent nettement et sont maintenant à presque 100°C ! (il s'agit du circuit intégré 8 broches et d'une résistance repérés en rouge sur la photo).
La caméra infrarouge permet de détecter immédiatement les points chauds et de connaitre leurs températures exactes...
That's All Folks !
Commencé le 18/08/2025
A jour au 13/10/2025