- Composants requis
- MAX30205 avec Arduino - Schéma de circuit
- Interfaçage Arduino avec le capteur de température corporelle MAX30205
- Programmation MAX30205 avec Arduino
- Indicateur de température corporelle Arduino - Test
Pour les applications médicales ou cliniques, la mesure de la température corporelle humaine est un paramètre important pour déterminer l'état de santé de tout individu. Cependant, il existe de nombreuses façons de détecter la température, mais tout n'a pas la précision pour répondre aux spécifications de thermométrie clinique. Le capteur de température MAX30205 est spécialement conçu pour cette application. Notez que ce capteur n'est pas un capteur de température sans contact, si vous recherchez une mesure de température IR sans contact, consultez le thermomètre MLX90614 que nous avons conçu précédemment.
Dans ce projet, nous allons interfacer un capteur de température corporelle humain MAX30205 qui peut être facilement interfacé avec un bracelet de fitness ou peut être utilisé à des fins médicales. Nous utiliserons Arduino Nano comme unité principale de microcontrôleur et utiliserons également des écrans à 7 segments pour afficher la température détectée en degrés Fahrenheit. Une fois que vous savez comment utiliser le capteur, vous pouvez l'utiliser dans l'une de vos applications préférées, vous pouvez également consulter ce projet Arduino Smartwatch qui, combiné avec MAX30205, peut être utilisé pour surveiller la température des individus.
Composants requis
- Arduino NANO
- 7-Seg affiche cathode commune - 3 pièces
- 74HC595 - 3 pièces
- Résistance 680R - 24pcs
- Carte de module MAX30205
- Alimentation 5V
- Planche à pain
- Beaucoup de fils de raccordement
- IDE Arduino
- Un câble micro-USB
MAX30205 avec Arduino - Schéma de circuit
Le schéma de circuit complet pour connecter Arduino au capteur de température corporelle MAX30205 est illustré ci-dessous. Le circuit est très simple, mais comme nous avons utilisé des écrans à 7 segments, cela semble un peu compliqué. Les écrans 7 segments avec Arduino sont un excellent moyen d'afficher votre valeur en grand et en luminosité à un coût très bas. Mais vous pouvez également afficher ces valeurs sur un OLED ou un LCD si vous le souhaitez.
L'Arduino Nano est connecté à trois 74HC595. Trois 74HC595 sont mis en cascade pour enregistrer des broches de sortie supplémentaires de l'Arduino Nano pour connecter trois écrans 7-Seg. Nous avons déjà utilisé 74HC595 avec Arduino dans de nombreux autres projets tels que l'horloge Arduino, l'affichage à LED, le jeu de serpent Arduino, etc.
La carte du module MAX30205 nécessite des résistances de rappel supplémentaires car elle communique avec le protocole I2C. Cependant, peu de cartes de module ne nécessitent pas de pull-up supplémentaire car les résistances de pull-up sont déjà fournies à l'intérieur du module. Par conséquent, il faut vérifier si la carte du module a des résistances de rappel internes ou si elle nécessite une traction externe en plus. La carte qui est utilisée dans ce projet a déjà les résistances de rappel intégrées à l'intérieur de la carte de module.
Interfaçage Arduino avec le capteur de température corporelle MAX30205
Le capteur utilisé ici est le MAX30205 de Maxim integrated. Le capteur de température MAX30205 mesure avec précision la température avec une précision de 0,1 ° C (37 ° C à 39 ° C). Le capteur fonctionne avec le protocole I2C.
La carte de module peut fonctionner avec 5 ou 3,3V. Cependant, la carte est configurée pour être utilisée avec une tension de fonctionnement de 5 V. Il comprend également un décaleur de niveau logique, car le capteur lui-même prend en charge un maximum de 3,3 V à des fins liées à l'alimentation ou à la communication de données.
En sortie, trois registres à décalage 8 bits 74HC595 sont utilisés pour interfacer trois écrans 7 segments avec l'Arduino NANO. Le diagramme des broches peut être montré dans l'image ci-dessous-
La description des broches du 74HC595 peut être vue dans le tableau ci-dessous.
Le QA à QH sont les broches de sortie de données qui sont connectées aux écrans 7-Seg. Étant donné que trois 74HC595 sont montés en cascade, la broche d'entrée de données (PIN14) du premier registre à décalage sera connectée à l'Arduino NANO et la broche de sortie de données série fournira les données au registre à décalage suivant. Cette connexion de données série se poursuivra jusqu'au troisième 74HC595.
Programmation MAX30205 avec Arduino
Le programme complet de ce didacticiel se trouve au bas de cette page. L'explication de ce code est la suivante. Tout d'abord, nous incluons le fichier d'en-tête de la bibliothèque Arduino I2C standard.
#comprendre
La ligne ci-dessus inclura la bibliothèque fournie par Arduino à partir de protocentral. Cette bibliothèque possède des fonctions importantes pour communiquer avec le capteur MAX30205. La bibliothèque est tirée du lien GitHub ci-dessous-
https://github.com/protocentral/ProtoCentral_MAX30205
Après avoir importé la bibliothèque, nous définissons les données d'objet MAX30205 comme indiqué ci-dessous -
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Les deux lignes suivantes sont importantes pour définir les paramètres. La ligne ci-dessous fournira la température en Fahrenheit si elle est définie sur true. Pour afficher le résultat en Celsius, la ligne doit être définie sur false.
const bool fahrenheittemp = true; // J'affiche la température en Fahrenheit, si vous voulez afficher la température en Celsius, rendez cette variable fausse.
La ligne ci-dessous doit être configurée si des affichages à 7 segments de type cathode commun sont utilisés dans le matériel. Rendez-le faux si une anode commune est utilisée.
const bool commonCathode = true; // J'utilise 7segment de cathode commune si vous utilisez une anode commune, puis changez la valeur en false. const byte digit_pattern = {// 74HC595 Connexion Outpin avec affichage à 7 segments. // Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 // abcdefg DP 0b11111100, // 0 0b01100000, // 1 0b11011010, // 2 0b11110010, // 3 0b01100110, // 4 0b10110110, // 5 0b10111110, // 6 0b11100000, // 7 0b11111110, // 8 0b11110110, // 9 0b11101110, // A 0b00111110, // b 0b00011010, // C 0b01111010, // d 0b10011110, // E 0b10001110, // F 0b00000001 //. };
Le tableau ci-dessus est utilisé pour stocker le modèle de chiffres pour les affichages à 7 segments.
Dans la fonction de configuration, après avoir défini les modes de broches des broches 74HC595, le protocole I2C et la lecture du capteur de température sont initialisés.
void setup () {// mettez votre code de configuration ici, à exécuter une fois: // définissez le port série sur 9600 Serial.begin (9600); retard (1000); // définit la broche de contrôle 74HC595 comme pinMode de sortie (latchPin, OUTPUT); // ST_CP de 74HC595 pinMode (clkPin, OUTPUT); // SH_CP de 74HC595 pinMode (dtPin, OUTPUT); // DS de 74HC595 // initialise I2C Libs Wire.begin (); // démarrer la lecture de la température MAX30205 en mode continu, mode actif tempSensor.begin (); }
Dans la boucle, la température est lue par la fonction tempSensor.getTemperature () et stockée dans une variable flottante nommée temp . Après cela, si le mode de température Fahrenheit est sélectionné, les données sont converties de Celsius en Fahrenheit. Ensuite, trois chiffres des données de température détectées converties sont en outre séparés en trois chiffres individuels. Pour ce faire, des lignes de codes ci-dessous sont utilisées -
// saperate 3 chiffres de la température actuelle (comme si temp = 31.23c,) int dispDigit1 = (int) temp / 10; // chiffre1 3 int dispDigit2 = (int) temp% 10; // chiffre2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // chiffre3 2
Désormais, les trois chiffres séparés sont envoyés aux afficheurs à 7 segments à l'aide des registres à décalage 74HC595. Puisque le LSB est apparu pour la première fois dans le troisième affichage à 7 segments via le troisième 74HC595, le troisième chiffre est d'abord transmis. Pour ce faire, la broche verrouillée est tirée vers le bas et les données sont soumises au 74HC595 par la fonction shiftOut ();
De la même manière, les deuxième et premier chiffres restants sont également envoyés au 74HC595 respectif, restant ainsi deux affichages à 7 segments. Après l'envoi de toutes les données, la goupille de verrouillage est libérée et tirée vers le haut pour confirmer la fin de la transmission des données. Les codes respectifs peuvent être vus ci-dessous -
// affiche les chiffres dans un affichage à 3, 7 segments. digitalWrite (latchPin, LOW); if (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, motif_ chiffres-motif_ chiffres); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } else {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (motif_ chiffres-motif_ chiffres)); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
Indicateur de température corporelle Arduino - Test
Le circuit est construit en deux ensembles de breadboards comme vous pouvez le voir ci-dessous. Lorsque nous plaçons le doigt sur le capteur, la température est détectée et la sortie est affichée dans un affichage à 7 segments, ici la valeur est de 92,1 * F.
Le fonctionnement complet du projet peut être trouvé dans la vidéo ci-dessous. J'espère que vous avez apprécié la construction du projet et appris quelque chose d'utile. Si vous avez des questions, laissez-les dans la section commentaires ci-dessous ou utilisez nos forums.