Table des matières:

Arduino Nano - Tutoriel sur le capteur d'humidité relative et de température HTS221 : 4 étapes
Arduino Nano - Tutoriel sur le capteur d'humidité relative et de température HTS221 : 4 étapes

Vidéo: Arduino Nano - Tutoriel sur le capteur d'humidité relative et de température HTS221 : 4 étapes

Vidéo: Arduino Nano - Tutoriel sur le capteur d'humidité relative et de température HTS221 : 4 étapes
Vidéo: 🌡️Arduino le Capteur de Température📈 DH11 & DH22 | Projet Station météo | Contrôle température 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. Voici la démonstration avec arduino nano.

Étape 1: Ce dont vous avez besoin.

De quoi as-tu besoin..!!
De quoi as-tu besoin..!!

1. Arduino Nano

2. HTS221

3. Câble I²C

4. Bouclier I²C pour Arduino Nano

Étape 2: Connexions:

Connexions
Connexions
Connexions
Connexions
Connexions
Connexions
Connexions
Connexions

Prenez un shield I2C pour Arduino Nano et poussez-le doucement sur les broches de Nano.

Connectez ensuite l'une des extrémités du câble I2C au capteur HTS221 et l'autre extrémité au blindage I2C.

Les connexions sont montrées dans l'image ci-dessus.

Étape 3: Coder:

Code
Code

Le code arduino pour HTS221 peut être téléchargé à partir de notre référentiel github - Communauté DCUBE.

Voici le lien pour le même:

github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino

Nous incluons la bibliothèque Wire.h pour faciliter la communication I2c du capteur avec la carte Arduino.

Vous pouvez également copier le code d'ici, il est donné comme suit:

// Distribué avec une licence libre-arbitre.

// Utilisez-le comme vous le souhaitez, à profit ou gratuitement, à condition qu'il rentre dans les licences de ses œuvres associées.

// HTS221

// Ce code est conçu pour fonctionner avec le mini module HTS221_I2CS I2C

#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 ("% RH");

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);

}

Étape 4: Candidatures:

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é: