Table des matières:

Mesure de l'humidité et de la température à l'aide de HTS221 et Arduino Nano : 4 étapes
Mesure de l'humidité et de la température à l'aide de HTS221 et Arduino Nano : 4 étapes

Vidéo: Mesure de l'humidité et de la température à l'aide de HTS221 et Arduino Nano : 4 étapes

Vidéo: Mesure de l'humidité et de la température à l'aide de HTS221 et Arduino Nano : 4 étapes
Vidéo: Mesurer la température et l'humidité avec le capteur DHT11 | ARDUINO #30 2024, Juillet
Anonim
Image
Image

HTS221 est un capteur numérique capacitif ultra compact pour l'humidité relative et la température. Il comprend un élément de détection et un circuit intégré spécifique à l'application de signaux mixtes (ASIC) pour fournir les informations de mesure via des interfaces série numériques. Intégré avec tant de fonctionnalités, c'est l'un des capteurs les plus appropriés pour les mesures critiques d'humidité et de température.

Dans ce tutoriel, l'interfaçage du module de capteur HTS221 avec arduino nano a été illustré. Pour lire les valeurs d'humidité et de température, nous avons utilisé arduino avec un adaptateur I2c. Cet adaptateur I2C rend la connexion au module capteur facile et plus fiable.

Étape 1: Matériel requis:

Matériel requis
Matériel requis
Matériel requis
Matériel requis
Matériel requis
Matériel requis

Les matériaux dont nous avons besoin pour atteindre notre objectif comprennent les composants matériels suivants:

1. HTS221

2. Arduino Nano

3. Câble I2C

4. Bouclier I2C pour Arduino Nano

Étape 2: connexion matérielle:

Raccordement matériel
Raccordement matériel
Raccordement matériel
Raccordement matériel

La section de raccordement matériel explique essentiellement les connexions de câblage requises entre le capteur et l'arduino nano. Assurer des connexions correctes est la nécessité de base tout en travaillant sur n'importe quel système pour la sortie souhaitée. Ainsi, les connexions requises sont les suivantes:

Le HTS221 fonctionnera sur I2C. Voici l'exemple de schéma de câblage, montrant comment câbler chaque interface du capteur.

Prête à l'emploi, la carte est configurée pour une interface I2C, en tant que telle, nous vous recommandons d'utiliser cette connexion si vous êtes par ailleurs agnostique.

Tout ce dont vous avez besoin, c'est de quatre fils ! Seules quatre connexions sont nécessaires pour les broches Vcc, Gnd, SCL et SDA et celles-ci sont connectées à l'aide d'un câble I2C.

Ces connexions sont illustrées dans les images ci-dessus.

Étape 3: Code pour la mesure de l'humidité et de la température:

Code pour la mesure de l'humidité et de la température
Code pour la mesure de l'humidité et de la température

Commençons maintenant par le code Arduino.

Lors de l'utilisation du module de capteur avec l'Arduino, nous incluons la bibliothèque Wire.h. La bibliothèque "Wire" contient les fonctions qui facilitent la communication i2c entre le capteur et la carte Arduino.

Le code Arduino complet est donné ci-dessous pour la commodité de l'utilisateur:

#comprendre

// L'adresse HTS221 I2C est 0x5F

#define Adr 0x5F

void setup()

{

// Initialiser la communication I2C en tant que MASTER

Fil.begin();

// Initialiser la communication série, définir le débit en bauds = 9600

Serial.begin(9600);

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Sélection du registre de configuration moyenne

Wire.write(0x10);

// Échantillons moyens de température = 256, Échantillons moyens d'humidité = 512

Wire.write(0x1B);

// Arrêter la transmission I2C

Wire.endTransmission();

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Sélection du registre de contrôle1

Wire.write(0x20);

// Mise sous tension, mise à jour continue, taux de sortie des données = 1 Hz

Wire.write(0x85);

// Arrêter la transmission I2C

Wire.endTransmission();

retard (300);

}

boucle vide()

{

données int non signées[2];

val int non signé[4];

entier non signé H0, H1, H2, H3, T0, T1, T2, T3, brut;

// Valeurs de calibrage d'humidité

for(int i = 0; i < 2; i++)

{

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Envoi du registre de données

Wire.write((48 + i));

// Arrêter la transmission I2C

Wire.endTransmission();

// Demande 1 octet de données

Wire.requestFrom(Adr, 1);

// Lit 1 octet de données

if(Fil.disponible() == 1)

{

data = Wire.read();

}

}

// Convertir les données d'humidité

H0 = données[0] / 2;

H1 = données[1] / 2;

for(int i = 0; i < 2; i++)

{

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Envoi du registre de données

Wire.write((54 + i));

// Arrêter la transmission I2C

Wire.endTransmission();

// Demande 1 octet de données

Wire.requestFrom(Adr, 1);

// Lit 1 octet de données

if(Fil.disponible() == 1)

{

data = Wire.read();

}

}

// Convertir les données d'humidité

H2 = (données[1] * 256,0) + données[0];

for(int i = 0; i < 2; i++)

{

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Envoi du registre de données

Wire.write((58 + i));

// Arrêter la transmission I2C

Wire.endTransmission();

// Demande 1 octet de données

Wire.requestFrom(Adr, 1);

// Lit 1 octet de données

if(Fil.disponible() == 1)

{

data = Wire.read();

}

}

// Convertir les données d'humidité

H3 = (données[1] * 256,0) + données[0];

// Valeurs d'étalonnage de la température

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Envoi du registre de données

Wire.write(0x32);

// Arrêter la transmission I2C

Wire.endTransmission();

// Demande 1 octet de données

Wire.requestFrom(Adr, 1);

// Lit 1 octet de données

if(Fil.disponible() == 1)

{

T0 = Wire.read();

}

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Envoi du registre de données

Wire.write(0x33);

// Arrêter la transmission I2C

Wire.endTransmission();

// Demande 1 octet de données

Wire.requestFrom(Adr, 1);

// Lit 1 octet de données

if(Fil.disponible() == 1)

{

T1 = Wire.read();

}

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Envoi du registre de données

Wire.write(0x35);

// Arrêter la transmission I2C

Wire.endTransmission();

// Demande 1 octet de données

Wire.requestFrom(Adr, 1);

// Lit 1 octet de données

if(Fil.disponible() == 1)

{

raw = Wire.read();

}

brut = brut & 0x0F;

// Convertir les valeurs d'étalonnage de température en 10 bits

T0 = ((brut & 0x03) * 256) + T0;

T1 = ((brut & 0x0C) * 64) + T1;

for(int i = 0; i < 2; i++)

{

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Envoi du registre de données

Wire.write((60 + i));

// Arrêter la transmission I2C

Wire.endTransmission();

// Demande 1 octet de données

Wire.requestFrom(Adr, 1);

// Lit 1 octet de données

if(Fil.disponible() == 1)

{

data = Wire.read();

}

}

// Convertir les données

T2 = (données[1] * 256,0) + données[0];

for(int i = 0; i < 2; i++)

{

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Envoi du registre de données

Wire.write((62 + i));

// Arrêter la transmission I2C

Wire.endTransmission();

// Demande 1 octet de données

Wire.requestFrom(Adr, 1);

// Lit 1 octet de données

if(Fil.disponible() == 1)

{

data = Wire.read();

}

}

// Convertir les données

T3 = (données[1] * 256.0) + données[0];

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Envoi du registre de données

Wire.write(0x28 | 0x80);

// Arrêter la transmission I2C

Wire.endTransmission();

// Demande 4 octets de données

Wire.requestFrom(Adr, 4);

// Lecture de 4 octets de données

// humidité msb, humidité lsb, temp msb, temp lsb

if(Fil.disponible() == 4)

{

val[0] = Wire.read();

val[1] = Wire.read();

val[2] = Wire.read();

val[3] = Wire.read();

}

// Convertir les données

humidité flottante = (val[1] * 256.0) + val[0];

humidité = ((1,0 * H1) - (1,0 * H0)) * (1,0 * humidité - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1,0 * H0);

int temp = (val[3] * 256) + val[2];

float cTemp = (((T1 - T0) / 8,0) * (temp - T2)) / (T3 - T2) + (T0 / 8,0);

float fTemp = (cTemp * 1,8) + 32;

// Sortie des données vers le moniteur série

Serial.print("Humidité relative: ");

Serial.print(humidité);

Serial.println("% HR");

Serial.print("Température en Celsius: ");

Serial.print(cTemp); Serial.println("C");

Serial.print("Température en Fahrenheit: ");

Serial.print(fTemp);

Serial.println(" F");

retard (500);

}

Dans la bibliothèque de fils Wire.write() et Wire.read() sont utilisés pour écrire les commandes et lire la sortie du capteur.

Serial.print() et Serial.println() sont utilisés pour afficher la sortie du capteur sur le moniteur série de l'IDE Arduino.

La sortie du capteur est montrée dans l'image ci-dessus.

Étape 4: Candidatures:

Applications
Applications

HTS221 peut être utilisé dans divers produits de consommation tels que les humidificateurs d'air et les réfrigérateurs, etc. Ce capteur trouve également son application dans un domaine plus large, notamment la domotique intelligente, l'automatisation industrielle, les équipements respiratoires, le suivi des actifs et des marchandises.

Conseillé: