Comment construire une caméra infrarouge à la maison pour moins de 100 $ (2e partie)

Cela fait longtemps que je n’ai pas écrit le premier chapitre de cet article. Mais maintenant, à la veille de la nouvelle année, j'ai enfin assez de temps libre pour terminer ce que je promettais il y a longtemps.

Alors on y va…

Tout d’abord, examinons brièvement le schéma principal de notre système de caméra infrarouge.

Comment pouvez-vous remarquer qu'il y a trois nœuds principaux dans ce schéma:

  • Nœud de module de pointeur laser
  • Capteur IR MLX90614DCI Nœud
  • Nœud du servo
Vous pouvez lire sur chaque nœud dans mon chapitre précédent de cet article

Au fur et à mesure de l’alimentation, l’ordinateur portable standard et connecté à tout cela via le port COM (USB) nous fournit les 5 V CC et 0,5 A (USB 2.0) ou 0,9 A (USB 3.0) en fonction du port USB utilisé.

Schéma de brochage:

  • 3,3 V - utilisé pour l’alimentation du capteur IR, et se connecte à travers les résistances de 4,7 kOhm chacune aux sorties SDA et SCL
  • 5V - utilisé pour la fourniture de servos.
  • D8 - est responsable de l'angle de rotation du servo horizontal.
  • D9 - est responsable de l'angle de rotation du servo vertical.
  • A4 - se connecte au contact SDA du capteur IR
  • A5 - se connecte au contact SCL du capteur IR
  • GND - est responsable de la mise à la terre du système

Bon, maintenant, quand nous avons trouvé la partie matérielle, nous avons ensuite créé un logiciel pour notre imageur thermique. Au début, j'avais prévu de mettre en œuvre une partie logicielle sous forme de projet Web avec React, mais pour faciliter le développement, j'ai utilisé un Windows Form standard.

Mais revenons à Arduino.

Pour commencer à lire les données du capteur, vous devez télécharger Adafruit_MLX90614 à partir du référentiel GitHub. Après avoir renommé le dossier non compressé Adafruit_MLX90614 et vérifié que le dossier Adafruit_MLX90614 contient Adafruit_MLX90614.cpp et Adafruit_MLX90614.h.

Placez le dossier de bibliothèque de votre dossier arduinosketch / libraries /. Vous devrez peut-être créer le sous-dossier libraries si c'est votre première bibliothèque. Redémarrez l'IDE.

Lorsque toutes les préparations seront terminées, nous pouvons commencer à travailler avec le noyau de notre logiciel de microcontrôleur.

Donc, fondamentalement, nous pouvons diviser notre programme en trois parties plus petites:

  • Définition des variables
  • configuration vide
  • boucle vide

Rien de spécial…

Dans la partie définition des variables, nous incluons quelques bibliothèques supplémentaires que nous utiliserons dans les étapes suivantes et, bien sûr, définissons les deux variables pour nos servos, une pour notre capteur infrarouge et une autre appelant répétition pour répéter notre algorithme de balayage jusqu’à ce que ce soit le cas. nécessaire.

Lors de l’installation, nous assignons simplement la variable à de véritables broches d’Arduino.

Et enfin, une dernière partie vide de la boucle, où est placée la logique principale de notre système. En bref, nous avons 3 boucles à l'intérieur ici. Le premier fonctionnera jusqu’à la numérisation et finira quand répétera faux.

La deuxième boucle est responsable du mouvement horizontal et fera 60 pas 1 ° chacun en raison des caractéristiques techniques des servos utilisés.

La même chose fonctionne pour la troisième boucle qui est responsable du mouvement vertical, mais dans ce cas, le servo ne fera que 45 pas.

Après chaque boucle verticale terminée, le premier servo revient à la position verticale initiale de 65 ° et tout recommence depuis le début.

À la fin de la numérisation, vous verrez dans la fenêtre du moniteur série les tailles de matrice 60✕45, chacune des 2700 mesures étant liée à la température atteinte par le capteur à chaque instant.

Et en vous basant sur cette matrice, vous pouvez simplement construire l'image thermique souhaitée.

J'ai ajouté de petits retards (100 ms et 50 ms) pour améliorer la qualité de l'image. L'objectif principal était de faire une pause entre deux mesures pour permettre au capteur d'obtenir des données plus précises jusqu'à cette période. Vous pouvez augmenter ou réduire ces valeurs en fonction de vos besoins.

En ce qui concerne la partie de bureau du logiciel, tout est assez simple, tout ce dont nous avons besoin pour obtenir les données du port COM et les afficher en couleurs en fonction des températures reçues. Je n’ai pas mis le code parce qu’il s’agirait d’une douzaine de lignes de code, mais si vous êtes intéressé par la façon dont il a été mis en œuvre, veuillez consulter le référentiel de mon Github.

Donc, depuis que nous avons terminé la partie logicielle, il est temps d’essayer notre imageur thermique en action. Comme objet à scanner, j'ai utilisé la bouteille avec de l'eau froide qui a été placée à la table. Comment pouvons-nous voir à la bonne image les couleurs rouges généralement vues, ce qui signifie que la température à l'extérieur de l'objet à numériser est plus élevée que lui-même. La couleur bleue indique l'eau froide à l'intérieur de la bouteille et les petites taches vertes et jaune-orange indiquent les zones de chauffage de l'eau.

Donc tout semble logique, du moins pour moi. Vous pouvez essayer de numériser ce que vous voulez, mais gardez bien à l’esprit que la numérisation doit être faite exactement dans la direction de l’objet. Sinon, vous pouvez capturer des taches de température tierces avec une température élevée ou basse. , ce qui pourrait gâcher votre image thermique.

gauche - image réelle; droite - image thermique

Ahhhh… presque oublié de montrer à quoi ce beau ressemble.

Le beau

J'espère que cet article sera utile à tous ceux qui essaient actuellement de faire la même chose ou qui le feront dans un proche avenir.

Si vous avez aimé cette histoire, cliquez sur le bouton et partagez-la pour aider les autres à la trouver! N'hésitez pas à laisser un commentaire ci-dessous.